« モデリングの標準問題から学べること | トップページ | ベンチマークとしてのレファレンスモデル »

2015.04.27

XEAD製品がJava1.8に対応

 XEAD製品(Modeler,Editor,Driver,Server)のJava1.8(Java8)対応が完了した。「CONCEPTWARE/受注生産」の開発を優先させていたために出遅れてしまった。今後は安心してJavaをアップデートしてもらっていい。

 Java1.8を含めた複数バージョンでの互換性を確保するために、「ソート処理」のコードを修正しなければならなかった。従来は並び順条件をComparatorに置いていた。ところが、Java1.8でのラムダ式の導入にともなってComparatorに新規メソッドがいろいろ追加されている。Comparatorはインタフェースなので、それらのメソッドを実装しないと構文エラーになってしまう。しかし、ラムダ式を使ってカッコ良く実装したりすれば、1.8でしか動かなくなる。それではまずい。

 そこで、Comparatorの利用をあきらめ、ソートされる要素にComparableのインタフェースを組み込んだ。要素がComparableであれば、Comparatorなしでソートできるからだ。結果的にたとえば、

Collections.sort(list, comparator);

とあったところを、

Collections.sort(list);

と書ける。最初からそうすればよかったとは思うが後知恵である。なにしろ私がJavaで最初に作ったプログラムは"Hello World"とかではなく、複雑なモデリングツール(XEAD Modeler)だったわけで、あの頃は世間知らずでいろいろとまぬけなコードを書いてしまったのだ。

 もうひとつ違いがある。XEAD Driverでは、UI制御のためのコーディングが要らなくなるとともに、JavaScriptで書かれる「業務ロジック」をテーブル定義に格納できるようになっている。Java1.8では、JavaScriptの実行エンジンがRhinoからNashornに置き換わって高機能化かつ高速化された。この変化はXEAD製品自体のコードのあり方には影響しないのだが、この「業務ロジック」の書き方に影響する。

 JavaVM上で動作するJavaScriptエンジンが他のタイプのエンジンと大きく違う点は、スクリプトの中で多彩なJavaライブラリを利用できる点にある。スクリプトの中でそれらにアクセスできるというのは大きな魅力で、業務ロジックを柔軟に記述できる。

 ただし、Javaライブラリを利用するためには、スクリプトの中で明示的に導入してやる必要がある。そのために利用される命令がimportPackage(...)やimportClass(...)なのだが、これらが新しいエンジン(Nashorn)ではなぜか使えなくなっている。RhinoとNashornの双方で有効なスクリプトとするには、次のように書かねばならない。Java1.8でJavaライブラリを利用するスクリプトを書く際には注意してほしい。

//////////////////////////
// Javaパッケージの導入 //
//////////////////////////
var importedPackage = new JavaImporter(javax.swing, java.util);
with (importedPackage) {

 ////////////////////////////////
 // 実行確認用ダイアログの表示 //
 ////////////////////////////////
 JOptionPane.showConfirmDialog(null, ...);
 ...
}

|

« モデリングの標準問題から学べること | トップページ | ベンチマークとしてのレファレンスモデル »

コメント

先日は東京での公演、お疲れさまでした。
親睦会でお話しさせて頂く機会にも恵まれ、大変有意義な時間でした。

xeadのverup、早速ですがチェックアウトしてみました。これから色々と拝見したいと思います!
ちなみに第一印象としては、整然としたコードでいらっしゃって、私が口出しできる余地は無いように感じました・・。

気になるのは依存ライブラリの管理をmavenにするなどして、誰でもEclipseProjectとしてチェックアウト>即ビルド可能な環境にプチ改善するのはアリかなと思いました。
私として具体改善方法がまとまってから、僭越ながら別途ご相談させて頂きたいと思います。

投稿: 葦原 | 2015.05.05 22:32

葦原さん

こちらこそお世話になりました。楽しかったですね。

いやいや、お恥ずかしいです。Java8対応版を今日にでもアップロードする予定なので、実際に動作させる際にはそちらをご利用ください。このブログでまた東京でのイベントを案内するので、またおしゃべりしましょう(^-^)

投稿: わたなべ | 2015.05.08 07:40

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: XEAD製品がJava1.8に対応:

« モデリングの標準問題から学べること | トップページ | ベンチマークとしてのレファレンスモデル »