Задать вопрос

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

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

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

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


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

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

Спасибо
  • Вопрос задан
  • 7662 просмотра
Подписаться 15 Оценить Комментировать
Решения вопроса 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, разделение на слои, отделение модели данных от модели предметной области и т.д.
У Вас слишком общий вопрос для конкретных рекомендаций. Хороший архитектор выбирает средства по задаче.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
Сбер Москва
от 300 000 до 350 000 ₽
DIGITAL SECTOR Краснодар
от 250 000 до 450 000 ₽
Сбер Санкт-Петербург
До 350 000 ₽