Codename Oneにはオプションの SaaS アプローチがあるため、アーキテクチャの改善に対応するために、これは将来的に変更される可能性があります (おそらくそうなるでしょう)。Codename One にはオフラインで構築するオプションも用意されていることに注意してください。つまり、そのようなクラウド アーキテクチャを禁止するポリシーを持つ企業は、追加のオーバーヘッド/複雑さで Codename One を引き続き使用できます。また、ビルド サーバーを操作することなく無料で使用できることも意味します。
現在、Android では標準の Java コードがそのまま実行されます。Java 8 構文は、使用時にすべてのプラットフォームで retrolambda を使用して変換されます。これにより、すべての Android バージョンと他のポートとの互換性が確保されます。
iOS コードネーム Oneは、非常に保守的な VM であるParparVMをビルドしてオープンソース化しました。ParparVMは並行 (ノンブロッキング) GC を備えており、完全に Java/C で記述されています。これは事実上、xcode プロジェクトがビルド サーバー上で生成およびコンパイルされることを意味します。そのため、ネイティブ アプリをハンドコーディングしたかのように、Apple による変更に対する「将来の証明」となります。たとえば、iOS ビルドに対する最近の 64 ビットおよびビットコードの変更では、これらの変更に準拠するために ParparVM を変更する必要はありませんでした。
以前、Codename One はXMLVMを使用して非常によく似た方法でネイティブ コードを生成しましたが、XMLVM ソリューションは Codename One のニーズに対して汎用的すぎました。
iOS ビルドは、xcode (公式の Apple ビルド ツール) を使用して、クラウド内の Mac でコンパイルおよび署名されます。これにより、Apple からの現在/将来の変更と互換性があり、開発者は iOS をターゲットにしながら Windows/Linux を使用できます。ParparVM と iOS の互換性について詳しくは、こちらをご覧ください。
以前、Codename One は XMLVM に依存する C# トランスレータを使用して Windows Phone をサポートしていましたが、これは理想的なアプローチではありませんでした。C# に変換される XMLVM バックエンドは、iOS に変換するために以前使用されていたものとは大きく異なることに注意してください。Codename One は、新しい UWP バックエンドほど強力ではなく、 UWP (Universal Windows Platform)に焦点を合わせて前進する Microsoft の目標と一致しないため、その古いバックエンドを廃止することを選択しました。
Windows 10 デスクトップおよびモバイル サポートについては、Codename One は iKVM を使用してUWP (Universal Windows Platform) をターゲットにし、 Codename One github リポジトリで元の iKVM コードへの変更をオープン ソース化しています。
UWP ビルドはクラウド内の Windows 10 マシンで行われるため、開発者はネイティブ Windows アプリをビルドするときに Mac/Linux または古いバージョンの Windows を使用できることに注意してください...
エンタープライズ レベルのサブスクライバーで利用できる JavaScript ビルド ターゲットは、 TeaVMを使用して静的に変換を行います。TeaVM は、かなり精巧な方法でアプリを分割することにより、JavaScript を使用したスレッド化のサポートを提供します。複雑な UI Codename をサポートするために、One は HTML5 Canvas API を使用して、アプリケーションの構築に絶対的な柔軟性を提供します。
デスクトップ ビルドの場合、Codename One は を使用しますjavafxpackager
。Mac と Windows マシンの両方がクラウドで利用できるため、プラットフォーム固有の性質はjavafxpackager
問題になりません。
Codename One を際立たせているのは、「軽量アーキテクチャ」を使用して UI をすべてのプラットフォームでシームレスに動作させ、ほぼ完全に Java で開発できるようにする UI へのアプローチです。「軽量」ウィジェットの中に「重量」ウィジェットを埋め込む機能によって拡張されます。詳細については、このブログ投稿を参照してください。現時点では、ピアリングがいくつかの改善を受けており、レイヤリングなどのより複雑な使用法がサポートされていることに注意してください。
軽量コンポーネントは完全に Java で記述されているため、開発者はシミュレーターと GUI ビルダーでアプリケーションを正確にプレビューできます。
Codename One は、iOS の OpenGL ES など、ほとんどのプラットフォームのネイティブ ゲーム API を使用して描画することにより、高速なパフォーマンスを実現します。
Codename One の背後にあるコア テクノロジはすべてオープン ソースであり、Codename One 自体によって開発されたもののほとんど ( ParparVM など)だけでなく、完全なライブラリ、プラットフォーム ポート、デザイナー ツール、デバイス スキンなども含まれます。Codename One ソースの使用について詳しくは、こちらを参照してください。
参考までに、この回答の著者である Shai Almog は Codename One の CEO です。