Java编程语言从诞生到现在已经二十年多年,现已发展成为计算机史上影响深远的编程语言之一,开源/跨平台是其最大的特征,也正是因为此,Java不断地吸引世界上众多优秀程序员来进行学习。
  Java从第一个版本的诞生,到现在已经有20多年的时间了。经过这20多年的发展,以及数次的迭代,Java现在发展到了第九个版本--JDK1.9。相比于最早的JDK1.0来说,现在的Java已经成为了世界上最受欢迎的编程语言之一,并且还是使用者最多的编程语言。想必,在20多年前,谁也无法预想到如今的场景。
  说起Java的发展史,就不得被提及“Java之父”---詹姆斯·高斯林(James Gosling),他于1955年5月19日出生在加拿大,Java编程语言创始人之一。
  早在20世纪90年代初,大概在1990年,硬件领域开始出现了单片式计算机系统,低廉的价格以及在当时高度化的智能,使其一出现便吸引了市场的注意(在现在看来,当时的智能程度就跟过家家一样)。
  为了抢占单片机市场的先机,Sun公司在1991年成立了绿色计划(Green project)项目组,此计划的目的是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构,由“Java之父”詹姆斯·高斯林领导。可惜好景不长,经过一年多的开发,项目并没有得到市场的认同,但是在开发的过程中,诞生了一个名叫作Oak(橡树)的面向对象语言。正所谓“有心栽花花不开,无心插柳柳成荫”,Oak(橡树)为后续Java的诞生起到了至关重要的作用。
  在项目的进展过程中,由于C++所具有的优势,绿色计划(Green project)的开发人员首先考虑采用C++来编写程序,但对于硬件资源极其匮乏的单片式系统来说,C++程序过于复杂和庞大,操作起来困难太大,所以项目组决定根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,开发了一种称为Oak的面向对象语言,这就是Java语言的前身。
  1992年夏天,绿色计划(Green project)已经完成了大部分功能,包括Green操作系统,Oak的程序设计语言、类库等。同年11月,绿色计划(Green project)被独立成为了一个叫做“FirstPerson有限公司”,一个sun公司的全资子公司,并试图从时代华纳获得一个电视机顶盒交互系统的订单,不过在当时市场不成熟的情况下,项目没有获得成功。
  直至1994年下半年,由于Internet的迅猛发展和环球信息网WWW的快速增长,第一个全球信息网络浏览器Mosaic诞生了,Oak也随着这波浪潮得到了迅速的发展。
  詹姆斯·高斯林(James Gosling)意识到,这是一个机会,于是决定改变绿色计划的发展方向,对Oak进行了小规模的改造,并完成了Oak语言编写的网页浏览器:WebRunner。直到1995年5月23日,在SunWorld大会上正式发布Java 1.0版本,至此Java语言诞生了,并首次提出了“Write Once,Run Anywhere”(一次编译,到处运行)的口号。
  在1995年Sun虽然推出了Java,但这只是一种语言,而要想开发复杂的应用程序,必须要有一个的强大的开发库支持还行。因此,Sun在1996 年1月23日发布了JDK1.0,提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。这个版本包括了两部分:运行环境(即JRE)和开发环境(即JDK),至今依旧沿用。在JDK1.0版本中,主要技术包括:Java虚拟机、AWT等。
  在推出Java1.0版本后,Sun公司在1997年2月19日,Sun公司发布了Java1.1版本,相比于1.0版本,1.1版本最大的改进就是增加了JIT(即时编译器),JIT和传统的编译器不同,传统的编译器是编译一条,运行完后再将其扔掉,而JIT会将经常编译的指令保存在内存中,在下次调用时就不需要再编译了,这样在效率上有了非常较大大的提升。此外,Java技术的一些最基础的支撑点也都是在Java1.1版本中发布的,例如:JAR文件格式、JDBC、JavaBeans、RMI、内部类(Inner Class)、反射(Reflection)。
  往后的几年中,Java陆续更新迭代版本,JDK 1.1大版本中一共发布了1.1.0~1.1.8九个小版本。从1.1.4之后,每个JDK版本都有一个自己的名字(工程代号),分别为:JDK 1.1.4 - Sparkler(宝石)、JDK 1.1.5 - Pumpkin(南瓜)、JDK 1.1.6 - Abigail(阿比盖尔,女子名)、JDK 1.1.7 - Brutus(布鲁图,古罗马政治家和将军)和JDK 1.1.8 – Chelsea(切尔西,城市名)。
  时间来到了1998年12月4日,Java迎来了一个里程碑式的版本Java1.2,在此版本中Java被拆分成了3个方向,也就是我们熟知的J2SE(Java 2 Platform, Standard Edition)、J2EE(Java 2 Platform, Enterprise Edition)和J2ME(Java 2 Platform, Micro Edition)。在Java1.2这个版本中,Java虚拟机第一次内置了JIT(Just In Time)编译器,之前版本的Sun Classic VM虚拟机只能以外挂的形式使用JIT编译器。在API上,集合系列Collection出现了。
  在1999年3月和7月,分别有Java1.2.1和Java1.2.2两个小版本发布。
