Многолетнее противостояние таких ярких лидеров мировой ИТ-индустрии, как корпорации Sun и Microsoft, постоянно подкрепляемое бесконечными судебными тяжбами, стало уже притчей во языцех. Непримиримая борьба между ними идет по всему фронту: в нее включились операционные системы семейств UNIX и Windows, пакеты офисных приложений StarOffice и Microsoft Office, языки программирования Java и C#, языковые платформы J2EE (Java 2 Platform, Enterprise Edition) и .NET Framework, концепции Sun ONE и Microsoft .NET.

Как заявляют некоторые эксперты, приверженцы каждой из компаний по разные стороны «демилитаризованной зоны» настойчиво утверждают, что одна из них обречена на поражение [1]. Кто же победит, если вообще победит? По оценке аналитиков из Gartner Group, в ближайшие годы все отчетливее будет прослеживаться тенденция к разделению Интернет-мира, включая электронный бизнес, на .NET и J2EE. В то же время о .NET пока приходится говорить лишь в будущем времени. Как было заявлено на последней всемирной конференции Microsoft Professional Developers Conference, прошедшей в конце октября 2001 г. в Лос-Анджелесе, .NET Framework в коммерческом виде появится только в феврале 2002 г., спустя почти два года с момента объявления о планах Microsoft.

Java как орудие конкурентной борьбы

