Spring Boot发布GA版本

Pivotal上周宣布发布Spring Boot框架的第一个GA(general availability)版本。这个释放版本经过了18个月的开发,该框架会对Spring IO平台进行简化,以改善开发人员的生产效率。

Boot框架最初介绍给Java开发社区是在去年的SpringOne 2GX会议期间。Spring Security的项目领导者Rob Winch曾经在一条tweet中发布了一个完整的Spring框架4.0的应用,在此之后,Boot得到了空前的关注。Boot最初起源于Spring框架的JIRA上报告的一个issue,它的目的在于为无容器的(containerless)、基于Spring的Web应用规划架构设计。

作为Spring IO平台的成员组件,Boot位于“IO执行(IO Execution)”层,该层致力于构建全面使用Spring平台的领域特定运行时。Boot框架的使命描述为,提供一种开发体验,能够“非常容易地创建独立的、产品级别的基于Spring的应用,这些应用是‘立即可运行的(just run)’”,在这个过程中“完全没有代码生成也不需要XML配置”。为了实现这一点,Boot在Spring框架4.0之上提供了一些设施,并且以一种特定的(opinionated)、约定优于配置的方式来启动应用的运行时上下文。这样,框架就能提供嵌入式(embedded)的运行时容器,以及映射controller的配置,而不需要更为传统的web.xml配置文件。框架以Maven和Gradle插件的形式提供了构建无容器Web应用的基础设施,这些插件能够创建嵌入式的、可运行的JAR文件。关于使用Spring Boot构建Web应用的细节可以参考框架完整的参考手册。

InfoQ联系到了Spring Boot团队,以了解该框架和最新的释放版本。我们从最基础的问题开始,那就是为什么要致力于实现无容器的Web应用。他们的回应是这样的:

- 在编码时,几乎不需要什么配置
- 更为功能化的部署单元——Boot在JAR文件中构建了一个可配置的tomcat/jetty!
- 自包含的可运行单元,运行它们的时候,只需:java -jar
- 对云、PaaS以及虚拟化友好

针对最后一点,团队进行了详细说明:

总体而言,无容器的Web应用很符合Spring一贯的哲学,那就是自包含和便携。鉴于如今的PaaS环境已经提供了很多管理、扩展以及可靠性的功能,因此Boot可以更加关注于开发人员的幸福感、轻量级的指标、报表以及超级轻量的容器。它非常有利于将应用或服务部署到云中,自带容器(BYOC,Bring your own container)是一种很自然的PaaS部署方式,这种理念由 Heroku最先提出,并被 CloudFoundry所接受。

无容器部署并不是框架的强制要求。在部署到应用服务器中时,应用依然可以利用Boot所提供的特定的、约定优于配置方式。关于这一点,Boot团队是这样说的,“如果你想要使用容器的话,那也没有问题!Boot的war文件可以部署到任何兼容Servlet 3.0的应用容器之中。兼容的容器包括Tomcat 7+、Jetty 8、Glassfish 3.x、JBoss AS 6.x/7.x以及Websphere 8.0。”

当问到对于新的使用者来说,Spring Boot最吸引人的地方是什么时,团队是这样回应的,“它能够带来产品级生产效率的极大提升,结合Spring IO平台的其他部分,Boot能够提供范围很广的功能。Spring Boot并不是Spring的精简版本,而是为使用Spring做好各种产品级准备——它能够与平台的任何其他部分集成,还包括Groovy/Grails。”为了佐证框架已经为产品化和云做好了准备,他们这样说到,“我们将自己的站点运行在它上面,这个站点为世界范围内数以百万计的Spring开发者提供文档支持”。Spring.io是Spring Boot的一个参考项目,它在上个月已经开源了,名为“Sagan项目”。

我们问到Boot会如何影响Spring的采用情况,他们说已经收到很多的反馈,涉及的范围“从忠实的、专家级的Ruby/Rails程序员到其他JVM用户”。具体来讲,他们查看了“Boot项目宣布后,所有时间段的高位统计数字(since~2004)”,这包括了“网站的流量变动、maven下载、StackOverflow问题、Google搜索、indeed.com上的工作,该频道的YouTube观看数甚至超过了YouTube的Java频道。”

当我们问到,Spring Boot会为未来的企业级Java生态系统带来什么时,团队反驳说,他们觉得这个问题更应该这样问,“企业级Java未来的生态系统会是什么样的?”。他们这样说到:

新的PaaS时代已经到来,它会迅速降低业已很平缓的应用服务器市场曲线。Boot在一些场景中能够移除80%繁琐、样板式的Java代码,并且倡导小的、专注的服务,这样的服务非常适合在云/PaaS中部署。Boot为你的产品级应用提供了很多内置的功能(指标监测、JMX、CraSHd shell集成、便利的安全功能等),所以你所关心的任务仅仅是让代码写得正确就行了。

他们继续指出,“Java 8终于发布了,对于其他的JVM开发者来说,Boot可以很容易地成为一个聚集点,这些开发者可能见过或听说过其他语言和框架所带来的便利性,因此想在Java 8中实现它们。”Boot项目团队介绍说,在企业级领域,他们已经看到“很多的组织如今正在开发小的、特别简单的服务,这些服务很适合在云/PaaS中部署,Boot/Spring是很完美的BYOC(自带容器)策略”,不过他们提到Boot依然可以“使用到已有的基础设施和完备的企业级Java中——可以一直往后支持到JDK 6”。

按照Spring Boot团队来看,Boot对于如下场景设计的应用来说是最适合的:

- 应用如果要部署到PaaS上,如CloudFoundry,那它是首选的构建方案
- 微服务/REST服务的首选开发平台
- 移动应用服务的集成后端
- 其他JVM语言和框架(Groovy或Grails)的运行时

关于如何开发Spring Boot应用作为微服务可以参考上个月发布于InfoQ的这篇文章: 探讨微框架:Spring Boot。如何使用Spring和Spring Boot开发应用的更多资源,可以参考Spring.io站点的指导板块。

查看原文链接:Spring Boot Goes GA

你可能感兴趣的:(Spring Boot发布GA版本)