Socket APIs - это низкоуровневая (транспортная) абстракция, с помощью которой Java-приложение взаимодействует с сетью и, соответственно, с удаленными клиентами и службами.Сокеты и связанные API поддерживают надежный поток байтов и ненадежные службы обмена сообщениями.Обычно они используются для TCP / IP и UDP / IP, хотя могут поддерживаться и другие стеки сетевых протоколов (по крайней мере, теоретически).
RMI - это семейство каркасов и протоколов для реализации сетей уровня приложений между приложениями Java,Он моделирует сетевые взаимодействия как вызовы методов Java, сделанные для объектов, которые живут в других приложениях.Эта модель требует механизма (обычно сервера имен), который позволяет одному приложению «публиковать» объекты, чтобы другое приложение могло ссылаться на них.Это (и тот факт, что порты RMI обычно блокируются по умолчанию) означает, что при настройке приложений на основе RMI нетривиальных усилий по настройке.
Сервлеты - это набор API, которые в первую очередь предназначен для реализации серверной части HTTP-коммуникаций;т.е. для создания веб-серверов в Java.Они (или, точнее, веб-контейнер, в котором они работают) заботятся о деталях протокола HTTP, так что программисту (в теории) нужно только заниматься проблемами «приложений».
На практике,разработчик и / или разработчик сервлетов должен заниматься другими вещами, такими как сопоставление URL-адресов с сервлетами объектам, безопасность и аутентификация.Кроме того, сервлеты имеют дело только с серверной стороной HTTP-взаимодействия ... клиентская сторона должна обрабатываться разными API.(Можно также утверждать, что сами по себе сервлеты не делают достаточно, о чем свидетельствует распространение сред веб-приложений, построенных на основе сервлетов.)
Вкратце:
- Сокеты предназначены для низкоуровневого сетевого взаимодействия
- RMI предназначен для высокоуровневых распределенных вычислений Java-Java
- Сервлеты предназначены для реализации веб-сайтов и веб-служб