Сервлеты и Java Server Pages. На что похожи, и в чем их преимущества и недостатки.
В Java-программирование принято различать две ипостаси Java-приложения и Java-апплеты. Первое с точки зрения программирования ценно само по себе, т.к. ничего кроме среды исполнения Java не требует. А второе интересно только в контексте способности браузеров исполнять Java-код апплетов.
Есть, однако, и третья жизнь Java – это программы, которые выполняются http-серверами. Вот они и называются сервлетами. Конечно, сам по себе сервер не может исполнять Java-код. В сервер встраивается модуль, который вызывает Java-машину, исполняющую сервлеты.
Как апплет не является самостоятельной Java-программой, так и сервлет ею также не является. И то и другое, условно говоря, «заплатки», которые программист встраивает в более общий Java-код. Прикладному программисту дается возможность написать тела заранее определенных через механизм интерфейсов методов.
Сервлеты в некотором смысле похожи на CGI-скрипты. Как и в скриптах у сервлетов жестко определен механизм получения данных, т.е. входной поток, и механизм формирования выходного потока. При этом сервлетам кроме всего прочего еще позволено получать точно такие же значения, как те, что определены в переменных окружения скриптов.
В свою очередь сервлеты являются базой для Java Server Pages. Об этом механизме говорят, что он является полнофункциональным аналогом Active Server Pages компании Microsoft. На самом деле механизм JSP шире ASP, и гораздо более гибкий.
JPS – это последовательное развитие идеи встраивания программного кода в HTML и XML страницы. Только это не простенький язык SSI и не VBScript, а полноценные Java-конструкции.
На самом деле это только с точки зрения человека, который создает JSP, речь идет о «нашинковке» кодом старого доброго HTML. С точки зрения сервера такая страница – это сервлет. При чем реально трансляция файла в хранимый в памяти Java-код происходит только при первом обращении к JSP-странице. При всех последующих обращениях никакой трансляции происходить уже не будет, а будет использоваться ранее оттранслированный сервлет.
Из выше сказанного следуют те плюсы, о которых так любит рассуждать специалисты, которые «заболели» данной технологией, не все они являются абсолютными «плюсами», но тем не менее их следует перечислить:
- Эффективность. Не надо порождать нового процесса. В стандартной ситуации все уже в «голове» и сразу начинает исполняться. Понятно, что здесь сервлеты сравнивают со CGI_скриптами. В принципе, даже интегрированный в браузер Perl, модуль mod_perl в Apache, например, не должен теоретически обеспечивать такой производительности, которую обещают сервлеты.
- Единство среды разработки программного обеспечения. Выучил Java и пиши себе код на здоровье. Не надо учить другие языки программирования, например, Perl, VBScript или C. Правда, сам этот язык, мягко говоря, не очень простой (я имею в виду Java), но в конечном итоге, ведь не боги горшки обжигают.
- Мощность. Java – язык богатый. Написать на нем можно много чего. Правда, Perl в этом смысле не хуже. Во всяком случае, там, где не надо расписывать окошечки и кнопочки экранных интерфейсов. А программирование на стороне сервера – это как раз такой случай. Perl и Java – это основные языки разработки Web-приложений. С точки зрения сложности они примерно одинаковые. Правда, каждый по своему.
- Переносимость. Интерпретируемые программы по большому счету все переносимы. Был бы на соответствующей платформе нужный интерпретатор. Java лучше только в том плане, что для него централизовано поддерживается единая спецификация языка. Будем считать, что выкрутасы Microsoft в данном случае не в счет.
- Бесплатность. Может быть для наших иностранных коллег это и большое преимущество, но для нас, где 80% родного Web-а работает на бесплатном Apache, это норма. Но хорошо, что и за границами Отечества магистральный путь развития пока остается бесплатным.
Вот, собственно, и все для первого знакомства с этой технологией. Более подробно читайте первоисточники и статьи данного раздела.
Первоисточники:
- JSR-000053 JavaTM Servlet 2.3 and JavaServer PagesTM 1.2 Specifications(http://jcp.org/aboutJava/communityprocess/first/jsr053/index.html) - это спецификация сервлетов и JSP. Точнее головная страница этой спецификации. С нее можно попасть на (в два приема на страничку, где расположена ссылка на PDF-файл собственно спецификации сервлетов, а также на страничку, где расположена ссылка на PDF-файл собственно спецификации JSP. Одним словом, здесь вы найдете настоящую документацию: сухо, длинно и не очень понятно, но зато очень точно.
- QUICKSTART GUIDE (http://java.sun.com/products/jsp/docs.html) - по этому адресу господа из Sun собрали документацию для тех, кто очень хочет использовать JSP, но пока не знает с чего начать. Даже тем, кто уже знает с чего начинать, все равно следует познакомиться с этим руководством. Дело в том, что во всех дискуссиях по поводу JSP как правило используются примеры данного руководства. Таким образом, если Вы хотите говорить на одном языке с другими энтузиастами JSP, или просто слыть образованным человеком, с этими страницами все-таки надо ознакомиться. Тем паче, что этот 45-ти страничный труд очень неплохо написан.
- JSP Architecture (http://www.brainopolis.com/jsp/book/jspBook_Architectures.html) – здесь Вы найдете описание архитектуры JSP и мысли по поводу различных стилей разработки JSP-страниц. Автор попробует убедить Вас в том, что при разделении труда не нужно одновременно знать HTML (правда примеры он приводит на XML) и Java. С его точки зрения программисты должны писать код, а web-мастера только указывать в параметрах элементов разметки вызовы необходимых скриптлетов.
- JSP FAQ (http://www.esperanto.org.nz/jsp/jspfaq.jsp) - Часто задаваемые вопросы по теме JSP. Результат работы коллективного разума, который аккумулирован в списке рассылки JSP. Последнее изменение, которое было сделано в этом труде приходится на июнь 2000 года. С того времени много воды утекло. Во всяком случае успела выйти новая спецификация JSP 1.2. Так что если вы глубоко вникаете в продукты проекта Jakаrta, то лучше обращаться за помощью непосредственно к документации или рабочим материалоам этого проекта.
- Обучающее пособие по JSP (http://www.javapower.ru/java/jsp/Servlet-Tutorial-JSP.html) - это одно из классических введений в программирование сервлетов и Java Server Pages (Tutorial on Servlets and JSP), написанное Marty Hall в 1999 году. Перевод выполнен Ильей Чекменевым ([email protected]) в 2001 году с материала сайта http://www.coreservlets.com/, где версия материала датирована 2000 годом. Не стоит обращать внимания на неказистость названия перевода. Во всяком случае, все таблицы и примеры переведены довольно точно. Откровенных глупостей в переводе нет, а стиль – это в данном случае уже дело второе.
Павел Храмцов
|
|