Выберите "лучшие" или более знакомые технологии для нового проекта?
Я ищу, чтобы начать работу над совершенно новым проектом, о чем я уже давно думал в качестве своего первого независимого продаваемого проекта.
Это, в общем, веб-приложение для сервисов, и мой первый выбор, серверный язык довольно прост... Я знаю, что Java довольно хорошо работает над веб-приложениями Java в прошлом.
Однако мой опыт работы с веб-приложениями связан с JSP, сервлетами и JSTL... Я знаю идеи новых технологий, таких как Hibernate/ Spring, но никогда не использовал их. Итак, мы написали собственные DAO, обработали AJAX, написав специальные мини-JSP-страницы, которые генерировали страницы XML/JSON и т.д.
Я не очень понимаю, что Spring/Hibernate - это "единственный" или "правильный" способ сделать любой веб-проект Java, но они широко используются. С другой стороны, не только попытаться узнать, что они увеличивают первоначальное время разработки, но я буду использовать свои попытки обучения для создания производственной системы.
Я помню одну из ранних статей Джоэла (я перефразирую, так как не могу ее найти)
"независимо от того, что круто, всегда используйте технологии, ведущие разработчик (или команда разработчиков?) знает лучше"
Я задавался вопросом, что люди думали об этом?
ps: должно ли это быть CW?
Ответы
Ответ 1
Остерегайтесь приманок прохладных новых фреймворков! Я сейчас взламываю крошечное маленькое веб-приложение, которое просто имеет логин, несколько в основном статических страниц и несколько форм для запроса некоторой информации по Эл. адрес. Мне потребовалось бы два дня, чтобы сделать традиционный сервлет /JSP в стиле MVC. Вместо этого, поскольку в расписании было слабое, я решил использовать этот проект, чтобы ускориться в Spring, Spring MVC и Spring WebFlow. В то время как вполне возможно, что я просто плотный, мне потребовалось несколько недель, чтобы окунуться в правильную позицию, я все еще не полностью уверен, что делаю все правильно, и приложение все еще не сделано, К счастью, из-за слабости, мне не грозит общий провал проекта, но я всегда спрашиваю себя, не собираюсь ли я его пересматривать и начинать.
Я выучил свой урок: в следующий раз я не буду тем, кто подталкивает новую структуру, если только ее я раньше не использовал для производственных проектов. Тем не менее, я рад, что теперь понимаю Spring (или, по крайней мере, я думаю, что делаю), и не стесняйтесь использовать его в следующий раз.
Итак, как я буду изучать новую структуру в следующий раз? Если есть проект (в данном случае я возглавляю проект одной команды, там никакой помощи), я бы использовал структуру, которую они создали. Если этого не происходит или я хочу изучить структуру, которую проект не использует, я бы использовал его для побочного проекта в свое время. Обучение хорошее. Приведение компании к риску, бросая непроверенную технологию, не так хорошо.
Ответ 2
Я работаю консультантом, и я видел много проектов, в которых разработчики начали с сервлетов + JSP, потому что это то, что они знали, и это довольно просто начать. Тем не менее, это дает команде возможность/повод написать собственную платформу, которая более интересна, чем использование кого-то еще и просто запись приложения.
По мере роста проекта команда изобретает все больше и больше колес, некоторые из которых заканчиваются square. То, что я вхожу в рисунок - добавление новых материалов на эту полугибкую платформу стало настолько сложным, что разработчики не могут продолжать добавлять функции и исправлять ошибки, не нажимая подкрепления. Просто чтобы добавить оскорбление к травме, внутренним разработчикам обычно принадлежат те, кто получает назначение на исправление ошибок, потому что исправления ошибок требуют большего знания о недрах того, что стало проприетарной структурой настойчивости и веб-сети, и поэтому эти консультанты-консультанты, которые хотят получить новые, забавные вещи.
Теперь вы не должны использовать фреймворк только потому, что люди ругали друг друга в сообщениях блога об удивительности этого, но вы также должны понимать, что есть очень веские причины существования этих фреймворков (и почему они используются). Если вы вообще не использовали каких-либо веб-фреймворков, я бы рекомендовал вам взять Spring MVC, Wicket или что-то еще для тестового диска. Они не решают всех проблем, и они действительно вызывают некоторые из них, но общая сумма обычно является увеличением производительности, особенно если вы создаете расширенные пользовательские интерфейсы.
Я работал над проектами, где простой JDBC был достаточно достаточным для настойчивости, и где не было более продвинутых веб-фреймворков, чем сервлетов + JSP, но эти проекты составляют меньшинство. Не используя рамки или два, вы никогда не будете ли ваш проект частью того меньшинства, которое не нуждается в нем, или если оно является частью большого большинства, которое делает.
Ответ 3
Не пробуйте все сразу - возьмите одну новую технологию за раз.
Ответ 4
Я могу с уверенностью сказать, что Spring стоит рассмотреть. Это дает вам столько, сколько вы можете взять, но это не беспокоит вас тем, что вам не нужно.
Например, в самом начале вам, вероятно, потребуется только инъекция зависимостей. Затем вам понадобится помощь в взаимодействии с базами данных и управлении транзакциями. Затем вы решите применить приложение MVC к своему веб-приложению. После этого вы поймете, что компоненты вашей системы должны отправлять JMS друг другу. И так далее и т.д.
Для всех этих случаев Spring имеет свое простое, интуитивное, легкое решение.
Ответ 5
При запуске нового проекта необходимо ограничить количество незнакомых технологий/фреймворков. Каждая структура требует времени, чтобы учиться, и в каждой структуре есть проблемы, особенно если они не реализованы правильно.
Если вы можете, я бы порекомендовал вам заглянуть в Play framework. Это веб-среда для Java, которая фокусируется на производительности разработчиков. Вы можете использовать Spring/Hibernate, если хотите, но вы не связаны этим. Это очень простая в освоении реализация, и вы должны иметь возможность получить хорошую идею в течение дня, когда будете играть с ней, если это то, что вы ищете.
Ответ 6
Это зависит от того, чего хочет клиент (в мире консультаций).
Вы должны изучать новые технологии. Клиент хочет заплатить за это?
Известны не все предостережения о новых, тогда как более старые - намного больше.
Конечно, если бы все так думали, мы бы все время застряли с VB. Вы должны искать правильный баланс и учиться слишком много, чтобы вы могли получить объективное представление о доступных технологиях, их преимуществах и недостатках.
Ответ 7
Я лично определенно рекомендую заглянуть в spring, я нашел, что он спас меня бесчисленное количество часов. hibernate также полезен, если вам нужен уровень ORM (и spring имеет приятную интеграцию с спящим режимом). они, конечно, не являются "единственным" или даже "правильным" способом делать что-то (что вполне субъективно), но они оба спасли мне время и силы, особенно spring.
Ответ 8
Существует одна крупная ловушка с любой неизвестной технологией. Вы не знаете, где находятся драконы, и вы не знаете, как протирать новую технологию "волосами".
Обучение, которое займет время, и вам нужно иметь это в своих оценках. Кроме того, ваши оценки, скорее всего, будут слишком низкими...