Статьи

Интервью: Amr ElAdawy, разработчик JSPX Java Web Framework

Amr ElAdawy — инженер-программист в Etisalat Egypt в Каире. Etisalat — египетский оператор мобильной связи, где Amr разрабатывает корпоративные приложения на Java для телекоммуникаций и продаж.

Он является членом небольшого сообщества, которое разрабатывает и поддерживает веб-фреймворк под названием «JSPX». (Его домашняя страница здесь .)

Еще один веб-фреймворк? 

Изучая существующие фреймворки для разработки веб-приложений на Java, мы обнаружили, что для каждого из них требуется много знаний и времени, прежде чем можно будет работать с ним. Мы хотели что-то простое в освоении, продуктивное и (прежде всего) дружественное к разработчикам. Поэтому мы разработали JSPX.

Основной целью JSPX является создание среды, удобной для разработчиков. Поскольку JSPX основан на стандартных тегах HTML и простых Java POJO:

  1. JSPX прост в освоении. Мы уже привлекли некоторых новых разработчиков с базовыми знаниями HTML и Java и без каких-либо знаний о фреймворке … и им удалось начать работать в удивительно короткие сроки.
  2. Готовые компоненты, которые реализуют общие задачи, такие как DataTable, ListTable, Validators и Capatcha, очень мощные.
  3. Использование декларативного кода с полной управляемостью, то есть способности взаимодействовать с объявленными элементами управления HTML через API Java, является фундаментальной концепцией в этой среде.      

Как декларативный код отличает JSPX?

JSPX достаточно умен, чтобы знать, что вам нужно сделать, без необходимости объяснять, как это сделать. Вам нужно только объявить некоторые атрибуты на ваших HTML-страницах, чтобы изменить поведение результатов. Например, если для значения «AutoBind» установить значение «True» в компоненте DataTable, таблица данных автоматически подключится к базе данных без какого-либо кода Java.

Вот некоторые из тегов DataTable:

Чтобы дать нам интуитивное представление о том, что влечет за собой JSPX, можете ли вы дать нам сценарий «Hello World»?

