Как мы делаем Java: 30 лет истории российской разработки

Банки, биржи, платежные системы — множество стратегически важных сервисов работает на Java. Не случайно язык, которому скоро исполнится 30 лет, уверенно держится в тройке лидеров рейтинга TIOBE. А еще Java — одна из «самых российских» технологий. Из всех разработчиков за пределами США именно россияне сделали наиболее заметный вклад в платформу — и продолжают развивать ее сейчас. Чтобы понять, как так вышло, мы вспомнили историю Java в России с девяностых годов до наших дней.

Дисклеймер: этот не историческое исследование. Текст собран из воспоминаний участников событий и инженеров, которые уже почти 30-лет заботятся о безопасности Java в России.

Середина 90-х: от первых контракторов до текстовой сюиты JCK

Первый публичный релиз Java 1.0 появляется в 1996 году — в это время над языком уже работают российские программисты. В последующие годы к проекту подключаются десятки, а затем и сотни инженеров из Санкт-Петербурга, Москвы и Новосибирска. Они создают Java Compatibility Kit и пропускают через себя буквально всю спецификацию Java.

Ситуацию, которая сложилась во второй половине 1990-х годов, лучше всего описывает выражение «звезды сошлись». В США раздулся «пузырь доткомов» — акции интернет-компаний росли колоссальными темпами. Инвестиции подогревали конкуренцию: технологические гиганты наперегонки развивали свои продукты, спеша застолбить за собой долю огромного рынка.

Java, универсальный платформонезависимый язык, пришелся по душе разработчикам, и Sun Microsystems была заинтересована его развивать. Рабочих рук в Калифорнии не хватало, и Sun, как и вся Кремниевая долина, искала инженеров по всему миру — прежде всего, в Индии, в которой на тот момент не было достаточно квалифицированных кадров. А в России — были.

«У наших специалистов была довольно специальная подготовка: они на низком уровне понимали, как работает железо, регистры, компиляторы, — вспоминает Григорий Лабзовский, руководитель Центра разработки Oracle в Санкт-Петербурге в 2010–2017 гг. — В СССР делали свою вычислительную технику, ракеты летали в космос на собственных чипах. У нас был полный аналог компетенций, имеющихся в США. Найти очаги подобных знаний можно было только в развитых странах». 

С 1990-х до начала 21-го века

С 1990-х до начала 21-го века

В девяностые ученые и инженеры искали самые разные способы заработать — «пузыря доткомов» в постсоветской России не было. Но были радикально потеплевшие отношения с зарубежными странами: активно наращивались взаимоотношения между научными сообществами, проводились международные конференции.

Российские инженеры ценят раритетный мерч

Российские инженеры ценят раритетный мерч

На одной из таких конференций профессор Борис Арташесович Бабаян познакомился с руководством разработки Sun Microsystems. Они сразу нашли общий язык. В 1992 году Бабаян основал Московский центр SPARC-технологий, сокращенно МЦСТ (SPARC — архитектура RISC-микропроцессоров, разработанная Sun Microsystems). МЦСТ сотрудничал с Sun в области компиляторов, а также разрабатывал микропроцессор «Эльбрус 2000».

Когда Sun стала отдавать в Россию задачи по Java, понадобилось больше людей. Бабаян обратился к Владимиру Олеговичу Сафронову, с которым ранее сотрудничал по компиляторным технологиям. Профессор Сафонов работал на кафедре информатики математико-механического факультета СПбГУ, и люди у него были.

«В период до 2002 года его группа по разработке и сопровождению программного обеспечения фирмы Sun Microsystems выросла до 75 человек», — вспоминает Сергей Лунегов, который присоединился к группе в 1998 г., а сейчас является директором по продуктам Axiom JDK.

К разработке Java также подключились инженеры из новосибирской компании «Юнипро». Москва, Санкт-Петербург и Новосибирск стали тремя российскими «плацдармами» Sun Microsystems.

Самым значительным продуктом российской группы Sun в 90-е стал Java Compatibility Kit (JCK). Java — это не только язык. Платформу можно сравнить с операционной системой, в которую входят виртуальная машина для исполнения кода на разных видах железа, компиляторы и набор библиотек с множеством разнообразных и постоянно обновляемых функций. Это примерно такой же объем кода. Написанием этих компонентов заняты сотни разработчиков. Прежде чем добавить новый элемент к платформе, нужно удостовериться, что он в полной мере соответствует спецификации Java. Для такой проверки создавалась тестовая сюита — программное обеспечение под названием Java Compatibility Kit.

«JCK — очень непростая вещь. Специалисты из Санкт-Петербурга и Новосибирска наработали большое ноу-хау, — говорит Сергей Лунегов. — Если вы пару-тройку лет писали JCK, то нет людей, знающих спецификацию Java лучше вас. Работали высококлассные инженеры, люди с кандидатскими званиями. В итоге получился хороший продукт, который до сих пор существует, а эти люди продолжают развивать Java в нашей стране».

