Ero curioso, perché preferiamo la matrice byte [] per trasferire i dati sulla rete e non altro?
O se mi manca qualcosa, quali sono gli altri modi per trasferire i dati su una rete.
Potresti fare qualsiasi altra astrazione sugli array di byte, ecco cosa fanno le librerie di serializzazione.
Ma per comunicare in modo efficace, entrambe le parti devono concordare sullo stesso formato di (de) serializzazione. Mentre ci sono molti semi-standard (XML, JSON, MessagePack, Protocol Buffers), non c'è uno reale standard, quindi è improbabile che includa uno qualsiasi nelle librerie standard, perché sarebbe limitato a solo interagire con i programmi Java su entrambe le estremità.
Tuttavia, se stai scrivendo entrambe le estremità, è facile convocare su qualcuno. Generalmente tendo a JSON nella maggior parte dei casi e a MessagePack quando il tempo o lo spazio risparmiano per la minore leggibilità e interoperabilità.
Fondamentalmente, a livello di root sono sempre inviati byte. È così che funzionano i computer. Ogni personaggio che stai leggendo in questa risposta è una serie di byte codificati usando il formato UTF-32 (o, forse è un altro - non ho codificato questo sito).
Di solito ci sono molte librerie che ti offriranno forme di astrazione per inviare blocchi di byte. Il più popolare è, tada, HTTP o HyperText Transfer Protocol. Anche quando qualcuno non sta visualizzando una pagina Web, molti programmatori di reti come codificare tutte le comunicazioni come richieste HTTP per semplificare l'architettura richiesta / risposta e rendere ogni blocco di informazioni una stringa (di solito leggibile dall'uomo).
Ci sono piccoli compromessi in termini di prestazioni che sono in genere del tutto irrilevanti, ma le situazioni di domanda elevata come le reti di videogiochi o le videochiamate spesso riportano le cose al livello principale e decidono come inviare ogni byte, in modo da essere più efficiente.
Leggi altre domande sui tag design java serialization