最終更新:2013-09-25 (水) 03:21:09 (4128d)
Haxe
Top / Haxe
Haxe (ヘックスと発音) はオープンソースのプログラミング言語です。
http://haxe.org/doc/intro?lang=jp
HaxeはActionScript風の文法を持つプログラミング言語で、SWF(Adobe Flash)形式、JavaScript形式、PHP形式などにコンパイルでき、ウェブアプリケーションのクライアントサイド・サーバサイド両方が作れるという特徴を持ちます。
Haxe の紹介
- 他の大部分の言語はそれぞれのプラットフォームに結びついている (Java なら Java VM,C♯ なら .NET,ActionScript なら Flash Player) のに対して,Haxe はマルチ・プラットフォームの言語です。
- Haxe を使うことで、次のようなプラットフォームを開発対象とすることができます :
- JavaScript : Haxe のプログラムを単一の .js? ファイルにコンパイルできます。自動補完のサポートのある,型付けされたブラウザの DOM API にアクセスでき,すべての依存関係は,コンパイル時に解決されます。
- Flash : Haxe のプログラムを .swf? ファイルにコンパイルできます。Haxe は Flash Player 6 から 10 向けに,「古い」Flash8 以前の API でも,最新の AS3/Flash9+ API でもコンパイルできます。Haxe は Flash コンテンツの開発のために,非常に良いパフォーマンスと言語的な特徴を提供します。
- NekoVM? : Haxe のプログラムを NekoVM? のバイトコードにコンパイルできます。NekoVM は,他の DLL とともに,組み込んで拡張できるので,動的な web ページ (Apache 用の mod_neko? を使用) のようなサーバ・サイドのプログラミングだけでなく,コマンドラインやデスクトップアプリケーションにも使用できます。
- PHP : Haxe のプログラムを .php? ファイルにコンパイルできます。これにより,現行のサーバ・プラットフォームやライブラリとの完全な互換性を保つと同時に,厳格な型付け言語であるHaxeが使えるようになります。
- C++ : Haxe のソースコードから C++ のコードを必要な Makefile とともに作成できるようになりました。これは iPhone での開発のような,ネイティブアプリケーションを作ろうとする際に有用です。
考え方
- Haxe の背後にある考えは,開発者が,与えられた仕事をなすために最適なプラットフォームを選べるようにすることです。一般的には,そうするのは簡単ではありません。なぜなら,新しいプラットフォームごとに,新しいプログラミング言語がついてくるからです。Haxe は次のようなものを提供します :
- 多くの優れた特徴を持つ標準化された言語
- すべてのプラットフォームにおいて同様に動作する 標準ライブラリ (Date,Xml,Math 等を含む)
- 特定のプラットフォーム向けのライブラリ : そのプラットフォーム用のすべての API が Haxe からアクセス可能です
Haxe の特徴
言語の特徴
- Java、C♯、AS3に似たクラスベース(class + interface)のオブジェクト指向
- 強い型付けと動的型(Dynamic)
- 第一級の関数オブジェクト (クロージャ)
- 正規表現
- 次のようなものを含む高度な型システム :
- クラスとインターフェース
- 列挙型
- 関数型
- 匿名型 (構造体)
- 動的な型(実行時決定型)
- 列挙型
- パラメータ付きのコンストラクタ(構成子)(ML 風の)
- パターンマッチング
- 完全な型推論: ローカル変数では型宣言が不要です
- 任意の制約を持つ型パラメータ(総称型)
- パッケージ(フォルダ単位)とモジュール(ファイル単位)による型の管理
- 型推論と匿名型を用いる構造的部分型
- 簡単な構文によるGetterとSetter
- 反復子(Iterator)
- 多態性のメソッド
コンパイラの特徴
- デバッグ・コンパイル・モード(JS と Flash 6-8 向けにスタックの呼び出しを可能にします)
- trace と file position の サポート
- インラインのメソッドと変数
- 実行時の型情報
- 最適化された総称型(Flash9 向け)
- 外部ファイルのリソースへのアクセス
- 条件付きコンパイル
- ドキュメンテーションと型を XML フォーマットで生成
ライブラリとツール
- Firebug のサポート
- クロスプラットフォームの XML のサポート
- web で互換性のあるクロスプラットフォームのシリアル化
- Haxe Remoting Tutorials でのクロスプラットフォームの通信
- ScreenweaverHX での Flash デスクトップ・アプリケーションのビルド
- ユニットテスト のサポート