Java – строго типизированный объектно-ориентированный язык программирования. Его создали в 1995 году, и с того времени он получил много улучшений. Стабильно занимает лидирующие места в рейтингах языков программирования и в рейтингах зарплат разработчиков.

И самое главное – рейтинг Java не прыгает из года в год, а остается стабильно высоким. Давайте разбираться, что обеспечивает Java популярность.

1. Кроссплатформенность – написанный код транслируется в байт-код, который выполняет JVM. Существуют реализации JVM под самые разные платформы, и это означает, что написанный один раз код будет работать и на Windows, и на Linux, и на macOS, и даже на разной экзотике, такой как Arduino, умном холодильнике, пылесосе… То есть, код будет работать на разных платформах и операционных системах, и при этом его не нужно адаптировать под каждую из них.

2. Автоматическое управление памятью – разработчику не нужно думать о том, в каких адресах оперативной памяти хранятся переменные, вручную обеспечивать их чтение/запись и заботиться о целостности данных. Когда решаешь бизнес-задачу заказчика, нужно думать о задаче, а не о том, как и куда записать какие-то байты.

3. Скорость работы (just-in-time компилятор) – в дополнение к статической компиляции, которая происходит «заранее», работает динамическая компиляция. Это актуально для серверного кода, который может работать месяцами и даже годами. Код, который выполняется часто, компилируется разными вариантами и замеряется его время исполнения. Таким образом, чем дольше работает приложение, тем быстрее она работает. И это при активно работающем сервере. Круто, правда?

4. Обратная совместимость – код, написанный на более старых версиях Java, будет работать и на более новых версиях. Это удобно: после обновления не нужно переписывать половину проекта «ради обновления», и при этом можно получить последние патчи безопасности.

5. Объектно-ориентированность – человек мыслит объектами: стол, троллейбус, смартфон. Разработчику не нужно мыслить непривычными парадигмами во время работы, и это бережет наш код от лишних ошибок. Нужно концентрироваться только на тех деталях, которые важны в рамках задачи. Например, с точки зрения дизайнера интерьера важен размер стола и его положение в пространстве. Не важны дата его производства, фамилия рабочего, который выпилил этот стол, телефон курьера, который его доставлял. Кроме этого, в коде данные и методы работы с ними хранятся вместе.

6. Статическая типизация (fail-fast) – проверка соответствия типов переменных на этапе компиляции. Компиляцию запускают все разработчики, поэтому ошибки компиляции отлавливаются почти моментально. Чем более поздним будет этап, на котором обнаружат ошибку – тем дороже ее исправление.

7. Сode as documentation – Java читается как предложения на английском языке. За счет этого в большинстве случаев не нужно тратить усилия на ведение документации, так как любой разработчик, посмотрев в код, понимает, что делает этот метод, или за какое поведение отвечает интерфейс. Кроме этого, сильно развита практика «правильного» именования всех сущностей в коде. Часто по названию метода понятно, что он делает.

Например, метод getContext() возвращает контекст, а поле age отвечает за хранение возраста. В Java длина названия не влияет на количество ресурсов системы, которые нужны для работы с сущностями. Этим грешит С – когда разработчик приходит на новый проект, вместо того, чтоб разбираться в логике кода, он занимается его расшифровкой.

8. Множество open source библиотек и фреймворков – 99% задач, с которыми в ежедневной практике сталкивается разработчик, уже кто-то когда-то решал. Если такие решения удачные, со временем они вырастают в библиотеки и даже фреймворки. Что лучше – погуглить 5 минут или изобретать свой велосипед на квадратных колесах?

9. Большое комьюнити – у популярного языка много разработчиков, они в интернете задают много вопросов, дают много ответов, пишут много кода, сталкиваются со многими проблемами и решают их. И чем больше разработчиков, тем более популярен язык, и тем быстрее он развивается. Замкнутый круг, однако.

Уже названо много положительных «качеств» Java, но хочется добавить еще несколько аспектов:

  • JVM (Java Virtual Machine) сама управляет памятью процесса: за счет этого она безопасна, и является языком #1 для финансовых инструментов.

  • На Java очень удобно писать back-end сервера (серверную логику).

  • До недавнего времени Java был основным языком для приложений на Android.

    Сейчас вместо него Kotlin, который является JVM языком, и от Java отличается наличием пары фич и «синтаксическим сахаром». Перейти с Java на Kotlin и наоборот займет несколько дней. А учитывая, что цикл обновления Java сейчас составляет полгода, не исключено, что в следующем релизе в ней будет все хайповое, ради чего писался Kotlin.

  • Много известных компаний используют Java: Google, Facebook, Twitter, Amazon, LinkedIn, eBay, JavaRush и много-много других.