WebSphere Application Server Liberty CoreのJava EE 7対応版が出てたので見てみた

先月、Java EEの商用御三家の一角IBMJava EE 7対応版Application Serverが出ていたので、触ってみました。

遊ぶだけなら無償なのでダウンロードは以下から。
https://developer.ibm.com/wasdev/

GlassFishWildFlyWeblogicはなんだかんだでRI系のJava EE 7実装を使用している場所が多くプログラマーから見た挙動が似ている*1のですが、
WebSphere Application Server Liberty Core(以下Liberty)はJava EE 6対応版ではTomcat系の実装(ex. open JPAapache-myfaces)を多用しており、
実装依存の挙動違いが多く、拾ってきたサンプルが動かない!とか結構あって困る子でした。

Java EE 7対応版になって以下のライブラリが入れ替わり、ライブラリ構成がWebLogicに近くなりました。

  1. Apache OpenWebBeans -> Weld(CDI)
  2. OpenJPA->EclipseLink(JPA)
  3. Apache Wink-> CXF(JAX-RS)

CDIの実装がWeldになったことで、GlassFishWildFlyCDIを触ってるとよく遭遇するこれWeldのバグなんじゃね?これWeldのバグなんじゃね?みたいなバッドノウハウや、複雑怪奇なCDIの仕様と実装依存の入り組んだところに対する知見がそのまま使用できるということなので、良い感じです。

OpenJPAがEclipseLinkに変わったのも非常にありがたいことです。
OpenJPAはJava EE6のころは仕様に準拠したといいつつ未実装な機能があったりとなかなか辛い*2ものでした。それがEclipseLinkに変わるということで最低限仕様どおりのことができるということが保証され、非常にありがたいことに。。。

Apache Winkは使ったことがないのでノーコメント。


これらについては入れ替えられて互換性が高くなったのですが、JSFの実装がapache myfacesなのは変更なしでした。
実はNetBeansについているサンプルくはmojarraを元にしています。
またmojarraの実装依存の場所を知らず知らずのうちに踏んでおり、事実NetBeansのサンプルはmyfacesでは動かないです。
apache myfacesについては昔から使用している人も多く、使い続けるのも悪くはないのですが、こちらについては吉と出るのか凶と出るのか。さて。

ということで。

*1:もちろん個別では違うところがあります。EclipseLinkとHibernate

*2:http://www-01.ibm.com/support/docview.wss?uid=swg1PI11642