Java语言的发展历程
前言
自1946年2月14日世界上首款计算机ENAC问世,第一代计算机语言“机器语言”便诞生了,它使用的是最原始的穿孔卡片,这种卡片上使用的语言只有专家才能理解,与人类语言差别极大。这种语言本质上是计算机能识别的唯一语言,人类很难理解。为了能让人们更容易理解并编写,于是便有了第二代的“汇编语言”,相比机器语言,汇编语言大大前进了一步,尽管它还是太复杂,人们在使用时很容易出错误,但毕竟许多数码已经开始用字母来代替。简单的“0、1”数码谁也不会理解,但字母是人们能够阅读并拼写的。虽然第二代计算机语言仍然是“面向机器”的语言,但它已注定成为机器语言向更高级语言进化的桥梁。当计算机语言发展到第三代时,就进入了“面向人类”的语言阶段。你可以阅读、并直接用人类的语言来输入。对我们汉语来说,目前还不能用中文汉字来输入指令,这主要是因为中文的输入还没有一个非常好的手段。第三代语言被人们称之为“高级语言”。高级语言是一种接近于人们使用习惯的程序设计语言。它允许用英文写计算程序,程序中所使用的运算符号和运算公式,都和我们日常用的数学公式差不多。高级语言容易学习,通用性强,书写出的程序比较短,便于推广和交流,是很理想的一种程序设计语言。我们学习的就是第三代语言“高级语言“中的Java语言。
1.Java的诞生
20世纪90年代,硬件领域出现了单片机式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意,因为使用它可以大幅度提升消费类电子产品(例如:电视机顶盒、面包烤箱、移动电话等)的智能化进度。Sun公司为了抢占先机,在1991年成立了一个名为“Green”(类似于绿色软件的意思)的项目小组,James Gosling、Patrick Naughton、Michael Sheridan和其他几个同事们一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面开始研究开发新技术,专攻计算机语言在消费类电子产品上嵌入式应用。
由于C++所具有的优势,该项目组的研究人员首先考虑采用C++来编写程序。但对于硬件资源极其匮乏的单片式系统来说,C++所编写的程序过于庞大和复杂。另外由于消费类电子产品所采用的嵌入式处理器芯片的种类繁杂,如何让编写的程序跨平台运行也是个难题。为了解决困难,他们首先着眼于计算机语言的开发,假设了一种结构简单、符合嵌入式应用需要的硬件平台体系结构并为其制定了相应的规范,其中就定义了这种硬件平台的二进制机器码指令系统(即后来成为“字节码”的指令系统),以待语言开发成功后,能有半导体芯片生产商开发和生产这种硬件平台。对于新语言的设计,Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了C++上的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发出了一个名为“Oak”的面向对象语言。
由于在开发Oak语言时,尚且不存在运行字节码的硬件平台,所以为了在开发时可以对这种语言进行实验研究,他们就在己有的硬件和软件平台基础上,按照自己所指定的规范,用软件建设了一个运行平台,整个系统除了比C++更加简单之外,没有太大区别。1992年的夏天,当Oak语言开发成功后,研究者们向硬件生产商进行演示了Green操作系统、Oak程序设计语言、类库和其硬件,以说服他们对Oak语言生产硬件芯片,但是,硬件生产商并未对此产生极大的热情。因为他们认为,在所有人对Oak语言还是一无所知的情况下就贸然生产硬件产品的风险实在是太大了,所以Oak语言也就因此缺乏硬件的支持而无法进入市场,从而被搁置了下来。
1994年6、7月间,在经历了一场历时三天的讨论后,团队决定再一次改变努力的目标,这次他们决定将该技术应用于万维网上。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,Patrick Naughton编写了一个小型万维网浏览器WebRunner。
1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的静态页面能够“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且能够跨平台运行。于是,世界各大IT企业为此纷纷投入了巨大的人力、物力与财力。这个时候,Sun公司想起了那个被搁置很久的Oak,并且重新审视了那个用软件编写的实验平台,由于它是按照嵌入式系统硬件平台体系结构所进行编写的,所以非常小,特色适用于网络上传输,而Oak也是一种精简的语言,程序非常小,适合在网络上传输。Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上传输Applet(一种将小程序嵌入到网页中进行执行的技术),并将Oak更名为“Java”。从此一个即好听又好记、具有强大的生命力的编程语言Java便诞生了。
(在申请商标的时候也有这样一件趣事,Sun公司在申请Oak商标时发现Oak已经被别家公司使用了,所以James Gosling决定通过市场部门,请来了一个命名顾问,召开命名征集会。在命名征集会上,大家提出了很多名字。最后按大家的评选次序,将十几个名字排列成表,上报给商标律师。排在第一位的是Silk(丝绸)。尽管大家都喜欢这个名字,但遭到James Gosling的坚决反对而作罢。排在第二和第三的都没有通过律师这一关。James Gosling最喜欢的就是排在第三位的Lyric(抒情诗)。只有排在第四位的名字得到了所有人的认可和律师的通过,这个名字就是“Java”。那么是谁在命名征集会上提议叫“Java”的呢?Jame Gosling在接受Sys-con.com的采访时回忆道:“市场部组织了命名会,命名顾问主持了会议,我们喊叫着列出了一大堆名字。我记得第一个提议Java这个名字的是Mark Opperman”。Mark Opperman是在一家名叫“爪蛙咖啡”的咖啡店与同事品尝咖啡时得到灵感的。Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。国外的许多咖啡店用Java来命名或宣传,以彰显其咖啡的品质。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans (对象豆)等等。)
2.Java的历史
1995年5月23日,Sun在Sun World会议上正式发布Java语言和HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和Microsoft等各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java使用许可证,并为自己的产品开发了相应的Java平台。
1996年1月,Sun公司发布了Java的第一个开发工具包(JDK1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术。
1996年9月,约8.3万个网页应用了Java技术来制作。
1996年10月,Sun公司发布了Java平台第一个即时编译器(JIT)。
1997年2月18日,JDK1.1面世,在随后的三周时间里,达到了22万次的下载量。
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录。
1997年9月,JavaDeveloperConnection社区成员超过十万。
1998年2月,JDK1.1被下载超过2,000,000次。
1998年12月8,Java的企业平台Java EE正式发布。
1999年6月,Sun公司发布第二代Java的三大版本:标准版J2SE(Java2 Standard Edition):应用于桌面环境、企业版J2EE(Java2 Enterprise Edition):应用于基于Java的应用服务器、微型版J2ME(Java2 Micro Edition):应用于移动、无线及有限资源的环境。Java2的发布,标志着Java的应用开始普及,是Java发展历程中的又一个里程碑。
1999年4月27日,HotSpot虚拟机发布。HotSpot虚拟机发布时是作为JDK1.2的附加程序提供的,后来它成为了JDK1.3及之后所有版本的Sun JDK的默认虚拟机。
2000年5月8日,JDK1.3发布。
2000年5月29日,JDK1.4发布。获得Apple公司Mac OS的工业标准的支持。
2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机。
2001年9月24日,Java EE 1.3发布。
2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升,与J2SE1.3相比,其多了近62%的类与接口。在这些新特性当中,还提供了广泛的XML支持、安全套接字(Socket)支持(通过SSL与TLS协议)、全新的I/OAPI、正则表达式、日历与断言。
2004年9月30日18:00PM,J2SE1.5发布,是Java语言发展史上的又一里程碑事件。为了表示这个版本的重要性,J2SE 1.5正式更名为Java SE 5.0(内部版本号:1.5.0),代号“Tiger”该版本是自1996年发布1.0版本以来最大的更新,其中包括泛型的支持、基本数据类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。
2005年6月,在Java One大会上,Sun公司发布了Java SE 6。此时,Java的各个版本都已经更名,去掉了前些版本中的数字2,改为了Java。
2006年11月13日,Sun公司宣布,将Java技术作为免费的软件对外发布。Sun公司正式发布Java平台标准版的第一批源代码,以及mini版本的可执行源代码。一直以来,Sun公司维持着大约2年发布一次JDK新版本的习惯。
2007年3月,自起,全世界所有的开发人员均可对Java源代码进行修改。
2009年4月20日,Oracle宣布将以每股9.5美元的价格收购Sun,该交易的总价值约为74亿美元。但Oracle通过收购Sun公司获得了两项软件资产:Java和Solaris。于是曾经代表一个时代的公司:Sun倒下了,不过Java的大旗依然“猎猎”作响。2007年11月,Google宣布推出一款基于Linux平台的开源手机操作系统:Android。Android的出现顺应了即将出现的移动互联网潮流,而且Android系统的用户体验非常好,因此迅速成为手机操作系统的中坚力量。Android平台使用了Dalvik虚拟机来运行.dex文件,Dalvik虚拟机的作用类似于JVM虚拟机,只是它并未遵守JVM规范而已。Android使用Java语言来开发应用程序,这也给了Java语言一个新的机会。在过去的岁月中,Java语言作为服务器端编程语言,已经取得了极大地成功;而Android平台的流行,则让Java语言获得了在客户端程序上大展拳脚的机会。
2010年Java编程语言的创始人James Gosling从Oracle公司辞职。
2011年7月28日,Oracle公司终于发布了Java 7,这次版本升级经过了将近5年时间。Java 7也是Oracle发布的第一个Java版本,引入了二进制整数、支持字符串的switch语句、菱形语法、多异常捕捉、自动关闭资源的try语句等新特性。
2014年3月18日,Oracle公司发布了Java 8,这次版本升级为Java带来了全新的Lambda表达式。除此之外,Java 8还增加了大量新特性,这些新特性使得Java变得更加强大。
2017年9月21日,Java 9发布。该版本支持:模块化(jiqsaw)、交互式命令行(JShell)、默认垃圾回收期切换为G1、进程操作改进、竞争锁性能优化、分段代码缓存和优化字符串占用空间等新特性。
2018年3月21日,Java 10发布。
2018年9月25日,Java 11发布。
目前Java的版本已经更新到12版本,但市场主流还是使用的JDK8。
Java语言的发展历程的更多相关文章
- Java起源、发展历程、环境变量、第一个Java程序等【1】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: 本文原创作者:pipi-changing 本文原创出处:http://www.cnblogs.com/pi ...
- c语言的发展历程
C语言的发展颇为有趣.它的原型ALGOL 60语言. 1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言. 1967年,剑桥大学 ...
- java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)
最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...
- Java基础学习总结一(Java语言发展历史、JDK下载安装以及配置环境变量)
最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...
- Java语言的个人理解
Java语言的个人理解(比价深层次吧) 大四的生活确实十分的奢靡,不锻炼,不读书,几乎就是当一天和尚撞一天钟的生活,太颓废了,还好自己不是这个样子,不过身体确实差了很多,昨天跑了一圈内环(4KM),今 ...
- Java语言与C++语言的差异总结
Java的设计者曾说过,设计这门语言的灵感主要来自于C++. 世上先有C++,然后才有Java,整个Java语言的发展历史就是一部对C++的填坑史.所以在Java语言学习过程中,将其与C++语言对比是 ...
- JVM基础系列第1讲:Java 语言的前世今生
Java 语言是一门存在了 20 多年的语言,其年纪比我自己还大.虽然存在了这么长时间,但 Java 至今都是最大的工业级语言,许多大型互联网公司均采用 Java 来实现其业务系统.大到国际电商巨头阿 ...
- 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势
0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...
- 初识Java,Java语言概述
Java语言是SUN(斯坦福大学网络公司)公司1995年推出的一门高级编程语言,由此James Gosling被公认为Java语言之父.Java语言起初运用在小型的家用电子产品上,后来随着互联网的发展 ...
随机推荐
- re模块和正则
正则表达式:就是用来筛选字符串中特定内容的一串具有某种逻辑规则的字符组成.正则表达式不是Python独有的,而是一门独立的技术,它在所有的编程语言中都有使用,在Python中使用就必须依赖于re模块. ...
- IM 云通信
在项目开发中遇到的问题: 在项目中所有的id都必须为字符串类型
- MongoDB 副本集+分片 认证方式搭建
MongoDB 副本集+分片 认证方式搭建 参考资料: https://www.cnblogs.com/ityouknow/p/7344005.htmlhttps://jorwen-fang.itey ...
- 【知识】定时器setTimeout/setInterval执行时this指针指向问题
[问题描述] setTimetout/setInterval中this指针指向window,以下是一个小demo: var demoChange = { key: true, changeFun() ...
- java HTTP文件断点上传
之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...
- luogu 4366 [Code+#4]最短路 Dijkstra + 位运算 + 思维
这个题思路十分巧妙,感觉很多题都有类似的套路. 我们发现异或操作其实就是将一个数的二进制的若干个 $0$ 变成 $1$,或者一些 $1$ 变成 $0$. 而每次按照某种顺序一位一位地异或也可以起到同时 ...
- BZOJ 3786: 星系探索 ETT
Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均有且仅有一个依赖星球.主星球 ...
- Mui去掉滚动条:
/////////去掉滚动条mui.plusReady(function(){plus.webview.currentWebview().setStyle({scrollIndicator:'none ...
- POJ 3660 Cow Contest 任意两点之间的关系 Floyd
题意:牛之间有绝对的强弱,给出一些胜负关系,问有多少头牛可以确定其绝对排名. #include <iostream> #include <cstdio> #include &l ...
- luoguP1514 引水入城 x
P1514 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城 ...