システム開発で思うところ

Javaで主にシステム開発をしながら思うところをツラツラを綴る。主に自分向けのメモ。EE関連の情報が少なく自分自身がそういう情報があったら良いなぁということで他の人の参考になれば幸い

JJUGナイトセミナー Jakarta EE特集

はじめに

こちらに参加してきました

speakerdeck.com

メモ

さっととったメモというか感想みたいなものを放流

豆知識

Spring Bootの成果物をOpen Libertyの上で実行すると高いスループットを出すこともあるよ。

Jakarta EE 11

Java SE 17が仕様の前提。

Jakarta Data

Repositoryの戻り値がJPAのEntityになるみたい?
となると3層+ドメインだと、Repositoryからインフラ層で、その中で更にRepositoryという名前のインターフェースでデータ取得をするっていう、名前付け的な意味で結構わかりにくくなりそう。
というか、サービスから直接 Jakarta DataのRepositoryを呼ぶイメージなんだろうなって思った。
理由は、以前、JJUG CCCだったと思うんだけど、MSのJavaの方が「EEでDDD」的なセッションでは、JPA(のEntity)をドメインオブジェクトの中核として扱っていたので。
この辺りは流派が違うというか、EEを軸にしている人は「EEパッケージの依存が入ることは問題ない」という流派なんだと思う。
僕はドメインオブジェクトは可能な限りPOJOでEEパッケージの依存も入れたくない流派 。 抽象化をどこにどういう感じで仕込むのか、みたいなのは好みが分かれるよなぁなどと思う。

メジャーとマイナーのバージョンアップの違い

互換性が無くなったらメジャー、、なんだけどPersistanceは非推奨削除だけどマイナーバージョンアップだったり、必ずしも統一的ではないみたい。

TCKの修正もバージョンアップの対象

仕様の策定も含めてEEだから、TCKの修正もその対象になるというのは確かにだけど気が付かなかった発見。

EE11で変更が一番多かったのはJPA

日付の型はLocalDate系以外は非推奨。

javaxを単純にjakartaに変換するのはNG

Java SE の javaxは置換するとNG。
Eclipse Transformerが有力。
バイトコードも変換対象にする。
ソースコードが入手できない場合でも対応ができるということ。

クラスタリングのベースの遷移

昔はミドルウェアによる実現であった。
今はK8sのようにインフラ自体がその主体になっているというのが違い。 EEの思想はJVM自体がクラスタリングの主体だったところが、もっと広いところで実現するようになったかんじかな?
このあたりは、むかーし Glassfish勉強会で 寺田さんがK8sだったかな?を扱った話をしていた時にも思ったところと同じかな?

Glassfishを扱わなくなったのでOracleにはEEの参照実装がない

そうか、、そういうことになるのか、、

WebSphereLibertyは全部カバー

JavaEEもJakartaEEとMicroprofile全部乗せ。

Spring Boot3からjakartaパッケージ

同梱のTomcatに引っ張られる感じ。

EEの良くないところ

アプリケーションサーバーとwarのデプロイがいるということ。
Spring Bootとの違いともいえる。
確かになぁ…
実際、改めてやってみると管理コンソールでDB接続情報の設定とか、Tomcatで同梱みたいなのと比べると敷居は高い。
情報量も年々少なくなってきているし…

OpenLibertyはBootに近いのかな?

導入可能zipに加えて、実行可能jarも作成できる。
ただ、実行可能jarはログとか異常終了したときの振る舞いとか設定が色々必要なので実際はちょっと面倒とのこと。
なのでおすすめは導入可能zipをunzipして実行みたい。

OpenLibertyを使ってみようかな?

と、2年前も思って、そのまま今(Netbeans + Payara)に至る…
あくまで素振りな実装をしているだけだから、それで事足りてしまっているんだよなぁ…
クラウド利用を真剣に(?)考えるんだったら、OpenLibertyは真剣に導入を考えたいと思いつつ(そして月日が過ぎていく)。

EJBが非推奨はどうなりそう?

今のところはCDIを推奨で、EJBは消えはしないけど放置したままにするという扱いというのが現時点。
なので「非推奨」にもなっていない、ただし放置。

セキュリティマネージャー

脆弱性につながっているケースが少なからずあるみたい?
(このあたりは良く分からない)

VSCodeJavaの開発はどのくらいできるもの?

GUIによる設定とかを期待すると弱いとは思うけど、開発するためのIDEとしては随分と使えるようになっているみたい。
3年くらい前に VSCode + Payara をやろうとして、ちょっと躓いて、即 Netbeansに戻った情弱だけれど、OpenLibertyの仕組みとか聞いているといけそうな気もしてくる。
理由:VSCode + Payara で躓いた理由は、IDEとEEサーバの連携するところがイマイチ イメージできなくて、何をしたら良いのか調べるのも億劫になって考えるのを止めたというのが経緯だったと思うから(目の前に動かせるNetbeansがあるから…)

OpenLibertyは逆にアプケーションサーバーへのデプロイをする、というのとは違うアプローチなので、そういう意味だと Bootに近くて VSCodeでやりやすい印象をもったというのが感想。

さいごに

見知らぬ人との会話の訓練を、、と考えて懇親会にも参加しました。
人数が少ないこともあって、探り探りではありましたが、色々と話を伺う事ができて楽しい時間でした。
前々回は参加したけど懇親会は顔出しだけして気分すぐれず即撤退、前回のJJUG CCCは不参加、という感じで人と交わることに強いストレスを感じることが多くなってしまっていたけれど、今回の懇親会は良いリハビリ(?)になったように思います。