先週末より部署異動がありまして、新しい部署での勤務が始まりました。家からちょっと遠くなったのと、乗り換えがどうも上手くいかないルートばかりで最適ルートが見つかっていないので、しばらく試行錯誤しながら通勤します。
先日土曜日、こちらのイベントの運営ボランティアをしました:
ボランティアメンバー間で交代して受付担当していたので、いくつかの発表しか聞けませんでしたが、最近の Java のトレンドを聞くことができてよかったです。Long-term support(LTS)は3年ごと、メジャーバージョンアップは半年ごとなので、Java11 が LTS になったあとは Java17, Java23 と LTS のバージョンは 6ずつ増えていくことになるようです。
Graal という他言語対応の VM というのがあるそうで、デモでは JavaScript, Java, Ruby, Python など様々な言語を呼び出していました。
Project Panama という、ベクトル演算を利用して Java の数値計算を高速化するプロジェクトについても紹介がありました。
We are improving and enriching the connections between the Java TM virtual machine and well-defined but “foreign” (non-Java) APIs, including many interfaces commonly used by C programmers.
と紹介されているので、ベクトル演算に特化したものではなくて、C 言語のインタフェースで提供されているものを使いやすくするといった感じなのでしょうか。Python が機械学習の分野で多く使われていますが、Python が様々な C のライブラリを便利に呼べるのが良くて、Python の実行速度自体は早くないという話もあったので、こういったプロジェクトによって Java でも機械学習系のプログラムが書きやすくなるのかもしれません。また折をみて調べようと思います。
Java での Map の初期化
いつも Guava で Map の初期化をしているのですが、そういえば double braces で初期化する方法もあったなぁと調べた時のメモです。
http://wiki.c2.com/?DoubleBraceInitialization
double braces で初期化する場合、そのクラスのオブジェクトではなく、そのクラスを継承した匿名クラスのオブジェクトが生成される、というのがポイントです。上のリンクで紹介されている equal
メソッドは、クラスを比較して同じクラスかどうかを判定していますが、double braces で生成するとクラスが元のクラスと一致しなくなります。(あまり Map に対してはそういうことしない気がしますが)
Java9 からは factory-methods というのが追加されていて、Map の初期化が簡単になっているようです。Java8 がそろそろサポート切れるので、バージョンアップしないといけないですね。。(factory-methods 使えない)
KSQL, ConfluentPlatform
こちらは完全に自分用メモです。KSQL, クエリでストリーミングが定義できるのはすごく便利そうですが…社内に詳しい人がいるので今度聞いてみよう。
Spring の ModelAttribute, SessionAttribute
便利そうではあるけれど、無理に使うとよく分からないことになる気もして今回は見送り