Java EE 5 Среда разработки
У меня есть клиент, у которого уже есть несколько приложений в производстве, и поэтому он уже принял решение о том, какой будет производственная среда для этого следующего проекта:
- Sun iPlanet 6.1 SP7 (с Apache)
- JDK 1.6
- Oracle Weblogic 10 MP3
- Oracle 10g
- 1024-битный SSL
У них также есть некоторые корпоративные стандарты для веб-приложений:
- Кот
- Распорки
- Совместимость с Safari, Firefox, IE6, IE7
Мне также сказали, что это приложение, скорее всего, не будет нуждаться в полной среде Java EE 5 (возможно, только веб-контейнер), но будет нуждаться в связи с ним, размещенным в отдельном экземпляре weblogic через клиентские EJB и т. Д., А также выполнять различные веб-операции. сервисные звонки на другие корпоративные сервисы.
Передо мной была поставлена задача принять решение о том, как будут выглядеть наши среды разработки и тестирования для этой новой команды (небольшие, возможно, 2 или 3 человека, включая меня, но могут вырасти в ближайшие месяцы). Я хочу создать такой, чтобы люди могли использовать любимую среду IDE и иметь хороший опыт разработки на локальном хосте, но при этом иметь плавный путь к развертыванию в тестовой среде, а затем снова к производственной среде. Я думаю, что на локальных рабочих станциях http в порядке, но сервер тестирования интеграции должен выглядеть точно так же, как рабочий сервер, и весь трафик должен быть https, чтобы быть уверенным, что мы получаем точное представление о том, какой продукт будет.
Зная, что локальные рабочие станции разработчиков будут сильно различаться и могут работать под управлением Mac OS X 10.6 (Snow Leopard) или Windows 7 на своих локальных рабочих станциях, но нужно будет также определить общий тестовый сервер: какой технологический стек даст нам хороший плавный путь от локальной разработки, через тестирование, до производства?
РЕДАКТИРОВАТЬ: Извините, когда я говорю технологии стек, я имею в виду, например, Ant + JBoss + Tomcat + Oracle XE против Maven + Geronimo + Derby. В основном это список конкретных реализаций спецификаций, которые нам нужно будет установить на каждой машине разработки и тестовом сервере, что дает нам гибкую среду разработки и плавный переход к тестовой и производственной средам.
РЕДАКТИРОВАТЬ 2: Вероятно, стоит упомянуть, что это приложение, если ему нужно сохранить какую-либо информацию вообще (что я предполагаю, будет иметь место), что бы это ни было, определенно не будет сложным. По всей вероятности, это будет что-то вроде элементарной базы данных о продуктах.
3 ответа
Я бы пошел на:
- Хадсон для ночных сборок (или для каждой регистрации)
- Mercurial или Subversion для контроля версий (отлично работает как на Windows, так и на Mac)
- Весна, Весна, Весна. Да, я серьезно, Spring решает гораздо больше проблем, чем просто внедрение зависимостей; как безопасность, пакетная обработка, обработка транзакций, системная интеграция.
- EclipseLink для ORM. Многие продвинутые функции (которых нет в Hibernate) часто спасли меня (например, приличная поддержка хранимых процедур).
- Легкий контейнер, такой как Jetty, Tomcat или Resin. Вы собираетесь совершить командный акт, если будете использовать тяжелые медленные вещи, такие как Geronimo или JBoss.
- DeltaWalker для инструмента слияния / различий (снова работает на всех платформах).
- Если вы собираетесь использовать расширенные функции базы данных, перейдите на OracleXE (и SQLDeveloper). Оба хороших инструмента. Если нет, то что-нибудь легкое, например, H2 или Derby, хорошо
- JUnit (или TestNG) и Mockito для модульного тестирования / макета.
- Пожалуйста, не используйте Struts. Серьезно, по крайней мере, идти со Struts2 или, желательно, что-то вроде JSF2, Stripes или GWT.
- Приличный багтрекер, например, JTrac, RedMine или FogBugz
- Селен для интеграционных испытаний
- Сонар для качества кода
Если вы собираетесь использовать разные IDE, то Maven может быть хорошей идеей, поскольку он позволяет конфигурировать каждую IDE из pom.xml (прекрасно работает в IntelliJ/NetBeans). Но лучший совет, который я могу вам дать - это.
- Идите с тем, что вы уже знаете и имеете опыт работы с. Вы не переходите от Struts к JSF2 в одночасье.
- Получить лучшие инструменты, которые вы можете получить, серьезно бесплатные вещи не всегда путь (хотя это часто бывает).
Счастливого взлома
Не совсем понятно, о чем именно вы спрашиваете, когда говорите "технологический стек", вы имеете в виду серверы, библиотеки, инструменты сборки? Во всяком случае, вот некоторые легкомысленные рекомендации:
- Гудзон для непрерывной интеграции
- Избегайте мавена, если вам это действительно не нужно. Он завлекает вас как сирену обещанием декларативных зависимостей и соглашения о конфигурации, но практика сильно отличается от теории
- Используйте Spring везде, где это возможно, предпочтение стандартным API Java SE/Java EE. В дополнение к более простым API это также облегчает тестируемость и функции AOP, которые намного проще, чем работа с AspectJ напрямую. Конечно, это также обеспечивает внедрение зависимости, которое поддерживает слабую связь
- Hibernate для ORM, или если ваши требования к постоянству очень просты, Spring-JDBC может быть достаточно
Тестовая среда должна точно повторять производство. Также проведите тестирование производительности в тестовой среде. Если проблема с оборудованием и количество серверов в кластере должно быть ограничено, тогда создайте меньшее количество серверов в тесте, но выполните репликацию того же env, что и на prod, т.е. iplanet (apache) + weblogic + oracle db и так далее....
Что касается локальной среды, вы можете использовать Tomcat (поскольку вам нужен только веб-контейнер), а для клиента ejb вы можете связать jar и сделать удаленные вызовы (если вы делаете удаленные вызовы для какого-либо удаленного приложения). Если вы Вы делаете локальные звонки через локальные ejbs, тогда вам придется использовать weblogic при разработке на локальной машине.
Попробуйте использовать ту же IDE(хотя это в основном вопрос выбора разработчиков). Что касается ОС, то это не имеет значения, поскольку, если вы используете совместимую IDE, вы будете собирать код только из этого.
Также убедитесь, что IDE тесно связана либо с tomcat (если вы его используете), либо с weblogic, чтобы запустить код в режиме отладки.
Одна очень важная вещь: сначала определиться со структурой кода, а затем проверить это в системе контроля версий, чтобы при любом подходе пользователь регистрировал / проверял в одной и той же структуре. Таким образом, одна и та же структура является общей для всех разработчиков. Разветвите код в cvs или контроль версий в каждом выпуске, а затем извлеките его из head. Также очень важно использовать один файл сборки и поддерживать установочный документ для сборки среды на локальном компьютере. Что касается использования Frame work, выберите тот, который вам наиболее удобен при кодировании и обслуживании. Таким образом, вы уменьшите количество ошибок в коде. В настоящее время большинство людей используют комбинацию Spring/Hibernate, но это зависит от того, подходит ли она вашему проекту. Надеюсь это поможет.