BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース J2CL: JavaからJavaScriptへのトランスパイラー

J2CL: JavaからJavaScriptへのトランスパイラー

原文(投稿日:2019/05/18)へのリンク

Googleによって設計され、開発され、オープンソース化されたJ2CLとは、JavaをJavaScriptに変換するソース・トゥ・ソースのコンパイラである。J2CL開発者は、このコンパイラが”JavaScriptアプリケーションにおけるJavaのシームレスな利用を可能にする”と述べている。J2CLは、GWTといった同様のJava-JavaScriptのフレームワークとは異なる問題の解決を試みるもので、同じく既存のJavaScriptフレームワークとの競合、置換を意味するものではない。J2CLは相互運用とクロスプラットフォームのコード再利用を目的としている。開発者によると、”J2CLを使えば、単にJavaScriptからJavaコードをアクセス可能にしたり、またはアプリケーション全体を作り通せます;なんでもぴったりニーズに合います。”とのことだ。

ツールはフレキシビリティを念頭に置いて開発され、様々な方法で利用できる。例えば、異なるテクノロジーで実装され、複数のプラットフォームで稼働する、複雑なロジックを保証するため、プラットフォーム間で共有できるようにするなど。J2CLプロジェクトのコントリビュータであったThomas Deegan氏は、”Google Docsのフロントエンドを作動させるコードはweb用に書かれるべきです … J2CLは全てのドキュメント操作およびJavaからJSへのレンダリングロジックをトランスパイルします”と述べている。他には、Node.jsアプリケーションにおいてJavaで書かれたライブラリの再利用などがあるだろう。

J2CLはほとんどの既存のJavaコードをソースから変換できるが、JavaリフレクションAPIなど、全てのJava APIがサポートされているわけではない。デフォルトでは、変換されたコードは公開されず、JsInteropの多くのJavaアノテーションがクラス、メソッド、インスタンス変数の特定に利用されるか、または他のコードが公開される。利用方法を紹介するため、プロジェクトには非常にシンプルな”hello world”のサンプルが内包されている。ごくわずかに変更されたこのサンプルの抜粋は以下の通りである。アノテーション付きのJavaクラスと、JavaScriptで利用される方法を示している。

以下のJavaクラスはJ2CLで稼働した:

package com.acme

import jsinterop.annotations.JsType;

@JsType
public class HelloWorld {

  public static String getHelloWorld() {
    return "Hello from Java!";
  }

}

JavaScriptでは以下のように利用される。

const HelloWorld = goog.require('com.acme');
console.log(HelloWorld.getHelloWorld());

開発者は、今はプロダクション・レディの状態で、”GMail、Inbox、Docs、Slides、Calendarなど、Googleによって開発された最先端のGSuiteアプリの基本的なテクノロジー”として役目を果たすと主張している。

プロジェクトは昨年末にオープンソース化されたが、プロジェクトの議論は2014年にまで遡る。元々、J2CLはGWTプロジェクトと関連付けられていた。しかしながら、2015年のはじめ、開発者はプロジェクトのゴールがGWTプロジェクトの一部として達成できないと判断し、独自のプロジェクトとして分割することを決定した。既存のツールとの統合は未だ可能になっておらず、Windowsのサポートも現在は限定されている。

さらなる情報はプロジェクトのGithubページまたはgetting startedガイドを参照のこと。

この記事に星をつける

おすすめ度
スタイル

BT