Я надеюсь запускать работу над совершенно новым проектом, что-то, о чем я думал некоторое время как мой первый независимый sellable проект. Это - вообще говоря веб-сервисное приложение и мой предпочтительный вариант, язык сервера довольно легок... Я знаю Java вполне прилично от работы над веб-приложениями Java в прошлом.
Однако мой опыт, делающий веб-приложения, включил JSP, Сервлеты и JSTL... Я знаю, что идеям позади более новых технологий нравится, в спящем режиме/Spring, но никогда не использовали их. Таким образом, мы записали наши собственные ДАО, обработанный Ajax путем записи специальных mini-JSP страниц, которые генерировали страницы XML/JSON и т.д.
Я не чрезвычайно в идею, что Spring/Быть в спящем режиме является 'единственным' или 'правильным' способом сделать любой веб-проект Java, но они широко используются. С другой стороны, не только был бы, пытаясь узнать, что они увеличивают время начального развития, но я использовал бы свое приобретение знаний попыток создать производственную систему.
Я помню, что в одной из ранних статей Joel было сказано (я буду перефразировать, так как я не могу найти его),
"независимо что в моде всегда используйте технологии что ведущий разработчик (или команда разработчиков?) знает лучше всего"
Я задался вопросом, какие люди думали об этом?
PS: это должно быть CW?
Остерегайтесь соблазна новых крутых фреймворков! Сейчас я работаю над крошечным веб-приложением, в котором есть только логин, несколько в основном статических страниц и несколько форм для запроса информации по электронной почте. Это заняло бы у меня около двух дней, чтобы сделать традиционный Servlet/JSP в стиле MVC. Вместо этого, поскольку в расписании было свободное время, я решил использовать этот проект, чтобы быстрее освоить Spring, Spring MVC и Spring WebFlow. Вполне возможно, что я просто тупой, но мне потребовалось несколько недель, чтобы понять, как правильно все делать, я до сих пор не уверен, что все делаю правильно, и приложение все еще не готово. К счастью, благодаря простоям мне не грозит срыв общего графика проекта, но я все время спрашиваю себя, не придется ли мне все бросить и начать сначала.
Однако я усвоил урок: в следующий раз я не буду проталкивать новый фреймворк, если только он не используется в производственных проектах. Тем не менее, я рад, что теперь понимаю Spring (или, по крайней мере, думаю, что понимаю) и в следующий раз без колебаний буду использовать его снова.
Так как же я буду изучать новый фреймворк в следующий раз? Если есть руководитель проекта (в данном случае я являюсь руководителем проекта в команде из одного человека, тут уж ничего не поделаешь), я бы использовал фреймворк, который они установили. Если нет, или если я хочу изучить фреймворк, который руководитель проекта не использует, я использую его для дополнительного проекта в свободное время. Учиться - это хорошо. Подвергать риску работу компании, бросая на нее непроверенную технологию, не очень хорошо".
Не пробуйте все сразу - беритесь за одну новую технологию за раз.
Я работаю консультантом и видел множество проектов, в которых разработчики начинали с сервлетов + JSP, потому что это то, что они знали, и с этим довольно просто начать. Однако это дает команде возможность / оправдание для написания собственной платформы , что более увлекательно, чем использование чужой и простое написание приложения .
По мере развития проекта команда изобретает все больше и больше колес, многие из которых заканчиваются квадратом . Вот где я вступаю в картину - добавление новых вещей к этой полугибкой платформе стало настолько сложным, что разработчики не могут продолжать добавлять функции и , исправляющие ошибки, без вызова подкрепления. Чтобы добавить оскорбления к травмам, внутренние разработчики обычно получают задание делать скучные исправления ошибок, потому что исправления ошибок требуют большего знания кровавых внутренностей того, что стало проприетарной структурой персистентности и Интернета, и так проклятые консультанты делают новые забавные вещи.
Вы не должны использовать фреймворк только потому, что люди повторяют сообщения в блогах друг друга о его великолепии, но вы также должны понимать, что существуют очень веские причины, по которым эти фреймворки существуют (и почему они используются ).Если вы вообще не использовали какие-либо веб-фреймворки, я бы порекомендовал вам взять Spring MVC, Wicket или что-то еще для тест-драйва. Они не решают всех проблем и вызывают некоторые из них сами, но в целом обычно повышается производительность, особенно если вы создаете продвинутые пользовательские интерфейсы.
Я участвовал в проектах, где простого JDBC было вполне достаточно для сохранения, и где не требовались более продвинутые веб-фреймворки, чем сервлеты + JSP, но таких проектов меньшинство. Без использования одного или двух фреймворков вы никогда не станете частью того меньшинства, которому он не нужен, или частью подавляющего большинства, которому он нужен.
Это зависит от того, чего хочет заказчик (в мире консалтинга). Вы должны изучать новые технологии. Хочет ли покупатель за это платить?
Не все недостатки новых известны, в то время как старые доказаны гораздо больше.
Конечно, если бы все так думали, в наши дни мы бы все застряли на VB. Вы должны найти правильный баланс и многому научиться сами, чтобы получить объективное представление о доступных технологиях, их достоинствах и недостатках.
Я лично определенно рекомендую обратить внимание на spring, я обнаружил, что он сэкономил мне бесчисленное количество часов. hibernate также полезен, если вам нужен уровень ORM (и у spring есть хорошие интеграции с hibernate). они, конечно, не "единственный" или даже "правильный" способ делать вещи (это довольно субъективно), но они оба сэкономили мне время и усилия, особенно spring.
Я могу точно сказать, что Spring стоит рассмотреть. Она дает вам столько, сколько вы можете взять, но не беспокоит вас тем, что вам не нужно.
Например, в самом начале вам, вероятно, нужна только инъекция зависимостей. Затем вам понадобится помощь по взаимодействию с базой данных и управлению транзакциями. Затем вы решите применить паттерн MVC к вашему веб-приложению. После этого, возможно, вы поймете, что компоненты вашей системы должны посылать друг другу JMS. И так далее, и так далее.
Для всех этих случаев у Spring есть собственное простое, интуитивно понятное, легкое решение.
Есть одна серьезная ловушка с любой неизвестной технологией. Вы не знаете, где находятся драконы, и не умеете тереть новую технологию «волосами».
Чтобы узнать, что потребуется время, вам нужно иметь это в своих оценках. Также ваши оценки, скорее всего, будут заниженными ...
При запуске нового проекта ограничьте количество используемых незнакомых технологий / фреймворков. Каждый фреймворк требует времени для изучения, и у каждого фреймворка есть проблемы, особенно если он реализован неправильно.
Если вы можете, я бы рекомендовал вам обратить внимание на Play framework. Это веб-фреймворк для Java, который фокусируется на производительности разработчика. Вы можете использовать Spring / Hibernate, если хотите, но вы не связаны этим. Он очень прост в освоении, и вы сможете получить хорошее представление в течение одного дня игры с ним, если это то, что вы ищете.