JavaOne 2014 報告会「Java Embedded 関連のアップデート」大山 弘樹氏・「Java SE & JavaFX 関連のアップデート」櫻庭 祐一氏
JavaOne 2014 報告会「Java Embedded 関連のアップデート」大山 弘樹氏
●今年のテーマ
- 昨年はIoT。今年も。去年はRP(Raspberry Pi)。今年も。IoT<RP。昨年はCDC、CLDC。今年はJavaME8。
- JavaME、SE。デザインが違う。ハードウェアならME。ME8だとJNIが無い。きっちり下までやれ。言語の仕様はほぼ同じになった。(Lambdaは使えない。)
JavaOne 2014 報告会「Java SE & JavaFX 関連のアップデート」櫻庭 祐一氏
- 「Javaによる関数型プログラミング」本が来週出る。
- getOrDefault(word, 0L) (キーがなければ第二引数を入れる)
●Project Valhalla
- Specialized Generics、Value types、Var handles。
- point[] pts = Header ....(それぞれ参照が入り、ヒープのいろいろなところに飛び散る。)「Header、x、y」、「Header、x、y」、の場合、「Header、x、y、x,y……」
value class Point{
final int x;
final int y;
}
- x、yはfinalなので変えられない。スレッドセーフ。valueクラスを扱っているところでSyncronized使っていると自動的に取れる。ヒープが抑えられる。
value class Optional<T> {
private final T t;
}
- Optional:nullチェックしないプログラミング。
●Project Panama
- John Rose、Charles Nutter(JRuby作者)。Foreign Function Interface(FFI)、Data Layout Control、Arrays2.0。
- FFIは一般的に使われる言葉。
- ネイティブコードをコールするには、これまではJNI。オーバヘッドが大きい、リークしやすい、で使いにくい。代わりにJNAが出てきたが、旗色が悪い。代わりに出てきたのがJNR。JNRの下がFFI。
public interface GetPid{
@IgnoreError
long getPid();
}
GetPid getPid=LibraryLoader.create(GetPid.class).load("c");
getPid.getPid();
(cはC言語のように呼び出すこと。)
- JNR、JNR-JFFI、JFFI、libffi。いろいろなプラットフォームに対応。
- 普通のJavaのメソッドコールをしているかのごとく扱える。UNIXコードを生で使える、X86アセンブラが直接使える、とか。
- JNR-Posix、JNR-UNIXSocket、JNR-Constants、JNR-enxio、JNR-x86asm。
- 効率が良いパフォーマンスのよいヒープの使い方を。
- javaはパフォーマンスが上がってはいるが、まだやることがある。JVMの上で動く言語もPerformanceUPする。
- 去年まで盛り上がっていたが今年は、、なのが、スマトラ。GPUで計算させる。AMDとOracle。GPGPUのブームが落ち着いてきたから? 9に入るのでは?
- 言葉の置き換えもいろいろあるが、去年のロードマップと対応させるとわかる。JavaSEは順調に来ている感。
●Project Jigsaw
- Mark Reinhold。Jigsaw(ジグソーとよむ)、依存性がたくさんありグチャグチャ。今までは手で書いていたが諦め、No More module-info.java? jlinkで依存性を解析する流れになっている。module-infoはVersionとか書けたがどこか行った。かなりシュリンクして小さくなり、9に入るかも。メーリングリストの流通量、コミット数は多い。
- class、jar、jmodがjlinkの入力。jmodはjarをまとめたようなもの。jlinkの出力はjmod、jar、JVM Image。ほんとに使うだけの小さなモジュールのjavaが作れ、exeにするのとか簡単。必要最低限のものが作れる。
●Java FX
- Richard Bair(車のシミュレータ。最近は小さいもの作っていることが多い?)、Steve Northover(実権を握っている?)。
- Java FX8u40。(来年出る予定。)Accessibility(GUIとかで読み上げ。耳が聴こえない人にもGUIが使える。swingとかでは前からあった)、Dialog、法線(3DCGの面の法線。どういうふうに反射するか決められる。これまでは勝手にJavaFX側で計算していた。変に乱反射するとか面白いことしようとすると法線を自分で決めたい)。Shaderは8u40では消えた。
- 9は??つきで分からない。メインはパフォーマンス向上。
●その他