業務ではDWRというAjaxライブラリを使って、Java/JavaScript間の通信を行っています。
で、そのライブラリの気に入ってる点、不満な点をまとめました。
というかTeratailに質問した内容とほぼ同じです。
https://teratail.com/questions/27804
DWR公式サイト
DWRの気に入っている点
以下の点が便利なので、DWRを使っています。
- jQueryのようにGET/POST, timeout, URLなどを直接指定する必要がない。
DWRのSample
//DWR
function handleGetData(str) {
alert(str);
}
Remote.getData(42, handleGetData);
- Java⇔JavaScriptの型変換を自動的に行ってくれる。
- int
- Collection
- Mapなどなど
//Personオブジェクトを引数に持つJavaメソッドに対して...
public class Remote {
public void doSomethingWithPerson(Person p) {
// Some Java code that does something with Person p.
}
}
public Person {
private String name;
private int age;
private Date[] appointments;
// getters and setters ...
}
//以下のJavaScriptコードから自動的にPersonクラスのフィールドに設定してくれる
var myJSPerson = {
name:"Fred Bloggs",
age:42,
appointments:[ new Date(), new Date("1 Jan 2008") ]
};
Remote.doSomethingWithPerson(myJSPerson);
- ファイルオブジェクトでアップロード/ダウンロードできる
DWRのファイルアップロード方法
DWRの不満な点
- 開発が終了している。2009年以降アップデートされていない。
DWRのリリースノート - javascriptの記述方法が古く、今後新しいブラウザに対応しなさそう。現状IE6に対応している。
DWRのサポートブラウザ
探しているライブラリ
以下の条件を満たすライブラリを探しています。
- Java/Javascript間のAjaxライブラリ
- 私が「DWRで気に入っている点」を取り入れている
- 最新のブラウザに対応するようなjavascriptで書かれている
- 現在開発中
以下のサイトから、簡単にライブラリを探していましたが、
https://en.wikipedia.org/wiki/List_of_Ajax_frameworks
- JavaからJavaScriptは自動生成する
- タグライブラリからJavaScript/HTMLを自動生成する
ようなライブラリばかりで、Java/JavaScript間だけのライブラリは見つかりませんでした。
私は、メインとなる部分(Ajax通信以外)のJavaScriptは、自動生成するのでなく直接書きたいです。
以上、便利なライブラリがありましたら教えてください。
よろしくお願いします。
補足情報(言語/FW/ツール等のバージョンなど)
- Java7
- Tomcat7
- TERASOLUNA Server Framework for Java 2.0.5.3
- DWR 3.0.1
- 対象ブラウザ: Firefox / IE11