Инструментарий для разработки веб-приложений на Java

Мне было поручено разработать интерактивный веб-сайт с использованием java и mysql: использование сервлетов для извлечения и обработки данных, апплетов для специальной обработки данных на стороне клиента и обработки запросов от клиента для различных представлений данных.

Что бы вы порекомендовали в качестве правильного универсального инструментария / среды для веб-разработки с использованием Java.

Мне нужно знать, что использовать для следующего:

  • Сторона сервера (tomcat? /?)
  • CMS
  • Редактор / IDE
  • Общие инструменты / утилиты
  • Направленные (специальные) инструменты / утилиты
  • Инструменты / утилиты / методы тестирования и QA
  • Справочный материал (как онлайн, так и оффлайн)

Пожалуйста, оцените предложенное решение (я) и предоставьте альтернативы / улучшения / поддержку.


Предлагаемый инструментарий / среда Java для веб-разработки

По CDB:

  • Сторона сервера:
    Tomcat6
  • CMS:
    Drupal (не обязательно на предварительной фазе)
  • Редактор / IDE:
    NetBeans (хорошо для начинающего)
  • Общие инструменты:
    (Почти все в NetBeans... попробуйте позже)
  • Направлено (специального назначения):
    (Почти все в NetBeans... попробуйте позже)
  • Тестирование и QA:
    JUnit и используйте Firebug (сначала выполните ручное тестирование)
  • Справочный материал:
    Серия HeadFirst по JSP, JavaScript и т. Д.
    SCRIBD (онлайн)
    [править]
  • Фреймворк:
    Spring Web MVC 2.5 - ( кажется, содержит большинство других фреймворков)

Варианты искажены из ответов

Серверная сторона

  • Apache Tomcat - "Среда веб-сервера HTTP для запуска кода Java"
  • Jetty - "HTTP-сервер, HTTP-клиент и контейнер javax.servlet"
  • GlassFish - сервер приложений (на базе Tomcat + больше возможностей)
  • JBoss - сервер приложений ("Сервер приложений на основе J2EE реализован на 100% чистой Java")

CMS

Редактор / IDE

Общие инструменты / утилиты

  • Maven - ".. инструмент, который теперь можно использовать для создания и управления любым Java-проектом".
  • log5j также здесь[SourceForge] - "Библиотека журналов Java для версий Java 5 и выше"

Направленные (специальные) инструменты / утилиты

  • CruiseControl - основанный на команде "инструмент и расширяемая среда для создания собственного процесса непрерывной сборки"
  • Spring Framework (- дизайн)

Инструменты / утилиты / методы тестирования и QA

  • Watij - "Java API создан для автоматизации веб-приложений"
  • HtmlUnit - "Он моделирует документы HTML и предоставляет API, который позволяет вызывать страницы, заполнять формы, щелкать ссылки и т. Д."
  • Firebug - (Firefox) "редактировать, отлаживать и отслеживать CSS, HTML и JavaScript в реальном времени на любой веб-странице"
  • Хадсон - "Создание / тестирование программных проектов [...] Мониторинг выполнения внешних заданий"
  • LiveHttpHeaders - просматривать и редактировать заголовки HTTP-запросов в режиме реального времени
  • JUnit - "фреймворк для написания повторяющихся тестов"

Справочный материал (как онлайн, так и оффлайн)

  • A List Apart - "Для людей, которые делают сайты"
  • Java - TiJ

6 ответов

Решение
  • Серверная сторона
    Tomcat6
  • CMS
    Drupal (не обязательно в фазе прилима)
  • Редактор / IDE
    NetBeans (хорошо для начинающего)
  • Общие инструменты / утилиты
    (Почти все в NetBeans... попробуйте позже)
  • Направленные (специальные) инструменты / утилиты
    (Почти все в NetBeans... попробуйте позже)
  • Инструменты / утилиты / методы тестирования и QA
    JUNIT и используйте FireBug (сначала выполните ручное тестирование)
  • Справочный материал (как онлайн, так и оффлайн)
    Серия HeadFirst по JSP, JavaScript и т. Д.
    SCRIBD (онлайн)

Для веб-разработки я использую (и рекомендую) следующее:

  • API JSP / Servlet
  • Spring MVC
  • JQuery
  • XHTML & CSS
  • Fitnesse

Что касается ресурсов, все эти технологии хорошо документированы на соответствующих сайтах, единственным исключением является XHTML и CSS, для которых я бы предложил http://www.alistapart.com/.

Что касается редакторов, то и IntelliJ, и (я полагаю) Eclipse имеют очень хорошие редакторы HTML, CSS, JSP и JavaScript.

Также используйте Firefox (как предложил Брайан) как с плагином для веб-разработчика, так и с Firebug - оба они необходимы.

Tomcat и Jetty являются хорошо известными / поддерживаемыми сервлет-контейнерами. Если вы создаете развертывание для клиентов, вы можете протестировать оба варианта, если вы не контролируете развертывание.

