Переезд с Python на Java. Первые впечатления

Опубликовано 26 August 2016 в Java

Буквально неделю назад я добавил Java в свой рабочий стек технологий: мы начали делать новый проект с использованием Java Spring Framework. Для меня это интересный вызов. Я никогда раньше не использовал Java, кроме как для маленьких домашних проектиков. Вот мои самые первые впечатления о "лютом энтерпрайзе".

Я не хочу сравнивать Python и Java, как языки программирования. Очевидно, что в Java есть статическая типизация, а в Python нет. Очевидно, что Java более многословна, а Python более компактен. Все это не так интересно. Гораздо интереснее сравнить окружение языков, требуемый ими подход к программированию.

Во первых, Java намного требовательнее к качеству архитектуры и дизайна софта. Питон прощает многие недочеты в проектировании, прежде чем код превращается в нечитаемую и неподдерживаемую кашу. С другой стороны, Java теряет читаемость с огромной скоростью, даже с небольшими просчетами в архитектуре.

Во вторых, Java энтерпрайзного уровня сильно отличается от Java для, к примеру, геймдева или мобильной разработки. Язык-то один и тот же, но подходы к разработке и фреймворки отличаются сильно. Они много больше и сложнее. Я даже стал думать, что Django - это микрофреймворк.

В третьих, огорошило огромное количество магии в Spring Framework. Начать в нем было очень сложно, по сравнению со стартом с любым фреймворком на питоне, который я видел. Мне повезло, у нас в команде, кто занимается этим проектом, только я не имею опыта разработки на спринге. Так что у меня хотя бы есть у кого спросить.

Конечно есть области, где Java делает Python. К примеру, Java гораздо проще деплоить. В java есть такие замечательные тулзы как Maven или Gradle. В целом острой необходимости в такого рода инструментах в питоне нет, пока не надо готовить сборки и пакеты к регулярному деплою.

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

  • Меняйте подход к чтению кода. В Java читать тело метода менее важно, чем в Python: заголовок намного информативнее по сравнению с питоном. Я не говорю, что реализация метода не важна. Просто в нее можно заглядывать гораздо реже, чем это требуется в питоне.
  • Аннотации в Java не равны декораторам в питоне. Они похожи по синтаксису, но работают по разному.
  • Java заставит вас интенсивно использовать IDE. Расслабьтесь и получайте удовольствие. Это нормально.
  • Читайте книги. "Effective Java" должна быть в списке трех следующих книг для чтения. Фреймворки Java типа Spring более сложные и трудные для понимания, чем фреймворки для Python. К счастью, для Java гораздо больше качественных обучающих материалов.

Я не 100% Java разработчик. Примерно половину времени я все еще программирую на Python. Так что в блоге я буду публиковать посты и о Python, и о Java.

---
Возник вопрос? Мне всегда можно написать в Twitter: avkorablev