ЮБИЛЕИ

Технология, которая перевернула ИТ-мир

23 мая 1995 г. на главную сцену выставки SunWorld’95, проходившей в калифорнийском городке Маунтин-Вью (США), поднялись директор научного подразделения Sun Mycrosystems Джон Гейдж и исполнительный вице-президент Netscape Марк Андриссен и заявили о включении Java в состав Netscape Navigator. Справедливости ради нужно сказать, что эта новость привлекла внимание собравшихся в основном лишь в контексте добавления новой технологии в ведущий продукт, который в тот момент был фактически олицетворением стремительно набирающей популярность сети World Wide Web. В целом же данное объявление ничем не выделялось на фоне еще десятка анонсов, сделанных в тот же день.

Однако спустя довольно короткое время стало понятно, что речь идет не просто о выпуске очередного программного продукта, а о создании, как принято сейчас говорить, Java Platform, фактически ознаменовавшей наступление нового этапа развития мировой ИТ-отрасли.

Тогда, в мае 1995-го, вся команда разработчиков Java насчитывала менее 30 человек. Но именно они разработали технологию, вызвавшую революционные изменения в современном вычислительном мире, технологию, которой сейчас пользуются миллионы программистов и сотни миллионов пользователей.

"Ты помнишь, как все начиналось?"

В 1991 г. в недрах компании Sun Microsystems стартовал небольшой проект по созданию средств программирования под названием Green Project. Предания говорят об окружавшей его необычайной секретности: о существовании проекта знали лишь несколько топ-менеджеров Sun. Команда в составе 13 человек во главе с Джеймсом Гослингом разместилась в анонимном офисе в городке Менло-Парк, отрезанная от коммуникаций компании. Они трудились в течение полутора лет, нарушая все положения об ограничении рабочего времени.

Целью проекта было создание "новой волны" в вычислительной технике. Правда, первоначально волна должна была накрыть только систему разработки ПО для бытовой электроники - в результате появился новый аппаратно-независимый язык программирования под названием Oak (дуб), предназначенный для создания портативной операционной среды Green OS.

Но при чем здесь компания Sun, которая занималась серверными решениями для корпоративных клиентов? Тут нужно вспомнить, что ее бизнес изначально строился по принципу "делаю все сам", что подразумевало также самостоятельную разработку и производство микросхем. Учитывая быстрое повышение интеллектуальности бытовых приборов, Sun решила освоить новый для себя рынок и поставила задачу заменить множество используемых в тот момент микроконтроллеров одной-единственной масштабируемой архитектурой с широким спектром применения. Естественно, в качестве производителя таких микросхем должна была выступать сама Sun. Более того, в начале 90-х компания уже имела прототип будущего встроенного вычислительного устройства под кодовым названием *7 (Star Seven) на базе набора микросхем MicroSPARC с 4 Мб ОЗУ, для управления которым требовалась компактная ОС нового поколения.

Первый вариант проекта Green был завершен в сентябре 1992 г. Предание гласит, что, познакомившись с макетом *7, президент Sun Скотт Мак-Нили воскликнул: "Эта штука - прорыв!.. Мы убьем HP, IBM, Microsoft и Apple одним ударом". Хотя, честно говоря, что он хотел этим сказать, не очень понятно, так как в тот момент речь шла о новом сегменте рынка (с не вполне ясными перспективами), где активность большинства перечисленных фирм пока никак не проявлялась. Так или иначе, но последующие события показали, что до погребения конкурентов было еще очень далеко.

Они были первыми - команда Green Project

Для практической реализации полученных результатов Sun в 1992 г. создала дочернюю фирму FirstPerson, деятельность которой на поприще компьютеризации бытовой техники закончилась через два года полным коммерческим провалом. В общем-то в тот момент на малобюджетном проекте Green можно было бы поставить точку и забыть про него, списав затраты (весьма скромные) в убытки...

Как раз к середине 90-х годов определились новые условия: стало понятно, что развитие информационных технологий в видимой и отдаленной перспективе будет проходить под знаком Интернета. И в этой связи руководство Sun Microsystems (по инициативе вице-президента Билла Джоя) в середине 1994 г. приняло решение о переориентации проекта Green на работу с глобальной сетью. Вскоре Oak был переименован в Java, а сам язык стал трансформироваться в виртуальную вычислительную машину, фактически - встроенную ОС: Java Virtual Machine (JVМ).

