免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

Spring 4 增强了对 Java 8、Java EE 7、REST 和 HTML5 的支持

  • 2014-01-01
  • 本文字数:2798 字

    阅读完需:约 9 分钟

几天之前 Pivotal 发布了 Spring 4.0 ,这是自 2009 年之后发布的首个主要版本。新版本支持 Java 8,支持使用 Lambda 的回调表达式、支持 JSR 310 日期和时间 API 以及参数名发现。

对 Java EE 7 的支持包括:JMS 2.0、JTA 1.2、JPA 2.1、Bean 验证 1.1 和 JSR-236 并发工具。

Spring 4 还改善了 REST 支持,提供了一个新的 AsyncRestTemplate 和 HTML5/WebSocket 与旧版本浏览器的集成。

如果你想要查看 Spring 4 的功能及其新特性的完整列表,那么可以查看 Pivotal 应用程序结构的首席架构师 Adrian Colyer 的博客 Spring 框架发布 4.0GA 版

Spring 4 宣称该版本能够让 Java 和 Groovy 开发者很容易地交付和整合新应用程序架构、大数据、devops 和云友好的部署。另外,它还包含一个新的名为 Spring Boot 的项目。Spring Boot 是一个新 Spring 技术,该技术的目标是让 Java 开发也能够实现 Ruby on Rails 那样的生产效率。

在 Spring 体系下有很多项目。最近的 Spring IO 项目就是为了将核心的 Spring API 带入一个有凝聚力、版本化的基础平台上而创建的。通俗地说,这是一个新的包含参考文档、教程、团队博客和论坛的网站。对于 Spring IO 和 Spring Boot 能够给开发者带来哪些帮助, Spring 4 新闻稿中包含有这样一段非常有趣的话:

Spring IO 的主要目标是通过 Spring Boot 和 Groovy 这样的组件让 Java 成为开发者生产效率方面的领导者。“在 Pivotal 实验室里,开发者对幸福感和样板代码的偏执度已经形成了非常高的要求,因为他们过去完成了相当多的 Ruby on Rails 开发,”Pivotal 实验室的首席运营官 Edward Hieatt 说。“在我们的实验室里,那些使用 Spring 框架 4.0 和 Spring Boot 的 Ruby on Rails 开发者对它印象深刻,因为它的生产效率很高同时能够在一个单一的编程模型上处理各种各样的场景”。

我想知道 Spring 4 是否是 Spring 3 的一个插入式替代品,为了找到答案我最近做了一个实验。在使用Spring 4 和Spring Boot 对Web 应用进行大转变一文中,我将一个使用Spring 3.2.5、Spring 安全3.1.4 和Jersey 1.18 开发的应用程序升级到了Spring 4、Jersey 2 和Java 8。此外,我还集成了Spring Boot 并且将其转换成了JavaConfig 以替代XML。整个开发体验是非常令人愉快的。我再次发现Spring 拥有非常好的向后兼容性。而我发现的唯一问题是在缺少容器的环境中使用Jersey 时遇到的。

在公告发布之后,我有幸采访了 Adrian Colyer

在你说Spring 4.0深度支持Java 8的时候,你的意思是什么?为什么使用Spring能够让Java 8更容易?

Java 8 完美地契合了 Spring 的编程模型。我们相信,将 Java 8 提供的那些优雅的语言特性及其立即使用的类库提升与标准的 Spring API 结合起来将会极具吸引力。事实上,Spring 框架 4.0 是业界第一个完全支持 Java 8 的应用程序框架。为了提供能够在现在的 Java 8 上开发 Spring 应用程序所需要的所有内容,我们甚至在 3 月份 Java 8 生产启动之前就已经开始做相关的准备工作。

你提到Spring BootJava提供了史无前例的生产效率。那你觉得GrailsSpring RooPlayJRebel怎么样?它们可以让你开发一整天而不用重启应用。Spring Boot在哪些方面要优于这些技术?

