Datagrams are mostly hidden from the Java programmer.
The host's native networking software transparently splits data into packets on the sending end of a connection, and then reassembles packets on the receiving end.
Instead, the Java programmer is presented with a higher level abstraction called a socket.