Существует ли какой-либо другой сильно интегрированный инструмент уровня представления данных, кроме JSF / JSP для Java EE? - PullRequest
2 голосов
/ 17 ноября 2008

Я преподаю Java EE в университете, и это был вопрос, который задал студент. Я сказал «нет», но я не был уверен, поэтому подумал, что могу спросить у вас могучих разработчиков. :)

По сути, я бы хотел использовать сущности, если они были в моем контексте: средства получения кошек, установщики и т. Д., Как обычные POJO. если я использую EJB, используя его удаленный интерфейс, сущности отделяются от базовой инфраструктуры, так что это не нужно.

Я думал о написании такого слоя в моей диссертации. Если это мертвая идея, не стесняйтесь сказать мне. Если это не так, скажите мне, если вы хотите.

Или, если есть такой инструмент, дайте мне знать!

Ответы [ 9 ]

3 голосов
/ 20 ноября 2008

В базовом современном мире приложений Java EE оно разбито на несколько уровней, где у вас есть 4 основных уровня

+--------------------+
|   Presentation     |
+--------------------+
| Controller/Actions |
+--------------------+
| Business Delegate  |
|     (Service)      |
+--------------------+
|  Data Access Layer |
+--------------------+
|      Database      |
+--------------------+

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

Пример: если вы использовали JDBC для уровня доступа к данным, вы сможете заменить его на Hibernate, не затрагивая бизнес-делегата или уровень базы данных. Преимущество использования такой архитектуры заключается в возможности совместной работы с несколькими технологиями. Ваш бизнес-делегат (сервисный уровень) должен иметь возможность общаться с веб-сервисом и обрабатывать обработку приложения, даже не обращаясь к браузеру!

Что касается использования JSP в качестве уровня представления, существуют и другие доступные технологии, такие как скорость , freemarker , как уже упоминалось выше, у гобелена также есть собственный механизм рендеринга. Вы можете использовать XML + XSLT также для визуализации пользовательского интерфейса. Существуют также приложения для управления пользовательским интерфейсом, такие как Tiles и sitemesh , которые помогают интегрировать различные технологии в разные компоненты страницы и отображать их как одно.

Вы также можете использовать легковесные качающиеся компоненты с JNLP и разрабатывать корпоративное приложение в стиле рабочего стола. Все, что нам нужно, это немного воображения и требования клиента, и мы можем использовать буквально все что угодно в качестве уровня представления.

0 голосов
/ 20 ноября 2008

Увидев ваш комментарий посередине, я вижу, что вам нужна среда рабочего стола поверх Java EE.

Ответ здесь заключается в том, что JSF работает над сервлетом api. И это определенно для Интернета, но подождите, вы все еще можете вставить tomcat или jetty в ваше приложение!

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

Кроме того, Java EE - это API, некоторые части можно заменить, или вы можете просто использовать его часть. Контейнер в основном предназначен для работы с EJB, сервлетами JNDI и другими мелочами. Все это может быть использовано и в настольных приложениях.

Таким образом, ответ зависит от вашей конкретной цели и фактического дизайна / реализации приложения.

0 голосов
/ 19 ноября 2008

Грааль (http://www.grails.org/) или грифон (http://griffon.codehaus.org/) могут представлять интерес

0 голосов
/ 19 ноября 2008

StringTemplate написан Терренсом Парром, парнем из ANTLR. Если вы заинтересованы в создании какого-либо текстового представления из модели, это очень хорошо.

Я получил отличные результаты, используя его для генерации XML, веб-страниц и точечных файлов из той же модели. Вы пишете шаблон для визуализации объекта. Этот шаблон может вызывать другие шаблоны (включая рекурсивные) на основе данных, полученных из модели. (q.v. Функции изображения )

Получатели и map.get() могут вызываться непосредственно из шаблонов. Модель может быть любой POJO. ST гордится своим строгим отделением от контроллера, поэтому в самих шаблонах допускается очень мало логики.

Как и во всех этих маленьких языках, это что-то новое для изучения, и, возможно, не то, что вы ищете. Это было действительно хорошо для меня.

0 голосов
/ 19 ноября 2008

Ах. Кажется, вы не правильно поняли мой вопрос:)

Бины предназначены для предоставления услуг внутри приложения. Допустим, я хотел бы разработать отдельное Java-приложение с Swing Gui, и из этого приложения я хотел бы использовать сущности, присутствующие в области видимости Java-приложения.

Это то, что я хотел бы без проблем: создавать сущности, изменять их, интуитивно удалять их, не заботясь о проблемах EntityManager-detachment (если вы вызываете EJB удаленно и он передает объект-сущность обратно, он будет отсоединен до возвращения).

Я не хочу разрабатывать веб-приложение. JSF / JSP и тому подобное тесно интегрированы, но во многих средах было бы лучше автономное клиентское приложение. :)

0 голосов
/ 17 ноября 2008

Я никогда не пробовал, но JSF должен работать лучше с Facelets , чем с JSP.

У IBM есть статья об этом.

0 голосов
/ 17 ноября 2008

Идеология, лежащая в основе bean-компонентов, в настоящее время находится в любой известной Java-среде. Как уже упоминалось, Spring - это хорошая / отличная универсальная среда бизнес-логики (посмотрите на jdbc template классы, это просто потрясающе - еще одна замечательная жемчужина - applicationContext.xml , которая ) и для слоя просмотра я лично предпочитаю Apache Wicket .

Я не верю, что вы должны создавать свои собственные, но вместо этого найдите платформу, которая соответствует вашим потребностям, и начните вносить вклад в ее кодовую базу, таким образом, вы начнете с уже сформированной пользовательской базы, и ваш код будет написан более тщательно. что, в свою очередь, сделает вас лучшим программистом.

0 голосов
/ 17 ноября 2008

Другой альтернативой является Tapestry5 framework. Tapestry - это инфраструктура с открытым исходным кодом для создания динамических, надежных и масштабируемых веб-приложений на Java. Tapestry дополняет и основывается на стандартном API сервлетов Java и работает в любом контейнере сервлетов или на сервере приложений.

Гобелен делит веб-приложение на набор страниц, каждая из которых состоит из компонентов. Это обеспечивает согласованную структуру, позволяя платформе Tapestry взять на себя ответственность за ключевые проблемы, такие как построение и отправка URL-адресов, постоянное хранение состояния на клиенте или на сервере, проверка ввода данных пользователем, локализация / интернационализация и создание отчетов об исключениях. Разработка приложений Tapestry включает в себя создание шаблонов HTML с использованием обычного HTML и комбинирование шаблонов с небольшим количеством кода Java. В Tapestry вы создаете свое приложение с точки зрения объектов, а также методов и свойств этих объектов, а конкретно - не с точки зрения URL-адресов и параметров запроса. Tapestry приносит истинно объектно-ориентированную разработку в веб-приложения Java.

0 голосов
/ 17 ноября 2008

Одной альтернативой является Spring Framework . Spring предоставляет собственную поддержку привязки объектов-сущностей к представлению и обрабатывает получение / настройку для вас после его подключения. Есть много модулей Spring на выбор. Spring MVC и Spring Webflow стоит проверить. С Spring MVC (IMO) проще начать, но Sring Webflow допускает более сложную навигацию и больше возможностей области (например: область действия потока). Если вы ищете книгу Spring In Action - спуск. Существуют некоторые концепции, которые вам необходимо решить (например, внедрение зависимостей), чтобы использовать Spring, но это того стоит.

...