Java Platform, Micro Edition ( Java MEまたはJ2MEとも呼ばれる)は、組み込み機器やモバイル機器(マイクロコントローラ、センサー、ゲートウェイ、携帯電話、PDA、TVセットトップボックス、プリンタ)向けの移植可能なコードの開発と展開のためのコンピューティングプラットフォームです。 [ 1 ]このプラットフォーム用に作成されたプログラムはMIDletと呼ばれます。
このプラットフォームはオブジェクト指向のJavaプログラミング言語を使用しており、Javaソフトウェアプラットフォームファミリーの一部です。これは、 1999年にSun Microsystems(現在のOracle Corporation )によってJava 2 Platform, Micro Editionという名前で設計されました。最初の商用Java MEソフトウェアとそれをサポートする消費者向けハードウェアは2001年にリリースされました。 [ 2 ] MIDletsは、さまざまなモバイルメーカーのデバイスで理解できるJava仮想マシン内で実行されます。この「一度書けばどこでも実行できる」アプローチと高度に圧縮されたファイルサイズにより、Java MEは、特にモバイルゲームなどのシンプルなモバイルアプリの構築に非常に人気がありました。[ 3 ]
2013年時点で、市場には30億台以上のJava ME対応携帯電話が存在していたが[ 4 ] 、フィーチャーフォンがスマートフォンに追い抜かれたため、その頃にはプラットフォームは衰退の一途を辿っていた[ 5 ]。スマートフォンは、Java MEで主に行われていたデバイスのCPUベースのソフトウェアレンダリングに頼るのではなく、OpenGL ESなどのAPIを利用する専用のハードウェアアクセラレーションチップを使用してグラフィックスを処理するようになった[ 6 ]。
Java 2 Platform Micro Edition(および関連するK仮想マシン)は1999年6月15日に発表されました。[ 7 ]これは、同様の技術であるPersonalJavaに取って代わるものでした。
このプラットフォームは、かつてはノキアのSeries 40モデルなどのフィーチャーフォンで人気がありました。 2001年のシーメンスSL45iは、Javaを実行できる最初の機種でした。ネイティブソフトウェアとともに、BadaオペレーティングシステムとSymbian OSでもサポートされていました。Windows CE、Windows Mobile、Maemo、MeeGo、Androidのユーザーは、それぞれの環境向けにJava MEをダウンロードできました (Androidの場合は「概念実証」)。[ 8 ] [ 9 ]
Java MEは元々Java Community Process の下で JSR 68 として開発されましたが、Java MEのさまざまなバージョンは別々の JSR で進化してきました。Java ME デバイスはプロファイルを実装します。最も一般的なプロファイルは、携帯電話などのモバイル デバイスを対象としたMobile Information Device Profileと、セットトップ ボックスや PDAなどの消費者向け製品や組み込みデバイスを対象としたPersonal Profileです。プロファイルは構成のサブセットであり、現在、接続限定デバイス構成(CLDC) と接続デバイス構成(CDC) の 2 つがあります。[ 10 ]
2008年当時、Java MEプラットフォームはJRE 1.3の機能に制限されており、そのバージョンのクラスファイル形式(内部的にはバージョン47.0として知られている)を使用していた。