Hello World с JSPX очень прост. Всего три шага помогут вам в пути:

  1. Настройте файл web.xml. Просто зарегистрируйте два сервлета и выберите шаблон URL:

    <servlet>
    <display-name>JspxHandler</display-name>
    <servlet-name>JspxHandler</servlet-name>
    <servlet-class>eg.java.net.web.jspx.engine.RequestHandler</servlet-class>
    </servlet>

    <servlet>
    <display-name>ResourceHandler</display-name>
    <servlet-name>ResourceHandler</servlet-name>
    <servlet-class>eg.java.net.web.jspx.engine.ResourceHandler</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>JspxHandler</servlet-name>
    <url-pattern>*.jspx</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
    <servlet-name>ResourceHandler</servlet-name>
    <url-pattern>/jspxEmbededResources/*</url-pattern>
    </servlet-mapping>
  2. Создайте файл HTML с расширением, которое вы выбрали в шаблоне URL. Например, FirstPage.jspx в папке Webroot:

    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://jspx-bay.sourceforge.net/jspx.xsd"
    controller="FirstPage" >
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>jspx demo</title>
    </head>
    <body>
    <form method="post" enctype="multipart/form-data" >
    <label id="resultLabel"></label>
    </form>
    </body>
    </html>
    </page>
  3. Создайте класс Java. У него должно быть то же имя, которое определено в атрибуте контроллера в теге HTML-страницы «jspx.demo.web.controller.FirstPage»:

    public class FirstPage extends Page {

    protected void pageLoaded() {
    resultLabel.setValue("Hello Web in JSPX");

    }

    public Label resultLabel = new Label();

    public Label getResultLabel() {
    return resultLabel;
    }

    public void setResultLabel(Label result) {
    this.resultLabel = result;
    }

    }

Теперь вы можете запустить и попробовать получить доступ к этому URL http: //localhost//jspx-demo/pages/FirstPage.jspx.

Теперь, пожалуйста, расскажите нам, как именно HTML-файл в JSPX отличается от обычных HTML-файлов.
     

Глядя на приведенный выше пример, мы видим, что страница содержит стандартные теги HTML, за исключением корневого элемента <page>. Это одна из наиболее важных функций JSPX: возможность портировать уже разработанную HTML-страницу на страницы JSPX. Просто оберните HTML в теги <page>! JSPX построен поверх всех стандартных тегов HTML. Однако при рассмотрении некоторых сложных бизнес-кейсов, таких как поиск в базе данных, могут потребоваться некоторые нестандартные теги, специфичные для JSPX (как показано на скриншоте ранее в этом интервью).

Что именно определено в POJO и как они подключены к файлам HTML? 

Код контроллера, который является простым классом POJO, представляет собой представление декларативного кода HTML на странице JSPX. На странице вы видите атрибут «Контроллер» в узле страницы. Это определяет имя класса контроллера. В этом контроллере вы можете определить веб-элементы управления, имена которых совпадают со значением атрибута ID на странице HTML. Таким образом, вы сможете взаимодействовать с ними. Кроме того, через этот контроллер вы получаете набор унаследованных методов для управления всеми фазами JSPX. В дополнение к этому, существуют расширенные методы связывания с помощью элемента управления JspxBean, которые почти совпадают с компонентами поддержки JSF.

Как насчет файлов конфигурации, таких как struts-config.xml? 

Подход, принятый в конфигурации, является одним из наиболее важных преимуществ JSPX. Нашей главной целью с самого начала было устранить головную боль файлов конфигурации. В отличие от JSF и Struts, JSPX не требует никаких файлов конфигурации, кроме стандартного файла web.xml. Следовательно, JSPX можно считать «структурой нулевых конфигураций».

Есть ли недостатки в использовании этой платформы? 

Использование относительно новых структур считается риском для некоторых людей. В JSPX мы изучили другие фреймворки и рассмотрели практически все, что нужно и чего не хватает. Кроме того, мы предоставили возможность использовать JSPX с уже разработанными проектами, выполненными в различных технологиях, таких как JSF и JSP. Также мы поддерживаем включение уже созданных JSP на страницы JSPX.

Используете ли вы фреймворк в рабочем коде и каковы результаты этого? 

За последние 5 месяцев, с момента первого анонса JSPX, он использовался как минимум в пяти наших корпоративных проектах. Некоторые из них были полностью перенесены в JSPX. Другие уже были созданы с использованием различных технологий, и JSPX использовался для реализации новых требований. Во всех этих случаях JSPX обеспечивает выдающуюся производительность. Топ-менеджмент очень доволен нашим временем выхода на рынок. Фактически, мы смогли выполнить требования, которые были запланированы на несколько дней всего за час!

Каковы дальнейшие планы этой структуры?

Первый релиз JSPX был анонсирован 1 января 2009 года … и фреймворк на этом не остановится! Существует план для ежемесячных выпусков, направленных на исправление ошибок и новые функции. Мы планируем обеспечить поддержку AJAX, которая запланирована в следующей сборке. Кроме того, плагин для IDE NetBeans повысит производительность пользователей этой платформы.

В основном мы рассчитываем на обратную связь с пользователями, чтобы управлять этой платформой, поскольку она сильно характеризуется как очень динамичная и ориентированная на бизнес-модель среда.

Как начать его использовать?

Посещение веб-сайта проекта по адресу  http://jspx-bay.sourceforge.net даст вам полную отправную точку для JSPX. Также предоставляется демонстрационный проект, демонстрирующий некоторые варианты использования фреймворка. И, конечно же, мы более чем рады поддержать любой запрос по электронной почте поддержки JSPX: support DOT jspx AT gmail DOT com.