Человечество никогда не испытывало недостатка в пророках. И хотя их предсказания сбывались крайне редко, мы по-прежнему продолжаем вверять свою судьбу тем, кто способен убедительно поведать нам о нашем будущем. В 1995 г. президент Sun Microsystems Стив Макнили, опираясь на авторитет Джеймса Гослинга, автора языка Java, горячо убеждал всех в том, что теперь Интернет станет другим, что Java совершит грандиозный переворот повсюду, начиная с бытовых приборов и заканчивая глобальными коммуникациями. В 2000 г. Билл Гейтс, основатель Microsoft, и Стив Балмер, глава Microsoft, опираясь на авторитет Андерса Хейльсберга (автора Turbo Pascal, Delphi и языка C#) и Бертрана Мейера (автора языка Eiffel и горячего поборника .NET), провозгласили новую инициативу — Next Generation Internet («Интернет нового поколения») и новую эру — эру платформы .NET. Но, к сожалению, красивые слова в области ИТ-индустрии довольно часто расходятся с реальными делами, и лишь время расставит все по своим местам.

Технологические новации, которыми нередко бравируют те, кто призывает мир под свои знамена, на поверку оказываются не такими уж новыми и технологичными. Были ли язык Java и построенная на нем платформа принципиально новыми в технологическом плане? Разумеется, нет. Все это по большей части умело созданные мифы [2].

Механизм виртуальных машин получил популярность благодаря разработке группой Никлауса Вирта так называемого p-кода и p-машины (переносимого Паскаль-кода и Паскаль-машины) и стал в первые годы развития Java основой этой технологии в плане обеспечения независимости от исполняемой платформы. Был он не только хорошо известен еще в конце 1960-х гг., но и за полтора десятилетия до появления Java использовался как вполне рядовой инструмент в проектах извечного конкурента Sun — корпорации Microsoft. Так, Multiplan (первая электронная таблица Microsoft) была реализована на языке Си с трансляцией в p-код. Он затем применялся как интерпретатор, позволяющий работать в среде операционных систем CP/M, MS-DOS и AppleDOS. Осенью 1982 г. Нейл Козен (Microsoft) всего за несколько дней сумел обеспечить с помощью технологии p-кода перенос Microsoft Word в среду Macintosh. Так что, следуя логике, разумный скептицизм в отношении правдивости лозунгов о Java априори можно распространить и на .NET.

Что же касается сферы маркетинга, то в этом плане язык Java действительно стал заметным явлением. Наиболее ярко об этом сказал (уже будучи президентом Novell) Эрик Шмидт, бывший директор по технологиям компании Sun: «Когда вы произносите слово «Java», то, что бы ни скрывалось за ним, на первый план выступают позитивные аспекты фирменного названия. Чувствуя, что это нечто солидное, люди возбуждаются, стремятся приобщиться. Даже таксисты знают: Java — это класс!» В новом тысячелетии официальные представители Sun предпочитают сравнивать Java с обычными джинсами — простой и удобной повседневной одеждой.

Теперь, когда эйфория заметно поутихла, редко вспоминают, для каких целей создавался язык и позиционировалась технология Java. Как гласит история, в 1992 г., едва был закончен прототип миниатюрного устройства *7 (Star7), давшего жизнь Java, президент Sun Скотт Макнили воскликнул: «Эта штука — прорыв. Теперь не подведите меня... Вы сделаете — мы победим. Мы продадим это. Мы убьем Hewlett-Packard, IBM, Microsoft и Apple одним ударом». Летом 1994 г. в Sun было принято решение на переориентацию технологии, тогда еще не носившей название Java, под Интернет — на уровне поддержки браузеров. В 1997 г. стала набирать силу компонентная архитектура JavaBeans, и практически одновременно появилось понятие сервлета (компоненты для реализации серверной части Web-среды). Язык и технология Java начали свое движение в сторону серверного и связующего ПО. Тот же 1997 г. был отмечен началом стандартизации Java-платформы и накалом противостояния Sun и Microsoft. В декабре 1999 г. переориентация на корпоративные решения была закреплена выпуском платформы J2EE.

Интересно, что двойственность в отношении собственной стратегии характерна для обоих непримиримых конкурентов. Нельзя не отметить, что противостояние «макромира» (в переводе с англ. Sun — «Солнце») и «микромира» (Micro-Soft — так первоначально называлась одна из крупнейших ныне корпораций, Microcomputer Software) стало мощным катализатором развития ИТ-индустрии. В то же время Sun начала разработки Java с прицелом на «микромир», а в результате переориентировалась на «макромир», мир корпоративных решений. Microsoft же, выдвигая .NET, претендует на «макромир», тогда как весьма вероятен такой сценарий развития событий, при котором .NET активно вторгнется в область «микромира».

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

Вспомним, зачем корпорации Sun, для которой программное обеспечение, а уж тем более инструментальное, не было основой бизнеса, вдруг понадобилось браться за то, в чем она никогда не была сильна (что лишний раз подтвердила и история развития Java) — за создание языка программирования и связанной с ним программной среды. Рынок серверов и рабочих станций, а также UNIX-систем к началу 1990-х гг. был фактически поделен. Microsoft же в те годы продолжала экспансию своего семейства Windows за пределы рынка ПК и неумолимо вторгалась на территорию своего вероятного противника. Нужно было принимать меры, и в качестве разящего меча выбрали технологию Java. Корпорация Microsoft, во всеуслышание заявив о планах развертывания .NET, вроде бы не собирается повторять ошибок конкурента и играть не на своем поле — роль Windows в стратегии Microsoft по-прежнему центральная. Однако не стоит загадывать наперед, лучше попробуем выяснить, откуда появилось название .NET и что по сути за ним скрывается.

Что такое .NET

Java ведет свою публичную историю с 23 мая 1995 г., а Microsoft .NET — с 22 июня 2000 г. Пять лет отделяют два этих ярких явления друг от друга. За истекшие годы Java прошла непростой путь — от языка программирования, Интернет-технологии, инструментальной и операционной сред, компонентной инфраструктуры к языковой корпоративной платформе. А Microsoft.NET начинает свой путь сразу во всех направлениях.

В знаменитой книге Билла Гейтса «Дорога в будущее» [3], вышедшей в оригинале еще в 1995 г., можно отыскать слова-провозвестники новой философии корпорации Microsoft, философии, получившей необычное название .NET (dot-NET). Вот они: «Сегодня мы все отправляемся в новый великий путь. Никто не знает наверняка, куда мы попадем на этот раз, но я вновь уверен, что эта революция коснется еще большего числа людей и продвинет общество гораздо дальше... Выгоды и проблемы, которые сулит грядущая революция в области связи, очевидно, окажутся грандиознее тех, что принесла с собой эра персональных компьютеров».

Что же такое .NET? Коротко определение .NET, приведенное Бертраном Мейером, звучит так [4]: «Это открытая языковая платформа для корпоративной и Web-разработки». На самом же деле эти слова скорее относятся к .NET Framework. Что касается .NET, то это куда более объемное понятие, включающее в себя идеологию создания распределенных информационных служб, соединенных XML-магистралями и ориентированных на взаимодействие персон, а также компаний и программ через средства глобальных коммуникаций, прежде всего через Интернет. Ключевой элемент в .NET, метаязык XML, сейчас, пожалуй, излишне идеализируется. В то же время это едва ли не единственная всеми признаваемая точка соприкосновения разнородных миров, возводимых гигантами ИТ-индустрии.

Откуда появилось название .NET, несомненно намекающее на сетевой характер всех составляющих новой платформы? Первое, что приходит в голову: Net давно стало синонимом слова Интернет, и тем самым .NET делает акцент на реорганизацию всемирной сетевой среды. Вторая версия: корпорация Microsoft выбрала имя «.NET» для нового поколения своих продуктов и сервисов (ASP.NET, VB.NET, JScript.NET, Visual Studio.NET, ADO.NET, Office.NET, Passport.NET, MSN.NET, bCentral.NET) по аналогии с подходом корпорации IBM (NET.Data, Net.Commerce и др.) с той лишь разницей, что «.NET» вместо префикса стал выполнять роль суффикса.

Нельзя не отметить, что суффикс «.NET» в названии продуктов и технологий Microsoft появился давно, еще в ноябре 1984 г., когда вместе с сетевой версией MS-DOS была выпущена программа MS-NET. (Она тогда обеспечивала одновременное использование файлов и доступ пользователей к общему жесткому диску.)

Как бы то ни было, жизнь платформе .NET дал проект под кодовым названием Next Generation Windows Services. В имени проекта фигурируют два ключевых слова — Windows и Services, определяющих суть .NET. Действительно, трудно не заметить, что если Java подавался под соусом «один язык — множество независимых ОС», то .NET уже подается как «одна ОС — множество независимых языков». Корпорация Sun сделала ставку на язык (Java) и все остальное обустраивает под него. Microsoft, контролируя практически весь рынок ОС для ПК, не собирается (по крайней мере, в обозримом будущем) уступать лидерство, завоеванное Windows. При этом у Microsoft есть средство для маневра: за счет наличия языковой инфраструктуры CLI платформа .NET не привязана намертво к Windows, и в ближайшее время, возможно, появятся реализации .NET под другие операционные платформы, в том числе под Linux.

Нетрудно заметить, что в области программного обеспечения тремя китами до сих пор остаются язык программирования, ОС и СУБД. Если продолжать логическую цепочку «один язык — множество независимых ОС» (Java), «одна ОС — множество независимых языков» (.NET), то в области СУБД на подобную роль центра притяжения ИТ-решений лучше всех подходит Oracle (одна СУБД — множество независимых ОС — множество независимых языков).

Компьютерные языки всегда были основой основ компьютерного мира. Но на нынешнем этапе развития .NET языки C# и J#, активно продвигаемые корпорацией Microsoft, выполняют в большей степени тактические функции, равно как и изюминка .NET — языковая инфраструктура CLI (Common Language Infrastructure).

Скрытое противостояние на уровне языков (Java — C#) можно рассматривать как весьма хитроумный ход со стороны Microsoft. По всей видимости, C# до поры до времени будет находиться в тени, пока не подменит, не поглотит и не вытеснит родственный ему язык Java. (К 2005 г., по оценке Gartner Group, C# станет настолько популярным, что соотношение применения C# и Visual C++ достигнет уровня 3:2.)

Казалось бы, после судебного вердикта, вынесенного в январе 2001 г., Microsoft обязана была не только выплатить компенсацию, но и поставить крест на развитии Java. Однако корпорация Microsoft продолжает поддержку Java (прежде всего в рамках программы JUMP — миграции в C# и J#), в том числе и через своих партнеров — компании Rational и Hewlett-Packard, лишив при этом корпорацию Sun своего мощного канала распространения Java. (Недавняя история с изъятием виртуальной машины Java из Windows XP — наглядное тому подтверждение.)

В битве как языков, так и платформ большую роль будет играть принятие международных стандартов. Важно отметить, что, имея опыт успешной стандартизации языка JScript в Европейской Ассоциации производителей компьютеров (ECMA), в октябре 2000 г. Microsoft при поддержке Hewlett-Packard и Intel направила в ECMA для принятия стандарта язык C# и инфраструктуру CLI. Удивительный факт: стартовавшие на пять лет раньше язык и платформа Java до сих пор не имеют международного стандарта. Осенью 1997 г. Sun направила Java в ISO, но стандарт до сих пор не принят и дело тихо похоронено. Весной 1999 г. Sun направила технологию Java на стандартизацию в ECMA. Правда, в декабре того же года Sun решила отозвать свою заявку, обосновав это стремлением «защитить целостность технологии Java и инвестиций, сделанных мировым сообществом».

Microsoft и Sun: под знаком меча

Становление Java, безусловно, проходило под знаком противоборства Sun и Microsoft. По мнению Эрика Шмидта, основная цель, которую Sun ставила перед собой, — повсеместно распространить Java и выиграть у Windows битву за единую платформу. Достигнута ли она в настоящее время? Очевидно, нет. Более того, по мнению аналитиков Gartner Group, доля платформы .NET стремительно начнет нарастать и к 2004 г. достигнет 80%. И все же предсказывать победителя пока рано. В битве гигантов ИТ-индустрии многое решает не только и не столько совершенство технологий, сколько умение овладевать умами масс, выражаемое в привлекательной идеологии, приобретающей едва ли не религиозный оттенок.

Свое право, как и в рыцарские времена, Microsoft и Sun доказывают мастерством владения клинком. Средневековье было священным царством меча, являвшего прообраз креста. Меч считался живым существом и обладал магическими свойствами. Каждому великому мечу давалось имя. Его рукоять представляла собой священный ковчег, в котором хранились частицы мощей. Меч был оружием избранных и посвященных. Только равному с равным дозволялось скрещивать оружие. Рыцарь был только служителем меча, вершившим высшую справедливую волю. На клинке меча высекались слова молитвы, которую он возглашал каждым своим ударом. «Сеть — это компьютер» — вот девиз, который начертан на мече Sun, носящем экзотическое имя Java. «Компьютер — это сеть» — такой девиз все более явственно проступает на мече Microsoft с магическим именем .NET.

Литература
  1. Farley J. Picking a Winner: .NET vs. J2EE // Software Development Magazine. 2001. March.
  2. Богатырев Р. Гадание на кофейной гуще // Мир ПК. 1998. № 2.
  3. Гейтс Б. Дорога в будущее. М.: Русская редакция, 1996.
  4. Meyer В. .NET is Coming // IEEE Computer. 2001. August; Мейер Б. Наступает эпоха .NET // Открытые системы. № 11.