Oracleは、仕様のリファレンス実装と、 MIDPおよびCDCに関するいくつかの構成とプロファイルを提供しています。JavaME 3.0 SDK以降、NetBeansベースのIDEがこれらを単一のIDEでサポートするようになりました。
サン・マイクロシステムズがサーバーやワークステーション向けに構築したJavaプラットフォームのバイナリ実装は数多く存在したが、それとは対照的に、サンはJava MEをターゲットとするプラットフォーム向けのバイナリは提供せず、代わりにサードパーティが独自に提供するのを頼っていた。
例外は Palm OS 用の MIDP 1.0 JRE (JVM) でした。[ 11 ] Sun は、コードネーム「キャプテンアメリカ」として知られるPersonalJavaの内部実装をリリースするよう Sun に求める公開書簡キャンペーンがあったにもかかわらず、 Microsoft Windows Mobile (Pocket PC) ベースのデバイス向けに J2ME JRE を提供していません。 [ 12 ]サードパーティの実装は、Windows Mobile ベンダーによって広く使用されています。
ある時点で、SunはphoneMEという名前で、現在では開発が中止されたリファレンス実装をリリースした。
Java MEをターゲットとしたオペレーティングシステムは、ドコモがDoJaとして、またSavaJeがSavaJe OSとして開発してきた。後者の会社は2007年4月にサン・マイクロシステムズに買収され、現在はサンのJavaFX Mobileの基盤となっている。
オープンソースのMika VMはJavaME CDC/FPの実装を目指していますが、認証は受けていません(認証済み実装には使用料の支払いが義務付けられており、オープンソースプロジェクトでは現実的ではありません)。そのため、この実装を使用するデバイスはJavaME CDC互換性を謳うことはできません。
LinuxベースのAndroidオペレーティングシステムは、Java MEとは意図は似ているものの、多くの点で大きく異なる独自のJavaバージョンを使用しています。[ 13 ]
他にもエミュレーターは存在し、Nokia、Sony-Ericsson、Siemens Mobileなどの携帯電話メーカーが開発キットの一部として提供しているものも含まれる。
CLDC ( Connected Limited Device Configuration )は、Javaクラスライブラリの厳密なサブセットを含み、 Java仮想マシンが動作するために必要な最小限のライブラリです。CLDCは基本的に、無数のデバイスを固定構成に分類するために使用されます。
構成は、J2ME環境の実装ごとに必須となる、最も基本的なライブラリと仮想マシン機能のセットを提供します。1つ以上のプロファイルと組み合わせることで、コネクテッド・リミテッド・デバイス構成は、開発者にコンシューマーデバイスや組み込みデバイス向けアプリケーションを作成するための堅牢なJavaプラットフォームを提供します。この構成は、合計メモリ容量が160KB~512KBのデバイス向けに設計されており、Javaプラットフォームに最低160KBのROMと32KBのRAMが利用可能です。
モバイル端末向けに設計されたモバイル情報デバイスプロファイル( MIDP)には、 GUIとデータストレージAPIが含まれており、MIDP 2.0には基本的な2DゲームAPIが含まれています。このプロファイル向けに作成されたアプリケーションはMIDletと呼ばれます。
JSR 271: モバイル情報デバイスプロファイル3(最終リリース:2009年12月9日)は、第3世代モバイル情報デバイスプロファイル(MIDP3)を規定し、あらゆる分野で機能を拡張するとともに、デバイス間の相互運用性を向上させました。MIDP3の重要な設計目標の一つは、MIDP2の内容との下位互換性です。
情報モジュールプロファイル(IMP)は、自動販売機、産業用組み込みアプリケーション、セキュリティシステムなど、ディスプレイが簡素または全くなく、ネットワーク接続機能が限定的な組み込み型「ヘッドレス」デバイス向けのプロファイルです。
元々はSiemens MobileとNokiaによってJSR -195として導入された IMP 1.0 は、ユーザー インターフェイスAPI が含まれていない点を除いて、MIDP 1.0の厳密なサブセットです。つまり、Java パッケージのサポートは含まれていません。IMP-NG としても知られる JSR-228 は、 MIDP 2.0をベースとした IMP の次世代版で、MIDP 2.0 の新しいセキュリティおよびネットワーク タイプと API、およびなどの他の APIを活用していますが、UI API やゲーム API は含まれていません。javax.microedition.lcduiPushRegistryplatformRequest()
Connected Device Configuration はJava SEのサブセットであり、GUI に関連しないほぼすべてのライブラリが含まれています。CLDC よりも機能が豊富です。
Foundation Profileは、Java ME Connected Device Configuration(CDC)プロファイルです。このプロファイルは、Java Platform, Standard Edition API全体を含むJava仮想マシンの完全な実装を必要とするデバイスでの使用を想定しています。一般的な実装では、サポートされる追加プロファイルに応じて、そのAPIセットの一部が使用されます。この仕様は、Java Community Processに基づいて開発されました。
パーソナルベースプロファイルは、ファウンデーションプロファイルを拡張し、 AWTサブセットの形で軽量なGUIサポートを追加します。BD -Jはこのプラットフォーム上に構築されています。
ESRコンソーシアムは、組み込みJavaの標準規格、特に費用対効果の高い標準規格の策定に取り組んでいます。代表的な応用分野としては、産業制御、M2M(マシンツーマシン)、医療、電子計測、ホームオートメーション、コンシューマー向け、ヒューマンマシンインターフェースなどが挙げられます。