Все знают о том, что в прошлом году Google запустил Android - свою мобильную платформу. Android построен на ядре Linux, а прикладные приложения выполняются в виртуальных машинах (sandbox) и для их разработки используется Java. Или, вернее, язык с синтаксисом Java и библиотеки анлогичные Java SE. А в качестве среды исполнения вместо JVM используется виртуальная машина Dalvik. Сразу возникает резонный вопрос, а зачем вообще Google понадобилось изобретать велосипед, почему не использовать стандартную для мобильных устройств Java ME? Вроде бы Google не намерен зарабатывать непосредственно на софте для Android. Кроме того, использование Java ME обеспечило бы переносимость огромного количества мобильных приложений на новую платформу.
Однако тут все не так просто, и как уже заметили многие все дело в лицензионной политике. В случае с Java ME, Sun продемонстрировала просто чудеса
Естественно, все это не укладывалось в рамки политики, которую избрал Google для продвижения Android. В отличие от Sun, у которой хорошие юристы, Google решил положиться на своих инженеров и... создал свою реализацию виртуальной машины. Причем, Dalvik - это не просто новая реализация JVM (которую все едино пришлось бы лицензировать в Sun), Dalvik вообще не использует Java байт-код (вернее байт-код, полученный в результате компиляции в design-time преобразуется в dex формат, который и используется в run-time). В общем, инженеры Google обставили лоеров Sun. Неудивительно, что мы не видим Sun в списке участников Open Handset Alliance. Тем не менее в Google предпочитают не заострять внимание на этом вопросе, и когда речь заходит о Dalvik они предпочитают говорить об оптимизации своей виртуальной машины под специфику мобильной платформы, позволяющей запускать множество экземпляров, и т.д. и т.п.
Интересно, что девять лет назад подобная история имела место в отношении Sun и Microsoft. И в результате на свет появился еще один "язык, похожий на Java" и "еще одна реализация виртуальной машины" - .Net. Практически все увидели в этом ответ Microsoft SUN и его платформе Java. Новый язык был очень похож на Java по синтаксису, а платформа весьма напоминала JRE. Тогда еще у всех на памяти было противостояние MS и Sun на почве Java, которое закончилось грандиозным скандалом, судебным иском Sun против Microsoft и последующим мировым соглашением. Суть претензий Sun заключалась в том, что Microsoft внесла изменения в свою реализацию JVM, которые делали ее несовместимой со спецификациями Sun и давали преимущества Java программам, исполняемым под Windows. В результате судебных тяжб Microsoft потеряла возможность развивать свою версию JVM. Это, собственно, и стало основным политическим мотивом для создания .Net Framework.
Тогда Microsoft также предпочитала говорить не о борьбе с Sun, а о необходимости более тесной интеграции с WinAPI и COM.
История повторяется. Но .Net - это закрытая проприетарная платформа, ориентированная на Windows, которая за 9 лет так и не смогла существенно постенить Sun и Java с занимаемых ими позиций. А вот с Android все выглядит более серьезно, и более угрожающе. Сегодня у Sun есть реальные шансы потерять платформенное лидерство. Как бы им не повторить судьбу DEC и Compaq.