суббота, февраля 28, 2009

Что общего между Android и .Net?

Думаете ничего? Забавные и неожиданные параллели обнаруживаются порой в развитии информационных систем.
Все знают о том, что в прошлом году Google запустил Android - свою мобильную платформу. Android построен на ядре Linux, а прикладные приложения выполняются в виртуальных машинах (sandbox) и для их разработки используется Java. Или, вернее, язык с синтаксисом Java и библиотеки анлогичные Java SE. А в качестве среды исполнения вместо JVM используется виртуальная машина Dalvik. Сразу возникает резонный вопрос, а зачем вообще Google понадобилось изобретать велосипед, почему не использовать стандартную для мобильных устройств Java ME? Вроде бы Google не намерен зарабатывать непосредственно на софте для Android. Кроме того, использование Java ME обеспечило бы переносимость огромного количества мобильных приложений на новую платформу.
Однако тут все не так просто, и как уже заметили многие все дело в лицензионной политике. В случае с Java ME, Sun продемонстрировала просто чудеса иезуитства изобретательности, выпустив ее сразу под двумя лицензиями: GPLv2 и коммерческой. А это вынуждает производителей, использующих 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.

7 комментариев:

dalexs комментирует...

«... которая за 9 лет так и не смогла существенно потеснить Sun и Java с занимаемых ими позиций.» Не понятно что имеется в виду под «позициями»: разнообразие устройств и ОС на которых работают Java приложения? Вопрос, появился из-за того, что по субъективным ощущениям на Windows .NET приложения более распространены, для Web сложнее оценить но кажется что тоже не так все однозначно.

Павел комментирует...

Ага, "так и не смогла существенно потеснить Sun и Java с занимаемых ими позиций". Очнись, ява умирает, дотнет уж года два как победил. Текущее состояние явы - это как Borland Delphi лет пять назад: да, силен, да, много на нем написано, но упадок уже прошел точку невозврата. Исход предрешен.

BrigOS комментирует...

2 Павел
Java как раз таки не умерла и не собирается - Java цветет и пахнет. Убедиться в этом можно просмотрев вакансии работодателей и походив по собеседованиям.

Я .Net-чик. Мониторя текущие вакансии сложилось впечатление что будь я матер в Java+Hibernate (всего-то) имел бы намного больше вариантов на новую работу и на более высокую з/п. И это во время кризиса.

Mike Chaliy комментирует...

2BrigOS, всегда лучше там где нас нет.

vilner комментирует...

Я , к сожалению, думаю, как раз андроиду и уготована участь нишевого продукта. Инженеры у гугля отличные, а вот маркетологи в не-поисковой сфере никакие. Выпускают хорошие продукты, которые потом без маркетинговой раскрутки годами чахнут в бета-версиях .

Sergey Rozovik комментирует...

Андроид открытый продукт, с очень привлекательной лицензией.
А Google сделал то, что долго не могли осилить множество мелких компаний, - нормально портировал Linux на мобильную платформу.
Теперь за Андроид ухватятся очень многие, очень уж привлекательно выглядит.
Коенчно, предстоит долгая конкуренция с Windows Mobile. Посмотрим кто победит.
А вот то, что выход Android это удар по Symbian - это очевидно уже сейчас.

Анонимный комментирует...

Мониторя вакансии нельзя объективно судить о "здоровье" явы.
Больше половины таких вакансий - на поддержку/улучшение существующих продуктов, а не на разработку новых.