java起源:

1991 年 , 由 Patrick Naughton 和 James Gosling ( 一个全能的计算机奇才 ) 带领的 Sun 公司的工程师小组想要设计一种小型的计算机语言,主要用于像有线电视转换盒这类的消费设备。 由于这些消费设备的处理能力和内存都很有限 , 所以语言必须非常小且能够生成非常紧凑的代码 。 另外,由于不同的厂商会选择不同的中央处理器( CPU ),因此这种语言的关键是不与任何特定的体系结构捆绑在一起。

于是,这个项目被命名为 “Green ” 。代码短小 、 紧凑且与平台无关, 这些要求促使开发团队设计一个可移植的语言,可以为虚拟机生成中间代码。

不过 , Sun 公司的人都有 UNIX 的应用背景。 因此 , 所开发的语言以 C + + 为基础,而不是 Lisp 、 Smalltalk 或 Pascal。 不过 ,就像 Gosling 在专访中谈到的 : “ 毕竟, 语言只是实现目标的工具, 而不是目标本身 ” 。 Gosling 把这种语言称为 “Oak ” ( 这么起名的原因大概是因为他非常喜欢自己办公室外的橡树 ) 。 Sun 公司的人后来发现 Oak 是一种已有的计算机语言的名字, 于是 , 将其改名为 Java 。

java发展史:

1992 年, Green 项目发布了它的第一个产品 , 称之为 “ *7 ” 。 这个产品具有非常智能的远程控制 。 遗憾的是 , Sun 公司对生产这个产品并不感兴趣 , Green 项目组的人员必须找出其他的方法来将他们的技术推向市场。 然而 , 没有一个标准消费品电子公司对此感兴趣 。 于是, Green 项目组竞标了一个提供视频点播等新型服务的有线电视盒的项目 , 但没有成功 ( 有趣的是, 得到这个项目的公司的领导恰恰是开创 Netscape公司的 Jim Clark。 Netscape公司后来对 Java 的成功给予了很大的帮助 )。

Green 项目 ( 这时换了一个新名字 — “First Person 公司 ” ) 花费了 1993 年一整年以及 1994 年的上半年 , 一直在苦苦寻求其技术的买家。 然而 , 一个也没有找到 ( PatrickNaughton , 项目组的创立人之一 , 也是完成此项目大多数市场工作的人 , 声称为了销售这项技术 , 累计飞行了 300 000 英里 )。 1994 年First Person 公司解散了。

当这一切在 Sun 公司发生的时候 , Internet 的万维网也在日渐发展壮大 。 万维网的关键是把超文本页面转换到屏幕上的浏览器。 1994 年大多数人都在使用 Mosaic ,这是一个 1993年出自伊利诺斯大学超级计算中心的非商业化的 Web 浏览器 ( Mosaic 的一部分是由 MarcAndreessen 编写的。 当时 , 他作为一名参加半工半读项目的本科生 , 编写了这个软件 , 每小时的薪水只有 6.85 美元。 他后来成了 Netscape 公司的创始人之一和技术总监 , 可谓名利双收 ) 。

在接受 Sun World 采访的时候, Gosling 说在1994 年中期 , Java 语言的开发者意识到 :“我们能够建立一个相当酷的浏览器 。 我们已经拥有在客户机 / 服务器主流模型中所需要的体系结构中立 、 实时 、 可靠 、 安全 —这些在工作站环境并不太重要 , 所以 , 我们决定开发浏览器,实际的浏览器是由 Patrick Naughton 和 Jonathan Payne 开发的, 并演变为 HoUava 浏览器。 为了炫耀 Java 语言超强的能力 ,HoUava 浏览器采用 Java 编写。 设计者让HoUava 浏览器具有在网页中执行内嵌代码的能力 。 这一 “ 技术印证 ” 在 1995 年 5 月 23 日的 SunWorld上得到展示 , 同时引发了人们延续至今的对 Java 的狂热追逐。

