О выборе индивидуального задания:

Уже более года я программирую на Java (Java 2 Standart Edition) - этот язык нравится, из него я почерпнул много нового: что-то реализовано лучше, что-то есть чего нету в других языках, а что-то я просто раньше и не знал. И относительно недавно я познакомился с J2EE, можно сказать я делаю в нём только первые шаги. На данный момент меня интересует именно Java 2 Enterprise Edition. Отсюда и тема моего индивидуального задания - общая информация о популярных технологиях J2EE.

JSP


JSP (JavaServer Pages) — технология, позволяющая веб-разработчикам динамически генерировать HTML, XML и другие веб-страницы. Является составной частью единой технологии создания бизнес-приложений J2EE. Технология позволяет внедрять Java-код, а также EL (expression language) в статичное содержимое страницы. Также могут использоваться библиотеки JSP тегов для внедрения их в JSP-cтраницы. Страницы компилируются JSP-компилятором в сервлеты, представляющие собой Java-классы, которые выполняются на сервере. Сервлеты также могут быть написаны разработчиком, не используя JSP-страницы. Эти технологии могут дополнять друг друга. JSP — одна из высокопроизводительных технологий, так как весь код страницы транслируется в java-код сервлета с помощью компилятора JSP страниц Jasper, и затем компилируется в байт-код виртуальной машины java (JVM). Сервлет-контейнеры (Tomcat), способные исполнять JSP страницы, написаны на платформонезависимом языке Java, который может работать под различными операционными системами и платформами. Сервлет-контейнеры могут работать как полноценные самостоятельные веб-серверы, работать поставщиком страниц для другого веб-сервера или интегрироваться в J2EE сервер приложений. Web-контейнер обеспечивает обмен данными между сервлетом и клиентами, берет на себя выполнение таких функций, как создание программной среды для функционирующего сервлета, идентификацию и авторизацию клиентов, организацию сессии для каждого из них.


Hibernate object-relational mapping (ORM) решение для языка программирования Java. Оно является свободным (free) программным обеспечением с открытым исходным кодом (open source), которое распространяется по условиям GNU Lesser General Public License. Данное решение предоставляет легкий в использовании каркас (фреймворк) для отображения объектно-ориентированной модели данных в традиционную реляционную базу данных.

Основные возможности Hibernate


Целью Hibernate является освобождение разработчика от значительного объема общих задач программирования по обеспечению сохранности данных (persistence — сохранность данных после прекращения работы программы). Разработчик может начать использовать Hibernate в процессе разработки как с нуля, так и для уже существующей базы данных. Hibernate не только заботится о связи Java классов с таблицами базы данных (и типов данных Java в типы данных SQL), но также предоставляет средства для автоматического построения запросов и извлечения данных и может значительно уменьшить время разработки, которое обычно тратится на ручное написание SQL и JDBC кода. Hibernate генерирует SQL вызовы и освобождает разработчика от ручной обработки результирующего набора данных и конвертации объектов, сохраняя приложение портируемым во все SQL базы данных. Hibernate обеспечивает прозрачную поддержку сохранности данных (persistence) для «POJO»-объектов (то есть для стандартных Java-объектов); единственное строгое требование для сохраняемого класса — конструктор по умолчанию. (Для корректного поведения в некоторых приложениях требуется уделить особое внимание к методам equals() и hashCode().[1]) Hibernate обычно используется как в standalone Java приложениях, так и в Java EE приложениях используя сервлеты или EJB.


Apache Struts — веб-приложение с открытым кодом, фреймворк для разработки Java EE веб-приложений. Он использует и расширяет Java Servlet API, чтобы содействовать принятию среди разработчиков MVC (Модель-Представление-Контроллер) архитектуры. Этот фреймворк создан Крейгом МакКланаханом и спонсирован в мае 2000 года Apache Foundation. Ранее находился в составе Apache Jakarta Project и был известен как Jakarta Struts. В 2005 году он стал проектом Apache высшего уровня.

Предназначение Apache Struts и его структура


В обычном Java EE веб-приложении, клиент как правило отправляет информацию на сервер из формы. Информация затем либо будет передана сервлету (либо JSP странице), который обработает её, произведёт взаимодействие с базой данных и сформирует HTML ответ. Если у нас большой проект, допустим, портал, на котором находятся тысячи страниц, то смешение бизнес логики и логики отображения контента крайне затруднит поддержку приложения. Struts был создан для того, чтобы чётко отделять модель (бизнес-логику) от представления(логики отображения, в нашем случае это обычно JSP, хотя поддерживаются и XML/XSLT и Velocity) и контроллера (сущности, которая занимается передачей информации модели и представлению). В состав Struts входит контроллер — сервлет под именем ActionServlet и различные утилиты, которые облегчают создание страниц представления. Разработчик веб приложения отвечает за написание кода модели и создание центрального конфигурационного файла struts-config.xml, который связывает воедино модель, представление и контроллер. Запрос от клиента передаётся контроллером в виде «Actions» (действий), определённых в конфигурационном файле. Если контроллер получает такой запрос, он передаёт его соответствующему Action классу, который запускает специфичный для этого приложения код модели и возвращает «ActionForward», строку, говорящую контроллеру, какую страницу надо отправить клиенту. Информация передаётся между моделью и представлением в виде особых JavaBeans. Богатая библиотека тегов позволяет выводить и записывать содержимое этих бинов на презентационном уровне без включения Java кода.. Struts также поддерживает i18n (интернационализацию), облегчает проверку данных присланных из веб-формы и предоставляет механизм создания шаблонов под названием «Tiles», который кроме всего прочего позволяет наследовать веб-страницы.

JavaServer Faces


JavaServer Faces (JSF) — это фреймворк для веб-приложений, написанный на Java. Он служит для того, чтобы облегчать разработку пользовательских интерфейсов для Java EE приложений. В отличие от прочих MVC фреймворков, которые управляются запросами, подход JSF основывается на использовании компонентов. Состояние компонентов пользовательского интерфейса сохраняется, когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется. Для отображения данных обычно используется JSP, но JSF можно приспособить и под другие технологии, например XUL.

Технология JavaServer Faces включает:



1. Набор API для представления компонент пользовательского интерфейса (UI) и управления их состоянием, обработкой событий и валидацией вводимой информации, определения навигации, а также поддержку интернационализации (i18n) и доступности (accessibility).
2. Специальная библиотека JSP тегов для выражения интерфейса JSF на JSP странице.

Разработанная быть гибкой, технология JavaServer Faces усиливает существующие, стандартные концепции пользовательского интерфейса (UI) и концепции Web-уровня без привязки разработчика к конкретному языку разметки, протоколу или клиентскому устройству. Классы компонент пользовательского интерфейса, поставляемые вместе с технологией JavaServer Faces, содержат функциональность компонент, а не специфичное для клиента отображение, открывая тем самым возможность рендеринга JSF-компонент на различных клиентских устройствах. Совмещая функциональность компонент интерфейса пользователя со специальными рендерерами, разработчики могут конструировать специальные теги для заданного клиентского устройства. В качестве удобства технология JSF предоставляет специфичный рендерер и специальную библиотеку JSP-тегов для рендеринга на HTML-клиенте, позволяя разработчикам приложений на J2EE платформе использовать технологию JSF в своих приложениях.