Инструментарий для разработки веб-приложений на 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) инструменте корпоративной веб-разработки,
- Библиотека визуальных компонентов - включает страницу, сетку, ввод, датчики, диаграммы и многое другое
- Чистый JavaScript
- Одностраничное приложение
- .Net Backend
- Привязка данных
- Начальная загрузка Twitter
- Простое выполнение запроса к базе данных
- маршрутизация
- 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 ("представление").