写点什么

虽然遭遇 Oracle 的挑战,Spring 框架依旧蓬勃发展

  • 2014-01-04
  • 本文字数:2686 字

    阅读完需:约 9 分钟

众所周知, Spring 框架在几周前发布了4.0 版,这也是从2009 年以来Spring 发布的首个主要升级版,该版本支持数量广泛的特性,如HTML5/WebSocket、REST、Java 8、微服务框架等。虽然遭遇了来自于Oracle 的各种挑战,不过Spring 这个坚实的开源Java 开发平台依旧在蓬勃发展,不断形成着自己的生态圈。

Spring 4.0 对很多特性都进行了改进,这包括对 Java 8 标准版的支持(如 Lambda)、一个安全的 REST 栈、HTML5/WebSocket 集成、自定义注解及 Java 7 企业版支持(如 JMS 2.0 等)。时至今日,Spring 4.0 的下载量已经有数百万之多,它提供的依赖注入等功能已经领先于 Java 企业版,并且不会受到流程缓慢的 Java 社区进程的阻碍。现在,从技术上来说,Spring 已经完全可以替代掉由 Oracle(之前的 Sun)所制订的官方 Java 企业版标准。

不过从另一方面来看,Oracle 也在极力说服 Spring 开发者迁移到 Java EE 上,并说其实 Spring 也没有什么特别的优势:

Oracle 建议开发者从流行的 Spring 框架迁移到 Java EE 上,不过 Spring 创始人却认为这些技术可以搭配使用,和谐共处,说 Oracle 的这一举动完全是从财务角度着眼的。 在过去的几个月中,Oracle 一直在各种 Web 会议上动员广大开发者从 Spring 迁移到 Java EE 上。有报道采访了来自于 Luminus Technologies 的 Paul Bakker 与 Bert Ertman,他们建议大家迁移到 Java EE 6 上,并认为现今的 Spring 已经与过去不同了,相比于 Java EE 来说已经没有任何优势可言。此外,Bert Ertman 也曾在去年的上海 JavaOne 大会上接受了 InfoQ 的专访,谈到了如何将 Spring 及遗留应用迁移到 Java EE 平台上。

Luminis 资深软件工程师 Bakker 说到“很多开发者几年前根据 Spring 框架创始人 Rod Johnson 编写的图书认为企业级 Java 开发有很多不足之处,不过时至今日,我们有 Java EE 5 与 Java EE 6,我们有经过完全修订的编程模型,他们非常轻量级,并且基于 POJO。现在是时候让开发者们知道 Java EE 表示的并不是 Java Evil Edition 了,我们完全可以使用它来构建非常棒的企业应用”。

Spring 中用来链接关联对象的依赖注入现在已经出现在了 Java EE 5 中。轻量级、面向方面编程也在 Java 中得以实现。不过 Johnson 在回复问题的一封邮件中消除了 Java EE 与 Spring 之间的冲突,他认为“这都是人们自己搞出来的问题,Spring 与 Java EE 6 完全可以和谐共处”。

Johnson 说到“从本质上来说,Java EE 6 想要干掉 Spring 的论调完全是由商业推动的,Spring 减少了人们对于 Oracle WebLogic 等传统应用服务器的需求,用户可以选择更加轻量级的基础设施。虽然 Java EE 6 对之前的版本做了一些改进,不过 Spring 依然提供了非常重要的附加值”。

Spring 的应用场景要比 Java EE 6 多不少,这样 Spring 用户就会有更多的选择权。他们可能并不想要使用 Java EE 应用服务器,即便使用 Java EE 亦是如此,他们可能不想使用 Java EE 6,他们可能处于云环境下,这时 Java EE 并不适用,他们可能使用任意一台应用服务器,他们可能想要部署在各种设备上。这时,Spring 的可移植性就是非常有价值的了。

Spring 的生态系统所解决的问题要比 Java EE 多很多,比如说集成、批处理和非关系型数据等。细粒度的安全也得到了很完善的支持,使用 Spring 的组件模型可以提供很多其他的好处。

在 Java EE 领域中,根据 Oracle 的 Arun Gupta 所述,“Oracle 正在寻求通过 Java EE 7 来扩展 EJB 的事务能力以及事务语义,我们在 Java EE 7 中所做的就是抽象出语义,使之具有更加广泛的应用场景。比如说对于 Managed Bean 或是 CDI Beans 等。借助于 CDI Beans,Managed Bean 可以通过 Java 类来实现”。

根据 Java EE 6 指南所述,如果一个顶层类是根据任何 Java EE 技术规范定义的或是满足某些条件,比如说是非静态的内部类,那么这个类就是个 Managed Bean。Java EE 7 的主要特性就在于支持 GlassFish Server 4 应用服务器。

不过,Pivotal 的市场经理 Pieter Humphrey 却认为大家不必为此担心。他认为这个消息仅仅是一面之言而已,并相信 Spring 的流行还将持续下去。现今的 Spring 技术已经涵盖了移动应用开发、NoSQL、大数据以及云计算等领域。

Spring 4.0 中值得关注的一个特性就是 Spring Boot,这是个类似于 Ruby on Rails 的快速应用开发框架。Spring Boot 能够极大减少样板代码的数量,开发者可以根据最少量的样板或是配置相关的代码开始项目的开发。

上个月,Spring 网站有成千上万的访问者,达到了历史上的访问高峰。此外,通过 Maven 构建管理平台下载的 Spring 数量也在持续增长。

有很多读者也对 Spring 的未来及与 Java EE 标准之间的关系发表了自己的评论,分别从项目所采用的技术标准、Spring 的特性及 Java EE 标准的不断演化等方面谈起。

Jim Smith 说到:

