Haxe は、1 つのコードベースからさまざまなコンピューティング プラットフォーム向けのアプリケーションとソース コードを生成することができる、高レベルのクロス プラットフォームプログラミング言語およびコンパイラです。これは、 GPL v2.0 ライセンスの下でリリースされたフリーでオープンソースのソフトウェアです(標準ライブラリと Neko 仮想マシンはMIT ライセンスの下で提供されています)。[ 2 ]コンパイラはOCamlで記述されています。サーバー モードで実行して、統合開発環境(IDE)のコード補完機能を提供することができます。 [ 3 ]
Haxe には、数値データ型、文字列、配列、マップ、バイナリ、リフレクティブ プログラミング、数学、ハイパーテキスト転送プロトコル (HTTP)、ファイルシステム、一般的なファイル形式など、すべてのプラットフォームでサポートされている一連の機能と標準ライブラリ[ 4 ]が含まれています。Haxeには、各コンパイラターゲット用のプラットフォーム固有のアプリケーション プログラミング インターフェイス ( API ) も含まれています。 [ 5 ] Kha、OpenFL、Heaps.ioは、1 つのコード ベースからマルチ プラットフォーム コンテンツを作成できる人気の Haxe フレームワークです。[ 6 ]
Haxe は、クライアント側とサーバー側のプログラミングを 1 つの言語でサポートし、それらの間の通信ロジックを簡素化するというアイデアから生まれました。[ 7 ] Haxeで書かれたコードは、 JavaScript、C++、Java、Java 仮想マシン(JVM)、PHP、C#、Python、Lua [ 8 ]、およびNode.js [ 9 ]にコンパイルできます。Haxeは、 SWF、HashLink、およびNekoVMバイトコードを直接コンパイルすることもでき、インタプリタモードでも実行できます。[ 10 ]
Haxeは、既存のライブラリのデータ型情報を含む外部定義ファイル(externs)をサポートしており、 C++のヘッダーファイルが既存のオブジェクトファイルの構造を記述するのと同様に、ターゲット固有の相互作用を型安全な方法で記述できます。これにより、ファイルで定義された値を、静的に型付けされたHaxeエンティティであるかのように使用できます。外部定義ファイル以外にも、各プラットフォームのネイティブ機能にアクセスするための他のソリューションが存在します。
多くの人気のあるIDEやソースコードエディタは、Haxe開発をサポートしています。[ 11 ] Haxe Foundationは公式に特定の開発環境やツールセットを推奨していませんが、VS Code、IntelliJ IDEA 、HaxeDevelopはHaxe開発を最もサポートしています。構文ハイライト、コード補完、リファクタリング、デバッグなどのコア機能は、さまざまな程度で利用できます。
Haxe の開発は 2005 年 10 月に開始されました。最初のアルファ版は2005 年 11 月 14 日にリリースされました。[ 12 ] [ 13 ] Haxe 1.0 は 2006 年 4 月にリリースされ、 Adobe Flash、JavaScript、NekoVMプログラムのサポートが追加されました。PHP のサポートは2008 年に、C++ のサポートは 2009 年に追加されました。C# や Java などのプラットフォームは、2012 年にコンパイラの全面的な見直しとともに追加されました。
HaxeはNicolas Cannasseと他の貢献者によって開発され、当初はhaXe [ 14 ]という名前でした。これは短くてシンプルで、「中にXが入っている」ためで、著者は、新しい技術を成功させるにはXが必要だとユーモラスに主張しています。[ 15 ]
Haxeは、同じくNicolas Cannasseによって開発されたオープンソースのActionScript 2コンパイラMTASCの後継であり[ 16 ]、GNU General Public Licenseバージョン2以降の下でリリースされています。
Haxe 言語は、ターゲットとする仮想マシンで直接実行できるバイトコードにコンパイルできます。C ++、JavaScript、PHP、C#、Java、Python、Luaのソースコードにコンパイルできます。Haxe には、 evalと呼ばれるインタプリタもあります。[ 17 ]この同じインタプリタは、コンパイル時にマクロを実行するためにも使用され、これにより抽象構文木(AST)を変更できます。
複数のソースコード言語にコンパイルするというこの戦略は、「一度書けばどこでも実行できる」というパラダイムに着想を得ています。また、プログラマーが作業に最適なプラットフォームを選択できるという利点もあります。一般的なHaxeプログラムはすべてのプラットフォームで同じように動作しますが、開発者はプラットフォーム固有のコードを指定したり、条件付きコンパイルを使用して他のプラットフォームでのコンパイルを防止したりすることができます。
Haxeコンパイラは最適化コンパイラであり、フィールドと関数のインライン化、末尾再帰の除去、定数の折り畳み、ループの展開、デッドコード除去(DCE)を使用して、コンパイルされたプログラムの実行時パフォーマンスを最適化します。[ 18 ] Haxeコンパイラはオプトインのnull安全性を提供し、コンパイル時にnull許容値をチェックします。Haxeプログラムの実行時パフォーマンスは、手書きのソースと同等の速度です。[ 19 ]
haxe --wait [host:]port