Имеет ли смысл использовать фреймворк для простого веб-приложения Java?
-
03-07-2019 - |
Вопрос
Я много занимался веб-разработкой на Java с использованием jsp и сервлетов, и я нашел этот подход простым и гибким.Однако некоторые из необходимых работ - например, управление подключениями к базе данных - довольно утомительны, и требуется изрядный объем работы только для того, чтобы запустить новое веб-приложение с нуля.
Поэтому я впервые рассматриваю возможность использования фреймворка, но мое впечатление о фреймворках таково, что они в основном используются для больших приложений J2EE и требуют много сложной конфигурации.То, что я ищу, - это что-то простое, что (после начального обучения) позволит мне как можно быстрее приступить к работе с новым веб-приложением.
Итак, мой вопрос таков - имеет ли смысл использовать фреймворк для простого веб-приложения Java?
Обратите внимание, что я не спрашиваю, какой фреймворк использовать (если действительно фреймворк рекомендуется), поскольку это уже было задано здесь.
Решение
В этом есть большой смысл.Моя команда провела большую часть пяти лет с нашим стеком с открытым исходным кодом, и это неважно, и у нас есть "начальный" проект (работает как appfuse), который мы используем для создания всех новых веб-приложений.Даже простые два пейджера с точки зрения обслуживания приложения, они выглядят как любое другое приложение, только меньше.
Короче говоря, вы не получите никакой отдачи от инвестиций прямо сейчас, но получите по мере развития проекта и его поддержания.
Другие советы
Если вы не используете веб-фреймворк, вы обычно заканчиваете тем, что пишете его - плохо.
Да, я бы использовал веб-фреймворк по следующим причинам:
- Расширенные навигационные возможности и элементы управления.Даже если они вам могут не понадобиться, вы всегда можете ими воспользоваться, если они вам понадобятся в любое время
- Как указывали другие, приложения растут с течением времени, и в какой-то момент в будущем вы почувствуете потребность в фреймворке.Когда вам нужно добавить дополнительные страницы и навигацию
- Функции, которые позволяют подключаться к другим фреймворкам, таким как security и DB access framework.Spring - яркий пример в мире Java.Вам никогда не придется использовать Spring, но он так хорошо сочетается со Struts, Spring MVC, Hibernate, Acegi и т.д.В конечном итоге это избавляет вас от необходимости самостоятельно выполнять все сантехнические работы.
- Поддержите!!!У хороших фреймворков почти всегда есть активное сообщество, которое поддерживает их, задает вопросы и отвечает на них.
Поначалу это может показаться слишком хлопотным, но определенно сэкономит вам много времени в будущем
Я бы сказал, что это действительно имеет большое значение который фреймворк, к которому вы стремитесь.Что-то вроде Spring MVC довольно ненавязчиво в вашем коде и позволяет вам довольно часто запускать существующие материалы как есть.Другие фреймворки имеют гораздо более конкретные представления о том, как вы должны что-то делать.
Да, в этом действительно есть смысл.Приложения могут расти и меняться, и им может потребоваться что-то, что фреймворк сможет легко предоставить в будущем.
Например, на моем рабочем месте у нас есть простое приложение jsp / servlet.Его нужно переписать только из-за того, что я объяснил выше.Если бы кто-то потратил время на простую настройку фреймворка, мы были бы сегодня в лучшей форме.
Да, в этом есть смысл.Однако в вашем вопросе подразумевается, что неправильная (для вас) структура может причинить больше боли, чем того стоит, - и это правда.Существует огромная разница между каким-нибудь тяжелым фреймворком J2EE и чем-то легким и жизнерадостным, вроде grails.
Какая есть альтернатива?Сворачиваешь свой собственный?Встраивать всю навигацию и логику в JSP?
Я согласен с теми, кто говорит, что веб-фреймворк того стоит.Сейчас их буквально сотни (например, Стойки, JSF, Пружины, Калитка и т.д.).Выберите тот, который подходит именно вам.
Существует два вида приложений:
1) такой, который вы выбрасываете и никогда больше не используете, и поэтому не стоит беспокоиться о модульности, ремонтопригодности и наглядности.
2) настоящий вид.
Иногда может показаться, что вашему приложению, возможно, никогда не придется расти, масштабироваться или обслуживать больший набор функций / базу пользователей, чем вы планируете в данный момент....Уверяю вас, такое восприятие всегда ошибочно.
Фреймворки, в частности такие вещи, как Struts для MVC в Java, Spring для MVC и внедрения зависимостей, Hibernate для объектно-реляционного моделирования - все это чрезвычайно ценные инструменты, которые обеспечивают модульность, ремонтопригодность и ясность вашего кода.Итак, чтобы ответить на ваш первоначальный вопрос....Да, решительно.
Нет, это не так, если только:
- у вас нет опыта работы с Java в вашей команде
- вы делаете всего лишь прототип, который должен быть готов через несколько часов
- вы не доверяете своим разработчикам достаточно, чтобы позволить их написать свое приложения
- вы не планируете позволять своим разработчикам учиться и совершенствоваться
Опасности при использовании фреймворков включают, но не ограничиваются ими:
- вы получите все дефекты каркаса сверху самостоятельно
- вы не сможете делать реалистичные оценки, пока не будете в совершенстве знать структуру
- ваша команда не научится программировать веб-сервер
- вы найдете свою команду проезжают более и больше времени на Google вместо этого устранение проблемы путем написания кода.
Единственное, что хуже всего при выборе фреймворка с открытым исходным кодом, - это наличие в компании отдельной команды НИОКР, которая должна создать "big complete ultimate company framework".
но мое впечатление о фреймворках таково, что они в основном используются для больших приложений J2EE и требуют много сложной конфигурации
Не обязательно это правда.Хорошие фреймворки созданы для хорошего масштабирования, так что они перенесут вас из небольших приложений в очень большие.Многие фреймворки сегодня переходят к нулевой конфигурации, поэтому вы найдете их все более простыми в использовании.
Вы правы в том, что для изучения самого фреймворка действительно требуются начальные усилия, но эти инвестиции окупаются уже в самом первом приложении, которое вы создаете.И мета-фреймворки, такие как Использовать это еще больше упрощает начало работы, поскольку оно предварительно настраивает фреймворки для вас.
Фреймворки имеют смысл для большинства приложений.Возможно, вам потребуется создать свой собственный или принять какой-то другой фреймворк.Наиболее важные вопросы - это степень детализации ваших структур данных.Под этим я подразумеваю, нужно ли вам просто вводить данные или вам нужно проанализировать, скомпилировать и выполнить динамический код?
Если вы рассматриваете фреймворк как индикатор, и слева находится полностью готовая существующая фреймворковая работа с открытым исходным кодом или закрытая, а справа - полностью пользовательский фреймворк, то наложите свой код поверх этой фреймворковой работы, где уровень сложности увеличивается справа.Чем дальше направо вы пойдете, тем больше проблем у вас возникнет с рамкой (IMO).
Однако вы также можете медленно перейти с существующего фреймворка на пользовательский.
Существует также вопрос о вашем бизнесе.Если вы работаете в компании, которая не рассматривает программное обеспечение как основу своей деятельности, такой как банк или больница, то вам нужно учесть это в том объеме работы, который вы хотите создать.
Итог, фреймворк того или иного типа всегда будет полезен.
Использование фреймворка может увеличить некоторые накладные расходы при разработке вашего веб-приложения из-за кривой обучения.Однако, в зависимости от выбранной вами платформы, вы можете воспользоваться следующими преимуществами:
- Масштабируемость
- Ремонтопригодность
- Четкое разделение вашей модели (например,MVC)
- Готовые компоненты (управление сеансами, аутентификация и т.д.)
- Плагины третьих лиц
- Модульность, унаследованная от фреймворка
- Многие другие.
Кроме того, кривая обучения является переменным фактором.Некоторые фреймворки могут быть легче освоены, чем другие, в зависимости от ваших навыков.
Определенно имеет смысл рассмотреть возможность использования фреймворка, даже если ни по какой другой причине, кроме того, что это даст вам новую область знаний.Если у вас есть время, чтобы инвестировать в изучение фреймворка, то со временем вы вполне можете обнаружить, что его проще и быстрее использовать для новых проектов, какими бы простыми они ни были.
Кроме того, если бы я мог проголосовать за пост Самберана, я бы это сделал.Начало работы с фреймворком будет включать в себя несколько моментов типа "о, здорово!Мне не нужно снова писать все это шаблонно!".
Я бы сказал, используйте один - как вы сказали, довольно утомительно запускать даже простое веб-приложение Java.Если фреймворк помогает вам выполнять работу быстрее и предоставляет необходимые вам услуги, я бы сказал, что это имеет смысл.