Generell ist es so, dass Sockets die Basis bilden (in Java) für so eine Kommunikation.
Aber hier ist immer die Frage, was genau Du machen willst. Das ist etwas wie "Haus bauen". Klar - du kannst wirklich mit absoluten Basics anfangen - und dann anfangen die Materialien abzubauen und zu reinigen, Ziegel herzustellen u.s.w. Oder Du baust auf fertigen Elementen auf.
Wenn man alles von Grund auf verstehen will, dann ist der erste Weg bestimmt super. Aber wenn man schnell ein stabiles Haus haben will, dann ist das weniger optimal.
Das ist dann in Java bezüglich Netzwerk alles durchaus vergleichbar:
So gibt es Libraries, die einem die Nutzung von Sockets deutlich vereinfachen. Das wäre hier z.B.
https://netty.io
Aber es gibt heutzutage viele wichtige Anforderungen. Der Client soll sich ggf. am Server anmelden, die Kommunikation sollte verschlüsselt sein, Die Kommunikation sollte so sein, dass andere da auch einfach "mitreden" können, Der Code soll klein und übersichtlich sein und damit auch schnell zu schreiben, .....
Wenn man so Anforderungen hat, dann landet man schnell bei Dingen wie Java EE / Spring / .... und nutzt dann Standards wie RESTful Webservices und so. Wenn man es ganz weit treibt, dann landet man bei OpenAPI / Swagger.
Am Ende arbeiten diese ganzen Libraries auch mit Sockets (direkt oder indirekt). Aber der Entwickler sieht davon nichts.
Wenn es um eine Applikation geht, die später im Internet verfügbar ist, dann würde ich eher auf ein entsprechendes Framework setzen. Denn gerade die ganzen Sicherheitsrelevanten Dinge würde ich nie selbst entwickeln. Das kostet viel Zeit und birgt einige Risiken - von dem notwendigen Fachwissen mal ganz abgesehen!
Daher: Umgang mit Sockets ist super, wenn man da einsteigen will und es von Grund auf lernen will. Aber ich halte es nicht für angebracht, wenn ein frei erreichbares Produkt das Ziel sein soll.