Сервлеты – это высокопроизводительные платформо-независимые server-side- приложения, написанные на Java и составляющие реальную конкуренцию таким технологиям, как CGI, PHP3, Perl, и ASP.NET .
Java-сервлеты были созданы в Sun. Сервлеты похожи на CGI-сценарии тем, что это код, создающий документы. Тем не менее, при запуске сервлеты, поскольку они используют Java, должны быть скомпилированы как классы, которые динамически загружаются web-сервером. Интерфейс отличается от CGI. JavaServer Pages, или JSP – это другая технология, позволяющая разработчикам встраивать Java в web-страницы, наподобие ASP.
К преимуществам сервлетов можно отнести:
— Высокая скорость работы. Быстродействие сервлетов объясняется тем, что они, во-первых, представляют собой уже скомпилированный и оптимизированный код (а в случае с JIT-ом — еще и преобразованный в машинный) и, во-вторых, выполняются в единожды загруженной и инициализированной Java-машине.
— Переносимость. В данном случае принцип «написано однажды работает везде» действует безотказно. Сервлеты, написанные в соответствии со спецификацией от Sun и не использующие какие-то особенности конкретного web-сервера, работают безо всякой переделки или перекомпиляции под любыми, порой весьма далекими друг от друга платформами, будь то Solaris, FreeBSD или OS/2. В связи с этим разработчик может совершенно свободно выбирать, в какой системе ему удобнее работать — он ни коим образом не привязан ни к серверу, ни к будущей целевой платформе.
— Работа с базами данных. Работа с реляционными СУБД из Java унифицирована (для этого существует специальный пакет java.sql), удобна и отвязана от специфичных для конкретной СУБД тонкостей. Таким образом, для работы с СУБД необходим лишь JDBC-драйверы, который инкапсулирует в себе особенность взаимодействия с сервером.
Основным недостатком разработки с использованием Java является ее сложность. Кроме того, в Java недостаточно хорошо поддерживается работа с различными версиями разрабатываемого ПО. Стоит также отметить сложность интеграции Java с другими языками, т.е. сложная система должна быть полностью построена на Java, что не всегда является удобным решением.