Я много писал веб на PHP (с фреймворками), но давно хотел перейти на Java, Spring и т.д.
Поздравляю. Ты теперь откроешь для себя целую вселенную и поймешь что Java - очень разная.
Например стоило-бы отличать Java Android и все остальное.
По поводу процесса компилляции. Почитай про технологии
JSP-страничек. Она очень похожа
на PHP по своей задумке. И там реакция на изменения кода чуть быстрее чем в
Servlet-приложении
хотя JSP идеологически является макросом над сервлетом.
Но в топике верно выше написали что от серверного рендеринга сейчас уходят. И современные Java-веб
приложения обычно делают 2 команды. Первая делает только дизайн фронта. Вторая - обычно микросервисы
которые с этим фронтом взаимодействуют. Почитай также про
GraphQL. Это полезно для развития.
И многие вещи в Java были добыты эволюционным путем. В частности такая мануфактура как
дизайн и бизнес-логика имеют четкое разделение и это правильно. Это стабилизирует релиз
и позволяет бизнесу делать и тестировать фичи независимо. Например фича нового
REST сервиса
может быть создана и оттестирована еще до того как готов дизайн и наоборот. Дизайн на моках
можно показать заказчику пока сервис только в разработке.
Оказалось, что приложению надо 3-4 минуты, только чтобы стартануть на машине разработчика.
Это нормально. Мне попадались очень тяжелые монолиты которые на мощных машинах стартовали
по 30-40 минут. Да и такое бывает. Это тяжелая приставка *
enterprise. И конечно это идеологически
отличает Java от PHP. Для корпоративных приложений в принипе неважно сколько они стартуют.
Главное когад они уже стартовали и 30 минут прогревали кеши из БД например то биржа будет
работать быстрее в runtime. Вот. А подготовку к работе можно делать и 30 минут - это тоже ОК.
Главное что клиент это не замечает в силу закрытого
опер-дня и Blue-Green deployment.
Тоже почитай про это кстати. Полезно.
Из-за долгих перезапусков (тем более на новом для меня проекте) разработка шла долго и мучительно.
Могу посоветовать сфокусироваться на модульных тестах. То как ты разрабатывал раньше, сверяя
каждый символ с браузером - может быть не эффективным. По сути если ты написал бизнес-логику
и дизайн для нее готов и твоя задача просто проверить что функии получили на вход инпуты
и выдали верные аутпуты - то значит задача на 99% решена и можно релизить.
С точки зрения например
корпоративного процесса разработки - любая фича разрабатывается 1 день. Это я меряю
по себе. Беря во внимание чтение ТЗ. Разработку. Цикл тестирование. Деплойменты. Аксептенсы и прочее.
И если тебя просят покрасить кнопочку с красного цвета на синий - ты спокойно сообщай что
это занимает 1 день в конвейере процессов. И это нормально. Это корпоративная бюрократия.
И Java - бюрократична. И ты главное не стрессуй а просто используй эту бюрократию в свою
пользу. Пей кофе. Читай книги пока идет deploy pipeline.