По поводу имени технологии, которая должна была перевернуть компьютерный мир, внутри группы разработчиков разгорелись такие жаркие дискуссии. Право окончательного выбора было предоставлено директору по технологиям компании Sun Эрику Шмидту. Он и стал, таким образом, крестным отцом Java. Вскоре появился и логотип новой технологии - чашечка дымящегося кофе.

От локального проекта к глобальной технологии

С момента официального объявления Java на SunWorld’95 наступил этап активного формирования инструментария и базовой архитектуры. Напомним, что в своем первоначальном варианте Java представляла собой технологию исполнения аплетов - специального вида приложений - в среде Web-браузера. Однако вскоре границы применения Java стали быстро расширяться.

Уже в 1996 г. были представлены Java Development Kit 1.0, технология сервлетов Java (аплеты для Web-сервера), JavaOS (ОС для бытовой электроники), первый компилятор JIT, спецификации JavaCard (для программирования смарт-карт). Java, задуманная сначала как внутренний механизм Web-браузеров, стала осваивать и серверную часть корпоративных информационных систем: были анонсированы компонентная технология Enterprise JavaBeans (EJB), немного позднее - Java Server Pages (генерирование Web-страниц), а в 1999-м представлено следующее поколение базовой технологии - Java 2 Platform.

2001 г. - анонс стратегической инициативы Sun ONE (Open Net Environment), который ознаменовал собой старт нового этапа развития Java: создание инфраструктуры Web-сервисов с активным развитием встроенных систем. Как раз с приходом нового века Java как бы вернулась к начальной задумке проекта Green/Oak, приступив к освоению широкого круга мобильной и бытовой техники.

Главная идея Java точно определена в лозунге этой технологии: "Write Once - Run Anywhere" (напиши один раз - запускай где угодно). Однако в реальности воплотить его "на все сто" оказалось невозможно (или, по крайней мере, неразумно). Понимая, что нельзя "одним размером покрыть все потребности", Sun еще в 1999 г. представила Java 2 Platform в виде трех изданий: Standard Edition (J2SE) для настольных компьютеров, Enterprise Edition (J2EE) для масштабируемых серверных систем и Micro Edition (J2ME) для встроенных решений в самых разных областях.

В результате Java сегодня - это ведущая технология на ИТ-рынке, охватывающая весь спектр применения вычислительных средств: от мобильных устройств и игровых приставок до информационных систем глобального уровня. По данным Sun Microsystems, на начало 2005 г. она использовалась в 650 млн. ПК, 580 млн. мобильных телефонов и ручных компьютеров, 750 млн. смарт-карт, а также в огромном количестве принтеров, Web-камер, игровых устройств, медицинских приборов и т. д.

Причины успеха

На эту тему написано огромное число статей и даже книг. Так что, не претендуя на роль первооткрывателя, я попробую определить самые важные, на мой взгляд, моменты.

Начальной идеей проекта Green было создание нового языка системного программирования. Актуальность данной проблемы определялась тем, что язык Си/C++, который стал стандартом де-факто при решении задач системного уровня, к 90-м годам явно переживал кризис. Позволяя создавать наиболее эффективные программные решения, он превратился в монстра, сложного в изучении и применении. К тому же явно обозначилась угроза потери переносимости кода между аппаратно-программными платформами из-за наличия различных его доработок и расширений многими поставщиками.

Таким образом, в условиях стремительного расширения сферы применения вычислительной техники и быстрого роста армии программистов требовался новый язык - более простой и надежный, но достаточно универсальный и эффективный. Именно эта цель и была поставлена перед командой Джеймса Гослинга. За основу был взят тот же Cи/Cи++, из которого убрали все, что не отвечало системным задачам текущего момента (например, указатели - традиционную гордость настоящих Си-программистов), и добавили необходимое (в частности, строгую типизацию данных и более эффективную "сборку мусора").

