Java历史

  学习Java语言之前,我觉得大家应该是从头开始,对吧?不管你之前是学过还是没学过,都和学习某一个知识一样,从头开始去了解它,然后到这个深入的掌握,到最后你可能理解并且灵活的运用。所以它肯定是这样的一个过程,所以不管你们之前有没有学过,反正建议大家都认真地看一看。那么,这“头”,哪里是“头”呢?在学习Java语言之前呢,我们得先了解它的历史背景,我觉得这应该是一个“头”,因为你学习任何一个东西的话得先了解它。是这样的把?也许你会觉得这个东西对于你来讲会无所谓,只要我会写程序就可以了,那关键的问题是,你在以后去工作当中,跟别人谈论的时候,你做什么的呀?你得跟人解释啊,解释我是做软件开发的,得跟家人解释我是做Java的,回头家里人就搞不清楚了。所以我觉得历史背景应该算作一个知识点的完整度吧,所以大家需要了解一下。但是这个东西也可以在网上查得到哈,去网上一查,百度一搜,随便都有,或许大家之前也了解过相关的信息。作为知识点的完整度,就当听故事吧,好吧。

  咱们的第一堂课,就从Java的“头”(历史)开始说一说。那么我们想要了解它的这个背景呢,我们应该是从这个Java的创始人开始说起,对吧。讲故事嘛,总得有个头,所以一定得从这个创始人来说起。

  创始人是谁呢?首先,创始人他是一个男人,其次,这个创始人他不是中国人,哈!你觉得我这是在废话,是吧,都知道,所以不闹了。这个,我算一下,从1955年到现在有多少年了?60多年了吧?嗯,对,60多年前,在这么一个寒冷的冬天,在加拿大,还不是一个城市里,是个小村庄里。在这个地方,在60多年前加拿大的一个小村庄里,冬天,在这个地方呢,有一个小孩,一个小孩,一个男孩,呱呱坠地了。就是,一个小男孩在60多年前出生了嘛。然后,这个小男孩他的家长给他起名字,是这么起的,他的名字叫James。但这个名字起完了之后呢,其实到后来谁也没有想到,这个小男孩,这个叫James的长大了之后,他会改变整个计算机的领域,这个行业。他是一个计算机的天才,计算机语言的天才。大家要明白,这个James可不是那个打篮球的詹姆斯哈登哈,不是,不是这样的哈。他这个James呢,名字是James,他的姓氏肯定是他的家族给的姓氏嘛,他的名字是这样写的,他的名字是James-Gosling。这个是他的名字,所以翻译过来的中文呢,我们应该这么翻译,叫做詹姆斯-高斯林。这么一个名字,但是很多,我们这个互联网行业的朋友哈,因为开玩笑,认为这个“高斯林”发音特别像那个中文“高司令”,所以很多互联网当中的这个IT圈的朋友啊就开玩笑跟着叫这个James-Gosling叫高司令。那么这个高司令就厉害了,很厉害。

  高司令从小就喜欢电子技术,从小就喜欢,爱鼓捣东西,就是他特喜欢拆卸、重组、重组完了之后再拆卸、再重组,喜欢不断地钻研。所以呢,这个James-Gosling,他从小就喜欢弄这个电子的设备。

  他12岁的时候就很厉害了,他干嘛了呢,他用这个报废的电话,就是把家里的电话给拆了,和这个电视机,当然不是好的,都是报废的电话、电视机,他把它给拆开了,拆来干嘛呢?去拿这里面的零件,用里面的零件再进行组装,把他做成一个电子游戏机,这小孩很厉害,是吧?12岁,我想想我12岁,我12岁的时候应该,那个时候别说拆了,我觉得我玩游戏好像都不行,你看这小孩,12岁就开始拆卸电路板,弄个游戏机,就是这小孩从小就很热爱这相关的事情,喜欢捣鼓电子零部件这种事情。你们可以想想,他在这样一个小村庄里,这个小村庄其实不大,对吧?所以在这个小村庄里,好多人都知道这个事情,所以村庄里很多人知道Gosling这个小男孩在弄这个事情,所以附近的村民家里很多电器坏掉了就找他修,不光是小件,据说家里的很多大件,比如农民用的收割机坏掉了,也找他修。所以你看这小孩常常就帮人家修理东西,很厉害。

  再往后,在他14岁的时候就更厉害了,14岁的时候干什么了呢?James他参加了一个他们中学组织的一个去大学参观的活动。就是他所在的中学组织了一个活动,这个活动就是去附近的一所大学参观。为了他们可能上大学的时候打好基础。所以这个小孩就跟着学校一起去了,但这小孩小时候脑子很灵活,我觉得看来就是觉得有点超于常人的感觉,这小孩很坏哈,他干什么了呢?他去这个大学的时候,他进入这个大学参观的是计算机中心,并且把计算机中心的密码给记住了,说他坏也不是,说他聪明吧,就这样的。想想如果中国的小孩记住了这个东西,那很不安全的,让你去了就很麻烦,但外国的老师就不这样的。所以这小孩把大学中心的密码记住了之后呢,从此以后就迷上了这个计算机相关的东西。所以从那开始,偷偷的溜进计算机中心,开始自己学习编程,因为大家都知道计算机中心有很多资料嘛,对不对?这些资料专门供给大学生和老师们用的,所以他就偷偷溜进去了,偷偷溜进去这个过程,大家想想,那个时候在大学里是没人管的,包括现在,在一个大学里头,很多人偷偷进去是很危险的,大学肯定会制止这个事情,但国外很多人就不是这样的。他们老师也知道,一个小孩进来也没什么威胁,小孩进来,一看也不是干什么坏事的,他是来这学习的。所以大学的老师知道这个事情但没有阻止他。

  但是他经过长时间的,慢慢的学习。一年以后,也就是15岁的时候,大学里面就产生了这么一个小问题。大学里面有一个天文系,这个天文系天天观察那些什么卫星什么的,数据是很庞大的,所以天文系觉得这个数据在计算起来看起来非常非常的麻烦,所以他们想要去编写一套系统。这套系统干嘛的呢?用来分析卫星、天文等数据。但是天文系的人可能对这个计算机是不太懂的,他们只能拿来用,但你要他们写程序可能就差一些,所以天文系就想找其他人来帮忙。所以但是他们除了老教授带领一些人编写这个程序以外,他们知道James这个小孩有这个能力,所以他们在编写这个系统的时候招聘James作为临时的编程员。所以James在15岁的时候在大学里头就有这么一个编程序的工作,做一个临时的小程序员,很厉害。所以大家看,他从小就接触这些东西很早,比我们一般的人要接触的早一些。

  随着James-Gosling的发展,到80年代的初期,他上学毕业了,获得了一个博士学位,考到博士学位之后呢,毕竟最后还是得要工作嘛,所以有很多大型的公司招募他,他去的第一家公司就是非常非常有名的,大家后来听到的公司叫做IBM公司,这时James-Gosling的第一家公司,非常有名,去了以后,当时在80年代的时候,可能计算机还没有那么发达,那么他去了以后,去那做了什么呢?他去那做的第一个工作是设计IBM公司第一代工作站,第一代工作站是IBM公司一个小项目,他们做的这个小项目其实并不被IBM公司高层所看好。所以对于James这种从小就痴迷技术的一个人,在公司里整个项目不被看好,相当于整个部门就不受重视了。

  这让James很失望,所以一段时间后,他就跳槽了,跳槽之后去了哪呢?就是大家后来熟知的SUN公司,“SUN”这个词的全称是Stanford University Network(斯坦福大学网络公司) ,后来SUN公司注册的时候注册的公司名字是SUN Microsystems。SUN公司相比IBM公司就不一样了,这个SUN公司他就非常注重人才,也非常注重对于技术的使用。所以James来到SUN公司之后就如鱼得水一般,因为James从小就痴迷技术,而公司又很重视技术。但是即便是这样,他们的项目并没有成为流行的产品,也就是当时的SUN公司名气还不是那么大。当然,在那个年代,80年代的时候,在软件开发这个行业,竞争其实很激烈的,但那时候大家都还在摸索阶段,都想成为一个引领时代发展的公司,SUN公司也不例外,所以当时SUN公司就想在这竞争压力都很大的环境下成立了一个技术小团队,让这个团队试图预测未来软件行业的发展,然后引领时代的潮流,所以当时SUN公司就成立了一个小的研发团队,试图预测未来的软件技术发展趋势。小团队成立之后,就需要一个负责人,当时Gosling这个人很牛,所以他们当时就派James-Gosling成为这个项目的负责人。所以James从IBM公司不受重视,到了SUN公司后一下子就重视起来了。在当时,最强大的公司是微软公司,微软公司当时有很多编程语言,最著名的最火的是C++,当时更多的是嵌入式的小系统,都是将C++程序嵌入到芯片里面使用,C++程序其实很大,而且芯片种类还很繁杂,导致很多编程人员很苦恼。就是在当时只有C++很火的时候,这样的一个背景之下,James团队接手了一个Green项目,叫做绿色计划,他们想要做这个智能家居,但由于C++语言存在众多的弊端,其中最大的弊端就是跨平台性差,当时的跨平台指的是各种不同公司不同规格的芯片。很麻烦,这时候怎么办呢?所以James他们这时候就想,这个语言嘛,不就是一套规范,那么语言是一套规范的化,那么在开发的时候很麻烦,那么我们就不如开发一套自己的产品,也就是开发一套全新的语言规范。就是自己公司里面自己用,但开发一套全新的也很麻烦,于是他们沿用了C++语言里的一些语法结构,提高了开发效率,但毕竟是一套新的语言规范,所以就需要取一个名字。老外取名字比较随便,不像我们,取个名字还得算一下,老外就不讲究这些,一般比较随便。James作为团队领导人,取名字自然就是他该去想的事情,所以他很纠结,他在办公室很纠结,纠结的时候,一转头,看到窗外有一棵大树,是他们当地的一种橡树,橡树有一种英文的名字叫做OaK。老外起名字就这样,起名字起不出来纠结呢刚好看到一棵树,一拍脑门,咱们这个新的语言就叫OaK吧,多随便,就这样名字就这样定了。这样的话,在公司内部就产生了一套新的语法规范,公司内部用的。这套语法规范摒弃了C++很多不好的东西,比如C++过于庞大以及不能跨平台等。他们拿着OaK这套语法规范开发Green项目然后成功了。

  1992年的夏天,想将OaK语言连同Green项目进行展示,展示给硬件生产商,说服他们使用自己的产品和语言。但是硬件生产商并不买账,因为他们并不确定OaK语言能用,他们更习惯使用C++,甚至很多厂商对OaK语言还一无所知呢,所以很难为这种新的语言给他们投资,风险很大。这样的话没有得到很多生产商的支持,他们没有进入这个市场,所以就被暂且的搁置了。所以他们花了很多时间研究的一套新的语言就这么搁置了,很可惜,尤其是对咱们这种做技术的,开发一个东西就跟自己生的一个小孩子一样,天天费劲心思弄好的一个东西没有得到别人的重视。但是也没有办法,James没有那样的能力呀,搁置就搁置吧,以后再找一个合适的时机,看以后能不能将这个精心研发的东西推广出去。发布的时机很重要,那发布的时间是什么时候呢?在美国有一个非常著名的地方,叫硅谷,硅谷这个地方是很多IT硬件生产商的聚集地,他们每年会在这个地方召开一个全球性的IT盛会,于是SUN公司就像把握这种难得的契机,于是,他们在1995年的时候,他们去参加这样一个全球性的IT盛会,想在这个盛会上发布他们的产品,想让硬件厂商、软件公司了解他们的东西,但是发现了一个问题,遇到个什么问题呢?就是OaK这个名字早就被其他公司注册成商标了,在外国是很注重商标的保护的,所以他们就需要改一个新的名字,然后他们的名字怎么改的呢?后来他们就改成了现在大家认识的,就叫Java。

  它为什么叫Java呢?我看过两个版本,在网上找了很多资源,有一个版本说是这样的,说Java四个字母是J  And V  A组成,J是指James,V是指文森特,A是指埃利蒙斯,但其实不是这样的。还有另外一种,我觉得这种更为贴切一点,就是JAVA这四个字母取自一个地名,是印度尼西亚国家有一个地方叫做爪哇岛,所以爪哇岛英文名就是java。印度尼西亚的爪哇岛其实是一个全球闻名的地方,为什么全球闻名呢?其实这个地方盛产一种咖啡豆,然后这种咖啡豆变成了世界最有名的咖啡,叫猫屎咖啡。猫屎咖啡为什么有名呢?是因为当地有一种猫叫麝香猫,因为没什么东西吃,所以它们经常爬到树上去,专门吃这个咖啡豆,后来很多科学家研究,这种猫吃了咖啡豆之后没办法消化,就排泄出来了,然后把排泄出来的咖啡豆的表皮去掉然后去做咖啡,发现这样做出来的咖啡非常非常的香纯。所以我觉得James他们想名字就是想让他们取的名字想印尼爪哇岛一样的有名,被全球的人都知道。java的安装包也是一个咖啡的形状,所以我觉得跟这个名字的由来很像。所以一切准备就绪之后,在1995年5月23日这天,SUN公司在美国IT盛会上,正式发布了java语言,当时只是告诉全球,在我们SUN公司有这么一个语言的存在,但其实还并不完善。在隔了一年之后,也就是1996年1月的时候,发布了一款开发工具包,工具包称之为JDK1.0版本。标志着Java语言成为了一门独立的编程语言了,拥有自己的开发工具了,大家可以去我们官网下载了。1997年2月的时候,更新了JDK1.1版本。1998年12月的时候,发布了一个全新版本,JavaEE企业版。1999年6月的时候,SUN公司发布了java第二代平台(即java2.0版本),相当于全新的革新,这个版本发布之后,将这门语言进行细化了一下,就是细化了三个不同的小版本,这三个小版本干嘛的呢?是做不同方向的。它是这样写的

  Java2  Standard Edition        java第二代平台标准版    桌面级  C/S(客户端/服务器)

  Java2  Enterprise   Edition    Java第二代平台企业板              企业级  B/S (企业级开发)

  Java2  Micro    Edition           Java第二代平台微型板    移动端

  简写:

  J2SE     Java第二代平台标准版    桌面级  C/S(客户端/服务器)

  J2EE  Java第二代平台企业板              企业级  B/S (企业级开发)

  J2ME    Java第二代平台微型板    移动端