2000年5月8日,Java1.3发布,工程代号为Kestrel(美洲红隼)。相比于1.2来说,Java1.3改进主要表现在一些类库上(如数学运算和新的Timer API等),增加了JNI的支持,这使得Java可以访问本地资源了、支持XML了。此外,在Java1.3大版本中,还有个修正版Java1.3.1,工程代号为Ladybird(瓢虫),于2001年5月17日发布。
  2001年6月5日,Nokia宣布到2003年将出售1亿部支持Java的手机;
  时间来到了2002年2月13日,Sun公司发布了Java历史上最为成熟的版本Java1.4,工程代号为Merlin(灰背隼)。在进入21世纪以来,在.NET平台和Java平台之间发生了一次声势浩大的孰优孰劣的论战,Java的主要问题就是性能。不过,随着Java1.4的诞生论战就此终结,Sun公司集中主要的精力来解决性能问题。值得关注的是,Java1.4还发布了很多新的特性,如正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器等。
  2004年9月30日,Java1.5发布,工程代号Tiger(老虎)。在Java1.5中出现了我们熟悉的语法,例如:自动拆装箱、泛型、动态注解、枚举、可变长参数,遍历循环(foreach循环)等。在虚拟机和API层面上,这个版本改进了Java的内存模型(Java Mozilla Model,JMM)、提供了java.util.concurrent并发包等。
  在2006年11月13日的JavaOne大会上,Sun公司宣布最终会将Java开源,并在随后的一年多时间内,陆续将JDK的各个部分在GPL v2(GNU General Public License v2)协议下公开了源码,并建立了OpenJDK组织对这些源码进行独立管理。
  2006年12月11日,Java1.6发布,工程代号Mustang(野马)。这个版本尤其特殊,Sun公司终结了从Java1.2开始已经有8年历史的J2EE、J2SE、J2ME的命名方式,启用java SE 6、Java EE 6、Java ME 6的命名方式。在这个版本中,Java虚拟机做了大量改进,包括锁与同步、垃圾收集、类加载等。
  在Java 1.6后,由于代码复杂性增加、JDK开源、以及Sun公司收购案等原因,Java再也没有维持两年发布一个主版本的发展速度,到目前为止Java1.6一共发布了37个小版本。
  2009年2月19日,Java1.7完成了第一个里程碑版本(此时并未发布),工程代号为Dolphin(海豚),相根据最初的规划来看,Java1.7是一个包含众多改进的版本,但是由于商业和技术竞争的劣势,Sun公司在当时的市值仅为巅峰时期的3%,财务上的紧张导致Sun公司无力推动研发计划如期进行,最终2009年4月20日,Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有。
  直至,2011年7月28日,Java1.7正式发布,相信现在还有不少公司的项目是运行在Java1.7之上。主要语法改进点,包括:switch语句块中允许以字符串作为分支条件、在一个语句块中捕获多种异常、引入Java NIO.2开发包、在创建泛型对象时应用类型推断等;
值得一体的是,Java1.7在第四个小版本更新时,开始支持Mac系统,并在第六个小版本时完全支持。
  2014年3月19日,Java1.8正式发布,工程代号Spider(蜘蛛),主要改进包括:Lambda表达式,还有Stream API流式处理,joda-time等等一些新特性。其中,最大的改进就是Lambda表达式,主要为了使Java更易于为多核处理器编写代码。
  在历经多次跳票之后,2017年9月22日,Java1.9正式发布,带来了众多特性,其中最为关注的是模块化(Project Jigsaw),该特性使Java可以适应不同大小的计算设备,改进其安全性,可维护性,提高性能,简化各种类库和大型应用的开发和维护。模块化(Project Jigsaw)从Java1.7阶段就开始筹备,Java1.8阶段进行了大量工作,终于在Java1.9里落地。

