2019年春阅读笔记1——JAVA发展史

可莉
• 阅读 550

  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里落地。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java基础知识随身记
2018年11月12日20:51:35一、基础知识:1、JVM、JRE和JDK的区别:JVM(JavaVirtualMachine):java虚拟机,用于保证java的跨平台的特性。  java语言是跨平台,jvm不是跨平台的。JRE(JavaRuntimeEnvironment):java的运行环境,包括jvmjava的核心类
初步探索GraalVM--云原生时代JVM黑科技
1云原生时代Java语言的困境经过多年的演进,Java语言的功能和性能都在不断的发展和提高,诸如即时编译器、垃圾回收器等系统都能体现Java语言的优秀,但是想要享受这些功能带来的提升都需要一段时间的运行来达到最佳性能,总的来说Java是面
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
Java 老矣,尚能饭否?
Java老矣,尚能饭否?22岁,对于一个技术人来说可谓正当壮年。但对于一门编程语言来说,情况可能又有不同。各类编程语言横空出世,纷战不休,然而TIOBE的语言排行榜上,Java却露出了明显的颓势。这个老牌的语言,未来会是怎样?1.写在前面从1995年第一个版本发布到现在,Java语言已经在跌宕起伏中
Stella981 Stella981
3年前
2019年春阅读笔记1——JAVA发展史
  Java编程语言从诞生到现在已经二十年多年,现已发展成为计算机史上影响深远的编程语言之一,开源/跨平台是其最大的特征,也正是因为此,Java不断地吸引世界上众多优秀程序员来进行学习。  Java从第一个版本的诞生,到现在已经有20多年的时间了。经过这20多年的发展,以及数次的迭代,Java现在发展到了第九个版本JDK1.9。相比于最早的JDK1
taskbuilder taskbuilder
1个月前
任流TaskFlow工作流引擎
1TaskFlow简介任流TaskFlow是本公司的第四代工作流引擎,从2003年开始研发第一个版本到现在已经有20多年历史,在这20多年的发展过程中,该产品不断迭代完善,已经非常成熟和稳定,并经过了上万家客户的检验。使用工作流可以改进和优化业务流程,提高