Java 语言的发展史

维基百科引入

早期的Java

语言最开始只是Sun计算机(Sun MicroSystems)公司在1990年12月开始研究的一个内部项目。Sun计算机公司的一个叫作帕特里克·诺顿的工程师被公司本身开发的C++和C语言编译器搞得焦头烂额,由于其中的API极其难用。帕特里克决定改用NeXT,同时他也得到了研究公司的一个叫作“Stealth计划”的项目的机会。程序员

“Stealth计划”后来更名为“Green计划”,詹姆斯·高斯林和麦克·舍林丹(Mike Sheridan)也加入了帕特里克的工做小组。他们和其余几个工程师一块儿在加利福尼亚州门罗帕克市沙丘路的一个小工做室里面研究开发新技术,瞄准下一代智能家电(如微波炉)的程序设计,Sun公司预料将来科技将在家用电器领域大显身手。团队最初考虑使用C++语言,可是不少成员包括Sun的首席科学家比尔·乔伊,发现C++和可用的API在某些方面存在很大问题。正则表达式

工做小组使用的是嵌入式系统,能够用的资源极其有限。不少成员发现C++太复杂以致不少开发者常常错误使用。他们发现C++缺乏垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。最后,他们想要一种易于移植到各类设备上的平台。编程

根据可用的资金,乔伊决定开发一种集C语言和Mesa语言大成的新语言,在一份报告上,乔伊把它叫作“将来”,他提议Sun公司的工程师应该在C++的基础上,开发一种面向对象的环境。最初,高斯林试图修改和扩展C++的功能,他本身称这种新语言为C++ ++ --,可是后来他放弃了。他将要创造出一种全新的语言,被他命名为“Oak”(橡树),以他的办公室外的橡树命名。小程序

就像不少开发新技术的秘密工程同样,工做小组没日没夜地工做到了1993年的夏天,他们可以演示新平台的一部分了,包括Green操做系统,Oak的程序设计语言,类库及其硬件。最初的尝试是面向一种类PDA设备,被命名为Star7,这种设备有鲜艳的图形界面和被称为“Duke”的智能代理来帮助用户。1992年12月3日,这台设备进行了展现。后端

同年11月,Green计划被转化成了“FirstPerson有限公司”,一个Sun公司的全资子公司,团队也被从新安排到了帕洛阿尔托。FirstPerson团队对建造一种高度交互的设备感兴趣,当时代华纳发布了一个关于电视机顶盒的征求提议书时(Request for proposal),FirstPerson改变了他们的目标,做为对征求意见书的响应,提出了一个机顶盒平台的提议。可是有线电视业界以为FirstPerson的平台给予用户过多的控制权,所以FirstPerson的投标败给了SGI。与3DO公司的另一笔关于机顶盒的交易也没有成功,因为他们的平台不能在电视工业产生任何效益,公司被并回Sun公司。数组

1992年的夏天,当Oak语言开发成功后,研究者们向硬件生产商进行演示了Green操做系统、Oak的程序设计语言、类库和其硬件,以说服他们使用Oak语言生产硬件芯片,可是,硬件生产商并未对此产生极大的热情。由于他们认为,在全部人对Oak语言还一无所知的状况下,就生产硬件产品的风险实在太大了,因此Oak语言也就由于缺少硬件的支持而没法进入市场,从而被搁置了下来。浏览器

1994年六、7月间,在经历了一场历时三天的讨论以后,团队决定再一次改变了努力的目标,此次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向一样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。做为原型,帕特里克·诺顿写了一个小型万维网浏览器WebRunner。安全

1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的静态网页可以“灵活”起来,急需一种软件技术来开发一种程序,这种程序能够经过网络传播而且可以跨平台运行。因而,世界各大IT企业为此纷纷投入了大量的人力、物力和财力。这个时候,Sun公司想起了那个被搁置起来好久的Oak,而且从新审视了那个用软件编写的试验平台,因为它是按照嵌入式系统硬件平台体系结构进行编写的,因此很是小,特别适用于网络上的传输系统,而Oak也是一种精简的语言,程序很是小,适合在网络上传输。Sun公司首先推出了能够嵌入网页而且能够随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并将Oak改名为Java(在申请注册商标时,发现Oak已经被人使用了,再想了一系列名字以后,最终,使用了提议者在喝一杯Java咖啡时无心提到的Java词语)。5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软等各大公司都纷纷中止了本身的相关开发项目,竞相购买了Java使用许可证,并为本身的产品开发了相应的Java平台。服务器

