Как создать веб-приложение Java
-
22-08-2019 - |
Вопрос
Скоро мне придется запустить веб-проект для компании, и теперь мне нужно выбрать технологию для создания приложения.Я подумываю об использовании Java, поэтому мне хотелось бы найти фреймворк, который поможет мне создать приложение (я привык к фреймворку PHP, такому как CakePHP и CodeIgniter).
Чего я не понимаю, так это того, что существует множество фреймворков и технологий, которые преследуют одну и ту же цель.Структура действий, структура компонентов...что я могу сделать с одним, чего не могу сделать с другим?Кажется, что веб-приложение Java должно разрабатываться путем смешивания множества различных технологий, поэтому я немного растерялся...Я рассмотрел различные Java-фреймворки, такие как JSF, Stripes, Struts2, Tapestry, Wicket и Spring.Что касается последнего, я не совсем понимаю, каковы различные части этой структуры, что она может для меня сделать, а что нет.Что я могу взять от Spring, а что мне не нужно...
Следовательно :что мне нужно для создания веб-приложения Java?
Я уже использовал JSF для базового приложения CRUD, но пытаюсь найти что-то, что лучше соответствует моим потребностям.Приложение, которое нам нужно будет создать, будет одновременно платформой сообщества и торговым сайтом с важными данными, которые необходимо защитить :)
Что касается ORM, я думаю, я просто выберу Hibernate...Также я слышал о Maven или Ant, чем они могут мне помочь?
Любые советы/руководящие руководства будут высоко оценены :-) Заранее спасибо.
Редактировать :каковы мои потребности:Java-фреймворк, который:
- хорошо документировано/легко получить помощь/настолько просто, насколько это возможно...
- чем больше Java, тем лучше
- Дружественный к Ajax/возможность создания красивого пользовательского интерфейса...
- Интернационализация
- Будучи еще студентом, конкурентоспособность навыков может иметь значение...
Приложение, которое нужно создать, является одновременно
- Сайт сообщества:веб 2.0, CRUD
- Сайт электронной коммерции
полные характеристики еще не закончены.
Решение
На этот вопрос очень сложно ответить, поскольку я недавно побывал в вашей ситуации, я постараюсь дать некоторое представление.По сути, Java предлагает огромный выбор фреймворков, и никто не может точно сказать вам, какой из них лучше всего подходит для вас. Мы можем лишь дать вам подробное описание некоторых технологий.
Ниже приводится то, с чем я столкнулся в поисках тех же ответов, что и вы.
В Java есть множество технологий, которые пытаются предоставить полнофункциональное решение.Эти технологии можно разбить на другие технологии, но они хорошо работают, когда вы используете их вместе.
По сути, существует три уровня веб-приложений: уровень представления, бизнес и уровень данных.Уровень представления — это интерфейс, то, что видит пользователь.Обычно вы можете смешивать и сочетать технологии для этих трех уровней.Например, вы можете использовать интерфейс Stripes с платформой Spring для IOC и Hibernate в качестве ORM.
Существует множество замечательных технологий, которые можно использовать для уровня представления, в том числе Spring-MVC, STRUTS, Stripes, Wicket, JSF/SEAM и Tapestry.Большинство из них используют JSP для представления с использованием JSTL, за исключением калитки, которая фактически полностью отделяет HTML от логики с помощью «компонентов» Java (POJOS).У обоих подходов есть преимущества и недостатки.Преимущество подхода с калиткой заключается в том, что у вас есть статическая проверка типов и полное разделение HTML-кода, поэтому вы можете передать его своему дизайнеру.
На бизнес-уровне обычно люди используют какую-то структуру инверсии управления (IOC) для внедрения зависимостей (DI).Популярными платформами для IOC являются Spring и Seam, они имеют связанные технологии, такие как Spring-security, и обычно поддерживаются другими технологиями.Google Guice, кажется, популярен благодаря прямой структуре внедрения зависимостей.
Наконец, для уровня данных большинство людей склонны использовать Hibernate или JPA.Есть и другие, но у меня нет опыта работы с ними и я не могу предоставить никакой дополнительной информации.
Tapestry — это еще один фреймворк, который, насколько я понимаю, пытается быть полным стеком и использует подход, подобный калитке (или, я думаю, Wicket использует подход, подобный гобелену).Grails — это еще одна полнофункциональная платформа, использующая Groovy и построенная на основе Spring и Hibernate.Если вам нравится Rails, Grails вполне подойдет.
Большинство из этих технологий имеют много доступной информации и очень активные списки рассылки/чаты IRC.Что вам нужно сделать, это взглянуть на них, а затем решить, какой подход подходит именно вам.Здесь никто не сможет сказать вам, что вам понравится.
Если вам нужна рекомендация, я хотел бы однажды использовать стек Wicket/Guice/Hibernate.
Другие советы
Мой фаворит, безусловно, весна.Новый Spring MVC 2.5 легко и быстро настраивается, имеет множество аннотаций, которые помогут вам декларативно подключить контроллеры, что избавит вас от необходимости печатать.Он также интегрируется с контейнером Spring, который определенно является моей любимой легкой заменой J2EE-контейнером.Обычно я комбинирую SpringMVC с простым JSP, но есть много других технологий представления на выбор.Для устойчивости я обычно использую Hibernate.Возможно, стоит взглянуть Весна РОО это что-то вроде Grails без Groovy.Spring Security предлагает удобный и простой декларативный способ обеспечения безопасности и интегрируется с целым рядом технологий аутентификации.
Maven и ant — это инструменты сборки, а maven также обрабатывает зависимости за вас.Вы «просто» настраиваете дескрипторы, описывающие нужные вам библиотеки и требования к версии, а maven загрузит для вас все библиотеки и их зависимости.Однако это заставляет вас следовать определенной схеме проекта.Для ant есть Ivy, который делает зависимости.
Я предлагаю вам взглянуть на Грааль.Grails — это платформа веб-приложений «кодирования по соглашению», построенная на стеке проверенных платформ Java (Spring, Hibernate и т. д.) и использующая классный язык..
Прелесть Grails в том, что вам не нужно много знаний о Spring, Hibernate и т. д.для начала.Но после этого у вас все равно будет доступ ко всем возможностям этих фреймворков, если это будет необходимо.
Обязательно используйте Spring для серверной части;на их бесплатном форуме поддержки есть отличное сообщество (вы также можете заплатить за более официальную поддержку).
Что касается вашего решения использовать Hibernate, вы можете захотеть написать код с использованием JPA, чтобы отделить свое приложение от Hibernate (который является одной из нескольких реализаций JPA).
Если вам нужен интерфейс Ajax, стоит взглянуть на ЗК рамки;его очень легко использовать без необходимости изучать JavaScript и избегать использования сантехнических библиотек, таких как DWR.
Советы других использовать Spring — отличная идея.Вы обнаружите, что на самом деле будете использовать несколько разных фреймворков вместе, потому что каждый фреймворк решает немного другую задачу.
Я бы посоветовал вам потратить некоторое время на каждую структуру или технологию, прежде чем приступить к делу, но в конечном итоге вы захотите заставить их работать вместе.Например, вам может понадобиться настройка Struts + Spring + Hibernate.Их настройка может стать головной болью.
Поэтому я предлагаю вам использовать AppFuse что помогает путем создания базового приложения с базовыми функциями.Это огромная экономия времени.Вам, конечно, необходимо понимать различные платформы, которые настроены для вас, так что это не волшебное решение.