Boot 提供了比“企业”Java 更多的生产力,同时还覆盖了一套更广泛的应用程序,从 Web 到纯粹的数据应用程序(Spring XD)。而另一方面,Grails 则非常关注 Web 应用程序在完整堆栈环境中的快速开发。Spring 能处理的内容远不止 Web 应用程序,Boot 代表了可用于 Spring 及其生态系统项目的一种约定优于配置的方法。当然,我们还没有为以前所有的 Spring 项目提供 Boot 支持,但是采用的步伐是非常令人吃惊的,同时距离 100% 的饱和度也已经不远了。

为什么Pivotal会有如此之多基于JVM的框架(GrailsSpring Roo以及现在的Spring Boot)用于新应用程序的创建?

事实上,Pivotal 所有基于 JVM 的框架(Boot、Grails 和 Roo)都是基于 Spring MVC 的,但是它们的受众不同。Boot 为 Spring 生态系统提供了一种固执的、约定优于配置风格的框架,它的适用范围比 Web 应用程序更广泛。而另一方面,Grails 则更加关注领域特定的运行时,让用户能够使用 Groovy 语言和 DSL 快速开发 Web 应用程序。最后,Roo 则是完全关注于代码生成。所有的这些框架都会将开发者带到 Spring 平台上,这是我们的主要目标。

你认为更多的选择会让开发者和决策者感到焦虑么?

这是一个棘手的或者说是比较主观的问题。对于决策者而言,更多的选择听起来好像代表着更好的风险管理,更容易招聘到开发人员。对于开发者而言,这很有可能会引发更多的焦虑,相对而言,他们只有确实找到一种比他们的背景和已有技能水平更好的风格,他们才会感到兴奋。

Spring-Loaded看起来好像是一个免费版本的JRebel**。根据其网站提供的信息,它是Grails 2中使用的重新装载系统。该项目与Spring Boot和它惊人的生产效率有关么?**

不是的。在 Spring 框架 4.0 中 Boot 是通过 @Conditional 注解启用的。你对加载的感知是准确的,但是 JRebel 更加全面,它能够和多个 IDE 一起使用。

对于Java EE(或者其他实现)缺失的内容Spring 4WebSocket支持提供了哪些内容?

这是关于后备选项(SockJS)和高层消息协议(STOMP)的。我们主要考虑将 WebSocket 作为一个传输层,真正有趣的部分出现在它上面。Spring 的新消息模块表明了我们能够从哪里看到应用程序开发人员的共同点。它做的事情比 Java EE 7 中的 JSR-356 要多的多,要注意的是,我们也支持 JSR-356,它是基础,但是我们更关注自己的 WebSocket 编程模型中的更高层次的交互模式。因为低于 IE 10 的浏览器并不支持 WebSocket,所以实际上如果现在没有后备选项那么 WebSocket 是无法单独使用的。

SpringJSP标签除了支持WebSocketsHTML5属性之外,Spring 4还为HTML5**** 提供了哪些其他的特性?

我们的焦点是让开发者能够使用面向 HTML5 的 Web 应用程序架构。从我们的角度,这不仅仅是通信风格和状态管理安排的问题,还包括特定的 HTML5 特性。也就是说,相对于客户端上流行的 JavaScript 框架而言,Spring 也是一个好市民。我们不仅会做此时此刻的分享,我们还会致力于让 Spring 4.x 产品线持续地向下一代 Web 架构进化。

根据我的经验(来自于咨询和大会演讲),大多数开发者依然在通过XML使用Spring。你认为会有更多的开发者迁移到JavaConfig和 ****Spring 4 上么?

这是他们的选择,他们可以决定什么时候对哪些内容进行迁移对自己是有意义的。他们可以使用注解、JavaConfig 或者 XML——这比 Java EE 提供了更多的选项。顺便说一下,我们喜欢 JavaConfig,希望更多的组织能够采用它。

