Java发展史

640 阅读5分钟

Java发展史

摘要

\quad 最近在看《深入理解Java虚拟机》这本书,看到第一章讲Java的发展史,感觉特别有意思。突然意识到每天跟自己打交道的Java语言,从诞生到现在,也已经走过20多个春秋。而正如我们人生的每个阶段一样,Java也在他的发展历程中,同样也在发生着一次次的蜕变。

*1.Java的前身Oak

\quad 1991年4月,由James Gosling博士领导的绿色计划(Green Project)开始启动,最开始的时候这个计划是开发一种能在冰箱,收音机,机顶盒等电子产品上运行的程序。这就是Java的前身:Oak(橡树),最开始的时候,这的项目并不算成功,随着1995年互联网浪潮的兴起,Oak迅速发展并逐渐演变为Java语言。

*2.JDK1.0发布

\quad 1996年1月23日,JDK1.0发布,从此Java有了第一个正式版本的运行环境,即第一代虚拟机Sun Classic VM。JDK1.0的代表技术包括:Java虚拟机、Applet、AWT等。至此,Java语言开始被广泛应用,不仅用于网页制作,Java语言还被嵌入当时的主流操作系统中。

*3.JDK1.1发布

\quad 1997年2月19日,sun公司发布JDK1.1,Java技术的一些基础支撑点(JDBC)在其中发布。其技术代表包括:JAR文件格式、JDBC、JavaBeans、RMI。语法上,内部类以及反射都是在这个时候出现的。,

*4.JDK1.2发布

\quad 1998年12月4日,JDK迎来了一个里程碑式的版本JDK1.2。Sun在这个版本中将Java体系拆分为三个方向,分别是:
\quad面向桌面应用开发的J2SE(Java 2 Platform,Standard Edition)、
\quad面向企业级开发的J2EE(Java 2 Platform,Enterprise Edition)、
\quad面向手机等移动终端开发的J2ME(Java 2 Platform,Micro Edition)。

\quad 这个版本中的代表技术非常多,如EJB(企业级JavaBean)、Java Plug-in、Java IDL(Interface Definition Language,接口定义语言)、Swing等。并且在这个版本中Java虚拟机第一次内置了JIT(Just In Time,即时)编译器。
\quad 在语言和API级别上,Java添加了strictfp(精确)关键字,以及Collections集合类
\quad 1999年4月27日,HotSpot虚拟机发布。Sun公司收购了最初开发这款虚拟机的公司,并将其作为JDK1.2的附加程序,至此后来它成为了JDK1.3及之后所有版本的Sun JDK的默认虚拟机。

*5.JDK1.3发布

\quad 2000年5月8日,JDK1.3发布。与1.2相比,1.3的改进主要表现在一些类库上(如数学运算和新的Timer API等),JNDI(Java Naming and Directory Interface,Java命名和目录接口)服务从JDK1.3开始被作为一项平台级服务提供,使用CORBA IIOP来实现RMI的通信协议。这个版本同时对Java2D做了很多改进,提供了大量新的Java 2D API,并且添加了JavaSound类库。
\quad至此,Sun基本维持了每隔两年发布一个JDK的主版本的习惯。

*6.JDK1.4发布

\quad 2002年2月13日JDK1.4发布。JDK1.4是Java真正走向成熟的一个版本。以至于过去这么多年,仍有许多主流的应用(Spring,Hibernate,Struts等)能直接运行在JDK1.4之上。JDK1.4发布了许多新的技术特性,如正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器。
\quad 同年,微软的.NET Framework发布了。

*7.JDK1.5发布

\quad 2004年9月30日,JDK1.5发布。JDK1.5在Java语法易用性做了许大的改进。例如:自动装箱、泛型、动态注解、枚举、可变长参数、循环(foreach循环)遍历等语法特性都是在这个版本加入的。在虚拟机和API层面上,这个版本改进了Java的内存模型(Java Memory Model,JMM)、提供了java.util.concurrent并发包等。

*8.JDK1.6发布

\quad 2006年12月11日,JDK1.6发布。从这个版本开始,J2SE,J2EE,J2ME,被更名为JavaSE6,JavaEE6,JavaME6。同时,提供动态语言支持、提供编译器API和微型服务API。同时这个版本对Java虚拟机内部做了巨大改进,包括锁与同步、垃圾回收、类加载等方面的算法

*9.Oracle收购Sun,JDK1.7发布

\quad 在JDK1.7的开发期间,Sun公司由于相继在技术竞争和商业竞争中都陷入泥潭,股票大跌,最终无力推动JDK1.7的研发工作。2009年4月20日Oracle收购Sun后,为了JDK1.7的正式版能在2011年7月28日准时发布,不得不裁剪了既定目标,发布了“阉割版的1.7”,将原本输入1.7规划中的功能顺延。最终,JDK1.7的改进包括:提供新的GI收集器(2012年4月才正式转正)、加强对非Java语言的调用支持、升级类加载结构等。

*10.JDK1.8发布

\quad 2014年3月18日,JDK1.8发布。由于这本书出版的时候,Java8还没发布,所以书上没有详解,我也不好胡说。只是看一些博客写到Java8的一些新特性,包括Lambda表达式、接口中的默认方法default、用双冒号表示方法的调用、函数式接口(Predicate,Consumer,Supplier,Function,Comparator...)、Stream的操作(filter,sort,map,collect,Match...)、以及一些用以表示时间的API。

*11.总结

\quad 文中的大部分内容都是书上搬来的,所以有兴趣的可以去阅读一下原作。虽然知道了这些对我们的日常学习、工作也起不了什么实质性的作用,所以有些人会选择不去了解,反正对我写代码也没什么帮助。不过我觉得,当你愿意花时间花精力去一步步了解一门语言的时候,说明你对学习它产生了兴趣,那么学好它就只是时间问题了。