Выбрать «лучшие» или более привычные технологии для нового проекта? - PullRequest
15 голосов
/ 25 мая 2010

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

Однако мой опыт работы с веб-приложениями включал JSP, Servlets и JSTL ... Я знаю идеи, лежащие в основе новых технологий, таких как Hibernate / Spring, но никогда не использовал их. Поэтому мы написали свои собственные DAO, обработали AJAX, написав специальные страницы мини-JSP, которые генерировали страницы XML / JSON и т. Д.

Мне не очень нравится идея, что Spring / Hibernate - это «единственный» или «правильный» способ сделать любой веб-проект на Java, но они широко используются. С другой стороны, не только попытки научиться этому увеличивают начальное время разработки, но я буду использовать свои попытки обучения для создания производственной системы.

Я помню одну из ранних статей Джоэла (я перефразирую, так как не могу ее найти)

"независимо от того, что круто, всегда использовать технологии, которые ведут разработчик (или команда разработчиков?) знает лучше "

Интересно, что люди думают об этом?

пс: это должен быть CW?

Ответы [ 8 ]

6 голосов
/ 25 мая 2010

Я работаю консультантом, и я видел много проектов, в которых разработчики начинали с сервлетов + JSP, потому что это то, что они знали, и с ними довольно просто начать работу. Тем не менее, это дает команде возможность / оправдание написать собственную платформу , которая более интересна, чем использование чужой платформы, и просто написание приложения .

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

Теперь вам не следует использовать фреймворк только потому, что люди срыгивают посты друг друга в блогах о его удивительности, но вы также должны понимать, что существуют очень веские причины, почему существуют эти фреймворки (и почему они используются ). Если вы вообще не использовали веб-фреймворки, я бы порекомендовал вам взять Spring MVC, Wicket или что-то еще для тест-драйва. Они не решают все проблемы и вызывают некоторые из них самостоятельно, но в целом это обычно повышение производительности, особенно если вы создаете продвинутые пользовательские интерфейсы.

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

2 голосов
/ 25 мая 2010

Не пробуйте все сразу - используйте одну новую технологию за один раз.

1 голос
/ 01 июня 2010

При запуске нового проекта ограничьте количество незнакомых технологий / фреймворков для использования. Каждый фреймворк требует времени для изучения, и у каждого фреймворка есть проблемы, особенно если он не реализован правильно.

Если вы можете, я бы порекомендовал вам заглянуть в Play Framework . Это веб-фреймворк для Java, ориентированный на продуктивность разработчиков. Вы можете использовать Spring / Hibernate, если хотите, но вы не связаны этим. Его реализация очень проста в освоении, и вы сможете получить хорошую идею в течение дня, играя с ней, если это то, что вы ищете.

1 голос
/ 25 мая 2010

Я могу с уверенностью сказать, что весна стоит задуматься. Это дает вам столько, сколько вы можете взять, но не беспокоит вас вещами, которые вам не нужны.

Например, в самом начале вам, вероятно, понадобится только внедрение зависимостей. Тогда вам понадобится помощь по взаимодействию с базой данных и управлению транзакциями. Затем вы решите применить паттерн MVC к вашему веб-приложению. После этого, возможно, вы поймете, что компоненты вашей системы должны отправлять JMS друг другу. И так далее, и тому подобное.

Для всех этих случаев у Spring есть простое, интуитивно понятное и легкое решение.

1 голос
/ 25 мая 2010

Остерегайтесь приманок крутых новых фреймворков! В настоящее время я работаю над крошечным веб-приложением, которое имеет только логин, несколько в основном статических страниц и несколько форм для запроса информации по электронной почте. , Мне потребовалось бы, возможно, два дня, чтобы сделать традиционный Servlet / JSP в стиле MVC. Вместо этого, поскольку график был слабым, я решил использовать этот проект для ускорения работы в Spring, Spring MVC и Spring WebFlow. Хотя вполне возможно, что я просто дремучий, мне понадобилось несколько недель , чтобы понять, как правильно делать вещи, но я все еще не совсем уверен, что все делаю правильно, и приложение еще не сделано. К счастью, из-за слабости мне не грозит срыв общего графика проекта, но я всегда спрашиваю себя, придется ли мне его пересматривать и начинать все сначала.

Но я усвоил урок: в следующий раз я не буду толкать новый фреймворк, если он не использовался ранее для производственных проектов. Тем не менее, я рад, что теперь я понимаю Spring (или, по крайней мере, мне кажется, что я понимаю), и без колебаний буду использовать его снова в следующий раз.

Так как же я буду изучать новый фреймворк в следующий раз? Если есть руководитель проекта (в данном случае я руководитель проекта из одной команды, там никакой помощи), я бы использовал структуру, которую они создали. Если нет или я хочу изучить среду, которой не руководит проект, я бы использовал ее для стороннего проекта в свое свободное время. Учиться хорошо. Не очень хорошо подвергать риску работу компании, бросая ей непроверенные технологии.

0 голосов
/ 25 мая 2010

Существует одна крупная ловушка с любой неизвестной технологией. Вы не знаете, где находятся драконы, и не знаете, как тереть новую технологию «с волосками».

Знание того, что займет , займет время, и вам нужно это учитывать в своих оценках. Также ваши оценки, скорее всего, будут слишком низкими ...

0 голосов
/ 25 мая 2010

Я бы определенно порекомендовал посмотреть на весну, я нашел, что это спасло меня бесчисленные часы. hibernate также полезен, если вам нужен слой ORM (и у Spring тоже есть хорошая интеграция с hibernate). они, конечно, не «единственный» или даже «правильный» способ сделать что-то (это довольно субъективно), но они оба сэкономили мне время и усилия, особенно весну.

0 голосов
/ 25 мая 2010

Зависит от того, что хочет клиент (в мире консалтинга). Вы должны изучить новые технологии. Клиент хочет заплатить за это?

Не все предостережения новых известны, а более старые доказаны гораздо больше.

Конечно, если бы все так думали, мы бы все застряли с В.Б. Вы должны найти правильный баланс и многому научиться сами, чтобы вы могли объективно оценить имеющиеся технологии, их преимущества и недостатки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...