你对Java了解多少?来看看粤嵌Java培训为你解读Java语言的发展史把!
Java语言源于1991年Sun公司JamesGosling领导的的Ork项目,1995年Sun公司正式起名为Java,并提出""Writeonce,Runanywhere""的口号。
1996年1月Java1。0发布,提供了一个解释执行的Java虚拟机,其时恰逢互联网开始兴起,Java的Applet能在Mozilla浏览器中运行,被看作是未来的互联网语言。
1997年2月Java1。1发布,Java语言的基本形态基本确定了,比如反射(reflection),JavaBean,接口和类的关系等等,一直到今天都保持一致。然而,Java初的一些目标,如在浏览器中执行Applet,以及跨平台的图形界面Awt很快遭遇到负面的评价。
1998年12月,Java个里程碑式的版本,即Java1。2发布了。这个版本使用了JIT(Justintime)编译器技术,使得语言的可迁移性和执行效率达到的平衡,同时Collections集合类设计优良,在企业应用开发中迅速得到了广泛使用。Sun公司把Java技术体系分成三个方向,分别是J2SE(面向桌面和通用应用开发),J2EE(面向企业级应用开发),J2ME(面向移动终端开发).这个分类影响非常久远,体现出主流语言设计者的思想:针对于不同的应用领域,在形态,API集合等进行划分。
2000年5月,Java1。3发布,这个版本中Corba作为语言级别的分布式对象技术,成为J2EE的一个技术前提。J2EE受到Corba的设计的影响较大,早期EJB的Home,接口和实现就是Corba在C语言的实现,被移植到Java语言之中。J2EE中的Servlet规范获得了极大的成功,伴随着互联网的兴起,和浏览器直接通过HTTP协议交互的Servlet,和众多的MVC框架,成为Web1。0的网红。
2002年2月,Java1。4发布,Java语言真正走向成熟,提供了非常完备的语言特性,如NIO,正则表达式,XML处理器等。同年微软的。NET框架发布,两者开始了为期十几年的暗自竞争。从语言特性上来说,.NET后发先至,一直处于优势。但Java依赖良好的开发者生态,绝大多数大型软件公司的使用者众多和不断贡献,以及对Linux操作系统良好的支持,渐渐的在服务器端获得优势地位。
2004年9月,Java5发布,Sun不再采用J2SE,J2EE这种命名方式,而使用JavaSE5,JavaEE5这样的名称。我认为Java5是第二个里程碑式的版本。Java语言语法发生很大的变化,如注解(Annotation),装箱(Autoboxing),泛型(Generic),枚举(Enum),foreach等被加入,提供了java。util。concurrent并发包。Java5对于Java语言的推动是巨大的,特别是注解的加入,使得语言定义灵活了很多,程序员可以写出更加符合领域定义的描述性程序。
2006年5月,JavaEE5发布,其中主要是EJB3。0的版本升级。在此之前,EJB2。X版本被广泛质疑,SpringFramework创建者RodJohnson在经典书籍""J2EEDevelopmentwithoutEJB""中,对EJB2代表的分布式对象的设计方法予以批驳。EJB3则重新经过改造,使用注解方式,经过应用服务器对POJO对象进行增强来实现分布式服务能力。在某种程度,可以说EJB3挽救了JavaEE的过早消亡。
2006年12月,Java6发布,这个语言语法改进不多,但在虚拟机内部做了大量的改进,成为一个相当成熟稳定的版本,时至今日国内的很多公司依然以Java6作为主要Java开发版本来使用。同年Sun公司做出一个伟大的决定,将Java开源。OpenJDK从SunJDK1。7版本分支出去,成为今天OpenJDK的基础。OpenJDK6则由OpenJDK7裁剪而来,目前由红帽负责维护,来满足RedhatEnterpriseLinux6。X用户的需要。
2009年12月,JavaEE6发布,这个版本应该说是JavaEE到目前为止改进影响深远的一个版本。因为JavaEE5只有EJB3适应了Java注解语法的加入,而EE6全面接纳了注解。CDI和BeanValidation规范的加入,在POJO之上可以定义完备的语义,由容器来决定如何去做。Servlet也升级到3。0版本,并在接口上加入异步支持,使得系统整体效率可以大幅提高。EE划分为FullProfile和WebProfile,用户可以根据自己的需要选择不同的功能集。
在此之前,Oracle已经以74亿美金的价格收购了Sun公司,获得了Java商标和Java主导权。也收购了BEA公司,获得市场份额的应用服务器Webogic。JavaEE6虽然是收购之后发布的版本,但主要的设计工作仍然由原Sun公司的Java专家完成。2011年7月,Oracle发布Java7,其中主要的特性是NIO2和Fork/Join并发包,尽管语言上没有大的增强,但我个人认为,自从OracleJDK(包括OpenJDK7),Java虚拟机的稳定性真正做到的工业级,成为一个计算平台而服务于全世界。
2013年6月,Oracle发布JavaEE7,这个版本加入了Websocket,Batch的支持,并且引入Concurrency来对服务器多线程进行管控。然而所有的子规范,算上可选项(Optional)总共有40多项,开发者光是阅读规范文本就很吃力了,更不要说能够全局精通掌握。JavaEE规范的本质是企业级应用设计的经验凝结,每一个API都经过众多丰富经验的专家反复商议并确定。各个版本之间可以做到向后兼容,也就是说,即使是10年前写的Servlet程序,当前的开发者也可以流畅的阅读源码,经过部分代码调整和配置修改,可以部署在当今的应用服务器上。反过来,今后用Servlet4写的程序,浏览器和服务器通信使用全新的HTTP/2协议,但程序员在理解上不会有障碍,就是因为Servlet规范的API非常稳定,基本没有大的变化修改。
2014年3月,Oracle发布Java8,这个版本是我认为的第三个有里程碑意义的Java版本。其中引人注目的便是Lambda表达式了,从此Java语言原生提供了函数式编程能力。语言方面大的特性增加还有:Streams,Date/TimeAPI,新的Javascript引擎Nashorn,集合的并行计算支持等,Java8更加适应海量云计算的需要。
按照原来的计划,Java9应该在今年7月发布,但因为模块化(JPMS)投票未通过的原因,推迟到今年9月份发布。
JavaEE8也会在今年发布,预计的时间在8-10月。其中主要更新是Servlet4。0和CDI2。0,后者已经完成终规范的发布和投票。
看了java的发展史,如果你对Java感兴趣,欢迎咨询粤嵌Java培训了解更多详情。