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. [Ramda] Declaratively Map Data Transformations to Object Properties Using Ramda evolve

    We don't always control the data we need in our applications, and that means we often find ourselves ...

  2. Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes

    A microprocessor contains an address generation unit, including a segment block, for loading descrip ...

  3. nil和Nil和NULL的判断

    ,nil和Nil和NULL的判断 开 发过程中,我们通过http请求,后台返回json数据,而有时数据里某一字段的值为null-,然后我们把此值赋值给 NSArray,NSdictionary,或是N ...

  4. 【codeforces 777A】Shell Game

    [题目链接]:http://codeforces.com/contest/777/problem/A [题意] 奇数次操作交换1,2位置的东西; 偶数此操作交换2,3位置的东西 给你操作的次数,和最后 ...

  5. 城市三级联动 AJAX-原生js封装

    话不多说我们先来一张效果图给大家看一下: html代码如下: <!DOCTYPE html><html lang="en"><head> < ...

  6. android tips—开机引导启动wifi设置

    在开机引导(Setupwizard,Guide)中都有关于wifi设置项,我得做法例如以下: Intent intent = new Intent(); intent.setClassName(&qu ...

  7. 【a401】直线的交点数

    Time Limit: 1 second Memory Limit: 32 MB [问题描述] 平面上有n条直线,且无三线共点,问这些直线能有多少种不同的交点数. [输入格式] n(n≤20) [输出 ...

  8. 使用readLine()方法遇到的坑

    程序很简单,客户段从控制台读取用户输入,然后发送至服务器端,主要代码如下 服务端代码: 客户端代码: 结果运行的时候,当开启服务端和客户端后,在客户端的控制台 键盘输入 内容,服务端却没有显示内容 原 ...

  9. NFS Server搭建实践

    NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操作系统能够彼此分享个 ...

  10. Android TV开发总结(七)构建一个TV app中的剧集列表控件

    原文:Android TV开发总结(七)构建一个TV app中的剧集列表控件 版权声明:我已委托"维权骑士"(rightknights.com)为我的文章进行维权行动.转载务必转载 ...