J2ME раньше был наиболее широко развернутой средой исполнения на мобильных телефонах во всем мире (она все еще может быть, в зависимости от того, когда вы читаете это и количества телефонов Android, проданных к тому времени).
В наши дни есть много телефонов, которые не поддерживают его:
- закрытые телефоны (они не позволяют установить приложение)
- Android
- iPhone
- BlackBerry 10
- Телефоны Palm WebOS
- Я не знаю, поддерживают ли телефоны Samsung Bada J2ME
- Я ожидаю, что большинство мобильных телефонов с Linux (Maemo, Meego, Limo, Sailfish ...) по умолчанию не содержат J2ME. Они, как правило, предпочитают порт выполнения Android
- ...
Проблема в разработке приложения, которое должно поддерживать множество моделей телефонов во многих разных странах, заключается в проклятии J2ME: страшной фрагментации.
Сам J2ME обычно означает спецификацию JSR-118, а также целый ряд других дополнительных API, указанных в JSR-75, JSR-82, JSR-120, JSR-135, JSR-139, JSR-172, JSR- 177, JSR-179, JSR-180, JSR-184, JSR-185, JSR-205, JSR-211, JSR-226, JSR-229, JSR-234, JSR-238, JSR-239, JSR-248, JSR-256. Вы можете увидеть их все здесь .
Эти спецификации были по-разному интерпретированы различными компаниями, внедряющими J2ME, и они часто слишком универсальны, чтобы обеспечить одинаковый код для одинаковой работы на разных телефонах.
Различные операторы мобильной связи также предъявляют различные требования, которые иногда вынуждают производителей мобильных телефонов менять способ реализации J2ME в зависимости от того, кто субсидирует телефон.
Операторы также могут изменять данные, которые проходят через их мобильную сеть.