История Java: язык программирования, который и не думает умирать

23 мая 1995 года Sun Microsystems официально представила Java — язык, который должен был управлять бытовой электроникой. Три десятилетия спустя он управляет марсоходами, банковскими системами и миллиардами Android-устройств. В честь дня рождения Java вспоминаем его путь: от дуба и кофе до виртуальных потоков и LTS-версий 25 и 26.
Юлия Мискевич
Юлия Мискевич
Редакция
История Java: язык программирования, который и не думает умирать
Kulkul Technology
В 1990 году инженеры Sun Microsystems засели за масштабный проект. Они хотели создать язык программирования для бытовой электроники — умных тостеров, телевизоров.

Идея была амбициозной: написал программу один раз, и она работает на любом устройстве, независимо от того, какой там процессор. Никто тогда не догадывался, что этот язык переживет свою компанию-создателя, станет основой для марсоходов, а заодно — главной болью корпоративных разработчиков. Это история Java.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Дуб, кофе и семь лет молчания

Все началось с дуба. Вернее, с «Дуба» — Oak. Так Джеймс Гослинг, Майк Шеридан и Патрик Нотон назвали свой язык, глядя на дерево за окном. Проблема была в том, что производители бытовой техники использовали сотни разных процессоров, и написать код, который работал бы везде, казалось невозможным.

Medium
Продолжение ниже Продолжение
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Решение оказалось гениально простым: не компилировать программу в машинный код напрямую, а превратить ее в промежуточный «байт-код», который потом исполняет специальная программа — виртуальная машина Java (JVM). Грубо говоря, вы пишете один раз, а JVM переводит на язык конкретного «железа».

Проект тянулся семь лет. За это время выяснилось, что название Oak уже занято — товарный знак принадлежал другой компании. Авторы переименовали его в Java — в честь индонезийского кофе. 

По одной из версий, Гослинг и его команда пили его в таких объемах, что иначе и назвать не могли. Наконец, в 1996 году вышла Java 1.0. Язык, который создавали для пылесосов, внезапно стали использовать для веб-апплетов — маленьких программ, которые работали в браузере. Интернет тогда только набирал обороты, и Java оказался в нужное время в нужном месте.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Битва с Microsoft

Microsoft, как обычно, решила сделать «свою» Java. Начиная с Windows 98, в систему встраивалась собственная виртуальная машина MSJVM, которая не была совместима с официальной спецификацией. Sun подала в суд и выиграла. Microsoft обязали прекратить поддержку своей JVM, и к 2007 году проект окончательно закрыли.

Джеймс Гослинг
Джеймс Гослинг Medium
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Тем временем Java развивалась. В 1998 году вышла версия J2SE 1.2 — настолько масштабная, что платформу переименовали в Java 2. Появились Swing — красивые и гибкие графические компоненты, Collections Framework — единый способ работы со списками, множествами и картами, а также JIT-компиляция, которая ускоряла выполнение программ.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

IDE-войны

В 2001 году случилось два резонансных события. Во-первых, компания JetBrains выпустила IntelliJ IDEA — среду разработки, которая поражала удобством навигации и рефакторинга. Ей предстояло стать любимицей профессионалов. Во-вторых, появилась Eclipse — IDE с открытым исходным кодом, модульная, расширяемая и бесплатная.

IntelliJ IDEA
IntelliJ IDEA Yahoo Tech
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Сначала лидировала Eclipse, но к 2016 году IntelliJ ее обогнал. Ирония в том, что и та, и другая написаны на Java. А еще на основе IntelliJ сделали Android Studio (официальную IDE от Google) и даже DevEco Studio от Huawei для HarmonyOS.

Весна, космос и ответ Microsoft

2002 год запомнился двумя событиями. Род Джонсон выпустил книгу «Экспертное индивидуальное проектирование и разработка J2EE», где жестко раскритиковал корпоративную Java EE за сложность и громоздкость. В ответ он вместе с единомышленниками создал фреймворк Spring — легкий, гибкий и основанный на обычных Java-классах. Spring стал настолько популярен, что до сих пор остается стандартом де-факто для многих проектов.

Microsoft тоже зря время не тратила. В том же году вышел Visual J# — язык, имитирующий синтаксис Java, но работающий на платформе .NET. Разработчики его не взлюбили, и к 2008 году проект тихо закрылся. А вот Java тем временем полетела в космос. НАСА использовало ее для управления марсоходами Sojourner и Spirit.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
Reuters

В интервью Reuters создатель Java Джеймс Гослинг рассказал, что лично общался с инженерами. Он проводил так много времени в космической лаборатории в Пасадене, что стал членом консультативного совета.

Я и так заядлый гик, поэтому меня это затягивает.
Джеймс Гослинг
Джеймс Гослинг Создатель Java

Maven, Gradle и эпоха сборщиков

Разработчикам нужно было как-то автоматизировать сборку проектов. В 2004 году появился Apache Maven — инструмент, который описывал структуру проекта в XML-файле и сам подтягивал зависимости. Это было революционно. Однако Maven был громоздким, и в 2008 году вышла альтернатива — Gradle, позволявшая писать скрипты сборки на Groovy (позже на Kotlin). Gradle стал особенно популярен в Android-разработке. Кстати, название произошло от «Cradle» (колыбель) с добавлением буквы G в честь языка Groovy.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

В 2009 году Sun Microsystems переживала не лучшие времена: выручка падала, сотрудников увольняли. В итоге компанию купила Oracle за 7,4 миллиарда долларов. Главная причина сделки? Java. Oracle заявила, что это «самое важное программное обеспечение, которое когда-либо приобретала компания». Многие тогда забеспокоились: не погубят ли язык? Но Oracle, наоборот, вдохнул в Java новую жизнь.

igmGuru
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Так, в 2014 году вышла Java 8. Лямбда-выражения, Stream API, методы по умолчанию в интерфейсах, новый API для работы с датой и временем — это был переворот. Java 8 стала самой популярной версией за всю историю. Настолько популярной, что многие проекты до сих пор сидят на ней, не желая мигрировать. Отчасти потому, что в 2019 году Oracle изменила лицензию: бесплатная версия OpenJDK осталась, но платная Oracle JDK вызвала панику в корпоративной среде.

Java 11 и далее

В 2018 году вышла Java 11 — новая долгосрочная версия. Экспериментальный сборщик мусора Epsilon, который вообще не освобождает память (полезно для тестов), и ZGC с паузами менее миллисекунды. А еще — HTTP-клиент, поддержка TLS 1.3 и Unicode 10.0.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

В 2021 году — Java 17 (LTS). Запечатанные классы, улучшенный switch, сопоставление с образцом. Также добавили предвестник виртуальных потоков. В 2023 году — Java 21. Виртуальные потоки (они же легковесные) стали стабильными. Теперь можно создавать миллионы потоков без оглядки на операционную систему. Строковые шаблоны, секвенированные коллекции, API для работы с ключами шифрования.

Сразу за ней последовал релиз Java 26, который продолжает развивать ключевые инициативы сообщества — проект Loom (виртуальные потоки) и проект Panama (улучшенное взаимодействие с системным кодом вне JVM). В последних версиях разработчики получили мощные инструменты: шаблоны строк, развернутый паттерн-матчинг, безымянные классы для легкого старта новичков и существенно оптимизированные сборщики мусора.

А на чем вы кодите? Признавайтесь!