Для тестирования проверьте (вместе с вашими обычными средами модульного тестирования JUnit / TestNG) Watij и / или HtmlUnit. Это позволит вам автоматизировать фактическое взаимодействие между веб-браузером и браузером и в конечном итоге избавит вас от горя. Недостатком является то, что вам придется потратить некоторое время на настройку тестов.

Что касается автоматизированных тестов, я думаю, что вам нужна автоматизированная система сборки / непрерывной интеграции. Многочисленное множество в мире Java. Два распространенных из них - CruiseControl и Hudson.

Для большинства вышеперечисленного применяются стандартные инструменты Java / разработки, например, "стандартные" интегрированные среды разработки (за которые стоит заплатить Netbeans/Eclipse/Intellij - Intellij, кстати). То же самое относится к CMS, и на этом сайте есть много ресурсов о плюсах / минусах SVN/Git/Mercurial и т. Д. Стоит проверить, интегрируется ли ваш выбор CMS с вашей IDE.

Я хотел бы проверить Firebug для упрощения разработки (на Firefox). Это делает разработку интерфейса намного проще. LiveHttpHeaders облегчит диагностику проблем, связанных с передачей HTTP.

CMS

  • Черепаха СВН

Редактор / IDE

  • затмение

Общие инструменты / утилиты

  • Maven (инструмент для сборки и развертывания)
  • Круиз-контроль
  • GWT/ext-GWT/ICEFaces - технология веб-компонентов
  • Spring - структура внедрения зависимостей
  • Hibernate - ORM
  • Набор для разработки веб-сервисов Axis 2.0
  • Jboss

Направленные (специальные) инструменты / утилиты

  • log5j - для регистрации

Инструменты / утилиты / методы тестирования и QA

- Watij
- Firebug
- QTP for automated testing
- Junit Perf (Junit test cases for performance testing.)

Справочный материал (как онлайн, так и оффлайн)

  • Java документы по каждой из технологий
  • Гугл конечно же:)

Попробуйте vcl.js - все в одном (front-end и backend) инструменте корпоративной веб-разработки,

  1. Библиотека визуальных компонентов - включает страницу, сетку, ввод, датчики, диаграммы и многое другое
  2. Чистый JavaScript
  3. Одностраничное приложение
  4. .Net Backend
  5. Привязка данных
  6. Начальная загрузка Twitter
  7. Простое выполнение запроса к базе данных
  8. маршрутизация
  9. AMD - Модуль загрузчика

Я думаю, идея в том, что вам не нужно изучать jquery,Sammyjs или любые другие фреймворки

Первый абзац отредактирован по просьбе Слэшмаис: Этот ответ не совсем соответствует другим, а перефразирован вопрос. Это скорее дополнение к другим ответам. Я считаю, что личные предпочтения действительно важны при выборе технологий. Я вижу это как (не) любить некоторые вещи и выбирать технологии, которые соответствуют. Остальная часть ответа дает примеры:


Например, предположим, я полагаю, что действия разработчика должны быть проверены в режиме реального времени, насколько это возможно, чтобы получить немедленную обратную связь, а также завершение, если это возможно, и избежать раннего количества ошибок. Это (не) симпатия определяет некоторые предпочтения:

  • использовать язык статического типа (например, Java)
  • используйте IDE, которая компилируется при вводе (например, Eclipse)
  • любой Xml должен быть проверен через строгий xsd. Если у контента есть ссылки на другую информацию (например, код Java), то это следует проверить (например, проверка Spring для классов бинов).
  • для технологии представления, потому что это зависит от моего Java-кода, у меня должна быть проверка, которая включает мой фактический Java-код. Идея может состоять в том, чтобы закодировать мой взгляд на Java. (как калитка).
  • мои свойства должны быть в файлах свойств для перевода. Но использование строковых ключей в моем коде (или представлении) недопустимо. Я бы запустил небольшой инструмент, который создает java-перечисления из каждого файла свойств, и мой код ссылался бы на перечисления.
  • ... и так далее

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

  • Maven - лучший инструмент для сборки. Это налагает много ограничений, но также предоставляет много встроенных функций "сборки"...
  • Для веб-приложения я не смог использовать Struts 1, потому что это огромные конфигурационные файлы в struts-config.xml, в основном с подключаемым кодом. Я бы определенно переключился на что-то вроде Spring MVC, у которого есть значения по умолчанию для отображения URL на контроллеры.
  • и так далее...

Другой пример. Предположим, я настолько верю в разделение Модель-Представление-Контроллер, для ясности и повторного использования, что хочу немного его растянуть. Я мог бы использовать:

  • в представлении я бы четко разделил мою модель (чистый Html, без форматирования, без сценария), мое представление (или форматирование, только для внешнего css) и мой контроллер (javascript, используя ненавязчивую политику javascript).
  • в веб-приложении я мог бы использовать Spring MVC, чтобы хорошо разделить эти слои.
  • в бизнесе (этот пример немного продуман:-)), я мог бы иметь богатую модель предметной области, широко использовать шаблон команд ("контроллеры") и явно представлять свои бизнес-сервисы как интерфейс API ("представление").
Другие вопросы по тегам