1996 年年初, Sun 发布了 Java 的第1 个版本 : 人们很快地意识到 Java 1.0 不能用来进行真正的应用开发。 的确 , 可以使用 Java 1.0 来实现在画布上随机跳动的神经质的文本 applet ,但它却没有提供打印功能 。 坦率地说 , Java 1.0 的确没有为其黄金时期的到来做好准备 。 后来的 Java 1.1 弥补了其中的大多明显的缺陷 , 大大改进了反射能力 , 并为 GUI 编程增加了新的事件处理模型: 不过它仍然具有很大的局限性 。

1998 年 JavaOne 会议的头号新闻是即将发布 Java 1.2 版 。 这个版本取代了早期玩具式的GUI , 并且它的图形 T . 具箱更加精细而具有可伸缩性 , 更加接近 “ 一次编写 , 随处运行 ” 的承诺 , , 在 1998 年 12 月 Java 1.2 发布 7 天之后 , Sun 公司市场部将其名称改为更加吸引人的“Java 2 标准版软件开发工具箱1.2 版 ” 。

1.3 和 1.4 版本对最初的 Java 2 版本做出了某些改进 , 扩展了标准类库 , 提高系统性能。 当然 , 还修正了一些bug。 在此期间 , Java applet 采用低调姿态 , 并淡化了客户端的应用, 但 Java 却成为服务器端应用的首选平台 。

5.0 版是自 1.1 版以来第一个对 Java 语言做出重大改进的版本 ( 这一版本原来被命名为1.5 版, 在 2004 年的 JavaOne 会议之后 , 版本数字升至5.0 ) 。 经历了多年的研究, 这个版本添加了泛型类型 ( generic type ) ( 类似于 C + + 的模板 ), 其挑战性在于添加这一特性并没有对虚拟机做出任何修改 。 另外 , 还有几个受 C # 启发的很有用的语言特性 : “for each ” 循环 、 自动装箱和注解 。

版本 6 ( 没有后缀 . 0 ) 于 2006 年年末发布 。 同样 , 这个版本没有对语言方面再进行改进 。但是, 改进了其他性能 , 并增强了类库 。

随着数据中心越来越依赖于商业硬件而不是专用服务器 , Sun Microsystems 终于沦陷 ,于 2009 年被 Oracle 收购 。Java 的开发停滞了很长一段时间 。 直到 2011年 Oracle 发布了 Java的一个新版本, Java 7,其中只做了一些简单的改进 。

2014 年 , Java 8 终于发布 , 在近 20 年中这个版本有了最大的改变 。 Java 8 提供了一种 “函数式 ” 编程方式, 可以很容易地表述并发执行的计算 。 所有编程语言都必须与时俱进 , Java在这方面显示出非凡的能力 。

2017年九月,Oracle宣布,Java的发布频率改为每六个月一次。不仅如此,Oracle还将会继续在每个季度发布更新版本,时间分别为1月份、4月份、7月份和10月份。也就是说,在下一个大版本发布之前,当前版本都会有两个更新版本。更新版本只包含安全问题修复或回归错误的修复。Reinhold说:开发者希望加快速度,这样他们就能够尽快地在生产环境中使用新的特性。

Java历史版本表

版本 版本名称 发行日期 语言新特性
1.0 Oak(橡树) 1996-01-23 最初版本
1.1   1997-02-19

1. 引入JDBC

2. 添加内部类支持
3. 引入JAVA BEAN
4. 引入RMI
5. 引入反射

1.2 Playground(操场) 1998-12-08

1. 引入集合框架

2. 对字符串常量做内存映射
3. 引入JIT(Just In Time)编译器
4. 引入打包文件数字签名
5. 引入控制授权访问系统资源策略工具
6. 引入JFC(Java Foundation Classes),包括Swing1.0,拖放和Java2D类库
7. 引入Java插件
8. JDBC中引入可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型
9. Applet中添加声音支持

1.3 Kestrel(红隼) 2000-05-08

1. 引入Java Sound API

2. 引入jar文件索引
3. 对Java各方面多了大量优化和增强

1.4 Merlin(隼) 2002-02-06

1. 添加XML处理

