Java 的发展要追溯到 1991 年,Patrick Naughton(帕特里克·诺顿)和 James Gosling(詹姆斯·高斯林)带领 Sun 公司的工程师打算为有线电视转换盒之类的消费产品设计一种小型语言,因为这些设备的处理能力和内存都有限,所以要求语言必须要小且能生成紧凑的代码。另外由于处理器的多样性,这种语言不能与任何体系结构有关联,这个项目就被命名为“Green”(参考国内许多软件绿色版)。提起平台无关性,Pascal 之父 Niklaus Wirth(尼古拉斯·沃斯)曾带领团队设计出一种为假想的机器生成中间代码的可移植语言,而这种假想的机器被称为虚拟机,Java 虚拟机(JVM)就是由此而来。由于当时 Sun 公司的人都有 Unix 应用开发经验,所以语言是以 C++ 为基础,Gosling 将这种语言命名为 Oak,随后发现 Oak 是一种已有的计算机语言的名字,于是将其改名为 Java。
  1992 年 Green 项目组发布了第一个产品,主要特性为智能远程控制,然而没有一家公司对比感兴趣,包括 Sun。而后 Green 项目组以 First Person 公司花费 1993 年整整一年以及 1994 年上半年的时间来寻找其技术的买家,然而一个也没有找到。1994 年 First Person 公司解散,而工作还在 Sun 公司中继续进行,同时互联网业日渐壮大,Web 的关键是把超文本界面转换到浏览器中,1994 年大部分人都在使用 Mosaic,Java 的开发者为了炫耀 Java 语言超强的能力,开发了 HotJava 浏览器,HotJava 具有执行网页中内嵌代码的能力,即所谓的 applet,在 1995 年 5 月 23 日的 SunWorld 上,这一技术印证得到了展示,同时引发了对 Java 的狂热追逐并延续至今。
  1996 年年初,Sun 发布了 Java 的第一个版本,但是这个版本并不能进行真正的应用开发,随后而来的 Java 1.1 弥补了许多明显的缺陷,大大改进了反射能力,并为 GUI 编程增加了新的事件处理模型,但是仍具有很大的局限性。1998 年 JavaOne 会议上,Java 1.2 版发布,取代了之前玩具式的 GUI,并且图形工具箱更加精细而具有可伸缩性,此次更新推出了标准版、微型版和企业版,即 Java2 SE、Java2 ME和Java2 EE。2000 年发布的 1.3 版和 2002 年发布的 1.4 版只是对 Java2 版本进行 BUG 修正,扩展了标准类库,提高了系统性能,而在此期间,applet 渐渐淡出了客户端的应用,Java 成为服务器端应用的首选平台。
  2004 年 Java 5.0(一开始命名为 1.5,但是在 JavaOne 会议后版本号提升至 5.0)发布,这是自 1.1 版以来第一个对 Java 做出重大改进的版本,此次更新添加了泛型类型、“for each”循环、自动装箱和元数据等。2006 年年末,Java 6 发布,但是此次更新仅仅改进了性能、增强了类库,并未对语言方面再进行改进。2009 年,Sun 被 Oracle 收购,因此 Java 的开发停滞了很长一段时间,直到 2011 年 Oracle 发布了 Java 7,但是只是做了一些简单的改进,决定把重要改进留到 Java 8。
  2014 年 Oracle 发布了 Java 8,此次更新的重点之一就是 Lambda 表达式,目的是使 Java 更易于为多核处理器编写代码;其次新加入的 Nashorn 引擎也使得 Java 程序可以和 JavaScript 代码互操作;加入了新的类库并改进 GC 和并发。由于版本升级带来的学习成本提升和语法变更导致的后期维护难度提升等因素,Java 8在这篇文章更新时( 2018 年 5 月)还未在实际开发中大范围的投入使用。
  2017 年 9 月,在 Java 8 还未大范围投入使用的时候,Oracle 发布了 Java 9。此次更新的最主要功能为模块化开发,随着 Java 这么多年的发展,其本身类库及第三方提供的类库越来越多也越来越大,通常一个系统中需要包含大量的冗余代码,Java 希望通过模块化的方式减少冗余代码,提升性能、安全性和可维护性。另外 Java 9 还增加了 HTTP/2 支持、私有接口方法、多版本兼容 JAR、修改了默认垃圾回收器以及增强 IO 流等。
  2018 年 3 月,Oracle 发布了 Java 10,此次更新合并了 JDK 的多个代码仓库,主要更新为局部变量的类型推断,引入"var"关键字,可以随意定义变量而不必指定变量的类型,个人认为这一更新可能会增加代码的维护难度,具体还需要在实践中验证,另外 Java 10 还包括诸如 GC 改进、线程局部管控、基于 Java 的 JIT 编译器以及证书相关等更新。
  按照当前的 Java 更新计划,Java 11 将会在 2018 年 9 月份发布,目前已公布的更新内容主要是 Epsilon 垃圾收集器和lambda 参数的局部变量语法,同时会移除 Java EE和CORBA 模块,以及 JavaFX 将作为独立模块提供,不再包含在 JDK 安装包中。官方将在 2026 前对 Java 11 提供支持,可以看出 Java 11 将会是一个长期支持的稳定版本。按照目前 Oracle 的开发计划,半年一个版本,两年一个长期支持版本,Java 12 将在 2019 年 3 月份发布,Java 15 将会是下一个长期支持版本。

