面向系统集成(SI)的Java EE与Spring的比较

引发此事的前提或导火索

Java EE7和Spring。
由于必须在现有项目中选择一种,所以进行了比较。

如果没有其他条件的话,我打算做SI(系统集成)。
欢迎提出批评和建议。

对比对象

请考虑购买WebLogic等Java EE应用服务器。

    • Java EEアプリケーション・サーバー(Java EE)

 

    • Payaraマイクロ(Payara)

 

    Springboot(Spring)

视角对比

界面

只挑选出可能会用到的东西。
纯Servlet和JSP……现在应该没有吧?
虽然我觉得可能可以使用Spring和JSF,但由于现阶段的项目列表上没有,所以不行。

項目Java EEPayaraSpringREST○(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 EEPayaraSpringRDB○(JPA)○(JPA)○(JPA)Cassandra等のKVS××○(Spring Data)

现金

Payara支持Hazelcast。
Spring也支持缓存功能。

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

建筑设计

在Java EE中,使用微服务架构需要自己准备服务发现等组件,有点困难吧?
在Spring中也需要假定使用NetflixOSS,这不太公平吗?

如果系统是单体架构的话,我认为Java EE会更加稳定。
(但是,JSF嘛,嗯,嗯,嗯……)

項目Java EEPayaraSpringモノリシック○○○マイクロサービス×△○

社交网络服务的整合

在Java EE中,可以使用Twitter4J等工具。

項目Java EEPayaraSpringTwitter××○(Spring Social)Facebook××○(Spring Social)

云端支持

只需要一个选项,以下是原文的汉语释义:

舍弃IaaS。
Java EE的PaaS就像OracleCloud一样,提供应用程序服务器的供应商=服务提供商,感觉不错。
听说Glassfish已经支持Docker容器了,但是没有支持,有点不太好。

項目Java EEPayaraSpringオンプレミス○○○IaaS○○○PaaS○○○コンテナ△△○

单元测试(集成)

在Java EE的情况下,需要使用Arquillian。
某些应用服务器可能不支持或者操作繁琐。

項目Java EEPayaraSpringモノリシック△△○(SpringJUnit4ClassRunner)

支持

所有的架构都能在某个地方得到支持。

項目Java EEPayaraSpringサポート○○○

后方的互换性

如果使用Java EE的Remote EJB或JSP之类的技术,有可能会渐渐被标准功能所淘汰。
至于Spring,我不太清楚……。

項目Java EEPayaraSpringサポート△△○?

概括起来

虽然还不算是总结,但也不是没有总结的意思。

自建型

    • サポートを受ける前提なら、プロジェクトメンバーの好みや特性で選べばいい

サポートを受ける予算がない場合、Glassfish4.Xを使うのは危険。Payaraを使ったほうがいいかも。

Java EEの場合、癖が強いJSFがネックになるかも

StrutsやSeasar経験者的には中々なじめないかもしれない

RDBMS以外を使うならSpringの方がいい

オンプレミスじゃああまりないと思うけど・・・

云计算

    • Springにアドバンテージ

PaaS親和性
RDBMS以外との接続

設計・実装していく過程でマイクロサービス化していく可能性があるならSpring一択

广告
将在 10 秒后关闭
bannerAds