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下: ...
随机推荐
- git的Rebase和Merge之间的区别
有人会说Merge更好,因为它保留了最完整的工作历史.其他人则认为,Rebase变得更整洁,这使审阅者的生活更轻松,更高效.本文将解释合并和重新设置之间的区别是什么,使用它们之一有什么好处. 从根本上 ...
- window计时器函数
// 定时器: // 计时器 // 开启:setInterval() // 参数1:回调函数 // 参数2:毫秒数 // 功能:每个指定的毫秒数执行一次回调函数 demo: var t = setIn ...
- NetCore 使用 Swashbuckle 搭建 SwaggerHub
什么是SwaggerHub? Hub 谓之 中心, 所以 SwaggerHub即swagger中心. 什么时候需要它? 通常, 公司都拥有多个服务, 例如商品服务, 订单服务, 用户服务, 等等, 每 ...
- R语言网络数据爬取
现在大家对爬虫的兴趣不断高涨,R和PYTHON是两个非常有力的爬虫工具.Python倾向于做大型爬虫,与R相比,语法相对复杂,因此Python爬虫的学习曲线会相对陡峭.对于那些时间宝贵,又想从网上获取 ...
- 二进制安装Kubernetes(k8s) v1.23.4
1.环境 网段 物理主机:192.168.1.0/24 service:10.96.0.0/12 pod:172.16.0.0/12 如果有条件建议k8s集群与etcd集群分开安装 1.1.k8s基础 ...
- Mybatis的整体理解
I有关于我的对ybatis的设想: 简单总结-下有关于我对wybat is的架构理解: 总体分为三个层面: 1.对外接口API 2.MapStatement数据处理 3.执行及其数据存储 两个主要的对 ...
- flask基本项目结构
|-- myproject |-- config.py |-- flask-env.yml |-- manage.py |-- app | |-- models.py | |-- __init__.p ...
- python入门教程之二环境搭建
环境搭建 1python解释器 当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Pyth ...
- 4.测试类mapper报错
1.总结:前几天还有今天一直在弄测试类报错的原因,想着项目是一个大整体,写一个mappe测试类,测试一个mapper,这样后面不会出错: 但是在测试mapper的时候一直,出现mapper值为空的异常 ...
- 无法加载 DLL“xxxx.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
有一台服务器在执行接口的时候遇到了这样一个问题: 其他服务器上都没有这个问题,IIS部署好的项目目录的bin文件夹下是有这个dll的,但却提示无法加载,在网上找了好多帖子,终于发现了问题. 首先用De ...