Java发展历程的更多相关文章

  1. java发展历程、常用dos命令与jDK工具使用

    Java菜鸟学习之旅 1.勤敲代码 2.必须将课堂上讲的内容学到位 2.1 学到会用 2.2 在学会之前不要自作主张 2.3 当天课程当天完成 3.能说会道 3.1 善于表达 3.2 学会的都能讲 4 ...

  2. Java 发展历程

    JDK 1.0 1991年4月,由 James Gosling 博士领导的绿色计划(Green Project)开始启动,此计划的目的是开发一种能够在各种消费性电子产品(如机顶盒.冰箱.收音机等)上运 ...

  3. Java起源、发展历程、环境变量、第一个Java程序等【1】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: 本文原创作者:pipi-changing 本文原创出处:http://www.cnblogs.com/pi ...

  4. Java语言的发展历程

    前言 自1946年2月14日世界上首款计算机ENAC问世,第一代计算机语言“机器语言”便诞生了,它使用的是最原始的穿孔卡片,这种卡片上使用的语言只有专家才能理解,与人类语言差别极大.这种语言本质上是计 ...

  5. 码农飞升记-00-Java发展历程

    目录 1.Java发布历程 2.Java发展史 Oak 的出现( Java 的雏形) 1995年 Java 的诞生 1996年 Sun 公司发布第一个 JDK 1998年12月用 J2SE 取代 JD ...

  6. Java的发展历程

    Java的发展历程充满了传奇色彩. 最初,Java是由Sun公司的一个研究小组开发出来的, 该小组起先的目标是想用软件实现对家用电器进行集成控制的小型控制装置. 开始,准备采用C++,但C++太复杂, ...

  7. Java日志体系(一)发展历程

    一.日志框架的分类 门面型日志框架: JCL: Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging SL ...

  8. JAVA基础知识|HTTP协议-发展历程

    HTTP 是基于 TCP/IP 协议的应用层协议.它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口. 此文章为转载内容:http://www.ruanyif ...

  9. C#与C++的发展历程第一 - 由C#3.0起

    俗话说学以致用,本系列的出发点就在于总结C#和C++的一些新特性,并给出实例说明这些新特性的使用场景.前几篇文章将以C#的新特性为纲领,并同时介绍C++中相似的功能的新特性,最后一篇文章将总结之前几篇 ...

随机推荐

  1. 【codeforces 758B】Blown Garland

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  2. mysqlbinlog命令使用

    常用参数:--start-datetime=datetime 从二进制日志中第1个日期时间等于或晚于datetime参量的事件开始读取.datetime值相对于运行mysqlbinlog的机器上的本地 ...

  3. php课程 6-21 HTML标签相关函数

    php课程 6-21 HTML标签相关函数 一.总结 一句话总结:1.存入数据库的html标签代码:$info=addslashes(htmlspecialchars($_POST['info'])) ...

  4. one hot 编码的实现

    one hot 编码,针对的是类别性属性(categorical),类别型属性可以为特征向量中的任一属性,比如性别(one hot 编码的意义在于,属性之间不具有数值上大小的区别,在对最后结果的影响上 ...

  5. 开源项目学习之------AG-Admin环境搭建

    原文地址: https://blog.csdn.net/u011781521/article/details/79056974 一.框架简介 AG-Admin是基于Spring Cloud微服务化开发 ...

  6. Access control differentiation in trusted computer system

    A trusted computer system that offers Linux® compatibility and supports contemporary hardware speeds ...

  7. drawText文字绘制知识

    drawText(String text, float x, float y, Paint paint) x,y是基于文字基本线的,而不是android坐标系的左上角. 使用staticLayout进 ...

  8. Android Studio 使用教程(二十五)之运行Android Studio工程

    一.Android虚拟设备入口 上期我们使用了Android Studio创建了HeloWorld工程,要想运行该工程,首先需要一个Android虚拟设备来模拟Android程序的运行. 重新打开An ...

  9. WPF中 PropertyPath XAML 语法

    原文:WPF中 PropertyPath XAML 语法 PropertyPath 对象支持复杂的内联XAML语法用来设置各种各样的属性,这些属性把PropertyPath类型作为它们的值.这篇文章讨 ...

  10. 《用户体验要素》澄清了 UI 原型设计中看不见确感受得到的那一层

    <用户体验要素>澄清了看不见确感受得到的那一层 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&quo ...