Java的历史是非常有意思的。1990年底,Sun Microsystems在工作站计算机市场上领先世界,并继续保持健康发展。Sun想把本公司的创新和专业知识应用到即将到来的消费电子市场领域,于是该公司邀请了一些顶级工程师,组建了一个Green Team团队(核心成员有: James Gosling, Mike Sheridan, Patrick Naughton和Bill Joy)来研究这个项目,这个项目主要做数字设备(例如:交互式电视、机顶盒等)。在1992年,Green Team团队研发了一个交互式手持式家庭娱乐设备,首次展示了其独立于处理器的新编程语言的潜力。由此可见这门语言的先进性,Java的先进性体现在它的设计原则:
- 第一条:它必须是,简单、面向对象、熟悉
- 第二条:它必须是,健壮的、安全的
- 第三条:它必须是,中立结构、可便携的
- 第四条:它必须是,高性能的
- 第五条:它必须是,可解释执行的、多线程的、动态的
Java的目标是,让应用程序开发者,“编写一次,到处运行“(write once,run anywhere),这意味着,它是一门跨平台的语言,James Gosling被誉为”Java 之父“。
由此可见,Java如些先进,它的发展自然不言而喻。下面,我们看看它的发展历程:
1991
1991年1月(Green Project)
一个名为“Green Project”的项目启动。该项旨在为家用电器提供支持,使这些电器智能化并且能够彼此交互。而且这些家电可以由远程客户端控制。Bill Joy、James Gosling、Mike Sheradin和Patrick Naughton是该项目的核心成员。
1991年2月(橡树(Oak))
James Gosling是该计划的软件负责人和架构师。他最初的目标是为“绿色计划”找到一个适合的语言来运行。他选择了C++,并对有需要的地方进行了扩展。但是这些功能不能满足计划的需要,因此建立一门新的语言成为当务之急。他开始夜以继日地忙于新语言的开发,并将其命名为“Oak”,因为他办公室窗外有一棵橡树。
1991年4月(硬件原型)
SPARC工作站10的架构师 Ed Fran k加入到绿色计划中,并领导硬件开发工作。该计划的目的是开发一个硬件原型,展示“绿色计划”的功能。该计划命名为star-seven(*7)。*7计划的成员有Craig Forrest、Al Frazier、Ed Frank、James Gosling、Patrick Naughton、Joe Parlang、JonPayn、 MikeSheridan和Chris Warth。
1991年6月(解释器)
James Gosling开发了Oak的解释器。
1992
1992年3月(Java命名)
由于Oak已被用作另一种已存在的编程语言名称,因此必须选一个新的名字——它就是Java,灵感来源于咖啡。
1992年9月(Star-Seven原型)
Star-seven(*7)带GUI的工作原型完成了,并向大家展示了其功能。与此同时绿计划也建立了一套新的语言、一个操作系统、一个硬件平台和一套接口。下面是如*7原型的PDA样机,并由James Gosling亲自演示它。我推荐你完整观看整个视频,感受这来自1991-1992年的神奇。
视频链接:http://www.youtube.com/watch?feature=player_embedded&v=1CsTH9S79qI
1992年11月(FirstPerson)
Green计划被转化成了“FirstPerson有限公司”,并作为一个独立实体合并到Sun的子公司。
1993
1993年2月(电视机顶盒)
FirstPerson试图从时代华纳获得一个电视机顶盒交互系统的一揽子订单。在那时,由于绿色计划不是很成功,随即失去了时代华纳的订单。于是开发的重心从家庭消费电子产品转到了电视盒机顶盒的相关平台上。
1993年9月(应用开发平台)
Arthur Van Hoff加入了开发组,他的工作是交互平台上的应用开发。
1994
1994年6月(Liveoak计划)
实际上电视交互市场并没有给FirstPerson公司带来收益,最终它倒闭了。员工都合并到Sun公司。Liveoak计划启动了,它的目标是使用Oak语言设计出一个操作系统。
1994年7月(网络浏览器时代)
Patrick Naughton设计了一个Web浏览器,该浏览器内部使用Java。Liveoak计划进行了调整,使得Oak语言支持互联网。
1994年9月(HotJava)
Naughton和Jonatha Payne开始从事名为HotJava的以Java语言为基础的网页浏览器项目,该项目获得了管理层的广泛认可。
1994年10月(Java编译器)
由Van Hoff编写的Java编译器用于Java语言,之前的编译器由James Gosling使用C语言编写。
1995
1995年5月(正式发布JDK Alpha and Beta)
在SunWorld大会,Sun公司正式介绍了Java和HotJava。
1995年5月23日Sun公司发布了Java 1.0(Java Development Kit (Jave开发工具包) , JDK1.0)
1995年6月(Netscape支持)
一次重大突破——Netscape在它的浏览器中支持Java。
1995年9月(HotJava)
由Sun组织的第一次Java开发者大会在纽约召开。
1995年10月(Oracle支持)
Oracle在其将发布的WWW网页系统中包含了一个兼容的Java浏览器。
1995年12月(Microsoft支持)
更广泛行业接受的信号,Microsoft在其IE浏览器中支持Java。
1996
1996年1月(1.0版本发布)
JDK1.0版本发布,这个版本为JDK1.0.2
1997
1997年2月(1.1版本发布)
JDK1.1版本发布。主要特点是:
- AWT 事件模型
- 内部类
- JavaBeans
- JDBC
- RMI
- 仅仅支持内省形式的反射,具体在java.beans包中实现
1998
1998年12月(1.2版本发布)
JDK1.2版本发布,代号Playground。该版本通常被称为Java 2版本,是见证重大转变的最流行版本。主要特点是:
- 增加了strictfp 关键字
- Swing图形API
- Sun的JVM首次配备了JIT编译器
- Java插件技术:https://www.oracle.com/technetwork/java/index-jsp-141438.html
- 集合框架
- 支持windows系统的JIT编译器
2000
2000年5月(1.3版本发布)
JDK1.3版本发布,代号Kestrel。主要特点是:
- Sun的JVM配备HotSpot JVM
- 支持Java命名与目录接口
- 支持Java平台调试体系
- JavaSound
- 支持代理类
2002
2002年2月(1.4版本发布)
J2SE1.4版本发布,代号Merlin。主要特点是:
- 增加assert关键字
- 支持正则表达式
- 异常链
- 支持IPv6
- NIO
- 日志API
- Image I/O API
- 集成XML解析器和JAXP
- 集成JCE、JSSE、JAAS
- 支持Java Web Start
- Preferences API:java.util.prefs
2004
2004年9月(5.0版本发布)
J2SE5.0发布,代号Tiger。主要特点是:
- 泛型
- 注解
- 自动装箱/拆箱
- 枚举
- 可变参数
- 增强for each循环
- 静态导入
- java.util.concurrent中新的并发实用程序
- Scanner类
2006
2006年11月(Java/Jdk (半)公开源码)
Java宣布将会公开源码,引起了广泛争议。由于设计的证书违背了通常的源码开放条款。或许我们可以称其为半公开。
2006年12月(6.0版本发布)
Java SE 6版本发布,代号Mustang。主要特点是:
- 支持脚本语言
- 性能上的提高
- JAX-WS
- JDBC 4.0
- JavaCompiler API
- JAXB 2.0 和 Streaming API for XML (StAX)
- 插件化注解处理API
- 新的GC算法
2010
2010年1月(Oracle收购Sun)
Oracle收购Sun公司及其产品。现在Java由Oracle控制。
2010年10月(苹果不再支持Java)
Steve Jobs声称,苹果将来不再支持Java。请阅读James Gosling“关于Steve Jobs声明的评论”。
2011
2011年7月(7.0版本发布)
Java SE 7.0版本发布,代号Dolphin。这个版本距上次发布有5年之久,并且只有这个版本花费了这么久。主要特点是:
- JVM支持动态语言
- 压缩的64位指针
- switch语句支持String
- try-with-resources
- <>操作符:https://www.javaworld.com/article/2074080/core-java/core-java-jdk-7-the-diamond-operator.html
- 简化可变参数方法声明
- 二进制整数字面值:https://docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html
- 允许下划线数字字面值:https://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html
- 异常处理优化:https://howtodoinjava.com/java7/improved-exception-handling/
- ForkJoin框架
- NIO2.0
- WatchService
- Timsort算法用于Collections.sort和Arrays.sort
- 图形功能API增强
- 支持SCTP和SDP这两种新的网络协议
2014
2014年3月(8.0版本发布)
代号名字文化丢弃,主要特点是:
- 在API上支持Lambda表达式
- 函数接口和默认方法
- Optional
- 提供 Nashorn JavaScript引擎
- Annotation新特性:类型注解和重复注解
- 新的日期和时间API
- 支持静态链接JNI库
- 支持从jar文件启动JavaFX应用程序
- 从GC中移除永久代
Java故事还在继续