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

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

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

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

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

9 ответов

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам