Codename OneCodename Oneを使い始める


備考

このセクションでは、codenameoneの概要と、開発者がなぜそれを使用したいのかを概説します。

また、codenameone内の大きな件名についても言及し、関連するトピックにリンクする必要があります。 codenameoneのドキュメンテーションは新しいので、それらの関連トピックの初期バージョンを作成する必要があります。

インストールとセットアップ

インストール

NetBeansでのコードネーム1のインストール

これらの手順では、NetBeansの最新バージョン(この時点で8.x)をダウンロードし、インストールして起動したものとします。

  • [ツール] - > [プラグイン]メニューオプションを選択しますツール - >プラグインメニューオプション

  • [使用可能なプラグイン]タブを選択します。

  • CodenameOneプラグインの確認Netbeans Pluginインストールウィザード

  • 下のinstall ボタンをクリックしてください。ウィザードの指示に従ってプラグインをインストールしますNetbeansプラグインのインストールウィザードの手順2

Eclipseでコードネーム1をインストールする

Eclipseを起動し、「 Help - > Install New Software Help をクリックします。このダイアログを表示する必要があります

Eclipseは新しいソフトウェアをインストールする

作業場所のhttps://www.codenameone.com/files/eclipse/site.xml を貼り付けて、Enterキーを押します。

エントリを選択し、ウィザードの指示に従ってインストールします。 Eclipseインストール・ウィザードの選択項目

IntelliJ IDEAでのコードネーム1のインストール

IntelliJ / IDEAをダウンロードしてインストールします。 Android Studioは動作しません。

The Plugin Centerを使用してプラグインをインストールする

プラグインセンターの検索機能を使用して、Codename Oneプラグインを検索してインストールします。

コードネーム1とは何ですか&どのように機能しますか?

Codename Oneは、Javaから多大なアーキテクチャーを引き出すモバイルアプリケーション開発ツールのセットです。

Codename Oneの使命は次のとおりです。

モバイルデバイスプログラミングの複雑で断片化したタスクをツール、API、およびサービスの単一のセットに統一します。その結果、開発者に与えられる電力/制御を犠牲にすることなく、モバイルアプリケーション開発に対するより管理しやすいアプローチを作成します。

これは事実、古い「Write Once Run Anywhere」(WORA)のJavaマントラをモバイルデバイスに持ち込むことを意味し、最小の共通点に「ダンピング」することはありません。

コードネーム1はどのように機能しますか?

コードネームワンは、いくつかのテクノロジーとコンセプトを単一のファサードに統合します。

  • API - さまざまなデバイスの違いを抽象化します。
  • プラグイン - クライアントマシンにインストールされている唯一のソフトウェアで、次の機能が含まれています。
    • IDEの統合 - 設定、完了、ネイティブビルドを送信する機能
    • シミュレータ - ローカルで実行され、アプリケーションのデバッグを可能にするネイティブデバイスシミュレータ
    • Designer / GUIビルダー - 高度なツール
  • ビルドサーバー - ビルドサーバーは、プラグインによって送信されたネイティブデバイスビルドを受け入れ、以下に説明するように、バイナリ(ソースではなくJAR)をネイティブアプリケーションに変換します。
  • クラウドサーバ - クラウドサーバは、プッシュ通知、クラウドロギングなどの機能を提供します。

コードネームワンツールチェーン

なぜサーバーをビルドするのですか?

ビルドサーバーを使用すると、WindowsマシンなしでMacやネイティブWindowsアプリケーションなしでネイティブiOSアプリケーションを構築できます。彼らは、複雑なツールチェーンをインストール/アップデートする必要性を排除し、ネイティブアプリケーションを右クリックするプロセスを単純化します。

例:ネイティブiOSアプリケーションを構築するにはMac OS Xマシンが必要です。最近のバージョンのxcode Codename Oneは、クラウド内にそのようなマシンを維持します。開発者がiOSビルドを送信すると、 ParparVMを使用してCソースコードを生成するためにMacが使用され、 xcodeを使用してCソースコードをコンパイルし、xcodeを使用して結果のバイナリに署名します。あなたのデバイスにバイナリをインストールするか、またはappstore用のバイナリバイナリをビルドすることができます。 Cコードが生成されるので、アップルからの変更の場合には、あなたのアプリが「将来の証明」になることも意味します。 Codename Oneの "ネイティブインターフェイス"機能により、Objective-Cネイティブコードを100%移植性を保ちながらアプリケーションに注入することもできます。

サブスクライバは、Codename Oneのインクルードソース機能を使用してCソースコードを受信し、そのソースをベンチマークやデバイスのデバッグなどに使用できます。

他のほとんどのプラットフォームでも同様です。 Android、J2ME&Blackberryの場合、標準Javaコードはそのまま実行されます。

Java 8構文は、Codename Oneサーバーにインストールされたretrolambdaを介してサポートされています。これは、バイトコードをJava 5の構文レベルにシームレスに変換するために使用されます。 Java 5構文は、J2ME / Blackberry上のJDK 1.3 cldcサブセットに変換され、すべてのデバイスにこれらの言語機能とAPIが提供されます。これは、リトグラフと大量のカスタムコードに基づくサーバーベースのバイトコードプロセッサを使用して行われます。ビルドサーバはデバイス間の苦しい違いの大部分を抽象化するので、このアーキテクチャは開発者にとって透過的です。

なぜParparVM

iOSでは、Codename OneはJavaバイトコードをCコードに変換するParparVMを使用し、非ブロッキングGCと64ビット/ビットコードをサポートしています。このVMは、 Codename One gitリポジトリの完全オープンソースです 。これまでのコードネーム1では、 XMLVMを使ってネイティブコードを生成しましたが、XMLVMソリューションはコードネーム1のニーズにはあまりにも一般的でした。 ParparVMは、公式にサポートされているiOSツールチェインがドキュメント化されていない動作の代わりに常に使用されているため、Codename Oneは将来のiOS互換性を保証する唯一のソリューションですので、コードをCに変換するユニークなアーキテクチャを採用しています(XMLVMと同様)。

注: XMLVMは理論上保証することができますが、もはや維持されていません。

ParparVMの他のアプローチに対する主な利点は次のとおりです。

  • 真のネイティブ - コードはARMまたはLLVMコードに直接変換されるのではなくCに変換されるので、アプリは「よりネイティブ」です。アップルの公式のツールやアプローチを使用しており、最新のビットコードやプロファイリング機能などの進歩から恩恵を受けることができます。

  • より小さなクラスライブラリ - ParparVMには完全なJavaAPIの非常に小さなセグメントが含まれているため、最終的なバイナリが選択肢よりも桁違いに小さくなります。これは、パフォーマンスとメモリのオーバーヘッドに直接マッピングされます。

  • シンプルで拡張性の高いParparVMを使用するには、Cの基本的な理解が必要です。これは、モバイル開発の急速な進歩に不可欠です。

Windows Phone / UWP

Codename Oneには、2つの主要なWindows VMポートと3つまたは4つのレンダリングパイプラインがあります。

古いWindows PhoneポートはXMLVMを使用してJavaバイトコードをC#に変換しました。 C#に変換されるXMLVMバックエンドは、過去にiOSのコードを翻訳するために使用されたものとは非常に異なることに注意してください。

Codename Oneは、iKVMの修正版を活用してネイティブWindows Universal Applicationsを構築することで、UWPをターゲットにしました。

JavaScriptポート

Codename OneのJavaScriptポートは、 TeaVMプロジェクトの素晴らしい作業に基づいています。 TeaVMのチームは、非常に想像力豊かなアプローチを使用してスレッドのセマンティクスを維持しながら、JavaバイトコードをJavaScriptソースコードに変換するJVMを効果的に構築しました。

JavaScriptポートを使用すると、修正されていないCodename Oneアプリケーションをデスクトップまたはモバイルブラウザ内で実行できます。ポート自体は、HTML5 Canvas APIに基づいており、ピクセル1のAPIの完全な実装をピクセルに提供します。

注記: JavaScriptポートは、Codename Oneのエンタープライズグレードの加入者だけが利用できます。

デスクトップ、Android、RIM&J2ME

Codename Oneの他のポートは、ランタイムを実行するためにホストマシン/環境で使用可能なVMを使用します。 https://github.com/orfjackal/retrolambda[Retrolambda]は、ポータブルな方法でJava 8言語機能を提供するために使用されています。古いデバイスでは、Java 5機能を使用するためにretroweaverが使用されています。

Androidポートは、最新バージョンのgradleビルド環境を含むネイティブのAndroidツールを使用します。

デスクトップポートは、JREおよびインストーラと共にパッケージ化された標準のJavaSEアプリケーションを作成します。

注:デスクトップポートは、Codename Oneのプログレードの加入者だけが利用できます。

軽量コンポーネント

Codename Oneが目立つ理由は、「軽量アーキテクチャ」を使用するUIにとって、UIがすべてのプラットフォームでシームレスに動作できるようにするアプローチです。その結果、UIのほとんどはJavaで開発されており、移植性とデバッグ性が格段に向上しています。軽量アーキテクチャには、「軽量ウェイト」ウィジェットを「軽量ウェイト」の間に埋め込む機能が含まれています。

軽量アーキテクチャの起源

軽量コンポーネントはSmalltalkフレームワークにまでさかのぼります。この概念は、Java世界でSwingによって広く普及しました。 Codename Oneの前身であるLWUITへのインスピレーションの主な源はスイングでした。多くのフレームワークは、JavaFX、最近ではJavaScriptの世界ではIonicなど、このアプローチを長年にわたって採用してきました。

コードネーム1では

Lightweightコンポーネントは、Javaで完全に記述されたコンポーネントで、独自のインターフェイスを描画し、独自のイベント/状態を処理します。同じコードがすべてのプラットフォームで実行されるため、移植性の点で大きなメリットがありますが、多くの利点があります。

軽量コンポーネントは、標準継承を使用し、ペイント/イベント処理をオーバーライドすることによって、無限にカスタマイズ可能です。軽量コンポーネントはすべてJavaで記述されるため、開発者はシミュレータとGUIビルダーでアプリケーションを正確にプレビューできます。これにより、プラットフォーム固有の動作が救済された場合、他のWORAソリューションの多くの一般的な落とし穴が回避されます。したがって、コード化で節約されたすべての努力は、難解なデバイスの奇妙なデバッグでは失われました。

Codename Oneは、iOS上のOpenGL ESなど、ほとんどのプラットフォームのネイティブゲームAPIを使用して描画することで、高速なパフォーマンスを実現します。

コードネーム1のバージョン

コードネームワンについての混乱の1つはバージョンです。 Codename OneはSaaS製品であるため、バージョン管理は2.xや3.xのように単純ではありません。しかし、この規約に準拠するために、Codename Oneは一般的な混乱につながるバージョン管理されたリリースを作成します。

Codename Oneのバージョンがリリースされると、バージョン番号はリリース時のライブラリを参照します。これらのライブラリはフリーズされ、 バージョンビルド機能を使用する開発者が使用できるようになります。プラグインは、デザイナーだけでなく、バ​​ージョン管理されたビルドとは無関係のすべての開発を含み、リリース直後に定期的に更新されます。標準アップデートサイクルに直接移行するビルドサーバについても同じことが言えます。