Являются ли веб-фреймворки Java действительно достойными хлопот?

Я относительно новичок в программировании на Java (около 2 лет), но не в веб-разработке. Я начал с HTML и ASP (pre.NET), и недавно начал возиться с J2EE. Я чувствую, что хорошо разбираюсь в JSP/Servlets (я нахожу их похожими на ASP) и недавно начал работать с JSF и Facelets. Хотя я могу понять, почему люди хотели бы JSF, я нахожу, что это огромное бремя, и это фактически замедляет мои разработки. Я полагаю, что это связано с кривой обучения, но я часто думаю, что буду закончен со страницей/задачей, если бы я просто использовал JSP/Servlets.

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

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

Ответ 1

JSF может быть сложным для начала работы, и сложнее изучить, чем многие веб-фреймворки Java. Возможно, вам будет проще использовать JSF с Seam, что упростит большую часть работы с JSF и заменит JSP Facelets, что является большим улучшением.

В качестве альтернативы вы можете попробовать SpringMVC, который многие люди считают более удобным.

Ответ 2

Я использую facelets чуть больше года. Одно из главных преимуществ, которое я вижу в веб-фреймворках Java, заключается в том, что он помогает сохранить код чистым и способствует повторному использованию. Например, в facelets вы не получаете скриптлетов на своих страницах, как в JSP. Я видел файлы ASP в производстве, длина которых превышает 3000 строк. В ASP или JSP нет ничего изначально неправильного, но на самом деле довольно сложно объединить некоторую бизнес-логику на странице. Нет вреда, не так ли? Пока кто-то еще не должен его поддерживать.

Большинство фреймворков стараются "помочь", вы продолжаете более строгое разделение MVC или любой другой модели, которую они предпочитают, что в свою очередь приводит к созданию более чистых шаблонов (jsp, facelets, что угодно) и бизнес-кода и кода домена, которые автоматически проверяются на единицу. Использование многих фреймворков может занять немного больше времени, но сэкономить вам много раз, когда дело касается обслуживания и рефакторинга.

Ответ 3

Я думаю, что простой ответ - как вы его протестируете и проверите, работает ли он, когда вы вносите изменения?

Здесь простые решения ломаются, и вы оказываетесь в адском состоянии. К сожалению: (

Ответ 4

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

Позже, когда у меня возникла проблема с моим кодом, я могу просто пойти туда, где проблема, и добавить строку кода для ее исправления, а не прошивать страницы документации, чтобы найти волшебный параметр конфигурации. Если у меня есть проблема с (вставка любимой фреймворк), я обычно нахожу, что я p * ssing уже целую вечность, когда основная проблема, которую платформа должна решать, никогда не была настолько сложной в первую очередь.

Мои любимые бесполезные фреймворки - это те, которые требуют большого количества конфигурации и неуклюжий шаблонный код для выполнения основных задач, таких как отправка некоторых байтов в сокет или добавление некоторых параметров в подготовленный оператор и запуск его в базу данных. Другим из моих фаворитов является целый плот "технологий XML", особенно те, которые "подключаются" или "настраиваются". (Почему я хочу использовать "плагируемую парсерную структуру", а не только один парсер, который всегда работает...?) Позвоните мне, Виктор Мелдрю, но удивительно, как люди могут превратить 10-минутную проблему регулярного выражения в двухдневный, do-you-make-this-framework-with-X-in-the-title-do-it.

Теперь, когда говорят, есть люди, которые абсолютно преуспевают в Spring, Hibernate, JSF, MVCJammer, Joomajamaventilate, вещи с "X" в них и т.д. и т.д. Так ясно для некоторых людей в некоторых ситуациях, это чудо, и я просто упускаю из жизни.

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

Ответ 5

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

Я обнаружил, что JSF и Facelets, безусловно, стоят хлопот, если вы можете пережить кривую обучения. Это довольно круто, но когда вы это понимаете, с ним очень легко работать. Они упрощают управление задачами сеанса и области приложения, чем просто сырые JSP и сервлеты, и я обнаружил, что могу писать чистую Java, когда мне не нужно думать о сети в бизнес-логике. В общем, я считаю, что фреймворки помогают мне организовывать мои мысли (и, наконец, мой код) последовательным, легким для понимания способом.

Лицевые стороны, в частности, являются моим любимым движком веб-шаблонов. Мне нравится тот факт, что мои страницы являются правильными XML и что у меня нет скриптов повсюду. Это делает код намного чище и проще, если вы знаете структуру. Там эта кривая обучения снова.

Кстати, добавление AJAX в Facelets легко, если вы используете что-то вроде RichFaces или IceFaces. У них есть готовые компоненты ajax, которые вы можете легко добавить в свое приложение.

Тем не менее, это не лучшее для всех проектов, YMMV и т.д. В конце дня использование любой структуры - это решение. Если это не поможет вам решить вашу проблему, тогда это не стоит. Не сражайтесь со своими инструментами, используйте их правильно. Если инструмент на вашем пути, используйте другой инструмент. JSF и facelets на самом деле не очень хороший выбор в очень маленьком приложении. Они действительно не приходят в свои руки, пока у вас не будет достаточно сложной модели домена и сложной бизнес-логики. В принципе, вам нужно, чтобы проект был достаточно сложным, чтобы преодолеть количество кода шаблона, который вам нужно написать, чтобы начать работу.

Ответ 6

Я второй SpringMVC. Это очень легко понять, и код очень семантический, если вы используете annotations. Как и те рекламные ролики Budweiser... Сервлеты слишком светлые... Struts слишком тяжелый.

Я хочу, чтобы у Java были Scaffolding. Он может с Grails, но это другая структура для внедрения внутри рамки.

Ответ 7

SpringMVC стоит того хлопот. J2EE не является.