Ja.NETは.NETプラットフォームへのJava 1.5 SEのポートである。コンパイラは、Eclipse JDT(リンク)に基づいている。ILおよびJava Byte Codeを生成するために修正されている。Javaは、各クラスを別個のファイルにコンパイルするが、これは.NETに対し受け入れられないオーバーヘッ ドを作成する。これに対処するために、Cecil(リンク)に基づいたツールが使用され、Javaに対しJarファイルが作成されるのと全く同様の方法で、より大き なアセンブリが作成される。
ライブラリのサポートで一歩進んだスタートをするにあたり、Ja.NET JDKはオープンソースプロジェクトApache Harmonyに基づいている(リンク)。Dave Tillman氏は以下のように書いている。
OpenJDKとは対照的に、Harmonyに引き付けられたのは、Harmonyのライブラリがすでにモジュールに組織されていることである。たとえ ば、LUNIモジュールを目にするだろう。それは、Lang-Util-Net-Io、NIOモジュールなどの略である。ところで、補足情報として、 OpenJDKで実際に作業を始め、自分のマシン上でもその実行バージョンがあるが、少し前にHarmonyへの転換を選択した。
Dave氏と話したとき、InfoQにそれに伴う詳細を提供した。
現時点では、Ja.NET SE プロジェクトは、Java SEのみに集中している。.NET向けのJava 5 JDKを提供することである。スタック(Java EE)を上る前に、SEを適切に完了させる必要がある。Java 5 SEライブラリのすべては、配布に組み込まれているが、そのすべてが十分に機能的であるわけではない。いくつかの上流のプロジェクトに作業の基礎を置いて いることが分かる(詳細は最新のブログ www.janetdev.org を参照)。Apache Harmonyプロジェクトが最大である。Harmonyは、 Swing、AWTなどを含むほとんどすべての(99.x%)Java 5 SEクラスライブラリのコードを開発した。Java MEおよびJava 6コードもある。
Ja.NET SEクラスライブラリはHarmony(リンク)コードから抽出され、今ではコードのすべてをHarmonyから.NETのアセンブリに構築し、配布に組み込んでい る。しかし、現段階ではクラスライブラリコードを修正し、対応する.NET/CLRサービスと結びつける作業のすべてが、完了しているわけではない。たと えば、SwingおよびAWTをWPFに結合する作業は、完了していない。そんな理由で、寄稿者を探している次第である。これをおこなうには、すでに Harmonyによって提供されているSwing/AWTコードベースを受け取り、バラバラにし、コードの適切な場所でWPF APIに呼び出しを追加する。Harmony Swing/AWTコードのすべては、.NETアセンブリにすでにコンパイル済みだが、まだWPFに接続されていない。
十分なコアライブラリ(リフレクション、並行性、クラスロード、io、nio文字セットなど)があるので、Ja.NET SEツール(コンパイラ、アセンブリの統合)も.NETで実行される。また、JUnit 4.3/4.5、Xerces 2.8、Ant 1.7.0がコードの変更をせずに、.NET上で機能する。当然ながら、日々さらに追加している。:-)
現在Ja.NETはMicrosoftのCLRおよびNovellのMonoプラットフォームで動作する。