Как правильно писать на Java/Scala/C#/etc?

Хабрахабр, помоги!

Загрузил недавно (пол года назад) пару мануалов по Spring Framework, долго-нудно в общем мучался с Привет Миром, через пару дней в итоге получилось увидеть долгожданные заветные слова на мониторе. За это время я столкнулся с мавеном, томкатом, деплойментом, компиляциями, сборками проектов.

На PHP-же или Node.js писал я так
  • Написал код
  • Перегрузил страницу
  • Обрадовался
  • PROFIT...?


Так, вот. Данная методика в данном случае не подходит, ибо Привет Мир компилируется и деплоится секунд тридцать. А если это не привет мир? Мне почему-то кажется, что люди работающие в банках не обновляют страничку по тысяче раз, пока что-то там меняют

Сейчас активно пользуюсь скалой и Play Framework, очень их люблю. Но чувство того, что пишу я не правильно не покидает. Что делать? Как правильно писать? Как дальше жить?

Спасибо
  • Вопрос задан
  • 7660 просмотров
Решения вопроса 1
Snowindy
@Snowindy
На Java, особенно с использованием Spring Framework, нормальная разработка примерно такова
1) делим систему на слои: слой хранения данных с интерфейсом, слой бизнес-логики с интерфейсом, слой веб-приложения или веб-сервиса (к примеру).
2) Каждый из слоев обкладывается Unit-тестами (автоматизированное тестирование), при этом остальные части системы, на которые есть зависимости, выглядят просто как интерфейсы, которые можно «эмулировать» на время тестов (техника test mocking).
3) Интеграционное тестирование (автоматизированное/полуавтоматизированное тестирование) — несколько слоев запускаются почти в реальном окружении, и тестируются вместе наподобие черного ящика. Смотрим на то, как работает система в сборе.
4) Ручное тестирование всей системы перед релизом — к этому вы как раз привыкли.

Основная работа происходит на этапах 1 и 2. Цикл тест-изменение кода-тест — происходит обычно в течение нескольких секунд, так как Unit-тесты легковесные.

Цикл разработки, описанные вами, обладает одним серьезным ограничением — никакой автоматической защиты от регрессий функциональности. Для этого и пишут тесты.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
deadkrolik
@deadkrolik
Вот поэтому они и изобрели тесты.
Ответ написан
@sergei-grigorev
А еще можно воспользоваться JRebel, чтобы на ходу обновлять код, включая EJB-компоненты. Это позволит экономить время на деплойменте (за день я запускаю деплой обычно не чаще 3х раз). И соглашусь с deadkrolik, что неплохо писать юнит-тесты, так можно быстро найти и исправить ошибку в отдельном участке кода.
Ответ написан
Комментировать
javax
@javax
Software Architect, Java Developer since 1996
Запускаете из IDE, он компилит лишь классы которые изменились, после этого поднимается сервер — ну секунд 10 15 надо подождать и всё.
Ответ написан
Комментировать
stemm
@stemm
В вашем случае подойдёт связка Spring + embedded Jetty + Maven + IDE Eclipse.

Встраиваемый Jetty очень ускоряет разработку, т.к. можно вносить изменения в код и очень быстро перезапускать приложение — у меня это занимает 2-3 секунды. Если нужно править JSP, JS или CSS — приложение можно вообще не останавливать.

Структура приложения более подробно описана здесь: steveliles.github.io/setting_up_embedded_jetty_8_and_spring_mvc_with_maven_and_no_xml.html
Ответ написан
Комментировать
Colwin
@Colwin
Ведущий Java-разработчик
Все дело в целях и объемах приложения.
Если вам нужен маленький Application — можете хоть JSP + Servlet использовать.
Если же большое приложение со множеством модулей, интеграцией с различными системами и гибкой системой динамически подключаемых модулей — это уже совсем другие подходы а-ля Spring + Hibernate + Maven + JBoss, разделение на слои, отделение модели данных от модели предметной области и т.д.
У Вас слишком общий вопрос для конкретных рекомендаций. Хороший архитектор выбирает средства по задаче.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы