写点什么

虽然遭遇 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:574020
用户头像

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

关注

评论

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

通过独立网站的视觉设计策略优化进行品牌推广

九凌网络

架构设计|基于 raft-listener 实现实时同步的主备集群

NebulaGraph

数据库

DTC2024,华为云数据库创新融合大发展,打造世界级数据库!

华为云开发者联盟

数据库 华为云 华为云数据库 华为云开发者联盟 企业号2024年4月PK榜

Advanced RAG 03:运用 RAGAs 与 LlamaIndex 评估 RAG 应用

Baihai IDP

AI LLM 企业号 4 月 PK 榜 rag 检索增强生成

面试,有时候是个运气活

老张

面试 求职

C++ 递归与面向对象编程基础

EquatorCoco

c++ 数据库 递归

比特币L2项目主网密集上线:新业态背后的挑战与机遇

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Redis 容器化,是不是个“软柿子”?

小猿姐

redis 容器化

使用 Docker 部署 instantbox 轻量级 Linux 系统

不在线第一只蜗牛

Docker Linux 容器

一款国产的开发辅助AI插件!

江南一点雨

基于Material Design风格开源、易用、强大的WPF UI控件库

EquatorCoco

开源 UI WPF

云主机AI服务的性能测试和优化

天翼云开发者社区

云计算 AI 云服务 云主机

揭秘APP自动化测试中弹窗异常处理的技术要点!

测吧(北京)科技有限公司

测试

利用1688.item_get API接口,快速定位智能手表新品,商品ID一键获取

技术冰糖葫芦

api 货币化 API 测试 pinduoduo API

Apache Doris 2.1.2 版本正式发布!

SelectDB

数据库 大数据 开源 实时数仓 Doris

【活动报名】WorkPlus AI助理沙龙——把AI装进企业,企业级AI落地场景分享

WorkPlus

数据相关术语、英文翻译以及定义汇总看这里!

行云管家

数据 数据安全 企业数据

基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.5版已发布

JackJiang

网络编程 即时通讯 IM

再获权威认可!天翼云论文被IEEE/ACM CCGrid收录

天翼云开发者社区

云计算 私有云 云网关

揭秘APP自动化测试中弹窗异常处理的技术要点

测试人

App 软件测试 自动化测试 测试开发 弹窗

网络审计:为什么定期检查您的网络很重要

天翼云开发者社区

云计算 网络安全 网络审计

2024-04-17:用go语言,欢迎各位勇者莅临力扣城,本次的挑战游戏名为「力扣泡泡龙」。 游戏的起点是一颗形状如二叉树的泡泡树,其中每个节点的值代表该泡泡的分值。勇者们有一次机会可以击破一个节点泡

福大大架构师每日一题

福大大架构师每日一题

深度解读《深度探索C++对象模型》之拷贝构造函数

爱分享

c++ C++对象模型 C++拷贝构造函数 C++虚函数 C++虚继承

解决苹果审核4.3问题的有效策略:尝试混淆或重新上架?用这招居然成功上架AppStore了!

盘点|《数据安全法》的62项配套「国家标准」(附下载)

极盾科技

数据安全

中国服装品牌商品计划管理系统落地难题探究

第七在线

以NFT起头的Berachain 有什么魔力?

币离海

区块链 NFT Berachain

免费在线OCR识别工具TextIn Tools,开启智能学习新时代

合合技术团队

合合信息 OCR识别 文字处理 扫描全能王

简单了解国密与信创的四大关系-行云管家

行云管家

信创 数据安全 国产化 国密

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