Какие сетевые протоколы используются в Java-разработке?

«Какие сетевые протоколы используются в Java-разработке?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java-экосистеме активно используются следующие сетевые протоколы:

1. HTTP/HTTPS — для веб-коммуникаций (REST API, SOAP).

URL url = new URL("https://api.example.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
int responseCode = conn.getResponseCode();

Почему: HTTPS обеспечивает шифрование поверх TLS, что критично для безопасности данных.

2. TCP/UDP — транспортные протоколы.

  • TCP (надежный, с установкой соединения) — для ServerSocket/Socket.
  • UDP (быстрый, без гарантий доставки) — для DatagramSocket.

3. WebSocket — для двусторонней связи в реальном времени (javax.websocket или библиотеки типа Spring WebSocket).

4. FTP/SFTP — передача файлов (часто через Apache Commons Net).

5. SMTP/POP3/IMAP — работа с электронной почтой (JavaMail API).

6. DNS — разрешение доменных имён через InetAddress.getByName("hostname").

7. RMI (Remote Method Invocation) — удалённый вызов методов в чистой Java (java.rmi).

Выбор протокола зависит от требований:

  • Надёжность → TCP
  • Скорость и допустимы потери → UDP
  • Веб-сервисы → HTTP/HTTPS
  • Реальное время → WebSocket