Codename One は、Java および Kotlin 開発者向けのモバイル ファーストのクロスプラットフォーム環境です。 Java バイトコードをネイティブ OS 実行可能ファイル (iOS、Android、UWP など) にコンパイルできます。これは、仮想マシン、シミュレーター、デザイン ツール (ビジュアル テーマ/ビルダー/CSS)、IDE 統合、複数の OS へのポートなどを備えた完全なモバイル プラットフォームです。 100% コードの再利用を可能にするポータブルな抽象化を通じて、基盤となるネイティブ OS コード (Objective-C、C#、Dalvik/ART など) への完全なアクセスを提供します。
Androidなどで見かけるエミュレータとは異なり、Codename Oneではシミュレータを使用します。つまり、デバッグ時でも高速に起動します。実行時にコードを変更するためのライブ コード リロードなどの IDE 機能をお楽しみいただけます。
これは、デバッグ サイクルが短縮され、開発プロセスが短縮されることを意味します。
デバイスの「スキン」の豊富な選択肢から選択して、アプリが特定のデバイスでどのように表示されるかを確認します。スキンは、解像度やデバイス密度などの要素を考慮して、実際のデバイス上で表示されるのと同じように、アプリのピクセル完璧なプレゼンテーションを提供します。デバイス スキンの切り替えはほぼ瞬時に行われます。
ここで独自のオープンソース プロジェクトでスキンを編集し、投稿することができます。
インタラクティブな Groovy コンソールを使用して、実行時にアプリケーションの API と対話します。アプリの実行中に、アプリケーションの状態を検査したり、変更を試したりできます。
これにより、再コンパイルのわずかなオーバーヘッドを発生させることなく、問題を調査して実験することができます。
シミュレータを使用すると、IntelliJ の「変更されたクラスの再ロード」機能 (NetBeans では「コード変更の適用」という名前) を利用できるため、Java ソース コードに加えた変更が、シミュレータですでに実行されているアプリに即座に適用されます。
これは多くの場合対話型コンソールより優れていますが、メソッドの追加やコードの構造の変更などの制限があることに注意してください。これらの制限は対話型コンソールには適用されません。
アプリの CSS スタイルシートに変更を加えると、その変更はシミュレーターに即座に反映されます。これには、テーマ、画像、フォントなどの変更が含まれます。すべての変更は保存時に即座に更新され、再読み込みや更新などの必要はありません。
これにより、アプリケーションのスタイル設定プロセスが非常に簡単かつ迅速になります。
強力なコンポーネント インスペクターを使用して、アプリ内の UI コンポーネント階層を参照します。このツールを使用すると、余分なパディングがどこから来ているのか、または何かが希望どおりに配置されていない理由を簡単に見つけることができます。また、実行時にコンポーネントの UIID (セレクター) を変更して、それが UI にどのような影響を与えるかを確認したり、階層内のどのコンポーネントがコンポーネント ツリー (DOM に相当) の要素にマップされているかを確認したりすることもできます。
ネットワーク モニターを使用して、アプリが確立するすべてのネットワーク接続を表示します。この貴重なツールは、HTTP リクエストが機能しない理由を突き止めようとするときに役立ちます。リクエストとレスポンスの両方のヘッダーと本文を確認してください。ネットワークを調整して、遅いネットワーク接続をシミュレートすることもできます。
テスト レコーダー ツールを使用して、アプリの単体テストを記録します。記録を開始すると、操作が単体テストに保存され、後で再生して動作が正しいことを確認できます。
その後、記録されたテストをデバイス上の自動テストなどの CI プロセスに接続できます。
Codename One は成熟したオープンソース プロジェクトであり、そのルーツは Sun Microsystems (2006 年) に遡ります。そこでは、そのコアとなる基礎コンポーネントの 1 つが開発され、オープンソース化されました。このビデオでは、その歴史とその仕組みについて学ぶことができます。
Codename One アプリは本物のネイティブ アプリであるため、ネイティブ アプリのように動作します。
これらは、ターゲット プラットフォームの公式ビルド ツールを使用して、ネイティブ バイナリに静的にコンパイルされます。
iOS など、Java をネイティブにサポートしていないプラットフォームでは、アプリの JVM バイトコードは、まずネイティブ ビルド ツールが受け入れる形式にトランスパイルされます。 iOS では、アプリの JVM バイトコードは、実際の xcode プロジェクトで C ソース コードに変換されます。 Android では Java がネイティブにサポートされているため、そのような変換は必要ありません。アプリの jar は Android Studio gradle プロジェクトに直接バンドルされており、Android SDK ビルド ツールを使用して直接ビルドできます。
画像をクリックすると拡大したり、こちらからPDF版をご覧いただけます。
ヒント: 現在、Maven への移行中であり、プロジェクトを作成するための新しい、より簡単な方法を作成しました。今すぐ開始するには、https://start.codenameone.com をチェックしてください。
コードネーム 1 については知るべきことがたくさんあります。この 3 分間のビデオでは、非常に簡潔に概要を説明しています。 Eclipse、IntelliJ/IDEA、Netbeans に関する同様のビデオがここにあることに注意してください。
Codename One は、ネイティブ OS コードを含めることができるサードパーティ ライブラリを使用して簡単に拡張できます。これらのライブラリ (cn1libs) の広範なリストがここにあります。ライブラリのリストは、この github プロジェクトに基づいて自動的に生成されます。
Codename One とその機能の詳細については、メイン サイトで学ぶことができます。ここでは、ドキュメントとチュートリアルの広範なリストを参照できます。
ダウンロード セクションでバイナリと鳥瞰図を開始できます。その他の重要なリンクは次のとおりです。
注:現在、Ant から Maven への移行中です。これにより、ソースからビルドするプロセスが簡素化されます。従来の Ant ビルド手順については、「Ant クイック スタート」を参照してください。
セットアップについては、この記事とビデオで詳しく説明されています。
重要:現在、Codename One をビルドするにはJDK 8 が必要です。一部のサブモジュールはツールチェーンの一部との下位互換性を維持するために-source 1.5
および-target 1.5
使用する必要があるため、JDK 11 は使用できません。
git clone https://github.com/codenameone/CodenameOne
cd CodenameOne/maven
mvn install
これにより、ローカルの Maven リポジトリに Codename One がビルドおよびインストールされます。このプロセスでは、サイズが約 1 GB の依存関係が自動的にダウンロードされるため、時間がかかることがあります。
ソースからアーキタイプ プロジェクトをビルドするには、cn1-maven-archetypes リポジトリをチェックアウトして、それもビルドする必要があります。
git clone https://github.com/shannah/cn1-maven-archetypes
cd cn1-maven-archetypes
mvn install
Codename One がローカル Maven リポジトリにインストールされたので、リリース バージョンの代わりにそのバージョンをプロジェクトで使用できるようになりました。新しいテスト プロジェクトは、Codename One の初期化を使用してすぐに生成できます。
プロジェクトをダウンロードして抽出した後、その pom.xml ファイルを開き、 <cn1.version>
と<cn1.plugin.version>
プロパティを探します。次に、 mvn install
によってローカルMaven リポジトリにインストールされたバージョンを指すようにこれらを変更します。ローカルに構築されたバージョンは通常、SNAPSHOT バージョン (例: 7.0.21-SNAPSHOT) になります。
ソースの取得と構築
$ git clone https://github.com/codenameone/CodenameOne
$ cd CodenameOne
$ ant
単体テストの実行
$ ant test-javase
サンプルの実行
Samples ディレクトリには、増え続けるサンプル アプリケーションのセットが含まれています。これらのサンプルはデモを目的としたものではなく、API の使用方法のサンプルを目的としています。
以下を使用して、コマンドラインからサンプル ランナー アプリを起動できます。
$ ant samples
Codename One の iOS VM は非常にユニークで、オープンソースでもあります。このリポジトリの専用フォルダーで詳細を読むことができます。
ParparVM は、Java バイトコードを C コードに変換する独自の保守的な VM です。したがって、セーフティ ネットを提供しながら、ネイティブのパフォーマンスとアクセスを提供します。このアプローチは Codename One に固有のものであり、将来の互換性のために不可欠です。
Apple は、64 ビットのサポート、ビットコードなど、物事を突然変更する傾向があります。ParparVM は標準の Xcode プロジェクトを生成するため、これらの地殻変動のいずれにもコード変更は必要ありませんでした。あたかも自分でプロジェクトをハンドコーディングしたかのようです。
結果のプロジェクトを xcode で開き、iOS デバイス上で直接デバッグしたりプロファイリングしたりすることもできます。これにより、読み取り可能なコールスタックや価値のある実用的なパフォーマンス追跡など、多くの有用な情報が提供されます。
このような場合、従来のコンパイラは失敗します。
Codename One は、CLR 用の JVM である iKVM のフォークを維持しています。この変更されたポートにより、Codename One のユニバーサル Windows プラットフォーム実装を Windows 10 デバイス上でネイティブに実行できるようになります。
コードネームワンを使用してタグ付けする場合は、StackOverflow でサポートを提供します。そこで何でも質問でき、非常に迅速に対応するよう努めます。 StackOverflow リンクは、文字通りユーザーの質問を回答にマッピングするため、コミュニティ主導の優れた FAQ としても機能します。
Codename One には、質問を投稿できるディスカッション グループがあります。ただし、そのグループの性質上、情報源に関する議論は制限するように努めています。ディスカッション フォーラムはより簡単な使用を目的としており、より複雑なソース コード ハックやネイティブ コンパイルによってノイズが発生する可能性があります。
これらの素晴らしい人々に感謝します (絵文字キー):
ビーズル・ピーター | リアナキャスパー | セルゲイコードネームワン | トーマスH99 | ハビエル・アントン | ダイヤモンド | フランチェスコ・ガルガーニ |
クトマン | ラムセストム | マアルティヌス | デュランク | ダイアー0 | カルロスベルディエ | ロバート・エデルマン |
アダルベルト393 | スティーブ・ハンナ | ディガップセップ | パブニート・シン | ヴプライズ | JrmyDev | テリー・ウィルキンソン |
ヤーヌス・ハンセン | ヤアコフ・ゲッシャー | マイケル・ムンク | セーダー | ミゲル・ムニョス | アハメド・アブマルワ | ファビオ |
ピョートル | マティアス ベイ | サニー・サノフ | マクシム28 | エリック・レオン | デビッド・デイ | ニック・プライス |
アフナフ・ビン・アザド | オクタビオ・エ・アニノ | ヤシュ・ピンプル | ニーナ | フェルクナット | イメディアンドSrl | デビデプリマス |
DB107 | 一光エルトシアール・アシミネ |
このプロジェクトは、全員参加者の仕様に従っています。あらゆる種類の貢献を歓迎します。 ❤️