JavaScriptはWebブラウザ上で動作することが保証されている唯一のプログラミング言語なので、Webに関わる開発をする方にとっては必修の存在と言えます。しかし、それでも書きたくないという方も多いでしょう。 そこで今回はJavaプログラマに使ってみて欲しいjsweetを紹介します。コンパイルするとJavaScriptになるJavaです。

jsweetの使い方

例です。元々のJavaはこのような形になります。

package quickstart;

import static def.dom.Globals.alert;
import static def.jquery.Globals.$;

import java.util.ArrayList;
import java.util.List;

import def.js.Array;

/**
 * This class is used within the webapp/index.html file.
 */
public class QuickStart {
	public static void main(String[] args) {
		// you can use regular Java API
		List<string> l = new ArrayList<>();
		l.add("Hello");
		l.add("world");
		// and you can also use regular JavaScript APIs
		Array</string><string> a = new Array<>();
		a.push("Hello", "world");
		// use of jQuery with the jQuery candy
		$("#target").text(l.toString());
		// use of the JavaScript DOM API
		alert(a.toString());
	}
}

変換後です。

/* Generated from Java with JSweet 2.0.0 - http://www.jsweet.org */
var quickstart;
(function (quickstart) {
    /**
     * This class is used within the webapp/index.html file.
     * @class
     */
    var QuickStart = (function () {
        function QuickStart() {
        }
        QuickStart.main = function (args) {
            var l = ([]);
            /* add */ (l.push("Hello") > 0);
            /* add */ (l.push("world") > 0);
            var a = (new Array());
            a.push("Hello", "world");
            $("#target").text(/* toString */ ('[' + l.join(', ') + ']'));
            alert(a.toString());
        };
        return QuickStart;
    }());
    quickstart.QuickStart = QuickStart;
    QuickStart["__class"] = "quickstart.QuickStart";
})(quickstart || (quickstart = {}));
quickstart.QuickStart.main(null);

この手のライブラリを使うとコードが凄いことになるのですが、jsweetは割合読みやすいです。ネームスペース毎にfunctionが返ってくる仕組みになっており、変換後のコードも理解しやすいのではないでしょうか。jQueryも組み合わせて使えます。

jsweetはJava製のオープンソース・ソフトウェア(GPL v3)です。

cincheo/jsweet: A Java to JavaScript transpiler.