后面还在不断的完善,在2000--2002年期间,更新了JDK1.3  JDK1.4,Z主要是提升JDK的性能,完善JDK的性能。2004年的时候发布了一个里程碑式的版本,叫JDK1.5版本,这个版本增加了很多新特性。后来这个里程碑式的版本就不叫JDK1.5了,而是直接改为了JDK5.0版本了。再往后,到了2005年的时候,还是在不断完善,SUN公司发布了Java6,是最经典的版本,也是留存最久的版本。再到后面,公司就产生一些问题了,比如财务、运营等问题。公司内部出现一些问题。这个时候,出现了一个新的公司,叫做甲骨文公司(Oracle公司) 。Oracle公司现在是全球第二大互联网公司,第一是微软,Oracle公司之前是没有那么强大,Oracle公司是怎么一步步发展起来的呢?它采用的方式是并购,他们公司的资金很完善,所以在2009年Oracle公司以市价74亿¥并购了SUN公司,所以Java连同SUN公司的技术就易主了。所以2009年以前,Java语言是SUN公司的,2009年以后Java语言是Oracle公司的了。2009年之后Java语言就由Oracle公司进行更新了,但是Oracle公司不像SUN公司时候那样了,因为Oracle公司有很多很多不同的业务,它不止专注于这一个Java语言的产品,所以他们的更新速度放慢了,不像之前年年更新。到2011年三年的时间,Oracle公司跟新了一个新版本Java7版本。又隔了3年,2014年的时候,Oracle公司发布了Java8,2017年的时候发布了Java9。

  Java之所以现在如此火爆,除了它的历史背景之外,还有它自身具有很多的特性。有些什么特性呢?首先是Java语言的跨平台性,以前的跨平台是指不同厂商的芯片,现在是指不同版本的操作系统。然后是Java语言面向对象的思想,是一种思想。其次是Java语言的简单性,它摒弃了C++很多的弊端。再往后Java语言具有健壮性(鲁棒性),它具有完善的垃圾回收机制、异常处理机制。同时还具有多线程性,并行操作,提高了执行的性能。