1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制做。10月,Sun公司发布了Java平台的第一个即时(JIT)编译器。网络

1997年2月,JDK 1.1面世,在随后的3周时间里,达到了22万次的下载量。4月2日,Java One会议召开,参会者逾一万人,创当时全球同类会议规模之纪录。9月,Java Developer Connection社区成员超过10万。

1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台(简称为Java2)的3个版本:J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境;J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境;J2EE(Java 2Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器。Java 2平台的发布,是Java发展过程当中最重要的一个里程碑,标志着Java的应用开始普及。

1999年4月27日,HotSpot虚拟机发布。HotSpot虚拟机发布时是做为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及以后全部版本的Sun JDK的默认虚拟机  。

2000年5月,JDK1.三、JDK1.4和J2SE1.3相继发布,几周后其得到了Apple公司Mac OSX的工业标准的支持。2001年9月24日,J2EE1.3发布。2002年2月26日,J2SE1.4发布。自此Java的计算能力有了大幅提高,与J2SE1.3相比,其多了近62%的类和接口。在这些新特性当中,还提供了普遍的XML支持、安全套接字(Socket)支持(经过SSL与TLS协议)、全新的I/OAPI、正则表达式、日志与断言。2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5改名为Java SE 5.0(内部版本号1.5.0),代号为“Tiger”,Tiger包含了从1996年发布1.0版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。

2005年6月,在Java One大会上,Sun公司发布了Java SE 6。此时,Java的各类版本已经改名,已取消其中的数字2,如J2EE改名为JavaEE,J2SE改名为JavaSE,J2ME改名为JavaME

2006年11月13日,Java技术的发明者Sun公司宣布,将Java技术做为免费软件对外发布。Sun公司正式发布的有关Java平台标准版的第一批源代码,以及Java迷你版的可执行源代码。从2007年3月起,全世界全部的开发人员都可对Java源代码进行修改  。

2009年,甲骨文公司宣布收购Sun  。2010年,Java编程语言的共同创始人之一詹姆斯·高斯林从Oracle公司辞职。2011年,甲骨文公司举行了全球性的活动,以庆祝Java7的推出,随后Java7正式发布。2014年,甲骨文公司发布了Java8正式版

Java和互联网

1994年6月,在同约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·施密特经历了一场历时三天的头脑风暴后,团队决定再一次改变努力的目标,此次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向一样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。做为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来更名为HotJava。

1994年10月,HotJava和Java平台为公司高层进行演示。1994年,Java 1.0a版本已经能够提供下载,可是Java和HotJava浏览器的第一次公开发布倒是在1995年3月23日SunWorld大会上进行的。升阳公司 的科学指导约翰·盖吉宣告Java技术。这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一块儿进行的,宣布网景将在其浏览器中包含对Java的支持。1996年1月,Sun公司成立了Java业务集团,专门开发Java技术。

Java和“Java”

JAVA语言的前身并不是是如今的这个名字,它的前身的名字叫作Oak,意思是橡树的意思,当初SUN公司的Green项目小组负责人很是喜欢在办公室的一棵橡树,因此命名为Oak。

因为商标搜索显示Oak已被一家显卡制造商注册。因而同年,Oak被更名为Java。当使用十六进制编辑器打开由Java源代码编译出的二进制文件(.class文件)的话,最前面的32位将显示为CA FE BA BE,即词组“CAFE BABE”(咖啡屋宝贝)

Sun公司开发了一种称为Oak的面向对象语言。可是在申请注册商标时,发现Oak已经被人使用了,当时他们正在咖啡馆喝着Java咖啡,有一我的灵机一动说就叫Java怎样,这个提议获得了其余人的赞同。最终Oak语言更名为Java。

 

Java近况

在流行几年以后,Java在浏览器中的地位被逐步侵蚀。它在简单交互性动画方面的用途已经彻底被Adobe公司的Flash排挤,2005年Java倾向只被用于雅虎游戏那样的更为复杂的应用程序。Java同时遭受到来自微软的反对,他们决定在新版本的Internet Explorer和Windows中再也不附带Java平台。

与此相反,在万维网的服务器端和手持设备上,Java变得更加流行。不少网站在后端使用JSP和其余的Java技术。

在桌面系统上,独立的Java程序仍是相对少见这是由于Java平台的运行开销较大,而许多人的计算机上没有安装Java,因为网络带宽在 之前较小,下载Java曾经是个耗时的事情。可是随着计算机计算能力、网络带宽在10年中获取了很大的进步,同时虚拟机和编译器的质量获得了提升,许多应 用程序获得了普遍的使用

Java开放源代码项目

2006年SUN在JavaOne公布Java 开放源代码项目,并推出OpenJDK项目[13]。Java虚拟机、Java编译器和Java类库以GNU通用公共许可证公开。

关于Java的批评

Java试图经过新的方式解决软件编写的复杂性。不少人认为Java语言作到了它承诺的一切。可是Java并非一门完美的语言。

语言问题

有些程序师不喜欢原始类型(primitive type)和类别(class)的分离,尤为是那些曾经使用过Smalltalk和Ruby的程序员。Java的代码相对于其余的代码来讲过于冗长,这与它的轻便化声明相违背。

Java是一种单继承的语言。这也致使了程序师在试图使用多重继承时候的不便,而不少语言均可以使用这个特性。可是Java可使用接口类,把多重继承可能致使的风险减小到最小。Java不支持运算符重载,这是为了防止运算符重载使得代码的功能变得不清晰。可是用Java实现的语言Groovy能够进行运算符重载。过去Java对于文本的操做和其余语言,好比Perl和PHP相比差的较多,但Java在1.4版本时候引入了正则表达式。

至Java 1.7为止,Java语言不支持闭包(closure)和混入(mixin)特性。

Java 1.8加入lambda表达式(Lambda Expressions)[18]。

类库问题

使用Swing平台编写的带有GUI(图形用户界面)的程序和其余原始程序很是不一样。选用AWT工 具包编写程序的程序师看到的都是原始接口,并且也没法得到先进的GUI编程支持,若是使用的话,就要提供每一个平台上面所需的API,这将是一项庞大的工 程。Swing则是彻底用Java语言所写的程序,避免了接口元素重复的问题,只使用全部平台都支持的最基本的绘图机制。可是不少用户不知道如何在 Java风格和Windows风格之间进行转换,结果形成了Java程序的接口在不少程序中很是特殊。苹果计算机已经提供了优化过的Java运行时程序,包含了Mac OS X的经典Aqua接口风格。

性能问题

因为Java编译器和虚拟机的不一样对Java代码的性能影响比语言自己的影响大的多,因此统一讨论Java的程序的性能常常是有误导性的。据IBM的数据,在一样的硬件上2001年时的IBM JDK版本的性能是1996年的JDK版本的十倍左右。而即便是在同一时期,不一样公司的JDK和JRE的性能也不同,好比SUN、IBM、BEA等公司都有本身开发的JDK和JRE

Java语言的一些特性不可避免的有额外的性能代价,例如数组范围检查、运行时类型检查等等。Java程序的性能还会由于不一样的动态复杂性 和垃圾处理机制使用的多少而各有不一样。若是JVM的实现比较优化的话,那么这些功能甚至能够增长存储器分配的性能。这和老是使用STL或者托管C++的程 序的状况相似。

尽管如此,仍然有许多人认为Java的性能低。这部分归因于Sun公司最初的JVM实现使用未优化的解释机制来运行字节码。一些新版本的JVM使用Just-In-Time(JIT) 编译器,在加载字节码的时候将其编译成针对运行环境的本地代码来实现一些本地编译器的优化特性。Just-In-Time机制和本地编译的性能比较仍旧是 一个有争议的话题。JIT编译须要不少时间,对于运行时间不长或者代码不少的大型程序并不适宜。可是不算JIT编译阶段的话,程序的运行性能在不少JVM下能够和本地编译的程序一争短长,甚至在一些计算比较密集的数值计算领域也是这样。当前,Java已经使用更先进的HotSpot技 术来代替JIT技术,Java的性能有了更进一步的提高。另外,在使用-server选项运行Java程序时,也能够对Java进行更深刻的优化,好比在 运行时将调用较多的方法内联(inline)到程序中来提升运行速度,这就是所谓的“动态优化”,而本地编译器是没法作到这一点的;这也是一些Java代 码比对应用C/C++等语言编写的本地代码运行的更快的缘由之一。微软的.NET平台也使用JIT编译器,因此也有相似问题。

Java的设计目的主要是安全性和可携性,因此对于一些特性,好比对硬件架构和存储器地址访问的直接访问都被去除了。若是须要间接调用这些底层功能的话,就须要使用JNI(Java 本地接口)来调用本地代码,而间接访问意味着频繁调用这些特性时性能损失会很大,微软的.NET平台也有这样的问题。因此到当前为止,性能敏感的代码,例 如驱动程序和3D电子游戏,仍是大多使用本地编译,甚至直接以不直接支持面向对象的C语言或机器代码编写。但最近已经有了许多用纯Java编写的3D游 戏,其效果与用C语言编写的不相上下,例如“合金战士”(英文名:Chrome)。这主要是由于新版的Java 3D技术已经能像C++同样调用硬件加速,也就是使用显卡来加速,不管是C++仍是Java语言写的3D游戏都是使用显卡及GPU来处理,从而使得CPU能够专一于其余方面的工做。

 

版本历史

1998年12月,JDK1.2的发布,成为了JAVA语言的里程碑,JAVA也被首次分为J2SE,J2ME,J2EE三个开发技术。

2005年,SUN公司将JAVA 2中的2去掉,J2SE改名为Java SE,JDK1.6改名为Java SE6。

2009年,Oracle公司收购了SUN公司,这对Java的进一步发展起到了推进做用。

    1995年5月23日,Java语言诞生

    1996年1月,第一个JDK-JDK1.0诞生

    1996年4月,10个最主要的操做系统供应商申明将在其产品中嵌入JAVA技术

    1996年9月,约8.3万个网页应用了JAVA技术来制做

    1997年2月18日,JDK1.1发布

    1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录

    1997年9月,JavaDeveloperConnection社区成员超过十万

    1998年2月,JDK1.1被下载超过2,000,000次

    1998年12月8日,JAVA2企业平台J2EE发布

    1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)

    2000年5月8日,JDK1.3发布

    2000年5月29日,JDK1.4发布

    2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机

    2001年9月24日,J2EE1.3发布

    2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提高

    2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5改名为Java SE 5.0

    2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各类版本已经改名,以取消其中的数字“2”:J2EE改名为Java EE,J2SE改名为Java SE,J2ME改名为Java ME

    2006年12月,SUN公司发布JRE6.0

    2009年12月,SUN公司发布Java EE 6

    2010年11月,因为Oracle公司对于Java社群的不友善,所以Apache扬言将退出

    2011年7月28日,Oracle公司发布Java SE 7

    2014年3月18日,Oracle公司发表Java SE 8

    2017年9月21日,Oracle公司发表Java SE 9

    2018年3月21日,Oracle公司发表Java SE 10

    2018年9月25日,Java SE 11发布

版本历史

Java 11,12的发布,Spring社区SpringBoot的发展,都使Java保持着极高的活跃性。

全球有25亿Java器件运行着Java,450多万Java开发者活跃在地球的每一个角落,数以千万计的Web用户每次上网都亲历Java的威力。今天,Java运行在7.08亿手机、10亿智能卡和7亿PC机上,并为28款可兼容的应用服务器提供了功能强大的平台,愈来愈多的企业由于使用了Java而提升了生产效率。

相关文章
相关标签/搜索