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. Quartz.NET 3.0.7 + MySql 实现动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(一)

    原文:Quartz.NET 3.0.7 + MySql 实现动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(一) 前端时间,接到领导任务,写了一个调度框架.今天决定把心路历程记 ...

  2. [NPM] Run npm scripts in parallel

    In this lesson we will look at running several npm scripts in parallel. Sometimes you don’t need scr ...

  3. [TypeScript] Use the never type to avoid code with dead ends using TypeScript

    Example 1: A never stop while loop return a never type. function run(): never { while(true){ let foo ...

  4. 阿里云域名和ip绑定步骤

    阿里云域名和ip绑定步骤 一.总结 一句话总结:域名转IP信息存在所在地运营商那,比如电信联通等. 1.给域名添加对应ip的过程叫做什么? 域名解析 2.域名解析中的记录代表什么意思,记录值呢? 记录 ...

  5. URL传递中文参数,大坑一枚,Windows与Linux效果竟然不一致(两种解决方法)

    下午,计划2个小时搞定,个人官网第6次升级,就可以干点轻松的事了,结果,下午多搞了2个小时,晚上又搞了2个小时,才搞定. 最后一个世界难题是,URL传递中文参数. 问题大致是这么出现的:我为" ...

  6. idea中建立一个OSGI项目

    参考网址:http://chenjingbo.iteye.com/blog/1893597 首先我使用的是equinox作为我的osgi framework 直接在官网上解压下载即可,第一步creta ...

  7. 【u240】棋子放置

    Time Limit: 1 second Memory Limit: 128 MB 小虎刚刚上了幼儿园,老师让他做一个家庭作业:首先画3行格子,第一行有三个格子,第二行有2个格子,第三行有1个格子. ...

  8. [GeekBand] STL 仿函数入门详解

    本文参考文献::GeekBand课堂内容,授课老师:张文杰 :C++ Primer 11 中文版(第五版) page 37 :网络资料: 叶卡同学的部落格  http://www.leavesite. ...

  9. 【noip模拟】德充符

    时间限制:2s 内存限制:512MB [题目描述] 申徒嘉和郑子产都是伯昏无人的学生,子产因为申徒嘉是残疾人,非常看不起他,于是想要刁难他. 子产给了申徒嘉 n个数 a1,a2...an. 现在他要求 ...

  10. QT5.8.0+MSVC2015安装以及环境配置(不需要安装VS2015)

    原文:QT5.8.0+MSVC2015安装以及环境配置(不需要安装VS2015) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/snow_rain_ ...