当前位置: 移动技术网 > IT编程>开发语言>Java > Java发展史之Java由来

Java发展史之Java由来

2019年07月22日  | 移动技术网IT编程  | 我要评论

java:由sun microsystems公司于1995年5月推出的java程序设计语言和java平台的总称。java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当时任职太阳微系统的詹姆斯·高斯林(james gosling)等人于1990年代初开发,它最初被命名为oak。java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

java从第一个版本诞生到现在已经有十九年的时间了。时间若白驹过隙,转瞬即逝。弹指间19年过去了,在下图所展示的时间线中,我们看到jdk已经发展到了1.8版。在这19年里还诞生了无数和java相关的产品、技术和标准。现在让我们走入时间隧道,从孕育java语言的时代开始,回顾一下java的发展轨迹和历史变迁。

1991年4月,由james gosling博士领导的绿色计划(green project)开始启动,此计划的目的是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个计划的产品就是java语言的前身:oak(橡树)。oak当时在消费品市场上并不算成功,但随着1995年互联网潮流的兴起,oak迅速找到了最适合自己发展的市场定位并蜕变成为java语言。

1995年5月23日,oak语言改名为java,并且在sunworld大会上正式发布java 1.0版本。java语言第一次提出了“write once,run anywhere”的口号。

1996年1月23日,jdk 1.0发布,java语言有了第一个正式版本的运行环境。jdk 1.0提供了一个纯解释执行的java虚拟机实现(sun classic vm)。jdk 1.0版本的代表技术包括:java虚拟机、 、awt等。

1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入java技术。同年9月,已有大约8.3万个网页应用了java技术来制作。在1996年5月底,sun公司于美国旧金山举行了首届javaone大会,从此javaone成为全世界数百万java语言开发者每年一度的技术盛会。

1997年2月19日,sun公司发布了jdk 1.1,java技术的一些最基础的支撑点(如jdbc等)都是在jdk 1.1版本中发布的,jdk 1.1版的技术代表有:jar文件格式、jdbc、javabeans、rmi。java语法也有了一定的发展,如内部类(inner class)和反射(reflection)都是在这个时候出现的。

直到1999年4月8日,jdk 1.1一共发布了1.1.0~1.1.8九个版本。从1.1.4之后,每个jdk版本都有一个自己的名字(工程代号),分别为:jdk 1.1.4 - sparkler(宝石)、jdk 1.1.5 - pumpkin(南瓜)、jdk 1.1.6 - abigail(阿比盖尔,女子名)、jdk 1.1.7 - brutus(布鲁图,古罗马政治家和将军)和jdk 1.1.8 – chelsea(切尔西,城市名)。

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集合类。

在1999年3月和7月,分别有jdk 1.2.1和jdk 1.2.2两个小版本发布。

1999年4月27日,hotspot虚拟机发布,hotspot最初由一家名为“longview technologies”的小公司开发,因为hotspot的优异表现,这家公司在1997年被sun公司收购了。hotspot虚拟机发布时是作为jdk 1.2的附加程序提供的,后来它成为了jdk 1.3及之后所有版本的sun jdk的默认虚拟机。

2000年5月8日,工程代号为kestrel(美洲红隼)的jdk 1.3发布,jdk 1.3相对于jdk 1.2的改进主要表现在一些类库上(如数学运算和新的timer api等),jndi服务从jdk 1.3开始被作为一项平台级服务提供(以前jndi仅仅是一项扩展),使用corba iiop来实现rmi的通信协议,等等。这个版本还对java 2d做了很多改进,提供了大量新的java 2d api,并且新添加了javasound类库。jdk 1.3有1个修正版本jdk 1.3.1,工程代号为ladybird(瓢虫),于2001年5月17日发布。

自从jdk 1.3开始,sun维持了一个习惯:大约每隔两年发布一个jdk的主版本,以动物命名,期间发布的各个修正版本则以昆虫作为工程名称。

