面向系统集成(SI)的Java EE与Spring的比较
引发此事的前提或导火索
Java EE7和Spring。
由于必须在现有项目中选择一种,所以进行了比较。
如果没有其他条件的话,我打算做SI(系统集成)。
欢迎提出批评和建议。
对比对象
请考虑购买WebLogic等Java EE应用服务器。
-
- Java EEアプリケーション・サーバー(Java EE)
-
- Payaraマイクロ(Payara)
- Springboot(Spring)
视角对比
界面
只挑选出可能会用到的东西。
纯Servlet和JSP……现在应该没有吧?
虽然我觉得可能可以使用Spring和JSF,但由于现阶段的项目列表上没有,所以不行。
持久化
RDB与JPA(Hybanate)一起提供支持。
Java EE不支持KVS。
现金
Payara支持Hazelcast。
Spring也支持缓存功能。
建筑设计
在Java EE中,使用微服务架构需要自己准备服务发现等组件,有点困难吧?
在Spring中也需要假定使用NetflixOSS,这不太公平吗?
如果系统是单体架构的话,我认为Java EE会更加稳定。
(但是,JSF嘛,嗯,嗯,嗯……)
社交网络服务的整合
在Java EE中,可以使用Twitter4J等工具。
云端支持
只需要一个选项,以下是原文的汉语释义:
舍弃IaaS。
Java EE的PaaS就像OracleCloud一样,提供应用程序服务器的供应商=服务提供商,感觉不错。
听说Glassfish已经支持Docker容器了,但是没有支持,有点不太好。
单元测试(集成)
在Java EE的情况下,需要使用Arquillian。
某些应用服务器可能不支持或者操作繁琐。
支持
所有的架构都能在某个地方得到支持。
后方的互换性
如果使用Java EE的Remote EJB或JSP之类的技术,有可能会渐渐被标准功能所淘汰。
至于Spring,我不太清楚……。
概括起来
虽然还不算是总结,但也不是没有总结的意思。
自建型
-
- サポートを受ける前提なら、プロジェクトメンバーの好みや特性で選べばいい
サポートを受ける予算がない場合、Glassfish4.Xを使うのは危険。Payaraを使ったほうがいいかも。
Java EEの場合、癖が強いJSFがネックになるかも
StrutsやSeasar経験者的には中々なじめないかもしれない
RDBMS以外を使うならSpringの方がいい
オンプレミスじゃああまりないと思うけど・・・
云计算
-
- Springにアドバンテージ
PaaS親和性
RDBMS以外との接続
設計・実装していく過程でマイクロサービス化していく可能性があるならSpring一択