2. 添加Java打印服务(Java Print Service API)[^1]
3. 引入Logging API
4. 引入Java Web Start
5. 引入JDBC 3.0 API
6. 引入断言
7. 引入Preferences API [^2]
8. 引入链式异常处理
9. 支持IPV6
10. 支持正则表达式
11. 引入Image I/O API

5.0 Tiger(老虎) 2004-09-30

1. 引入泛型

2. 增强循环,可使用迭代方式
3. 自动装箱与自动拆箱
4. 引入类型安全的枚举
5. 引入可变参数
6. 添加静态引入
7. 引入注解[^6]
8. 引入Instrumentation[^3]

6 Mustang(野马) 2006-12-11

1. 引入了一个支持脚本引擎的新框架(基于 Mozilla Rhino 的 JavaScript 脚本引擎)

2. UI的增强
3. 对WebService支持的增强(JAX-WS2.0 和 JAXB2.0)
4. 引入JDBC4.0API [^4]
5. 引入Java Compiler API [^5]
6. 通用的Annotations支持

7 Dolphin(海豚) 2011-07-28

1. switch语句块中允许以字符串作为分支条件

2. 在创建泛型对象时应用类型推断
3. 在一个语句块中捕获多种异常

4. 添加try-with-resources语法支持,使用文件操作后不用再显示执行close了。
5. 支持动态语言
6. 引入新I/O文件系统,支持ZIP文件操作,极大方便了文件操作
7. JDBC规范版本升级为JDBC4.1
8. 引入Fork/Join框架,用于并行执行任务

8   2014-03-19

1. 接口改进,接口居然可以定义默认方法实现和静态方法了。

2. 引入函数式接口
3. 引入Lambda表达式
4. 引入全新的Stream API,提供了对值流进行函数式操作。[^10]
5. 引入新的Date-Time API
6. 引入新的JavaScrpit引擎Nashorn
7. 引入Base64类库
8. 引入并发数组(parallel)
9. 添加新的Java工具:jjs、jdeps

9   2017-09-21

1. 模块化(jiqsaw)

2. 交互式命令行(JShell)
3. 默认垃圾回收期切换为G1
4. 进程操作改进
5. 竞争锁性能优化
6. 分段代码缓存
7. 优化字符串占用空间

10   2018-03-21

1.局部变量类型推断
2.将JDK多存储库合并为单储存库
3.垃圾回收接口
4.并行Full GC 的G1
5.应用数据共享
6.线程局部管控
7.移除Native-Header Generation Tool (javah)

8.Unicode 标签扩展
9.备用内存设备上分配堆内存
10.基于实验JAVA 的JIT 编译器
11.Root 证书
12.基于时间的版本控制

11   2018-09-25

1.字符串加强

2.HttClient Api

3.用于 Lambda 参数的局部变量语法4、ZGC

12   2019-03-19

1.Switch Expressions

2.Shenandoah GC

13   2019-09-17

1.switch优化更新

2.文本块升级

3.重新实现旧版套接字API

4.核心库/java.util中:I18N5、取消使用未使用的内存

14   2020-03-17

1.switch优化变更为最终版

2.垃圾回收相关

3.instanceof的模式匹配(预览版)

4.删除了安全库java.security.acl API

5.货币格式(优化)

15   2020-09-15

1.在CharSequence中添加了isEmpty默认方法

2.支持Unicode 13.0
3.TreeMap新方法
4.文本块(最终版)
5.隐藏类
6.GC回收期
7.改进的序列化处理,IO
8.支持货币分组分隔符
9.time用默认值覆盖本地化值
10.集合性能提升(Better Listing of Arrays)
11.GC:G1优化
12.ZGC一种可扩展低延迟垃圾收集器
13.模式匹配的instanceof