Sun отдавал в Россию и другие компоненты Java, в том числе компиляторы, отдельные версии JVM (Java Virtual Machine). Большая группа в Санкт-Петербурге разрабатывала графические API Swing и Java2D, а также оконную библиотеку AWT (Abstract Window Toolkit).

2004. Центр разработки Sun Microsystems в Петербурге

Центр разработки Sun Microsystems наращивает штат и объем задач. После приобретения Sun компанией Oracle центр становится крупнейшим ядром разработки Java за пределами США. При участии российских специалистов выходит Java 8 — релиз, которым до сих пор пользуется треть Java-разработчиков в России.

В начале 2000-х Java занимала уверенное первое место в рейтинге TIOBE. Платформонезависимый язык пришелся по душе программистам, и технологией всерьез заинтересовались гиганты Кремниевой долины: каждый захотел иметь свою «джаву», чтобы заманить разработчиков в собственную продуктовую экосистему. Так у Microsoft появился Visual J#, а IBM и Intel вошли в проект Apache Harmony.

Следствием этой Java-гонки стала конкуренция IT-гигантов за российские кадры. Intel инициировала переговоры с Бабаяном о покупке МЦСТ, которые в конце концов увенчались успехом. Sun же собрал большинство Санкт-Петербургских инженеров и часть программистов из других городов под одной крышей. Так в 2004 году появился Центр разработки Sun Microsystems в Санкт-Петербурге.

В 90-е Sun работал с россиянами «по-простому». Сперва отдельные программисты и небольшие группы получали индивидуальные заказы. И даже потом, когда инженеры стали решать большие общие задачи, у каждого был индивидуальный контракт с Sun. Связь со штаб-квартирой поддерживалась через людей, которых называли «ротаторами». Один человек из российской группы приезжал в офис Sun в Санта-Кларе, садился за рабочий компьютер. Коллеги из Петербурга присылали ему проекты по электронной почте в виде многотомного архива, разбитого на десятки частей. «Ротатор» собирал все эти кусочки вместе и добавлял к внутренним корпоративным ресурсам Sun. Открытие полноценного исследовательского подразделения в Санкт-Петербурге позволило Sun отдавать в Россию по-настоящему большие задачи.

После покупки Sun Microsystems компанией Oracle в 2009 году филиал вместе со всеми активами перешел к покупателю. Его штат вырос до 350 человек. Российские инженеры выпускали компиляторы и среды разработки, работали над операционной системой Oracle Linux, технологией виртуализации VirtualBox. Но ключевым направлением оставалась Java — в Петербурге вырос крупнейший центр Java-разработки Oracle за пределами США.

18 марта 2014 вышла Java 8, «золотой» релиз. Согласно исследованию Axiom JDK, этим релизом до сих пор пользуется треть отечественных разработчиков. Российская команда составляла около трети всех программистов, работавщих над восьмой версией Java. Петербургские инженеры отвечали за графические библиотеки, а также производительность и качество платформы в целом. Создатели Java 8 впервые уделили огромное внимание безопасности, и в этой задаче российские разработчики были на одной из ключевых ролей. 

«Восьмой релиз Java пришлось задержать на полгода из-за проблем с безопасностью. Произошла публичная атака и в платформе нашли множество дыр, — вспоминает Сергей Лунегов, работавший в Центре разработки Sun/Oracle в Петербурге в 2004–2017 гг. — В тот момент стало понятно, что нет никакого органа, который следил бы за безопасностью платформы. В Oracle образовалась специальная группа, в которую вошло много российских инженеров. Эти люди занимаются безопасностью Java до сих пор».

В 2014 г. российские разработчики получили поздравление с 15-летием JCP

В 2014 г. российские разработчики получили поздравление с 15-летием JCP

Начиная с Java 8 update 20 пользователи могли заметить, что из панели управления исчез средний уровень безопасности — остались лишь «высокий» и «очень высокий». Появился запрет на запуск Java-приложений, которые не полностью соответствуют спецификациям новой платформы и не подписаны валидным цифровым сертификатом. Ведь на Java удобно писать не только полезный софт, но и трояны.

Так называемые

Так называемые «кошачьи» релизы Java ME выпускались при участии российских инженеров

Кроме восьмого релиза Санкт-Петербургский центр разработки занимался и другими значимыми проектами Java в сфере мобильных и облачных технологий. Платформа Embedded Java для интернета вещей (IoT) полностью разрабатывалась в России.

2006. Open-Source Java, комьюнити, JUG

Java становится свободным программным обеспечением, и российские программисты включаются в развитие OpenJDK. При участии Санкт-Петербургского центра разработки в стране формируется сильное Java-комьюнити.