如果你正在使用 Spring 和 Maven,那么可以通过一个新的“材料清单”POM 进行升级。如果想要下载或者查看Gradle 坐标,那么可以查看 Spring 框架项目的网站

查看英文原文 Spring 4 Enhances Support for Java 8, Java EE 7, REST and HTML5

2014-01-01 01:4916052
用户头像

发布了 321 篇内容, 共 118.5 次阅读, 收获喜欢 19 次。

关注

评论

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

CSS 基础属性篇组成及作用

千锋IT教育

2022年11月《中国数据库行业分析报告》重磅发布!精彩抢先看

墨天轮

人工智能 数据库 dba 智能运维 国产数据库

跬智信息 (Kyligence) 荣获信创“大比武”重要奖项,坚持做大做实国产软件

Kyligence

数据库 数据分析 云平台技术

几类主流的虚拟化技术

穿过生命散发芬芳

虚拟化技术 11月月更

推荐5款IDEA插件,堪称代码质量检查利器!

程序员小毕

Java 程序员 程序人生 后端 IDEA

Baklib知识库|为什么知识共享工具对减少内部知识缺口至关重要

Baklib

知识

助力教育信创快速发展,统信软件与山东四所高校建立信创应用重点实验室

统信软件

软件 操作系统 教育 信创产业 教育新创

普惠联接,让人类诗意地栖居在大地上

脑极体

第三章热备份路由选择协议(HSRP)

初学者

网络 11月月更

提升汽车APP用户体验,火山引擎APMPlus的“独家秘笈”

字节跳动终端技术

性能监控 APP开发 应用性能 火山引擎 APMPlus

案例 | 九科信息为某大型企业设计社保公积金自动缴存解决方案

九科Ninetech

超详细图文保姆级教程:App开发新手入门(一)

YonBuilder低代码开发平台

开发者 App 新手入门

HDC 2022 开发者主题演讲与技术分论坛干货分享(附课件)

HarmonyOS开发者

HarmonyOS

一发一存一消费,跟着p8大佬深入学习Java中间件技术及其应用开发

钟奕礼

Java 程序员 java面试 java编程

【Python 基础学习】-流程控制

度假的小鱼

11月月更 Python流程控制

工业物联网DCS和SCADA的区别

2D3D前端可视化开发

物联网 DCS web组态软件 SCADA 工业组态

个推发布《Android13适配指南》,解读Android13新特性

个推

android 安卓 安卓开发

数据治理必读|基于Dataphin,快速建设高质量数据支撑业务发展

瓴羊企业智能服务

解密金融行业数据云平台建设密码

数造万象

手把手教你成为荣耀开发者:商户服务开通指南

荣耀开发者服务平台

android 开发者 手机 荣耀 honor

华为云会议AI智能降噪3.0,可抑制200种噪声!

科技之光

明道云Sales Playbook开源版正式发布

明道云

LigaAI X 猴子无限 | AIGC火了,人类又得到了什么?

LigaAI

分布式 大模型训练 研发协作平台 AIGC 大规模离散模型

统一移动办公门户,满足政企高效安全协作需求

WorkPlus

WorkPlus即时通讯APP,提供智能化、多场景的IM系统解决方案

WorkPlus

完全解析大数据的高可用集群部署

好程序员IT教育

大数据

阿里云液冷技术荣获CDCC数据中心科技成果一等奖

云布道师

阿里云 基础设施建设

在线电子表格,助力数据分析人员高效办公

流量猫猫头

大数据

EMR-StarRocks 与 Flink 在汇量实时写入场景的最佳实践

阿里云大数据AI技术

数据库 flink EMR 十一月月更

破坏系统是为了更稳定?混沌工程在去哪儿的4个阶段实践

TakinTalks稳定性社区

混沌工程 故障治理

远程触发Jenkins的Pipeline任务

程序员欣宸

jenkins 11月月更 pipiline

Spring 4 增强了对Java 8、Java EE 7、REST 和HTML5的支持_语言 & 开发_Matt Raible_InfoQ精选文章