JAVA基础教程之Java发展史相关推荐

  1. Java基础教程之Java简介

    一. Java到底是什么? Java是一门全球范围内使用最广泛的,面向对象的编程语言.Java语言具有功能强大和简单易用两个特征,它作为面向对象编程语言系列的代表,极好地实现了面向对象理论,允许程序员 ...

  2. Java基础教程之Java的变量

    变量亦称"变数",是反映事物运动变化状态的量.人们在实践活动中,为了从量的方面研究事物运动.变化的规律性,或者事物之间的数量关系,必须舍弃事物的具体内容,而从事物的量的规律性中抽象 ...

  3. java高级教程之Java继承

    继承可以被定义为其中一个对象获取的另一个特征的过程.使用继承的信息是在一个等级秩序作出管理. 当我们谈到继承,最常用的关键字是extends和implements.这些话会确定一个对象是否IS-A类型 ...

  4. 打怪升级之小白的大数据之旅(一)<Java基础语法之Java的身世之谜>

    打怪升级之小白的大数据之旅(一) Java基础语法之Java的身世之谜 打怪升级之小白的大数据之旅(一) 前言 一.学习大数据之前 二.Java基础 what? why? how? 总结 前言 做了几 ...

  5. pgsql数据库默认配置事务类型_PostgreSQL基础教程之:初始化配置

    PostgreSQL基础教程之:初始化配置 时间:2020-04-27 来源: PostgreSQL基础教程之:初始化配置 一.配置pg_hba.conf 先说明客户端认证配置文件pg_hba.con ...

  6. Linux入门基础教程之Linux下软件安装

    Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc AP ...

  7. java里面value_「Java基础知识」Java中包含哪些运算符

    原标题:「Java基础知识」Java中包含哪些运算符 在Java中包含的运算符有:算数运算符,逻辑运算符,关系运算符等. 算数运算符也就是我们平时的加减乘除余等操作:在Java中都是将右边的值赋值给左 ...

  8. python可以处理多大的数据_科多大数据之Python基础教程之Excel处理库openpyxl详解...

    原标题:科多大数据之Python基础教程之Excel处理库openpyxl详解 科多大数据小课堂来啦~Python基础教程之Excel处理库openpyxl详解 openpyxl是一个第三方库,可以处 ...

  9. 什么是python基础教程-python基础教程之python是什么?概念解析

    Python,是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CP ...

最新文章

  1. 03 Java程序员面试宝典视频课程之常用类
  2. 重磅!清华大学,迎来新任校长!
  3. SAP Hybris: 中国B2B电商转型势在必行
  4. 确定最小的正整数n,使得n!的结尾恰好有1987个0
  5. SAP ABAP实用技巧介绍系列之如何生成值为NULL的table row
  6. android冻结命令,在Android上使用冻结tensorflow图中的变量
  7. 从 Wi-Fi 6 的到来,看家庭网络的优化之路!
  8. micropython入门指南pdf_一文了解MicroPython
  9. (转)对冲基金不信中国经济数据,转用卫星监控6000块工业用地
  10. 多变量遗传算法python代码_遗传算法之Python实现代码
  11. 《深入浅出数据分析》读书心得与笔记
  12. jmeter导入已有的脚本_jmeter 开发导入excel脚本
  13. 周立功USBCAN-2E-U的驱动安装及上位机安装
  14. 【Cocos Creator】 编辑器自定义 ——下拉列表属性、滑动条属性等
  15. VS2013 下载地址
  16. iPhoneXSM屏幕适配、 各机型的逻辑分辨率
  17. 朴素贝叶斯凉鞋问题推导
  18. 网页报错:You don't have permission to access
  19. Java调用excel宏
  20. VCD零售/出租管理系统

热门文章

  1. 什么是ADS-B信号?
  2. WPS Office for Mac
  3. java怎么创建输入输出流_Java输入输出流
  4. 组播MSDP-原理介绍+报文分析+配置示例
  5. 同步计数器与异步计数器的区别,以及4040计数器的使用
  6. 【DLY-310端子排型电流继电器】
  7. IMU中加速度计、陀螺仪、磁力计的工作原理
  8. ZT: WinXP极速关机
  9. pt100 c 语言,PT100计算公式_C程序.doc
  10. Windows10下删除需TrustedInstaller权限的目录或文件