Spring Boot 确实太酷了。我实在是搞不懂这个世界上怎么还有人使用臃肿的 JEE 服务器,只是为了部署一个 Restfule Web 服务。

Anil chalil 说到:

我认为对于 JEE 来说,最好的东西就是 CDI 了,它直接能干掉 EJB 模型,Apache Deltaspike 就是围绕着 CDI 生态圈的一个项目。

Frans Thamura 说到:

Spring 不仅是个技术了,而且是个生态圈,他们的模块使之能够形成一个生态圈,JavaEE 能做到这一点么?我觉得够呛。不过对于移植来说,没错,你是可以做到的,但 Spring 并不是私有技术,这是个问题。这就好比是为什么要将程序从 JavaEE 迁移到 Oracle ADF 上一样。

Nicolas 说到:

没错,我知道 Oracle 的这个事情,当时很多人都在说 JEE 已经不再吸引人了。谁在乎呢?JEE 的目标依旧是围绕着传统的应用服务器制订的,演进得非常缓慢,封闭,而且还抄袭其他的创新,至少要比别人晚 5 年时间。下一步应该是在云中兜售 JEE 了,作为获得厂商封闭策略的另一种途径。没错,我知道从理论上来说你可以不再依赖于某个 JEE 厂商,转而使用其他厂商的服务,如果他们二者真的是兼容的。

各位 InfoQ 读者,Spring 现在基本已经成为了构建 Java 应用事实上的标准,而且也从最初的依赖注入和面向方面编程的框架发展成为现如今的一站式应用平台,Spring 现已形成了自己的一个完善的生态圈,提供了对 Web 开发、移动开发、大数据、云计算、集成、批处理、NoSQL 等等一系列的支持。相比于 Spring,传统的 JavaEE 标准的关注度似乎没有以前那么高了,而且发展速度比较缓慢,这其中有很多的因素,毕竟标准的诞生还是需要经过方方面面的考量,一定的滞后性也是必然的。那么根据你的经验,采用 Spring 与采用标准的 JavaEE 各有什么样的利弊呢?从长远来看,哪一种策略才是最优的呢?欢迎写下你的看法与见解,我们一起讨论。

2014-01-04 21:574066
用户头像

发布了 88 篇内容, 共 266.1 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

WorkPlus助力深i企打造移动数字化底座

BeeWorks

小微企业如何在10分钟内实现持续交付

阿里云云效

云计算 阿里云 研发管理 持续交付 研发团队

作为一名iOS开发者—面对音视频这个新风口应该怎样学习才能乘风而起?

iOSer

ios 音视频 ios开发 OpenGL ES 音视频技术

移动开发平台|助力企业安全高效搭建高质量移动应用

BeeWorks

DeepMind爆发史:决定AI高峰的“游戏玩家”|深度学习崛起十年

OneFlow

人工智能 深度学习 DeepMind AGI

低代码之火,何以燎原?

BeeWorks

ImageKnife组件,让小白也能轻松搞定HarmonyOS图片开发

HarmonyOS开发者

HarmonyOS ArKUI 3.0

算法交易的最佳编程语言是什么?

非凸科技

rust 编程语言 交易系统 策略

为什么业务团队需要实施CRM系统?

低代码小观

CRM 客户关系管理 企业管理系统 CRM系统 客户关系管理系统

《数字经济全景白皮书》数字零售篇 重磅发布!

易观分析

数字零售 数字购物

Amazon Aurora 读写能力扩展之 ShardingSphere-JDBC 篇

亚马逊云科技 (Amazon Web Services)

Tech 专栏

基于Elasticsearch生长的SREWorks数据化运维体系

阿里云大数据AI技术

分布式 SRE 数据化运维

web前端培训Vue3 setup() 启动函数的原理

@零度

前端开发 Vue3

ArkUI框架又有哪些新增能力?

科技汇

大数据培训Flink基础知识分享

@零度

flink 大数据开发

英特尔宋继强:以智能推动“科技+艺术”融合创新

科技新消息

如何做好部门知识管理

小炮

PlatoFarm生态进展不断,通缩推动PLATO价值提升

西柚子

新思科技连续六年获评Gartner魔力象限领导者殊荣

InfoQ_434670063458

新思科技 应用安全 Gartner

零基础学Java第一节(语法格式、数据类型)

五分钟学大数据

Java 4月月更

阿里云弹性计算对视觉计算的思考与实践

阿里云弹性计算

Metaverse 视觉计算

不面试别看!字节跳动2022年Java架构师岗面试题(试行版)发布

Java架构追梦

Java 程序员 java面试 后端开发

netty系列之:protobuf在UDP协议中的使用

程序那些事

Java Netty 程序那些事 4月月更

阿里、字节、美团的offer我都拿到了,全靠这份Java面试题

Java架构追梦

Java 程序员 java面试 后端开发

首版架构师全栈”成长笔记“一经发布就获得一致好评,我不允许你没看过

Java架构追梦

Java 程序员 java面试 后端开发

「可视化案例Vol.3」数字孪生可视化园区,开启园区智慧管理新篇章

ThingJS数字孪生引擎

物联网 可视化 数字孪生

java培训MySQL一次性插入多行数据的操作

@零度

Java MySQL

头一次见这么牛的的SpringBoot从入门到实战文档

Java架构追梦

Java spring 程序员 后端开发

OneFlow获得首届“全国颠覆性技术创新大赛”最高奖

OneFlow

深度学习 技术创新

极光笔记 | DSP高并发应用实践

极光JIGUANG

后端 DSP

PlatoFarm生态进展不断,通缩推动PLATO价值提升

小哈区块

虽然遭遇Oracle的挑战,Spring框架依旧蓬勃发展_Oracle_张龙_InfoQ精选文章