JAVA EE 平台介绍拾遗

0x00. 介绍

本文根据多篇文章整理出了JAVA SE平台以及 JAVA EE平台的发展,以及各个版本的新特性用于个人参考。大致的了解平台的发展脉络能帮助我们更能了解自己所用的技术的渊源,主要功能,以及局限。《JAVA编程思想》当中,作者在讲述泛型机制的时候,讲过一段话让人印象深刻。

根据我的经验,理解了边界所在,你才能成为高手。因为只有知道了某个技术不能做什么,你才能更好的做到所能做的(部分原因是,不必浪费时间在死胡同里边转)

0x01. 起始

第一个版本的JVAVA是在1995年5月23日SunWorld大会上进行的发布的。这也标志着JAVA语言的正式诞生。但没有相应的开发库而只靠Java语言来进行开发肯定是困难重重,所以Sun公司在1996年的1月23日发布了JDK 1.0来帮助开发人员的开发。JDK包括两大部分:运行环境和开发工具。到1998年底的1.2版本开始,Java技术栈被分割为以下关键部分:

  • Java 是一门包含了严格的强类型的语言。
  • Java 2 平台标准版本,也被称为J2SE,指的是平台以及java.lang和java.io包中包含的类。它是构建java应用程序的基础
  • Java虚拟机或JVM是一个可以运行编译后Java代码软件虚拟机,JVM将把编译后的字节码翻译成机器码(通常被称作及时编译器或者JIT编译器)JVM还负责内存管理,从而实现了应用程序的代码简化。
  • Java开发工具包或JDK,它包含了Java语言编译器、文档生成器、与本地代码协作的工具和用语调试平台类的Java源代码
  • Java运行环境或JRE,它包含JVM但是不含有任何JDK当中的开发工具。不过JDK当中也确实包含了一个JRE。

这五个都只是规范而不是实现,尽管SUN公司提供了标准实现,但是其他还有许多公司根据标准提供了自己的实现。如IBM、Oracle、Apple。尽管这些公司提供的实现是免费的,但不是自由开源的。因此开源社区也迅速形成了OpenJDK项目,该项目将提供Java技术栈的开源实现。Oracle收购SUN公司后Sun和Oracle的实现变成了同一个。

0x02. 企业级Java的诞生

随着Internet的发展和Web应用程序的流行。Sun公司意识到了,应用程序的开发对更高级别的开发工具的要求。1998年,就在J2SE 1.2 发布之前,Sun公司宣布它正在开发一个称为Java 专业版或JPE的产品。同时它还研发了一种称为Servlet的技术,这是一个能够处理HTTP请求的小型应用程序。 Servlet和JPE在经历过几次内部迭代过程之后,Sun公司于1999年12月12日发布了Java 2平台的企业版(J2EE)版本为1.2版本好对应着当时的Java和J2SE版本,该规范包括:

  • Servlets2.2
  • JDBC Extension API 2.0
  • Java Naming and Directory Interface(JNDI) 1.0
  • JavaServer Pages(JSP) 1.2
  • Enterprise JavaBeans(EJB) 1.1
  • Java Message Service(JMS)1.0
  • Java Transaction API(JTA)1.0
  • JavaMail API 1.1
  • JavaBeans Activation Framework(JAF) 1.0
    J2EE 迅速的成为对J2SE的补充,并且随着多年的发展,一些组建已经被认为必须从J2EE迁移到J2SE当中。

0x03 Java SE 和Java EE共同发展

J2EE 1.3在2001年9月发布,在1.4版本发布前进行了多次的升级,下面的技术加入了J2EE规范:

  • Java API for XML Procession(JAXP) 1.1
  • JavaServer Pages Standard Tag Library(JSTL) 1.0
  • J2EE Connector Architecture 1.0
  • java Authentication and Authorization Service(JAAS) 1.0

J2EE 1.4代表着Java平台企业版的一次极大飞跃。在2003年11月发布,它包含了Servlets 2.4 和JSP 2.0。在该版本中,JDBC,JNDI和JAAS被移入了JAVA/J2SE 1.4 当中。被认为是JAVA的必须的一部分。 该版本还把J2EE组件分割成了几个更高级别的分类:

  • Web服务技术:包括JAXP 1.2 和J2EE 1.1中的心Web服务,Java-API for XML-based RPC (JAX-RPC 1.1)、Java API for XML Registeries(JAXR 1.0)
  • Web 应用程序技术:包括Servlet、JSP、和JSTL 1.1组件,还有新的Java Server Faces(JSF) 1.1
  • 企业级应用程序技术:EJB 2.1、Connector Architecture 1.5 、JMS 1.1、JTA、JavaMail 1.3和JAF
  • 管理和安全技术包括JACC、JMX

0x04 名称变化的时代

Java和J2SE 5.0 在2004年9月发布,他们包含了泛型、注解 和枚举三种特性。这是Java语言历史上最大的改变了,从此以后Sun公司决定去掉版本号前的1. 而只使用次版本号码。所以使用 5 开始作为版本号的代码。 同时Sun公司决定使用Java SE 取代Java 2 平台标准版,Java EE 取代J2EE。Java EE 5 也包括了许多重要的修改:

  • JAXP 和JMX被移到了J2SE5.0 中
  • Java API for XML-based Web Services(JAX-WS)2.0、JAXB 2.0、Web Service Metadata for the Java Platform 2.0、SOAP with Attachments API for Java(SAAJ) 1.2以及Streaming API for XML(stAX) 1.0被添加到了Web服务技术中。
  • Java Persistence API(JPA)1.0和Common Annotations API 1.0被添加到了企业级应用程序技术当中。

0x05 Java SE和EE发展停滞

2006年12月Java SE 6 的发布标志着Java SE 持续的大概5年的发展停滞期。在这段时间许多Java 社区都感到沮丧甚至生气。Sun公司继续承诺在Java SE 7 中添加新特性和API但是计划推迟了一年又一年。与此同时其他技术例如C#语言和 .NET平台,赶上并超越了Java平台,更糟的是Java EE也进入了发展停滞期直到2009年,距离Java EE 5 发布已经过去了三年多的时间。Java EE6的开发在2009年重新开始,并在2009年12月发布,距离Java EE 5 的发布已经过去了3年零7个月,距离Java SE 6 的发布几乎接近三年。
此时Java 企业版已经变的极其庞大了:

  • SAAJ, StAX和JAF被移到了Java SE 6 中。
  • Java API for RESTful Web Services(JAX-RS)1.1 和Java APIs for XML Messaging(JAXm)1.3规范被添加到Web服务技术中。
  • Java Unified expression Language(JUEL或称为EL)2.0被添加到Web应用程序技术中。
  • Management and Security Technologies中添加 Java Authentication Service Provider Interface for Containers(JASPIC)1.0
  • 企业级应用程序技术增加了大量的新特性,包括Contexts and Dependency Injection for Java(CDI)1.0 、Dependency Injection for Java 1.0、Bean Validation 1.0、Managed Beans 1.0和Interceptors 1.1,还有对其他组件进行了更新。
  • 该版本还引入了基于注解和编程式应用程序配置,是对使用超过10年的传统XML配置的补充。
  • 该版本标志着Java EE Web Profile 的引入

就在这五年的发展停滞期当中,Oracle公司于2010年1月收购了Sun 公司。在初期,Oracle开始重组Java 团队,创建于开源社区的沟通渠道,并发布了未来Java SE和EE发发展蓝图。比Sun公司的承诺更加实际。首先完成的事Java SE 7,Oracle在2011年6月按时发布,距离Java SE 6 的发布几乎已经过去的5年的时间。随后在2013年发布了Java EE 7,距离Java EE 6 的发布已经过去了3年零7个月。Oracle现在表示Java的发展已经进入了正轨,以后每两年将会发布两的平台的新版本,让我们拭目以待。

0x06. 最新的平台特性

Java SE 7 增加了对动态语言和64位压缩指针(用于改善64位的JVM的性能)的支持。还添加了菱形操作符(<>).泛型实例话的简写。在Java 7 之前的Java中另一种常见的问题时:使用try-catch-finally块管理可关闭的资源。Java 7 的try-with-resources极大地简化了这个任务。另外就是 在Java 7 当中可以在单个catch块当中同时捕获多个异常。另外终于可以将字符串用于switch的参数了。

Java EE 7 在2013年6月12日发布,它包含了许多变动和新特性:

  • JAXB被添加到了Java SE 7 当中。
  • Batch Application for the Java Platform 1.0和Concurrency Utilities for Java EE 1.0 被添加到了企业级应用程序技术当中。
  • Web应用程序技术中添加了Java API for WebSockets 1.0和Java API for JSON Processiong 1.0
  • Java Unified Expression Language 得到了极大的扩展,其中包括lambda表达式和对Java SE8 Collections Stream API的模拟。

Java SE 8 的新特性最明显的就是添加了lambda表达式,其本质是匿名函数,在定义和调用时不需要被赋予类型名或绑定到标志符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值