Java发展历程及各版本新特性
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故事还在继续
Java发展历程及各版本新特性的更多相关文章
- 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 ...
- CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系
CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...
- Atitit opencv版本新特性attilax总结
Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...
- Atitit mac os 版本 新特性 attilax大总结
Atitit mac os 版本 新特性 attilax大总结 1. Macos概述1 2. 早期2 2.1. Macintosh OS (系统 1.0) 1984年2 2.2. Mac OS 7. ...
- Atitit 发帖机系列(8) 词法分析器v5 版本新特性说明)
Atitit 发帖机系列(8) 词法分析器v5 版本新特性说明) v5 增加对sql单引号的内部支持.可以作为string 结构调整,使用递归法重构循环发..放弃循环发. V4 java dsl词 ...
- Java 9中的 9个 新特性
Java 9 中的 9个 新特性 java 7 2011发布,Java 8 2014发布,java9发布于2017年9月21日. 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它 ...
- Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结
Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.----------- ...
- java发展历程、常用dos命令与jDK工具使用
Java菜鸟学习之旅 1.勤敲代码 2.必须将课堂上讲的内容学到位 2.1 学到会用 2.2 在学会之前不要自作主张 2.3 当天课程当天完成 3.能说会道 3.1 善于表达 3.2 学会的都能讲 4 ...
- Atitit.jquery 版本新特性attilax总结
Atitit.jquery 版本新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升,尤其是在ie7下: ...
随机推荐
- CSS3新特性值逻辑选择器
1. :is 解释::is() CSS伪类函数将选择器列表作为参数,并选择该列表中任意一个选择器可以选择的元素. 例如 对于多个不同父容器的同个子元素的一些共性样式设置,传统写法如下 header p ...
- do { } while(){ }
1 var j=10; 2 do{ 3 console.log("十八岁以下禁止观看") 4 console.log(j); 5 j++; //j为18之前都不执行while 6 ...
- 单机最快的队列Disruptor解析和使用
前言 介绍高性能队列Disruptor原理以及使用例子. Disruptor是什么? Disruptor是外汇和加密货币交易所运营商 LMAX group 建立高性能的金融交易所的结果.用于解决生产者 ...
- 游戏模拟——Position based dynamics
目录 Verlet积分 基本积分方法 Verlet 算位置 Verlet 算速度 PBD 基于力的方法解碰撞 过冲问题 基于位置的方法解碰撞 算法流程 求解器借用的思想 关于动量守恒 约束投影 简单约 ...
- win32api中文在线文档
中文文档http://www.yfvb.com/help/win32sdk/ 英文手册https://www.jb51.net/books/724576.html
- [Linux]Linux执行sh脚本时,出现$‘\r‘: command not found(未找到命令)"错误的解决方案[转载]
1 文由 为什么要把这么一个看似很简单的问题,还要以[转载]的方式专门用博客写出来? 主要是在编写crontab的自动化定时脚本的过程中,发现是这个错导致的自动化脚本频繁执行异常时,已经花了好几个小时 ...
- [工具/Maven]Maven工程目录结构 | Maven自动构建骨架(maven-archetype)中quickstart与webapp的区别
1 maven-archetype-quickstart 1.1 IDEA中的前期准备 1.2 自动构建后 ↓pom.xml↓ <?xml version="1.0" enc ...
- 帝国cms sql检则标题重复
<?php //检则标题重复 $sql=$empire->query("select id,filename from phome_ecms_news where classid ...
- Go语言实现网盘系统(未完)
该项目将基于go-zero和xorm go-zero中文文档: https://legacy.go-zero.dev/cn/ Xorm中文文档: http://xorm.topgoer.com/ 功能 ...
- VUE的路由懒加载及组件懒加载
一,为什么要使用路由懒加载 为给客户更好的客户体验,首屏组件加载速度更快一些,解决白屏问题 二,懒加载简单来说就是延迟加载或按需加载,即在需要的时候的时候进行加载 三,常用的懒加载方式有两种:即使用v ...