Буквально неделю назад я добавил Java в свой рабочий стек технологий: мы начали делать новый проект с использованием Java Spring Framework. Для меня это интересный вызов. Я никогда раньше не использовал Java, кроме как для маленьких домашних проектов. Вот мои самые первые впечатления о «лютом энтерпрайзе».
Я не хочу сравнивать Python и Java как языки программирования. Очевидно, что в Java есть статическая типизация, а в Python — нет. Очевидно, что Java более многословна, а Python — более компактен. Всё это не так интересно. Гораздо интереснее сравнить окружение языков, требуемый ими подход к программированию.
Во‑первых, Java намного требовательнее к качеству архитектуры и дизайна софта. Python прощает многие недочёты в проектировании, прежде чем код превращается в нечитаемую и неподдерживаемую кашу. С другой стороны, Java теряет читаемость с огромной скоростью — даже при небольших просчётах в архитектуре.
Во‑вторых, Java энтерпрайзного уровня сильно отличается от Java, к примеру, для геймдева или мобильной разработки. Язык‑то один и тот же, но подходы к разработке и фреймворки отличаются сильно: они намного больше и сложнее. Я даже стал думать, что Django — это микрофреймворк.
В‑третьих, огорошило огромное количество «магии» в Spring Framework. Начать в нём было очень сложно — по сравнению со стартом с любым фреймворком на Python, который я видел. Мне повезло: в нашей команде, работающей над этим проектом, только я не имею опыта разработки на Spring. Так что у меня хотя бы есть у кого спросить.
Конечно, есть области, где Java превосходит Python. К примеру, Java гораздо проще деплоить. В Java есть такие замечательные тулзы, как Maven или Gradle. В целом острой необходимости в такого рода инструментах в Python нет — пока не надо готовить сборки и пакеты к регулярному деплою.
В заключение хочу сказать, что Java не лучше и не хуже Python. Это другой язык, который требует другого подхода к программированию и других привычек. Вот несколько моих наблюдений:
- Меняйте подход к чтению кода. В Java читать тело метода менее важно, чем в Python: заголовок намного информативнее по сравнению с Python. Я не говорю, что реализация метода не важна. Просто в неё можно заглядывать гораздо реже, чем это требуется в Python.
- Аннотации в Java не равны декораторам в Python. Они похожи по синтаксису, но работают по‑разному.
- Java заставит вас интенсивно использовать IDE. Расслабьтесь и получайте удовольствие — это нормально.
- Читайте книги. Effective Java должна быть в списке трёх следующих книг для чтения. Фреймворки Java типа Spring более сложные и трудные для понимания, чем фреймворки для Python. К счастью, для Java гораздо больше качественных обучающих материалов.
Я не 100 % Java‑разработчик. Примерно половину времени я всё ещё программирую на Python. Так что в блоге я буду публиковать посты и о Python, и о Java.