Java历史[史上最详细的阐述了Java发展的历史过程]的更多相关文章

  1. 转 史上最详细的Hadoop环境搭建

    GitChat 作者:鸣宇淳 原文:史上最详细的Hadoop环境搭建 关注公众号:GitChat 技术杂谈,一本正经的讲技术 [不要错过文末活动哦] 前言 Hadoop在大数据技术体系中的地位至关重要 ...

  2. 史上最详细Windows版本搭建安装React Native环境配置 转载,比官网的靠谱亲测可用

    史上最详细Windows版本搭建安装React Native环境配置   2016/01/29 |  React Native技术文章 |  Sky丶清|  95条评论 |  33530 views ...

  3. 史上最详细的XGBoost实战

    史上最详细的XGBoost实战 0. 环境介绍 Python 版 本: 3.6.2 操作系统 : Windows 集成开发环境: PyCharm 1. 安装Python环境 安装Python 首先,我 ...

  4. 史上最详细“截图”搭建Hexo博客并部署到Github

    http://jingyan.baidu.com/article/d8072ac47aca0fec95cefd2d.html 大家也搭建过博客,很多时候,按着教程来做就可以了,但是我当时为了搭建Hex ...

  5. 史上最详细“截图”搭建Hexo博客——For Windows

    http://angelen.me/2015/01/23/2015-01-23-%E5%8F%B2%E4%B8%8A%E6%9C%80%E8%AF%A6%E7%BB%86%E2%80%9C%E6%88 ...

  6. 史上最详细的Android Studio系列教程一--下载和安装

    链接地址:http://segmentfault.com/a/1190000002401964#articleHeader4 原文链接:http://stormzhang.com/devtools/2 ...

  7. 测试思想-测试设计 史上最详细测试用例设计实践总结 Part2

    史上最详细测试用例设计实践总结 by:授客 QQ:1033553122 -------------------------接 Part1-------------------------- 方法:这里 ...

  8. 史上最详细的C语言和Python的插入排序算法

    史上最详细的C语言和Python的插入排序算法插入排序原理:所谓插入排序,就像我们在打牌(斗地主)时,整理我们自己手中自己的牌一样,就像是2,1,3,9,J,K,5,4,这四张牌.我们要把它其中的几张 ...

  9. 史上最详细mac安装Qt教程

    史上最详细mac安装Qt教程,小白看过来! 这是一篇非常适合Qt入门小白的的安装Qt教程,因为这学期我们小组的一个关于高速救援的项目要用到Qt与web进行交互式展现相关的图像,由于没有MSVC这个插件 ...