Тут нужно сразу отметить, что идея создания универсального упрощенного Си была с энтузиазмом поддержана американскими университетами, роль которых в формировании общественного мнения в ИТ-отрасли очень велика. Дело в том, что постоянное усложнение Си и необходимость готовить все больше системных программистов отвлекало ресурсы вузов от решения общеобразовательных задач и заставляло их все чаще выступать в роли краткосрочных курсов по программированию. Появление Java в какой-то мере решало эти проблемы, и, кстати, не случайно на первых порах продвижения этой технологии Sun делала особый акцент на пропаганду Java в студенческо-академической среде.

Второй аспект инноваций Java - использование принципа интерпретации для трансляции и исполнения исходного кода, при этом речь шла уже о создании полноценной среды исполнения (библиотеки функций, отладчики и т. д.), которая получила название виртуальной машины Java (JVM). Необходимость JVM определялась в первую очередь задачами переносимости кода и обеспечения защищенного режима его исполнения (как сегодня говорят в Microsoft - использованием "управляемого кода").

Вполне очевидно, что применение принципа интерпретации и требование упрощения самого языка - это две стороны одной медали.

Надо сказать, что продвижение идеи интерпретации кода в широкие массы системных программистов было тогда связано с тем, что особенно хорошо этот метод "прижился" в ненавистном для профессионалов Бейсике, причем интерпретация часто преподносилась как его недостаток. Но Sun смогла так ловко разрекламировать возможности Java, что подавляющее большинство его будущих приверженцев были уверены, что настоящее программирование началось именно с этой "кофейной" технологии.

На самом деле это конечно же не так - почти все инновационные решения Java уже были отработаны на его предшественниках: Pascal-P, Oberon, Modula, Objective C, на том же Basic и т. д. Но это нисколько не умаляет заслуг Гослинга и его команды! Во-первых, им удалось найти оптимальное соотношение "новшества/ограничения" для создания массового языка системного уровня. А во-вторых, они сделали это именно в тот момент, когда ИТ-отрасль крайне нуждалась в таком решении.

Джеймс Гослинг, отец Java.

В настоящее время руководит подразделением Sun Developer Products

Технологическая потребность в Java определялась взрывоподобным развитием Интернета, который в середине 90-х годов переживал переход от обмена статической информацией к распространению исполняемых программных модулей. В этой связи необходимо было срочно реализовать соответствующий безопасный, платформенно-независимый и достаточно компактный механизм. Технология аплетов на базе Java - это было как раз то, что нужно!

Но кроме сугубо технологических моментов был еще один - самый главный, маркетинговый, без которого успех Java как единого индустриального стандарта мог не состояться. Это - угроза полного подавления конкурентов на рынке массового ПО со стороны Microsoft.

Под знаменем Java против Microsoft

Антимайкрософтовская направленность Java не только не скрывалась, но самым активным образом использовалась компанией Sun в маркетинговом продвижении своей новой технологии. "Сегодня Microsoft сидит на горячей сковороде" - это лишь одно, и не самое резкое, выражение, которое я слышал сам на первой российской презентации Java в МГУ в марте 1996 г. Подобные лозунги нашли самое горячее понимание как среди ИТ-поставщиков, так и в кругу пользователей.

Действительно, к 1995 г. ситуация на ИТ-рынке выглядела совершенно критической - платформа Wintel полностью доминировала в сегменте настольных ПК. Последние попытки потеснить ее - как на аппаратном (PowerPC, SPARC и т. д.), так и на софтверном (IBM OS/2) уровнях - закончились неудачей. А впереди уже маячил выход Wintel в серверный сегмент...

Использование Интернета в качестве не только информационной, но и вычислительной сети позволяло подойти к решению защиты от экспансии Microsoft с принципиально нового направления. Ведь в несколько упрощенном виде речь шла о возможности создания активных клиентских Web-приложений с помощью аплетов, которые могли бы выполняться в среде Web-браузера на любом компьютере с любой установленной на нем ОС. А может быть, и вовсе без ОС - на тонком клиенте. Именно идея тонкого клиента (и переноса основного объема обработки данных на мощные UNIX-серверы) была ключевой в момент представления Java, и ее направленность против "толстого" Wintel-клиента лежала на поверхности концепции.

