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. Js数组排序函数:sort()

    原文链接:https://blog.csdn.net/qq_37936542/article/details/78979521 js原生的 sort() 排序函数使用起来很方便 语法:arrayObj ...

  2. SPOJ4491. Primes in GCD Table(gcd(a,b)=d素数,(1<=a<=n,1<=b<=m))加强版

    SPOJ4491. Primes in GCD Table Problem code: PGCD Johnny has created a table which encodes the result ...

  3. SQLServer重建索引

    Use [数据库名称]Go DECLARE @DBCCString NVARCHAR(1000)DECLARE @TableName VARCHAR(100)DECLARE Cur_Index CUR ...

  4. mysql官网下载linux版本安装包

    原文地址:点击打开链接 今天在Linux上部署项目,用到了Mysql,因此想要下载适用于Linux的安装版本,在Mysql官网找了半天,终于找到怎样下载了,这里写出来,以后大家找的时候就好找了. 第一 ...

  5. [Angular] Reactive Form -- FormControl & formControlName, FormGroup, formGroup & formGroupName

    First time dealing with Reactive form might be a little bit hard to understand. I have used Angular- ...

  6. J2EE学习篇之--JQuery技术具体解释

    前面我们解说了的J2EE的技术都是服务端的技术,以下我们来看一下前端的一些开发技术,这一篇我们来看一下jQuery技术 简单介绍: jQuery由美国人John Resig创建,至今已吸引了来自世界各 ...

  7. 华为如何实现基于Git的跨地域协同开发

    跨地域开发的需求其实由来已久,在IT/互联网发展的早期就已存在,只不过限于当时网络环境的因素,无法在线上有效的完成协同工作,所以没法实际开展.而随着近十年网络的快速发展,跨地域协同开发线变得可能而且越 ...

  8. 设置aspx页面的地址栏中的Session ID的显示与隐藏

    设置aspx页面的地址栏中的Session ID的显示与隐藏修改web.config文件中的sessionState节点下的cookieless的值 1.cookieless的值是false的时候隐藏 ...

  9. CUDA二维纹理内存+OpenCV图像滤波

    CUDA和OpenCV混合编程,使用CUDA的纹理内存,实现图像的二值化以及滤波功能. #include <cuda_runtime.h> #include <highgui/hig ...

  10. 深入了解Java虚拟机

    一.垃圾收集 Java虚拟机堆不停的运转java由程序创建的所有对象.当一个对象不再被引用,它使用堆空间能够被回收,以便兴许的新对象所使用. 垃圾收集器必须能够断定哪些对象是不再被引用的,而且能够把它 ...