# 2. Spring和Spring框架的历史

Spring是在2003年，作为对之前的复杂的J2EE规范而产生的。有些人认为Spring和J2EE是竞争关系，实际上他们是互补的。Spring的编程模块虽然并没有遵照J2EE的平台规范，但是它和如下的J2EE规范紧密的结合： Servlet API (JSR 340)

WebSocket API (JSR 356)

Concurrency Utilities (JSR 236)

JSON Binding API (JSR 367)

Bean Validation (JSR 303)

JPA (JSR 338)

JMS (JSR 914)

JTA/JCA

同时，Spring框架也支持依赖注入(JSR 330)和通用注解(JSR 250)规范，开发人员可以自由选择使用。

在Spring框架5.0中，Spring至少要求Java EE 7以上（比如：Servlet 3.1+, JPA 2.1+），同时提供了对于Java EE 8中新API在运行时的支持（Servlet 4.0, JSON Binding API），这使得Spring可以全面支持多种服务器：Tomcat 8， 9, WebSphere 9,JBoss EAP 7。

Java EE在应用程序开发中的角色在随时间变化，最开始，应用程序必须被部署成为一个服务。随着SPring boot的出现，现在的应用程序可以在devops或者云环境中随意创建。在Spring 框架5中，WebFlux应用程序甚至都不需要使用Servlet API，并且可以运行在类似于Netty这种非Servlet容器中。

Spring还将继续发展下去，除了Spring框架，Spring家族还有其他的一些非常棒的项目：Spring Boot, Spring Security, Spring Data, Spring Cloud, Spring Batch等。每个项目都有自己的代码库，问题跟踪机制和发版计划。如果想知道其他项目的具体情况可以参照：spring.io/projects。