История не терпит сослагательного наклонения, и все же с большой долей уверенности можно предположить, что без угрозы со стороны Редмонда Java стала бы лишь одной из Интернет-технологий. Но в обстановке середины 90-х именно она смогла объединить под своими знаменами мощную коалицию основных ИТ-поставщиков и превратиться в ведущий отраслевой стандарт. Эту ситуацию очень четко отразила тогда обозреватель PC Week (США) Кристина Комафорд: "Я думаю, многим из нас Java нравится прежде всего потому, что его создала не Microsoft".

Неудивительно, что наиболее горячую и эмоциональную поддержку концепция тонкого Java-клиента получила у Oracle, бизнес которой также строится на методах централизованного хранения и обработки информации. (По этому поводу тогда же в американском ComputerWord был опубликован следующий комментарий: "Oracle стала бы программировать на древнеиндийском санскрите, если бы видела в этом хоть малейшую возможность насолить Microsoft".) Корпорация разработала собственную концепцию NET-компьютеров (упрощенно - без жестких дисков) и даже решила заняться их производством. В противовес этому Intel и Microsoft выдвинули вариант NET PC (без сменных носителей). Впрочем, с обеих сторон все ограничилось демонстрацией опытных образцов на выставках.

Реакция Microsoft на появление Java была быстрой и однозначной: Билл Гейтс сразу же объявил о своем горячем желании участвовать в развитии этой технологии. Конечно же никто из серьезных экспертов ему тогда не поверил. Довольно быстро стало ясно, что декларации о желании создать лучшую VJM вылились в намерение расколоть изнутри стандарт Java путем создания его собственного варианта, оптимизированного под Windows. В свою очередь, Sun инициировала серию судебных процессов по поводу нарушения корпорацией Microsoft лицензионных обязательств.

В результате в 2000 г. Microsoft была изгнана из рядов Java-сообщества, но к тому времени империя Билла Гейтса уже решила свою задачу: отстояла ведущие позиции Windows и даже усилила их, в том числе за счет интеграции в Internet Explorer, который к концу 90-х безусловно лидировал на рынке. А тут еще подошли "сибирские дивизии" в виде платформы .NET.

Юридическое противоборство Sun и Microsoft формально закончилось год назад подписанием долгосрочного соглашения о сотрудничестве (см. PC Week/ RE, N 13/2005, с. 1). Формально это выглядело как поражение Microsoft (она выплатила почти 2 млрд. долл. отступных), но если посмотреть на финансовые итоги деятельности двух компаний за последнее десятилетие, можно сделать совершенно противоположный вывод.

Тема противоборства Java и .NET выходит далеко за рамки данной статьи. И сейчас мы отметим только один технологический нюанс. Механизм виртуальной машины в принципе позволяет реализовать исполнение в ней программ, написанных на различных языках (как это делается в среде .NET Framework). Но Sun жестко ограничила такую возможность языком Java. Данный подход имеет свои плюсы, но, по мнению автора Java и вице-президента Sun Джеймса Гослинга, это является ошибочным решением.

Чем сердце успокоится

Исторический экскурс, по правилам жанра, нужно завершить прогнозом на будущее. Хотя в эпоху Интернета и наличия общедоступных электронных архивов публикаций это довольно опасно - такое пророчество можно будет потом легко проверить.

В целом отличные перспективы Java не вызывают никаких сомнений, точно так же, как и то, что паритет между Java и .NET будет сохраняться еще неопределенно долго. Более того, единство Java-сообщества будет обеспечиваться в первую очередь именно наличием .NET.

И вопрос в отношении Java сейчас можно сформулировать только один - сможет ли Sun удержать лидирующую роль в развитии этой технологии?

Действительно, парадокс Java заключается в том, что, с одной стороны, она является признанным отраслевым стандартом, а с другой - все права на нее принадлежат отдельной коммерческой компании. Такое положение дел выглядит весьма неустойчивым и может стать причиной серьезных внутренних конфликтов внутри Java-сообщества. В этой ситуации явная миграция стратегии Sun в сторону модели Open Source - вполне естественный процесс.

Так что перспективы передачи проекта Java полностью под общественный контроль представляются весьма вероятными.