Я преподаю Java EE в университете, и это был вопрос, заданный студентом. Я сказал «нет», но я не был полностью уверен, поэтому я подумал, что могу спросить вас, могущественные разработчики. :)
По сути, я бы хотел использовать сущности, если бы они были в моем контексте: геттеры, сеттеры и т. д., Как обычные POJO. если я использую EJB с его удаленным интерфейсом, сущности отделяются от базовой инфраструктуры, так что это недопустимо.
Я думал о написании такого уровня в своей магистерской диссертации. Если это мертвая идея, не стесняйтесь сказать мне. Если нет, скажите, хотите ли вы его.
Или, если есть такой инструмент, дайте мне знать!




Одна альтернатива - Spring Framework. Spring предоставляет собственную поддержку для привязки объектов сущностей к представлению и обрабатывает получение / настройку за вас после того, как оно подключено. Есть много модулей Spring на выбор. Стоит попробовать и Spring MVC, и Spring Webflow. Начать работу с Spring MVC (IMO) проще, но Sring Webflow позволяет использовать более сложную навигацию и больше вариантов области (например, область потока). Если вы ищете книгу, то Spring в действии - это спуск. Есть некоторые концепции, которые вам нужно будет решить (например, внедрение зависимостей), чтобы использовать Spring, но это того стоит.
Другой альтернативой является фреймворк Гобелен5. Tapestry - это платформа с открытым исходным кодом для создания динамических, надежных, высокомасштабируемых веб-приложений на Java. Tapestry дополняет и основывается на стандартном API сервлетов Java и поэтому работает в любом контейнере сервлетов или сервере приложений.
Гобелен делит веб-приложение на набор страниц, каждая из которых состоит из компонентов. Это обеспечивает согласованную структуру, позволяющую фреймворку Tapestry взять на себя ответственность за ключевые проблемы, такие как построение и отправка URL-адресов, постоянное хранение состояния на клиенте или на сервере, проверка пользовательского ввода, локализация / интернационализация и создание отчетов об исключениях. Разработка приложений Tapestry включает создание HTML-шаблонов с использованием простого HTML и комбинирование шаблонов с небольшими объемами кода Java. В Tapestry вы создаете свое приложение в терминах объектов, методов и свойств этих объектов, а не в терминах URL-адресов и параметров запроса. Tapestry привносит истинно объектно-ориентированную разработку в веб-приложения Java.
Идеология bean-компонентов в настоящее время заложена в любой подходящей среде Java, о которой я знаю. Как уже упоминалось, Spring - это хорошая / отличная универсальная структура бизнес-логики (посмотрите ее классы шаблон jdbc, они просто потрясающие - еще одна замечательная жемчужина - это applicationContext.xml), а для уровня представления я лично предпочитаю Apache Wicket.
Я не верю, что вы должны создавать свой собственный, но вместо этого найдите фреймворк, который соответствует вашим потребностям, и начните вносить свой вклад в его базу кода, таким образом вы начнете с уже сформированной пользовательской базой, и ваш код будет написан более тщательно, что, в свою очередь, сделает вас лучшим программистом.
Ах. Похоже, вы неправильно поняли мой вопрос :)
Бины предназначены для предоставления услуг внутри приложения. Допустим, я хотел бы разработать автономное Java-приложение с графическим интерфейсом Swing, и из этого приложения я хотел бы использовать сущности, присутствующие в области видимости приложения java ee.
Это то, что я хотел бы беспрепятственно: создавать сущности, изменять их, удалять их интуитивно понятным способом, не заботясь о проблемах с отключением EntityManager (если вы вызываете EJB удаленно и он передает обратно объект сущности, он будет отсоединен перед возвращением).
Я не хочу разрабатывать веб-приложение. JSF / JSP и тому подобное сильно интегрированы, но во многих средах было бы лучше использовать автономное клиентское приложение. :)
могут быть интересны грааль (http://www.grails.org/) или грифон (http://griffon.codehaus.org/)
StringTemplate написан Терренсом Парром, парнем, стоящим за ANTLR. Если вы заинтересованы в создании какой-либо текстовой презентации из модели, это очень хорошо.
У меня были отличные результаты, используя его для создания XML, веб-страниц и точечные файлы из той же модели. Вы пишете шаблон для визуализации объекта. Этот шаблон может вызывать другие шаблоны (в том числе рекурсивно) на основе данных, полученных из модели. (q.v. Функции изображения)
Геттеры и map.get() вызываются непосредственно из шаблонов. Модель может быть любой POJO. ST гордится своим строгим отделением от контроллера, поэтому в самих шаблонах допускается очень мало логики.
Как и в случае со всеми этими маленькими языками, это что-то новое для изучения, и, возможно, это не то, что вы ищете. Мне это действительно подошло.
Увидев ваш комментарий посередине, я понимаю, что вам нужен фреймворк для рабочего стола поверх Java EE.
Ответ здесь в том, что JSF работает через api сервлета. И определенно для Интернета, но подождите, вы все равно можете встроить tomcat или причал в свое приложение!
Возможности практически безграничны. Если ваш бизнес-уровень хорошо определен, просто создайте колебательный уровень, который вызывает ваши бизнес-функции.
Кроме того, Java EE - это API, некоторые части которого можно заменить, или вы можете просто использовать его часть. Контейнер в основном предназначен для работы с EJB, сервлетами JNDI и другими мелкими вещами. Все это можно использовать и в настольных приложениях.
Так что ответ зависит от вашей конкретной цели и фактического дизайна / реализации приложения.
В базовом современном приложении Java EE оно разбито на несколько уровней, из которых у вас есть 4 основных уровня.
+--------------------+
| Presentation |
+--------------------+
| Controller/Actions |
+--------------------+
| Business Delegate |
| (Service) |
+--------------------+
| Data Access Layer |
+--------------------+
| Database |
+--------------------+
Ваши приложения должны быть разделены на эти уровни с самого начала, чтобы вы могли в любой момент времени заменить любой слой, не затрагивая какой-либо его родственный уровень.
Пример: если вы использовали JDBC для уровня доступа к данным, вы сможете заменить его на Hibernate, не затрагивая бизнес-делегата или уровень базы данных. Преимущество использования такой архитектуры - возможность совместной работы с несколькими технологиями. Ваш бизнес-делегат (уровень сервиса) должен иметь возможность разговаривать с веб-сервисом и обрабатывать приложение, даже не заходя в браузер!
Что касается использования JSP в качестве уровня представления, существуют и другие доступные технологии, такие как скорость, Freemarker, как упоминал iberck выше, у гобелена также есть собственный механизм рендеринга. Вы также можете использовать XML + XSLT для визуализации пользовательского интерфейса. Также доступны приложения для управления пользовательским интерфейсом, такие как Плитки и sitemesh, которые помогают интегрировать различные технологии как разные компоненты страницы и отображать их как одно целое.
Вы также можете использовать легкие компоненты Swing с JNLP и разработать корпоративное приложение в стиле рабочего стола. Все, что нам нужно, это немного воображения и требования клиента, и мы можем использовать буквально все что угодно в качестве уровня представления.