«Не можешь победить — возглавь!» — чтобы сохранить за собой лидерство, Sun Microsystems превратила Java в опенсорс-проект. Разработка проприетарных «джав» потеряла смысл, и конкуренты включились в проект OpenJDK.

«Это был большой проект, который шел несколько лет, — взять и оупенсорснуть Java, придумать лицензии, схемы, — отмечает Сергей Лунегов. — Изначально платформа была создана не сообществом, а инженерами Sun Microsystems, поэтому вести разработку OpenJDK садились люди, которые до этого работали с Java. Среди них было много наших инженеров, которые становились ревьюерами, коммитерами и занимают эти должности до сих пор уже в своих JDK проектах».

IT-гиганты получили возможность создать что-то для себя, но в их интересах было, чтобы изменения попадали в общую спецификацию, становились апстримом, а не форком. Каждый взял на себя поддержку какого-то кусочка открытого проекта. Статус кво сохранился до сегодняшнего дня: что-то делают инженеры из IBM, SAP, Red Hat, но больше половины работы все равно делает Oracle.

«В OpenJDK миллионы строк кода, это огромный набор проектов. Из них нужно собрать дистрибутив и его поддерживать. При этом сборку можно называть джавой, только если она прошла проверку с помощью 140 000 тестов сюиты JCK», — делится Алексей Федоров, руководитель компании JUG Ru Group, разрабатывавший JCK в Центре разработки Oracle в Петербурге.

2004 - 2017 гг: разработка Java в Центре разработки в Петербурге

2004 — 2017 гг: разработка Java в Центре разработки в Петербурге

Постепенно проект OpenJDK разрастался, наполнялся новыми людьми, и вокруг него выросло мощное сообщество. Стабильное и отзывчивое комьюнити имеет значение для любого продукта, но для опенсорс-разработки оно критически важно.

В 2006 году в Россию пришли конференции Sun Tech Days. На них приезжал сам Джеймс Гослинг. Большие девелоперские мероприятия в Москве и Санкт-Петербурге собирали по несколько тысяч человек, как и в США, — хотя «нормой» в России тогда считалась аудитория в 200—300 участников. Sun проводила Tech Days по всему миру, в России их развитием занимался Александр Белокрылов, который в итоге возглавил работу по продвижению Java в Европе, Африке и на Ближнем Востоке. 

Параллельно развивалась программа Sun Campus Ambassador Program. На пике в ней было 40 амбассадоров (профессора, ведущие инженеры и исследователи), которые проводили курсы и тренинги, выступали на мероприятиях и вплотную занимались популяризацией Java. Центр разработки вкладывался в образование, выделял гранты на оборудование для студенческих групп и всеми способами «удобрял почву», чтобы вырастить будущие кадры.

В России появились «джуги» — сообщества JUG (Java User Group). Они создавались сами, на добровольной основе, а российский офис Sun помогал им регулярно собираться и обмениваться опытом. Этому способствовали как небольшие гранты, так и общая открытость Центра разработки к сотрудничеству. В программе Sun Campus Ambassador участвовали будущие лидеры Java сообщества: Виктор Гамов — один из создателей подкаста «Разбор полетов», Антон Черноусов — «Голодный», лидер сибирского Java сообщества, подхвативший эстафету «Разбора полетов», Андрей Когунь, создатель и лидер JUG.MSK. Крупные Java-конференции, такие как JPoint и Joker, организуемые JUG Ru Group, и сейчас проходят каждый год, собирая по тысяче участников.

2017. Уход Oracle, новый рынок, Axiom JDK

На фоне усложнения международных отношений российский рынок ПО становится более обособленным. Oracle диктует новые правила игры, сделав платформу Java платной. Российские инженеры создают продукт для внутреннего рынка.

Реорганизация Центра разработки Oracle в Санкт-Петербурге была процессом, который растянулся на несколько лет. Американцам было важно вывести из России ключевую технологию — Java. Российские инженеры ездили в Индию и там помогали найти и обучить специалистов, но из-за нехватки квалифицированных кадров процесс шел с трудом.

Когда Oracle закрыла разработку Java в России, команда питерского ЦР создала собственную компанию, чтобы продолжать заниматься платформой. Сейчас она называется Axiom JDK и, по нашим подсчетам, занимает первое место среди российских компаний по числу сотрудников ex-Oracle. 

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

Но по большому счету вопрос с монетизацией оставался открытым — ведь его на тот момент не могла решить для себя даже Oracle!

«Вопрос заработка на Java всегда был бичом сперва для Sun, а затем и для Oracle, — рассказывает Григорий Лабзовский. — В какой-то момент они просили «по предложению от каждого сотрудника» и готовы были рассмотреть самые безумные идеи. Мы даже вставили рекламу в установщик! Инсталлируя Java, программист был вынужден лицезреть баннер компании… Google, которая в этот самый момент судилась с Oracle из-за Android. Разработчики хейтили, но на этом была выручена самая большая сумма, когда-либо заработанная джава-группой».

