Java是由太阳(SUN)公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言,它伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。自诞生至今,还产生了无数和Java相关的产品、技术和标准。下面简要回顾一下Java的发展轨迹和历史变迁。
绿色计划
Java起源于SUN公司在1990年12月开始研究的一个内部项目,SUN公司的一个叫做巴特瑞·诺顿(Patrick Naughton)的工程师负责筹建这一项目组,但这个项目还没有具体的研究方向,但项目的原则基本确定:开发人员要少而精;项目在公司以外做,以避免公司传统势力影响;项目严格保密。
诺顿找了其他3个人(James Gosling(詹姆斯·高斯林)、 MikeSheridan(麦克·舍林丹))组成了一个4人小组,在1991年4月,这个小组搬到科罗拉多州的阿斯本,在哪里建立的实验开发室。他们把这一项目起名为“绿色”,以免引起外界的注意,这个时候项目还没有具体的方案,只是有一些原则,具体方案还需讨论。
稍后,SUN的首席科学家比尔·乔伊(Bill Joy)也加入了这一小组,成为这一小组的主管,负责协调与公司高层之间的联络。在比尔的主持下,项目组确定了项目的具体方向,准备开发一种通过多媒体界面控制所有家电的控制装置,当然这一控制装置离不开计算机芯片和计算机语言。
Ed Fran k这时也加入到绿色计划中,并领导硬件开发工作。James Gosling成为该计划的软件负责人和架构师。
Oak语言
团队最初考虑使用C 语言,但是发现C 和可用的API在某些方面存在很大问题。工作小组使用的是内嵌类型平台,可以用的资源极其有限。很多成员发现C 太复杂以至很多开发者经常错误使用。他们发现C 缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。
根据可用的资金,比尔·乔伊决定开发一种集C语言和Mesa语言搭成的新语言,在一份报告上,乔伊把它叫做“未来”,他提议SUN公司的工程师应该在C 的基础上,开发一种面向对象的环境。最初,高斯林试图修改和扩展C 的功能,他自己称这种新语言为C –,但是后来他放弃了。他将要创造出一种全新的语言,被他命名为“Oak”(橡树),这是以他的办公室外的一颗树而命名。
Star7
工作小组没日没夜地工作到了1992年的夏天,他们能够演示新平台的一部分了,最初的尝试是面向一种类PDA设备,被命名为Star7,这种设备有鲜艳的图形界面和被称为“Duke”的智能代理来帮助用户。与此同时绿计划也建立了一套新的语言、一个操作系统、一个硬件平台和一套接口。
太阳公司总裁麦克尼利对此十分赞赏,鼓励小组一定要把项目搞成功,打入市场。同年11月,Green计划项目组被转化成了“FirstPerson有限公司”,一个SUN公司的全资子公司,想让这一控制装置在互动电视领域有所作为。但现实很残酷,1993年2月,FirstPerson公司先后失去时代华纳和3DO公司的交易,在市场上也不是很受欢迎。为此,麦克尼利大为恼火,威胁要撤销这一子公司。
Oak的新应用
1994年6、7月间,团队决定再一次改变了努力的目标,这次他们决定将oak技术应用于万维网。他们认为随着互联网的兴起和Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,诺顿写了一个以oak语言技术为基础的小型万维网浏览器(WebRunner,后来改名为HotJava)和其他一些互联网交互性应用程序。
java的命名
1994年底,麦克尼利有意撤销子公司,但乔伊恳请给子公司最后一次机会,让他们把oak语言推向互联网市场看看效果怎样。为了谨慎起见,他们把这一浏览器发给少数人看效果,其中就有网景公司的克拉克和安德鲁森,他们两个人对此新技术高度评价,这样,麦克尼利批准将oak语言推向市场的计划,商标搜索显示Oak已被一家显卡制造商注册,因此团队需要找到一个新名字,最终由律师在众多候选名字中选择了java。
Java问世
命名之后,子公司就开始了强势的营销计划,1995年3月,营销部门就攻下了《圣何塞信使消息报》的关,在头版刊登了《为什么太阳公司认为HotJAVA将会祝你发展》,这样人们纷纷向太阳公司询问java语言的情况。
1995年5月23日,在SunWorld年度大会上JAVA程序设计语言正式与世人见面了,Sun公司正式介绍了Java和HotJava。并且会上安德鲁森表示将来网景公司会把JAVA语言和浏览器技术合二为一,这样java语言一经推出立即受到人们欢迎。会上正式发布了Java 1.0版本,Java语言第一次提出了“Write Once,Run Anywhere”的口号。即不论你用的计算机采用的是哪一种操作系统,只要有JAVA虚拟机,用java语言编写的程序都可以运行,这就解决了长期困扰程序员的软件不兼容问题,为windows编写的应用程序,也可以在mac、unix系统上运行。
对于java语言的推广,太阳公司选择把它的发展计划发布到互联网上,恳请业内开发商给予回应,同时大规模向需要java语言的公司发放许可证,允许这些拥有许可证的公司对java语言进行改进,但它们需要征得太阳公司的批准。
最早接受java语言的公司是网景公司,1995年6月,Netscape在它的浏览器中支持Java。10月,Oracle在其将发布的WWW网页系统中包含了一个兼容的Java浏览器。12月,Microsoft在其IE浏览器中支持Java(协议规定微软在5年间每年支付给太阳公司350万美元,太阳公司向微软发放JAVA语言使用许可证,微软可使用java语言编写新版的浏览器软件)。
Java技术的发展
1996年1月,太阳公司成立了Javasoft公司,专门开发和推广Java技术。
1996年1月23日,JDK 1.0发布,Java语言有了第一个正式版本的运行环境。JDK 1.0(Java Development Kit
(Jave开发工具包))提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。JDK 1.0版本的代表技术包括:Java虚拟机、Applet、AWT等。
1997年2月19日,Sun公司发布了JDK 1.1,Java技术的一些最基础的支撑点(如JDBC等)都是在JDK 1.1版本中发布的,JDK 1.1版的技术代表有:JAR文件格式、JDBC、JavaBeans、RMI。Java语法也有了一定的发展,如内部类(Inner Class)和反射(Reflection)都是在这个时候出现的。
1998年12月4日,JDK迎来了一个里程碑式的版本JDK 1.2,工程代号为Playground(竞技场),Sun在这个版本中把Java技术体系拆分为3个方向,分别是面向桌面应用开发的J2SE(Java 2 Platform, Standard Edition)、面向企业级开发的J2EE(Java 2 Platform, Enterprise Edition)和面向手机等移动终端开发的J2ME(Java 2 Platform, Micro Edition)。在这个版本中出现的代表性技术非常多,如EJB、Java Plug-in、Java IDL、Swing等,并且这个版本中Java虚拟机第一次内置了JIT(Just In Time)编译器(JDK 1.2中曾并存过3个虚拟机,Classic VM、HotSpot VM和Exact VM,其中Exact VM只在Solaris平台出现过;后面两个虚拟机都是内置JIT编译器的,而之前版本所带的Classic VM只能以外挂的形式使用JIT编译器)。在语言和API级别上,Java添加了strictfp关键字与现在Java编码之中极为常用的一系列Collections集合类。在此之前java开发者版本都是以java development kit名称发表,简称JDK,而J2SE等则是平台名称,包含了JDK和java程序语言。Java 进入了
Java2 时代。
此后java平台标准版约以2年为周期推出重大版本更新。
2004年9月30日,JDK 1.5发布(准确来说是J2SE 5.0),工程代号Tiger(老虎)。从JDK 1.2以来,Java在语法层面上的变换一直很小,而JDK 1.5在Java语法易用性上做出了非常大的改进。例如,自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等语法特性都是在JDK 1.5中加入的。在虚拟机和API层面上,这个版本改进了Java的内存模型(Java Memory Model,JMM)、提供了java.util.concurrent并发包等。
2006年12月11日,JDK 1.6发布(1.6是开发者版本,对应的产品版本称为Java SE6),工程代号Mustang(野马)。在这个版本中,Sun终结了从JDK 1.2开始已经有8年历史的J2EE、J2SE、J2ME的命名方式,启用Java SE 6、Java EE 6、Java ME 6的命名方式。JDK 1.6的改进包括:提供动态语言支持(通过内置Mozilla Java Rhino引擎实现)、提供编译API和微型HTTP服务器API等。同时,这个版本对Java虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的算法都有相当多的改动。
在2006年11月13日的JavaOne大会(1996年5月底,Sun公司于美国旧金山举行了首届JavaOne大会,从此JavaOne成为全世界数百万Java语言开发者每年一度的技术盛会)上,Sun公司宣布最终会将Java开源,并在随后的一年多时间内,陆续将JDK的各个部分在GPL v2(GNU General Public
License v2)协议下公开了源码,并建立了OpenJDK组织对这些源码进行独立管理。除了极少量的产权代码(Encumbered Code,这部分代码大多是Sun本身也无权限进行开源处理的)外,OpenJDK几乎包括了Sun JDK的全部代码,OpenJDK的质量主管曾经表示,在JDK 1.7中,Sun JDK和OpenJDK除了代码文件头的版权注释之外,代码基本上完全一样,所以OpenJDK 7与Sun JDK 1.7本质上就是同一套代码库开发的产品。
2009年4月20日,Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有(Java语言本身并不属于哪间公司所有,它由JCP组织进行管理,尽管JCP主要是由Sun公司或者说Oracle公司所领导的)。由于此前Oracle公司已经收购了另外一家大型的中间件企业BEA公司,在完成对Sun公司的收购之后,Oracle公司分别从BEA和Sun中取得了目前三大商业虚拟机的其中两个:JRockit和HotSpot,Oracle公司宣布在未来1~2年的时间内,将把这两个优秀的虚拟机互相取长补短,最终合二为一。可以预见在不久的将来,Java虚拟机技术将会产生相当巨大的变化。
2011年7月28日,Oracle公司发布Java SE 7。
2014年3月18日,Oracle公司发布Java SE 8,开始支持lambda表达式。
2017 年7 月, Oracle 公司发布 JavaSE 9 GA 版本(General Availability)
2018年3月,java SE10版本发布。
2018 年9月,java SE11版本发布。
参考资料:
1、http://www.php.cn/java-article-353609.html
2、https://www.cnblogs.com/yshgotop/p/9972327.html