За три дня до конференции SunWorld 1995 команда Java переписала весь пакет потоков, потому что рантайм мог просто развалиться во время публичного демо. Эта история Java важна не только как байка из девяностых: она хорошо показывает, как большие платформы нередко рождаются не из «гениального плана», а из увольнений, авралов и очень рискованных технических решений.
Об этом, как пишет The Register, рассказал Тим Линдхолм, один из первых ключевых инженеров Java и оригинальный мейнтейнер JVM. Поводом стал выход документального фильма The Java Story, который дебютировал на YouTube 18 июля 2026 года. В фильме участвуют создатель языка Джеймс Гослинг, а также архитекторы Oracle Марк Рейнхолд и Брайан Гетц, но именно Линдхолм добавил в историю Java те детали, которые обычно не попадают в торжественные ретроспективы.
Самый сильный эпизод касается не маркетинга, а низкоуровневой инженерии. По словам Линдхолма, в 1994 году проект, который тогда еще назывался Oak, был близок к закрытию. Sun Microsystems через экспериментальную «внутреннюю дочернюю компанию» FirstPerson пыталась зайти на рынок ТВ-приставок и интерактивного видео по запросу. Под Oak писали язык и рантайм для этой идеи. Но контракт Time Warner ушел конкуренту SGI, после чего Sun сократила большую часть команды. Линдхолм пришел туда всего за месяц до разгрома и вспоминал атмосферу как жизнь «беженцев в разбомбленном бункере»: из всей группы оставили только 12 инженеров, включая Гослинга и менеджера проекта Ким Полиз.
Поворот в сторону веба случился почти случайно. Один из уцелевших инженеров поигрался с Mosaic и предложил сделать сеть новой ставкой проекта. Это был еще 1994 год, за год до Windows 95, когда массовый интернет только собирался стать массовым. Команда собрала клон Mosaic под названием WebRunner, способный запускать анимации на Oak. Из этой ветки позже выросли Java-апплеты. В начале 1995 года Oak переименовали в Java, и дальше, по словам Линдхолма, все полетело «как чертова ракета»: рынок быстро понял, что одного HTML для интерактивных сценариев мало, а идея переносимого кода внутри браузера выглядит очень соблазнительно.
Проблема была в том, что красивая концепция сильно опережала реализацию. Гослинг и команда собрали прототип, но доводить его до промышленного состояния пришлось Линдхолму и Фрэнку Йеллину, новому сотруднику с сильным бэкграундом в Lisp. Позже они вместе напишут оригинальную спецификацию JVM. Тогда же им пришлось решать совсем приземленные задачи: как заставить работать многопоточность, сборку мусора и другие свойства языка не на бумаге, а в реальном рантайме. С потоками ситуация оказалась особенно неприятной. По словам Линдхолма, модель threading была «фундаментально сломана». Прерывания системы могли приходить в момент, когда процессор SPARC исполнял инструкцию, а состояние уже успевало частично исчезнуть из памяти. После такого рантайм, по сути, не мог корректно восстановиться и «умирал ужасно».
Решение было радикальным и очень плохо подходит для презентаций в стиле «у нас все под контролем». За три дня до SunWorld Линдхолм переписал весь threads package, чтобы прерывания происходили только в безопасных точках. Иначе говоря, публичный дебют Java отделяли от провала буквально считаные дни и один огромный хотфикс. Когда тогдашний CEO Sun Скотт Макнили показывал Java со сцены, Линдхолм сидел в зале и ждал худшего. На этот раз пронесло: переписанный код выдержал, а история Java получила тот самый поворотный момент, который потом легко выглядит неизбежным, хотя в реальности им не был.
Для разработчиков здесь важен не только анекдот про героическое спасение демо. История Java напоминает, что платформенные технологии почти всегда выигрывают не на уровне идеи, а на уровне рантайма, инструментов и дисциплины исполнения. Язык можно придумать довольно быстро, а вот сделать так, чтобы корректно работали потоки, память, переносимость и встраиваемость, уже сложнее на порядок. Особенно когда под рукой нет привычной современной экосистемы библиотек, observability-стека и CI, а дедлайн привязан к сцене и живому выступлению руководителя компании.
Есть и второй слой, более актуальный для бизнеса и платформенных команд. Java выжила не потому, что ее первоначальная стратегия оказалась верной. Наоборот, стартовая ставка на set-top box фактически провалилась. Проект спасла способность резко сменить рынок и сценарий использования: от приставок к вебу, от закрытого эксперимента к массовой среде исполнения. Для продуктовых команд это полезный, хотя и неприятный вывод. Иногда главный актив платформы скрыт не в том сегменте, ради которого ее создавали. Если у технологии есть переносимая модель исполнения и понятная ценность для разработчиков, она может пережить даже провальный первый рынок.
Наконец, любопытно, что история Java зацепила и ранние практики, которые позже станут нормой. Линдхолм рассказал, что компания бесплатно раздавала бинарный рантайм, а исходники по запросу отправляла всем желающим. Таких запросов были тысячи. Программа не была формальным open source в современном смысле, но уже тогда внешний мир помогал находить баги и переносить софт на другие платформы. Внутри Sun, впрочем, до полноценного открытия Java дозрели только примерно через десятилетие. На фоне нынешних споров о лицензиях, control plane и vendor lock-in этот фрагмент истории Java звучит особенно знакомо: корпорации охотно пользуются эффектом сообщества задолго до того, как готовы отдать сообществу реальный контроль.
У этой истории есть неприятный, но полезный вывод для всей отрасли. Мы любим обсуждать языки, модели и фреймворки как законченные продукты, хотя на деле многие из них пережили старт только потому, что в критический момент нашелся инженер, который за три дня переписал самую хрупкую часть системы. История Java в этом смысле не про романтику девяностых, а про цену надежности: если платформа обещает абстракцию, кто-то все равно должен вручную победить SPARC, прерывания, память и дедлайн.