随机推荐

  1. java scoket Blocking 阻塞IO socket通信一

    package bhz.bio; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; p ...

  2. 浅谈bfs

    广搜(bfs) 定义 广度优先算法,简称BFS.是一种图形搜索演算法,简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,终止. 与dfs的相似之处与不同 结合深搜理解 相同点:都 ...

  3. 看看有哪些 Web 认证技术.

    BASIC 认证 BASIC 认证(基本认证)是从 HTTP/1.0 就定义的认证方式. BASIC 认证会将"用户名:密码"经过 Base64 加密后放入请求头部的 Author ...

  4. Mariadb之半同步复制集群配置

    首先我们来了解下在mariadb/mysql数据库主从复制集群中什么是同步,什么是异步,什么是半同步:所谓同步就是指主节点发生写操作事件,它不会立刻返回,而是等到从节点接收到主节点发送过来的写操作事件 ...

  5. 如何将less编译成css文件__less自动编译成css的方法总结

    作为css的预处理less,拥有着比css更快捷方便,扩展了css的变量.Mixin.函数等特性,使 CSS 更易维护和扩展.  如何你已经回使用css,那么less就很容易上手了.如果不使用less ...

  6. call,apply,bind的内部原理实现

    call call 方法使用一个函数执行的时候更改本身 this 指向,并传入一个或者多个参数. var obj = { name: '$call' } function _fun() { conso ...

  7. MVC + EFCore 项目实战 - 数仓管理系统2- 搭建基本框架配置EFCore

    本次课程就正式进入开发部分. 首先我们先搭建项目框架,还是和之前渐进式风格保持一致,除必备组件外,尽量使用原生功能以方便大家理解. 开发工具:vs 2019 或以上 数据库:SQL SERVER 20 ...

  8. Linux系统安装JDK8

    一.卸载现用的JDK 1.查看Linux自带的JDK是否已安装 查看是否安装openjdk,java  -version (yum安装的 一般都是 OpenJDK     命令:yum install ...

  9. 【js】栈方法和队列方法

    栈方法:后进先出,推入(push)和弹出(pop):push("**")返回数组长度,pop()返回弹出的项. var colors = new Array(); // 创建一个数 ...

  10. 2018年BRATS 肿瘤分割挑战赛第三名分割方案One-pass Multi-task Networks with Cross-task Guided Attention for Brain Tumor Segmentation

    首先说一下我对这个方案的看法,相比第一名与第二名的方案,这个方案的分割方法确实复杂的多,原论文是发表在MICCAI,后来砖投到IEEE image processing(SCI 1区),总体感觉给人一 ...