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. eclipse配置本地服务

    1.下载安装eclipse 2.下载tomcat文件,并解压 3.下载tomcat插件 com.sysdeo.eclipse.tomcat_3.3.0 将com.sysdeo.eclipse.tomc ...

  2. Andrew Ng Machine Learning 专题【Logistic Regression & Regularization】

    此文是斯坦福大学,机器学习界 superstar - Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记. 力求简洁,仅代表本人观点,不足之处希望大家探 ...

  3. fusionchart实现ZoomLine 资源 破解版 出口能力

    最近的曲线需要用油画ZoomLine官方网站看了好几天,今天整理出来供大家参考使用 zoomline.html资源 <!DOCTYPE HTML PUBLIC "-//W3C//DTD ...

  4. [Android]TextView实现分散对齐(两端对齐)

    TextView是个特别基础的Android控件,只要有文本基本就少不了它.但是最近在项目开发的过程中我发现TextView存在很多局限性,其中最令我头疼的就是TextView文本排版方面的问题.我们 ...

  5. 五笔字根--good

    https://gss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/4b90f603738da977b1b5ce57b251f8198 ...

  6. MATLAB Toolbox Path Cache is out of date and is not being used的解决

    作者:朱金灿 来源:http://blog.csdn.net/clever101 使用mcc编译MATLAB\R2009a\extern\examples\compiler目录下的hello.m,编译 ...

  7. matlab 图像的保存

    gcf:获取当前显示图像的句柄: 默认 plot 的 position 是 [232 246 560 420] 0. save >> A = randn(3, 4); >> B ...

  8. Jsp bug_001

    报错: The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解 ...

  9. Redis入门手册

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用r ...

  10. go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2]

    go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2].想要产生dll,可以这样 workaround ,参考 golang [issuse#11058][ ...