31
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SI向けJava EE vs Spring

Last updated at Posted at 2016-05-25

前提とかきっかけ

Java EE7とSpring。
今のプロジェクトでどちらを採用するか決めないといけないので比較してみた。

一応、SIやる前提です。
ツッコミは歓迎。

比較対象

Java EEアプリケーション・サーバーはWebLogicあたりを買うと思ってください。

  • Java EEアプリケーション・サーバー(Java EE)
  • Payaraマイクロ(Payara)
  • Springboot(Spring)

比較観点

インターフェース

使いそうなものだけピックアップ。
素のサーブレットやJSPは・・・今更ないよね?
Springも多分JSFは使えるとは思うけど、今のプロジェクト一覧になかったので×。

項目 Java EE Payara Spring
REST ○(JAX-RS) ○(JAX-RS) ○(Spring MVC)
JMS ○(JMS) ○(JMS) ○(Spring)
AMQP × × ○(Spring AMQP)
Action-Base-MVC × × ○(Spring MVC)
Component-Base-MVC ○(JSF) ○(JSF) ×?

永続化

RDBはJPA(Hybanate)をともにサポート。
Java EEはKVSをサポートしてない。

項目 Java EE Payara Spring
RDB ○(JPA) ○(JPA) ○(JPA)
Cassandra等のKVS × × ○(Spring Data)

キャッシュ

PayaraはHazelcastをサポート。
Springもキャッシュをサポートしてる。

項目 Java EE Payara Spring
キャッシュAPI × △(JCache) ○(Sring Integration)?

アーキテクチャ

Java EEの場合、マイクロサービスアーキテクチャはサービスディスカバリーとかを自分で用意する必要があるのでちょっとつらいか。
Springの場合もNetflixOSS使う前提でもあるのでフェアじゃない?

モノリシックだったらJava EEが安定すると思う。
(でも、JSFは・・・うん、まぁ)

項目 Java EE Payara Spring
モノリシック
マイクロサービス ×

SNS連携

Java EEの場合はTwitter4Jとかを使おう。

項目 Java EE Payara Spring
Twitter × × ○(Spring Social)
Facebook × × ○(Spring Social)

クラウド対応

IaaSは割愛。
Java EEのPaaSはOracleCloudのようにアプリケーション・サーバーの提供元=サービス提供元だといい感じ。
コンテナはGlassfishがDocker対応したらしいけど、サポートがない時点でちょっとなーという感じ。

項目 Java EE Payara Spring
オンプレミス
IaaS
PaaS
コンテナ

ユニットテスト(Integration)

Java EEの場合はarquillianを使う必要がある。
アプリケーション・サーバーによっては対応してなかったり煩雑だったりする。

項目 Java EE Payara Spring
モノリシック ○(SpringJUnit4ClassRunner)

サポート

どのアーキテクチャもどこかでサポートは受けられる。

項目 Java EE Payara Spring
サポート

後方互換性

Java EEはRemoteEJBやJSP辺りを使ってるとそのうち標準機能から外れるかも。
Springはよくわからない・・・。

項目 Java EE Payara Spring
サポート ○?

まとめ

まとめというほどではないですけど。

オンプレミス

  • サポートを受ける前提なら、プロジェクトメンバーの好みや特性で選べばいい
    • サポートを受ける予算がない場合、Glassfish4.Xを使うのは危険。Payaraを使ったほうがいいかも。
  • Java EEの場合、癖が強いJSFがネックになるかも
    • StrutsやSeasar経験者的には中々なじめないかもしれない
  • RDBMS以外を使うならSpringの方がいい
    • オンプレミスじゃああまりないと思うけど・・・

クラウド

  • Springにアドバンテージ
    • PaaS親和性
    • RDBMS以外との接続
  • 設計・実装していく過程でマイクロサービス化していく可能性があるならSpring一択
31
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?