> Вы с этой Java ME работали? Какая там бинарная совместимость, если там
> и совместимости реализаций близко нет? Я как раз близко с темой
> знаком. Знаете, как пишется софт для для жабы МЕ? Стоит шкаф,
> в нём - пара сотен распространённых моделей телефонов. И вот они
> перебираются и тупо ищется совместимый вариант, чтобы хотя бы на большинстве
> работало. Даже эмуляторы не катят - на реальном железе вылезают дополнительные
> косяки. Так что пример вы привели просто фантастически "удачный".Вот сейчас все почему-то ждут аппараты с прошивкой Android OS 2.2, и не спешат покупать кирпичики с Android OS 1.5. Видимо, они научены горьким опытом несовместимостей в Java ME? Возможно. ;)
Давайте залезем в историю.
Зоопарк разнообразных телефонов (с MIDP-1.0/CLDC-1.x) с разным набором возможностей обусловлен началом становления этой операционной платформы, но как и Android первых версий, не всех устраивает. Ведь каждый производитель в начале становления рынка мобильных телефонов выпускал аппараты не на китайских заводах по ODM-контрактам, а на собственных производственных линиях! А значит телефоны внутри отличались начинкой очень даже значительно.
Первые спецификации MIDP-1 вообще ограничивались пространными наборами системного API, которые не только не специфицировали того, КАК должен отрабатывать системный код, но и даже то, ЧТО должен возвращать вызов этого кода (-1 или любое другое целое число при успехе чтения из сокета). Не было набора тестов соответствия (по типу JCK) для маленькой Явы. Вот поэтому программистским конторам приходилось держать шкаф с сотней ходовых аппаратов для тестирования на них мидлетов, и выпускать мидлеты каждый под собственный аппарат/линейку (S40 у Nokia, например).
С выходом MIDP-2.0 с более жёсткими требованиями к внутреннему устройству аппаратов, "делателей" барахла заметно подсократилось: телефоны стали выпускаться с более-менее унифицированной начинкой. Аппараты стали выпускаться на одних и тех же китайских заводах по ODM-контрактам и отличались только внешним видом. Но, как всегда, не обошлось без косяков: Samsung не хотела полностью соответствовать общему тренду и выпускала на своих предприятиях телефоны с весьма специфичной Явой, и, главное, МНОГО.
Спецификация MIDP-2.1 уже уравняла всех в правах и возможностях. Этот софтверный профиль прямо-таки диктовал производителям возможности аппаратной начинки (CLDC), для обеспечения функционала собственно самого профиля. Ну и жёсткая политика компании Sun, соизволившей выпустить набор тестов для сертификации на получение логотипа Java™. Но гиковый поезд уже ушёл — после удлинения размера проигрываемых MIDI-файлов кастомной прошивкой им стал интересен бесформенный Гнулинукс с огороженным стабильной прослойкой нестабильным ядерным ABI и системным API! Всё-таки им перманентно нужны новые прошивки! :))
Новый MIDP-3, я думаю, окончательно избавит от зоопарка разнокалиберных смартфонов и обеспечит функционал от простых телефонов с 170МГц ARM до смартфонов верхнего уровня, в которых мидлеты будут не основными приложениями в силу развитости собственных операционных систем. И это опять новые прошивки, которые так нравятся гикам, однако они огорожены EULA. Так что гикам, которым нравится всё новое, для ощущения полноты удовольствия придётся переквалифицироваться в программисты для использования стабильного и чётко специфицированного API в СВОИХ собственных программах, а не довольствоваться только новыми версиями прошивок и ковырянием в ЧУЖОМ коде. ;)
Не забывайте, что Google Android проходит тот же "путь версий", что и Java ME.