Изучаем Java EE 7 - [153]

Шрифт
Интервал

Краткая история веб-интерфейсов

Сначала веб-страницы были статическими. Пользователь запрашивает ресурс (веб-страницу, изображения, видео и т. д.), и сервер возвращает его — это довольно просто, но очень ограниченно. С ростом коммерческой деятельности в Интернете компании захотели предоставить клиентам динамическое содержимое. Первым решением для создания динамического контента был Common Gateway Interface (CGI). С помощью HTML-страниц и сценариев CGI, написанных на любых языках (от Perl до Visual Basic), приложение может обращаться к базам данных и предоставлять динамическое содержимое, но было ясно, что CGI слишком низкоуровневый (вы должны были обрабатывать HTTP-заголовки, вызывать команды HTTP и т. д.) и нуждается в улучшении.

В 1995 году появился новый язык — Java. Он имел независимый от платформы API пользовательского интерфейса под названием Annotation Window Toolkit (AWT). Позднее, в версии Java SE 1.2, AWT, опиравшийся на модуль пользовательского интерфейса операционной системы, был заменен Swing API (который рисует собственные виджеты, используя Java 2D). В эти первые дни Java браузер Netscape Navigator предложил поддержку этого нового языка, что положило начало эре апплетов. Апплеты — приложения, работающие на стороне клиента внутри браузера. Это позволило разработчикам писать приложения с помощью AWT или Swing и встраивать их в веб-страницу. Тем не менее апплеты не получили развития. Netscape также создал язык сценариев JavaScript, который выполняется непосредственно в браузере. Несмотря на некоторые несовместимости между браузерами, JavaScript сейчас активно используется и является мощным средством для создания динамических веб-приложений.

После того как апплеты не получили широкого распространения, компания Sun предоставила сервлеты как способ создания динамичных веб-клиентов. Сервлеты были альтернативой сценариям CGI, потому что предоставляли библиотеку более высокого уровня для обработки HTTP, имели полный доступ к Java API (получение доступа к базе данных, удаленные вызовы и т. д.) и могли создавать HTML как ответ, который будет виден пользователю.

Компания Sun выпустила JSP в 1999 году как расширение модели сервлетов. Но, поскольку JSP представлял собой смесь кода на Java и HTML, в 2001 году появился фреймворк с открытым исходным кодом и предоставил новый подход — Struts. Он расширил Servlet API и вдохновил разработчиков использовать архитектуру MVC. Новейшая история полна других фреймворков, каждый из которых пытался заполнить пробелы предыдущего (Tapestry, Wicket, WebWork, DWR, Spring MVC и т. д.). Сегодня JSF 2.2 является стандартным веб-фреймворком Java EE 7. Он конкурирует со Struts и Tapestry в пространстве Java. Google Web Toolkit (GWT), Flex и JavaFX могут дополнять JSF.


Примечание

JSP 1.2 и Servlet 2.3 были указаны вместе в JSR 53. В то же время JSTL был указан в JSR 52. Начиная с 2002 года спецификация JSP 2.0 развивалась отдельно от сервлетов в JSR 152. В 2006 году JSP 2.1 был частью Java EE 5 и способствовал интеграции JSF и JSP путем введения единого EL. В версии Java EE 7 как JSP, так и EL стали развиваться отдельно (JSP 2.3 и Expression Language 3.0). В этой книге не рассматривается JSP, поскольку его можно считать устаревшим, а JSF предпочтителен для создания веб-интерфейсов в Java EE.

Краткая история JSF

JSF 1.0 был создан в 2001 году как JSR 127, а в 2004 году была выпущена версия 1.1. Версия 1.2 появилась в Java EE как JSR 252 только в 2006 году. Самой большой проблемой этой версии было сохранение обратной совместимости, а также интеграция JSP с единым EL. Несмотря на эти усилия, JSF и JSP не подошли идеально, так что в качестве альтернативы JSP были введены другие структуры, такие как Facelets.

JSF 2.0 — это крупный релиз, развившийся в JSR 314 и ставший частью Java EE 6. Он упростил навигацию между страницами, разработку с помощью аннотаций (для компонентов-подложек, отрисовщиков, преобразователей и валидаторов), разработку графических компонентов, поставил на первое место запросы GET, в отличие от POST (что позволило пользователям добавлять страницы в закладки), новый ресурс механизма обработки (для изображений, CSS, файлов JavaScript…). Кроме того, была добавлена поддержка AJAX. Сегодня JSF 2.2 (JSR 344) следит за этой простотой разработки и привносит много новых возможностей.

Что нового в JSF 2.2

JSF 2.2 (JSR 344) — это более развитая версия 2.1, которую можно считать шагом вперед, поскольку она вносит следующие новые возможности.

• Совместимая с HTML разметка — возможность создавать представление в чистом HTML-коде и добавлять с помощью JSF дополнительные особенности сервера.

• Разрешение использования атрибута id для всего содержимого HTML5 — в отличие от предыдущих стандартов HTML, HTML5 позволяет использовать атрибут id для любых элементов.

• Faces Flow — значительное улучшение JSF. Понятие «поток» было добавлено в JSF 2.2. Потоки проводят пользователя через несколько экранов, таких как мастера, многоэкранные подписки, заказы и т. д.

• Управление очередью запросов AJAX — JSF добавляет поддержку для управления очередью AJAX-запросов. Если в течение этого периода задержки поступает несколько запросов, только самый последний отправляется на сервер.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.