2002年2月13日,jdk 1.4发布,工程代号为merlin(灰背隼)。jdk 1.4是java真正走向成熟的一个版本,compaq、fujitsu、sas、symbian、ibm等著名公司都有参与甚至实现自己独立的jdk 1.4。哪怕是在十多年后的今天,仍然有许多主流应用(spring、hibernate、struts等)能直接运行在jdk 1.4之上,或者继续发布能运行在jdk 1.4上的版本。jdk 1.4同样发布了很多新的技术特性,如正则表达式、异常链、nio、日志类、 解析器和xslt转换器等。

jdk 1.4有两个后续修正版:
  2002年9月16日发布的工程代号为grasshopper(蚱蜢)的jdk 1.4.1
  2003年6月26日发布的工程代号为mantis(螳螂)的jdk 1.4.2。

2002年前后还发生了一件与java没有直接关系,但事实上对java的发展进程影响很大的事件,那就是微软公司的.net work发布了。这个无论是技术实现上还是目标用户上都与java有很多相近之处的技术平台给java带来了很多讨论、比较和竞争,.net平台和java平台之间声势浩大的孰优孰劣的论战到目前为止都在继续。

2004年9月30日,jdk 1.5发布,工程代号tiger(老虎)。从jdk 1.2以来,java在语法层面上的变换一直很小,而jdk 1.5在java语法易用性上做出了非常大的改进。例如,自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等语法特性都是在jdk 1.5中加入的。在虚拟机和api层面上,这个版本改进了java的内存模型(java memory model,jmm)、提供了java.util.concurrent并发包等。另外,jdk 1.5是官方声明可以支持windows 9x平台的最后一个jdk版本。

2006年12月11日,jdk 1.6发布,工程代号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大会上,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本质上就是同一套代码库开发的产品。

jdk 1.6发布以后,由于代码复杂性的增加、jdk开源、开发javafx、经济危机及sun收购案等原因,sun在jdk发展以外的事情上耗费了很多资源,jdk的更新没有再维持两年发布一个主版本的发展速度。jdk 1.6到目前为止一共发布了37个update版本,最新的版本为java se 6 update 37,于2012年10月16日发布。

2009年2月19日,工程代号为dolphin(海豚)的jdk 1.7完成了其第一个里程碑版本。根据jdk 1.7的功能规划,一共设置了10个里程碑。最后一个里程碑版本原计划于2010年9月9日结束,但由于各种原因,jdk 1.7最终无法按计划完成。

从jdk 1.7最开始的功能规划来看,它本应是一个包含许多重要改进的jdk版本,其中的lambda项目(lambda表达式、函数式编程)、jigsaw项目(虚拟机模块化支持)、动态语言支持、garbagefirst收集器和coin项目(语言细节进化)等子项目对于java业界都会产生深远的影响。在jdk 1.7开发期间,sun公司由于相继在技术竞争和商业竞争中都陷入泥潭,公司的股票市值跌至仅有高峰时期的3%,已无力推动jdk 1.7的研发工作按正常计划进行。为了尽快结束jdk 1.7长期“跳票”的问题,oracle公司收购sun公司后不久便宣布将实行“b计划”,大幅裁剪了jdk 1.7预定目标,以便保证jdk 1.7的正式版能够于2011年7月28日准时发布。“b计划”把不能按时完成的lambda项目、jigsaw项目和coin项目的部分改进延迟到jdk 1.8之中。最终,jdk 1.7的主要改进包括:提供新的g1收集器(g1在发布时依然处于experimental状态,直至2012年4月的update 4中才正式“转正”)、加强对非java语言的调用支持(jsr-292,这项特性到目前为止依然没有完全实现定型)、升级类加载架构等。

到目前为止,jdk 1.7已经发布了9个update版本,最新的java se 7 update 9于2012年10月16日发布。从java se 7 update 4起,oracle开始支持mac os x操作系统,并在update 6中达到完全支持的程度,同时,在update 6中还对arm指令集架构提供了支持。至此,官方提供的jdk可以运行于windows(不含windows 9x)、linux、solaris和mac os平台上,支持arm、x86、x64和sparc指令集架构类型。

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 1.7

2014年3月18日,oracle公司发表java se 1.8

java语言有下面一些特点 :简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网