|
|
 |
Сервлеты и 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 году. Перевод
выполнен Ильей Чекменевым (ilyacheck@mail.ru) в 2001 году с материала сайта http://www.coreservlets.com/,
где версия материала датирована 2000 годом. Не стоит обращать внимания на неказистость
названия перевода. Во всяком случае, все таблицы и примеры переведены довольно
точно. Откровенных глупостей в переводе нет, а стиль – это в данном случае уже
дело второе.
Автор: Павел Храмцов
|