JSX

曖昧さ回避 この項目では、DeNAが開発したプログラミング言語について説明しています。Facebookが開発したプログラム言語については「React#JSX」を、ジャカルタ証券取引所については「インドネシア証券取引所」をご覧ください。
JSX
パラダイム オブジェクト指向[1]
登場時期 2012年5月31日 (2012-05-31)[1]
設計者 DeNA, Co., Ltd.
開発者 DeNA, Co., Ltd.
評価版リリース 0.9.89 / 2014年5月20日 (9年前) (2014-05-20)[2]
型付け 静的型付け[1]
影響を受けた言語 JavaScript
プラットフォーム クロスプラットフォーム
ライセンス MIT License
ウェブサイト jsx.github.io
拡張子 .jsx
テンプレートを表示

JSX は、DeNAによって開発されたウェブアプリケーション向けのプログラミング言語である。ECMAScript 4から影響を受けた構文を持ち、静的型付けなのが特徴。ウェブブラウザ組み込みのスクリプト言語であるJavaScriptのデメリットを解消することを目的に作られている。またJSXのソースコードは最適化されたJavaScriptコードに変換して実行され、同等のJavaScriptプログラムと比較して10%以上高速になるとされる[3][1]

なお、Reactで用いられるJavaScriptの拡張構文や、Adobe社製ソフトウェアに搭載されているJavaScriptマクロは、同じく「JSX」という名前がつけられているが、全くの別物である。

言語仕様

JSXの特徴は以下の点が挙げられる。

  • クラス構文のサポート
  • モジュール機構
  • テンプレート(総称型)のサポート
  • 関数オーバーロードのサポート
  • アロー関数式
  • レキシカルスコープをもつthis
  • デフォルト引数
  • 最適化で削除されるassert文
  • プロファイラ(スマートフォンでも利用可能)
  • source mapのサポート
  • nullを許容しないプリミティブ型(number, boolean, string)

Hello worldプログラムは、以下のとおりである[4]。JSXプログラムは _Main.main(:string[]) : void がアプリケーションのエントリポイントとなる。

 class _Main {
     static function main(args : string[]) : void {
         log "Hello, world!";
     }
 }

JSXでは、継承関係にないクラスに総称的な操作をするためにはインターフェイスを使う。インターフェイスを使ったプログラムは以下のようになる[4]

// an example for class inheritance and interfaces

interface Flyable {
    abstract function fly() : void;
}

abstract class Animal {
    function eat() : void {
      log "An animal is eating!";
    }
}

class Bat extends Animal implements Flyable {
    override function fly() : void {
        log "A bat is flying!";
    }
}

abstract class Insect {
}

class Bee extends Insect implements Flyable {
    override function fly() : void {
        log "A bee is flying!";
    }
}

class _Main {
    static function main(args : string[]) : void {
        // fo bar
        var bat = new Bat();

        var animal : Animal = bat; // OK. A bat is an animal.
        animal.eat();

        var flyable : Flyable = bat; // OK. A bat can fly
        flyable.fly();

        // for Bee
        var bee = new Bee();

        flyable = bee; // A bee is also flyable
        flyable.fly();
    }
}

関連項目

脚注

  1. ^ a b c d “高速なJavaScriptコードを生成できるWebアプリケーション向け言語「JSX」が公開される”. OSDN (2012年5月31日). 2012年6月1日閲覧。
  2. ^ Releases · jsx/JSX - GitHub
  3. ^ http://www.slideshare.net/kazuho/jsx-optimizer
  4. ^ a b “JSX Tutorial”. JSX. 2012年6月1日閲覧。

外部リンク

  • 公式ウェブサイト (英語)
概念
エンジン
コンパイラ
デバッガ
エディタ
サーバーサイド
フレームワーク
ライブラリ
ユニットテスト
Docジェネレータ
コード解析
パッケージ管理
アプリケーション
バンドラー
関連技術
人物
  • カテゴリ カテゴリ
  • コモンズ コモンズ
  • ウィキブックス ウィキブックス
  • ポータル Portal:コンピュータ
  • 表示
  • 編集