转载于:https://www.cnblogs.com/kangxy/p/11051838.html

2019年春阅读笔记1——JAVA发展史相关推荐

  1. 【阅读笔记】Java游戏服务器架构实战

    [阅读笔记]Java游戏服务器架构实战 书籍链接:Java游戏服务器架构实战 作者提供的源码链接:kebukeYi / book-code 这里对书籍中比较重要的知识点(精华部分)进行摘录(总结) 文 ...

  2. 《Java修炼指南:高频源码解析》阅读笔记一Java数据结构的实现集合类

    一.Arrays工具类 来自java.util.Arrays,用来处理数组的各种方法. 1.1 List asList(T- a) 用来返回由自定数组支持的固定大小列表,虽然这里返回了一个List,但 ...

  3. 《彩票假设》ICLR 2019 best paper 阅读笔记

    论文: THE LOTTERY TICKET HYPOTHESIS: FINDING SPARSE, TRAINABLE NEURAL NETWORKS 论文来源:ICLR 2019 今天的组会总结在 ...

  4. 云时代架构阅读笔记二——Java性能优化(二)

    承接上文Java性能优化(一)https://www.cnblogs.com/guo-xu/p/11019267.html 4)尽量确定StringBuffer的容量 在说和这个标题相关之前,先说一下 ...

  5. 阅读笔记一——java高并发的性能优化

    前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没 ...

  6. java 并发 调优_阅读笔记一——java高并发的性能优化

    前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没 ...

  7. 2019人工智能发展趋势阅读笔记 (原创: 浦东改发院金融研究室主任刘斌)

    1.开源 PyTorch 开源python机器学习平台 MILA 蒙特利尔研究所 开源库:Theano by Yoshua Bengio Keras, Microsoft cognitive Tool ...

  8. 《Rigging the Lottery》 RigL算法 论文阅读笔记

    Rigging the Lottery: Making All Tickets Winners authors: Utku Evci Trevor Gale Jacob Menick Pablo Sa ...

  9. 2019 sample-free(样本不平衡)目标检测论文阅读笔记

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自知乎,已获作者同意转载,请勿二次转载 (原文地址:https://zhuanlan.zhihu.com/p/100052168) 背景 < ...

最新文章

  1. MyBatis传入多个参数的问题 - mingyue1818
  2. 【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
  3. wilkinson--生成Wilkinson特征值测试矩阵
  4. 推荐8个优秀的基于HTML5的信息图
  5. 跟随者数字解码_跟随模式的数字
  6. 【译】TetroGL: An OpenGL Game Tutorial in C++ for Win32 Platforms - Part 2 (上)
  7. 【Python】理解Python(1) - Python数据模型,is关键字,类型
  8. Redis 源码分析之故障转移
  9. Flutter 进阶篇-所有知识点架构
  10. php引用()详解及注意事项
  11. 在linux下安装mplayer和解码器
  12. [oeasy]python0020换行字符_feed_line_lf_反斜杠n_B语言_安徒生童话
  13. 总结一下面试中经常被问到的面试题,希望对各位初中级同胞有用。
  14. Rational Rose 2007 使用方法
  15. Centos jenkins 插件安装失败
  16. imToken—钱包如何导出助记词?
  17. 紫光信息港 软件测试,紫光展锐 信息化软件工程师面经
  18. ES6新增关键字:let和const及let的常用场景
  19. css的nth选择器,CSS3 :nth-child() 选择器
  20. 【淘宝代运营】店铺运营实操中,需要掌握的五点

热门文章

  1. python bbs论坛_十个基于Python的BBS论坛类开源web框架汇总(附源码地址)
  2. 一款炫酷的相册动画合集【源码分享】
  3. java反射getmethod_Java反射方法
  4. ChatGPT还没玩明白,自主人工智能已经来了
  5. 删除文件中的英文字母
  6. EXCEL中替换换行符、回车符
  7. 使用python写一段代码,能够实现图片转成素描风格
  8. android 5.1 keyguardhostview,android4.4的Keyguard心得
  9. Redis在电影票系统的设计与实现(Redis键值对设计)
  10. 2019企鹅号自媒体为什么没有推荐了?细分企鹅号的推荐机制