読者です 読者をやめる 読者になる 読者になる

Java EE 5からJava EE 7へのアップデート 〜依存関係の大掃除〜

ちょっと泥臭い話で、Java EE 5からJava EE 7へのアップデートにあたり、利用しているサードパーティ製の追加ライブラリ(依存関係)についても改めてみることにしました。せっかくJava EE 7標準で用意されているのに他の代替ライブラリを使い続けてる、みたいになっても無駄なので。

Java EEフルスタックな標準仕様と言っても、実際の開発では他のライブラリを取捨選択して開発すると思います。 他のプロジェクトでは、どういうポリシーで取捨選択し、採用に至るのかは分かりません(リーダーにお伺いを立てるとか?)が、自分のところはよくも悪くも無法地帯で、好きなものを自由に選んで採用しています*1

前置きはさておき、実際に使っているライブラリについて、検討した一覧がこちら(おかしな部分のツッコミとかは大歓迎です。)

ライブラリ 方針 備考
Joda-Time 使わない Date and Time (Java SE 8)に置き換える。
Quartz 要検討 EJBの@Schedule、Concurrency UtilitiesのManagedScheduledExecutorServiceなどで代用?
QuartzのJobStoreTX(ジョブの登録内容をDBにして永続化する仕組み)相当の仕組みがあれば…
JDBC 使う
jersey-client 使わない JAX-RS 2.0のクライアントAPIに置き換える。
Guava 要検討 使ってる用途の範囲だと、Java SE 8の新APIの部分でほぼカバーできそう。
WIldFlyのmodulesにある(=warには含めなくてよいはず)
Doma 使う 今のアプリはJPA使わずにDoma1使っているので、Doma2にアップデートして使っていきたい。
commons-lang 使う WIldflyのmodulesにある。
commons-exec 使わない Java SE 8/Java EE 7で替わりとなる新APIがあるわけではないですが、なくてもよいという所感。
commons-email 使わない JavaMailに置き換える。
commons-compress 使う
commons-beanutils 使う WildFlyのmodulesにある。
Excel操作系(POI, XLSBeans) 使う (未だにJavaExcel操作のデファクトなんでしょうか…)
JBoss Seam 2.2 使わない JSF, CDIに置き換える。
RichFaces 使わない 結局ほとんど使わずjQueryプラグインを使ってしまっているので…。
ロガー周り(SLF4j + Logback) 要検討 WildFly 8.1.0.Finalでのログ出力の王道に合わせる。

半分近くが使わないことになりそうですね。ただし、使用中のライブラリについては上記の通りですが、アップデートにあたり、Lombok、PicketLinkなどは新たに使っていく予定なので、トータルとしては同じくらいの依存関係の数になりそうです。

プレゼンテーション層にあたるSeam, RichFacesのところは、Java EE 7でどう変更するかについて、別のエントリで書いていきます。

*1:今でこそGradleでビルドしていますが、昔はIvyやMavenすら使わない生Antで、全ての依存jarをlibsフォルダに置いてバージョン管理して、みたいなことをやっていたので、それはもう面倒でした…。