В 2019 году Oracle изменила лицензирование, фактически сделав Java платной, — и вопрос монетизации решился на корню. Возможность продавать свою сборку Java получила не только сама Oracle, но и любой участник OpenJDK. В одночасье родился новый рынок. Лидером, безусловно, стала сама Oracle, но и другим участникам было, что предложить.

Зачем кому-то платить за сборку опенсорсной платформы? Ключевая причина в том, что продавец сборки отвечает за ее содержимое. Прежде всего, речь идет о правовой ответственности: как показала история, убытки от программных ошибок могут исчисляться миллионами долларов. Во-вторых, ответственного подрядчика отличает добросовестное отношение к техподдержке. Когда же речь идет о сборках «из интернета», даже самых известных, использовать их разработчик может только на свой страх и риск.

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

Новейшая история JDK в России

Новейшая история JDK в России

2020-е. Суверенная Java

Число хакерских атак на российские предприятия, в том числе в промышленности и банковском секторе, возрастает многократно. Указы президента и правительства задают курс на импортозамещение. Российские разработчики работают на внутренний рынок и продолжают развивать дистрибутив OpenJDK.

В силу технических и исторических причин большинство IT-систем финансового и государственного сектора построены на Java. Сервис «Госуслуги», Система быстрых платежей (СПБ), платежная система «МИР», «Альфа-банк», биржа СПбМТСБ работают на Axiom JDK. Вызовы времени диктуют особые требования к российской Java-платформе. Корпоративных пользователей Java внутри страны можно отнести к двум категориям.

Первая — это стратегически значимые предприятия. Закон предписывает им использовать ПО, сертифицированное Федеральной службой по техническому и экспортному контролю (ФСТЭК). Как опенсорс-проект, Java априори небезопасна. Чтобы ее сертифицировать, команда Axiom JDK верифицировала 3 Гб исходного кода. Инженеры искали уязвимости двух типов. Первый — «дырки» в коде, поиском которых более-менее интересуется сообщество OpenJDK. Второй — специально встроенные вредоносные модули, которые вообще никто не ищет.

«Нам пришлось глубоко перекапывать гигабайты исходного кода, менять виртуальную машину, оптимизировать «сборщик мусора», внедрять новые точки контроля, чтобы иметь возможность выявлять «закладки». Для пользователя эта работа незаметна, но разработчикам она стоила 10 человеко-лет», — рассказывает Александр Дроздов, инженер по РБПО и информационной безопасности Axiom JDK.

Вторая группа пользователей — те, для кого сертификация (ФСТЭК) не обязательна. Они могут воспользоваться любой сборкой на базе OpenJDK, в том числе сделать ее сами и нести за это ответственность. Профессиональный выбор — это дистрибутив Axiom JDK с лицензией и технической поддержкой, так как это единственная тиражируемая версия JDK в реестре российского ПО. Для проверки гипотез, учебных экспериментов и демо разработчики могут загрузить открытую версию Axiom JDK. Она кстати входит в состав недавно объявленной суверенной OpenIDE. Это обновляемая версия, которая соответствует максимальным требованиям безопасности с учетом российских особенностей. Разработчик несет полную ответственность за качество сборки и в любой момент готов подключиться к техподдержке.

Все сборки Axiom JDK регулярно обновляются. В рамках проекта OpenJDK апдейты безопасности выпускаются каждый квартал и два раза в год выходят новые фичи.

«Oracle имеет право первым раскрыть уязвимости в Java с выпуском обновления, и все остальные поставщики стараются сделать это синхронно. Мы строго следуем этому циклу, — поясняет Роман Карпов, директор по стратегии и развитию технологий Axiom JDK. — Наши продукты работают в критически важной инфраструктуре с SLA 99,99%. Это большая ответственность. Каждый релиз — это самые напряженные дни для инженеров. Нужно перепроверить каждую функцию на всех платформах. А их у нас 20 — больше, чем у Oracle, потому что мы поддерживаем еще и российские решения». 

Новая глава

Уход Oracle из России не остановил развитие Java. Мы благодарны за сильную инженерную школу и опыт, который получили. Сегодня инженеры Axiom JDK, начинавшие работу с Java почти 30 лет назад, продолжают развивать платформу, решая крупные и нестандартные задачи для российских проектов.

Например, Госуслугам недавно исполнилось 15 лет — это 112 млн пользователей, 1,6 тыс. цифровых услуг и 2 млн заявлений в день. Всё это работает на Axiom JDK — российской платформе Java, которая стала средой исполнения одной из крупнейших IT-систем страны.

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

Присоединяйтесь к нам, делитесь комментариями и рассказывайте свою историю Java!

© Habrahabr.ru