计算机发展史

发布于:2024-10-09 ⋅ 阅读:(12) ⋅ 点赞:(0)

 什么叫JavaEE,这个词的话可能很多同学之前就已经听说过了,那么我们这里要给大家再进一步的解释一下,这个JavaEE可以认为是 Java官方搞出来的一个词。那这个东西我们要想去解释清楚,还需要从头去说起

大概我们要回到上个世纪90年代,那个时候是属于Java刚刚诞生的那个时期, Java刚开始诞生的时候,它诞生的主要的目的是用于进行嵌入式开发。 关于什么是嵌入式,就像什么冰箱洗衣机,然后路由器这些设备,它上面所搭载的这个计算机硬件配置比较的低,它们的功能相对来说也比较单一,所以最开始Java是为了干这件事的。那么Java它的创始人大家应该也听说过,叫詹姆斯高斯林。他最开始搞Java的时候,主要就是因为那个年代其实做这些什么嵌入式开发,做各种应用程序开发,当时主要是C++的天下。然后这个詹姆斯大佬就觉说,这个东西就用起来不是很友好。当时他们团队是临危受命,要去开发一个叫做智能面包机,这也算是一种嵌入式设备。什么叫智能面包机?其实这个东西咱们中国人不是很好理解,但是外国人的话对于这个面包机依赖就比较大。像咱们国内的话,咱们早上吃啥可选的空间非常多,什么包子、油条、豆腐脑,然后什么肠粉,就各种能吃的东西太多了,种类太繁多了,但是外国人不一样,外国人的话他们很多早餐都只是吃的面包,所以如果大家去看那些什么外国的电影或者什么美剧之类的,那些国外的上班族早上要上班来不及了,然后拿那个面包放到面包机里面,然后一热直接吃两口就走了。

大概是这种效果,所以这个面包机大概就这东西,所以智能面包机具体有多智能这个咱也不太清楚,但是可以判断这东西,其实也是属于一种嵌入式的设备所以最开始那个詹姆斯大佬他是为了去开发智能面包机。然后当时他的团队里面,都是一群年轻小伙就是当时他的一些同事就是写C++能力就比较薄弱,因为C++这里面还是需要有一定的经验,就需要掌握一些比较多的知识才能很好去驾驭。

所以他为了解决问题就发明了一个新的语言Oak(橡树),当时还不叫Java,就这个词是因为那个詹姆斯大佬他工作的那个工位窗口外就有一棵橡树,所以他一看到这棵树,然后就把这个名字作为他编程语言的名字了,所以说最开始Java刚出生的一个时候,这个当时他们就开发这种面包机开发开发最后也没开发明白所以这个产品基本上就可以认为是以失败告终的。

这个产品虽然失败,但是我们这个人们发现这个这个 Oak这个语言其实是个好东西。这个时候正好有另外一个场景,就那个年代互联网,然后也刚开始起步,然后当时就有了一个这样的一个需求,就是叫做使用浏览器打开网页,这就属于是当年一个比较重要的一个应用景,那么当年的浏览器也没有什么chrome,那个时候最牛逼的浏览器叫做网景。 它是当年最火的一个浏览器,然后这个公司他们在搞浏览器的时候,他们希望打开的页面不要只是静态,这个所谓的静态就是相当于类似于像报纸或者杂志这种效果,它上面就完全只展示一些文本内容一些图片啥的没有什么用户交互的部分所以他希望能和用户进行更多的交互,所谓的交互意思就是你用户点了,在某个地方他能给你有些反应,用户鼠标放在某个地方他有些反应,我摁一下键盘可能有一些反应,所以说他希望有更多的交互,那么要想有这样的交互,那就需要有专门的编程语言来编写这里的逻辑。所以网景公司就看上这个Oak然后就开始和这个詹姆斯大佬就开始去聊这个合作的事情,所以这个 oak就改名成为了Java,因为当时这个 oak这个名字被另外一个公司给注册了,所以他只能另外改一个名字就改成了Java,于是这个Java就变成了这个网景浏览器上所搭载的平台所以这个时候Java它的用途是给浏览器,是用来给一个叫做网页开发逻辑的,所以这个时候你可以认为就这个时候Java它是在进行前端开发,它的逻辑也就是用户在网页上进行相关的操作,然后怎么样去进行一些反馈,这个活是Java当时他所干的事情,也是凭着这件事情让Java一跃就成为了最主流的几个编程点之一。

虽然说凭借着这个网页前端它火了一波,但是很遗憾好景不长,当时除了网景之外,还有另外一个公司也做浏览器叫做微软,微软当时它那个浏览器就叫IE,IE的话它可以说是后来居上,就抢夺了网景大部分的市场份额。之所以他们后来居上,主要也是因为它是浏览器,主要叫做浏览器和操作系统捆绑销售,因为那个年代就上个世纪90年代那会那个微软的缩小windows那可以说是如日中天的,当时那个 windows不能说开创的图形化,但是确实把图形化操作成这种理念给发扬光大推广开了,所以这个时候的话这个大家一用好,这个 IE浏览器也就逐渐火了,然后微软当时的那个IE它也是支持Java来进行这个叫做前端,但是由于它微软属于那个野心很大,他想搞自己的股权,那当时他搞的自己的语言叫做J++,其实也就是对标Java 了,然后相当于说在Java的地方做出一些改变,他想赋值自己的语言,结果这么一搞就肯定是跟这个跟Java起冲突了,所以Java这边当时有很多反应就和微软这边就产生一些摩擦,甚至说严重到这个对簿公堂了,然后因为这样的一个摩擦,所以微软干脆做一件事在IE全面封杀Java, 所以这一波操作就使得Java基本上就从巅峰跌落。就当时你可以认为它的主要的用途就是用来去开发网页前端的,然后这个网页前端有一个浏览器当时主要的市场份额已经是IE了,结果现在最大的浏览器告诉你说我不想跟你合作了,我要把你封杀掉所以这个时候留给Java其实就非常非常的难受了。那么这是当时这样的一个基本的情况,那么再接下来虽然说得不到就毁掉,你可以这么认为,虽然说微软它为了支持自己的语言封杀Java,但是有句话说的好,就给你机会,也不中用,在这一波操作之下,这个J++并没有抓住机会,被另外一个老哥叫做JavaScript抢占了前端开发的市场。这一波确实也是不得不让人感觉到这个扼腕叹息。这个JavaScript是一个和微软和Java都没有任何关联关系的语言,它虽然叫JavaScript,但其实它的名字主要就是为了那个蹭Java的热度而起的名字,它本身和Java就没有任何关系,所以可以看到这个企业的好名字还是非常有用的,但就是因为他的名字,一看没有Java了,是不是可以用这个。以当时的名字吸引了很多的开发者,所以这个语言就火了,而且一火就是30年直到30年后的今天,那么JS目前仍然是前端开发最主力的语言。

那虽然说Java被封杀了是吧?但是Java也不甘于自甘堕落,他还需要另外去寻求出路,它的出路主要是要从这两个角度来去进行突破,一个角度是做服务器开发也就是做后端开发

另外一个角度还是作为老本行做嵌入式开发。所以这个时候Java他又在他自身的这个基础上推出了几个版本,首先叫做Java标准版:J2SE,然后加上企业版这个叫J2EE,还有一个叫Java精简版:J2ME。这都是官方推出的,推出了这三个版本。那么几个词儿, 后来又改成分别叫做Java SE,Java EE,JavaME。这几个版本有什么关系,其实也很好理解,就是我们这个标准版你就可以认为是我们标准的这一套加入的语法和结合标准库,然后所谓的企业版这个就相当于是在标准版之上扩展的部分,然后精简版就是在标准版之上它经典去掉一半,在标准版之上去掉了一部分,所以大概是这样的一个含义,其实概念上并不难理解。这个企业版后来就走向了这个叫服务器开发之路,所以他就开始往服务器开发这条路,然后这个Java ME就是往嵌入式的位置这个方向进行推进,Java兵分两路重新去寻求自己的一个出路,那这两条路走的怎么样,其实走的都很好,当年这个进行服务器开发最主要的王者是谁?

当年服务器开发领域的王者是PHP2000年之后的事情了。这个时候PHP是当年开发服务器最牛逼的一个,甚至说PHP的官网上就写了一句话,叫做PHP是世界上最好的。当年确实PHP如日中天,以至于他自己有一个错觉说觉得自己是最牛逼的一个人,但是这个很遗憾,最终PHP也只是火了几年,后来其实也就包括就现在这个 PHP状态其实也是很惨的。当年确实非常牛逼,因为当你谈到开发一个网站,它的一个技术站就叫做lamp,其中L就叫做 Linux操作系统,a呢叫做Apache,M就是mysql,p就是PHP。所以当年开发网站的主要是用这些技术,然后Java就仿照PHP自己搞了一套,技术叫做JSP。其实它的一个开发理念和PHP是非常非常相似的,明显你模仿人家但你想超越人家这个是挺困难,所以当年这个后端开发这里,基本上可以认为PHP就是老大,虽然说他不是老大,那你当个老二也可以,那也算是里面有名的,所以大概是这样的情况,然后值得一提的是除了这个老大老二之外,还有一个老三,微软也仿照PHP和JSP自己搞了一套叫ASP,但是很遗憾ASP他勉强算个老三。那总的来说在后面Java是比较的顺利。那么再然后的话嵌入式方面这条路其实走的反而更好一些,这一条路最主要是搭上了一个热潮叫做这个手机开始崛起了。

这里面这个手机不是智能手机,指的是一个大概就2000左右的一个功能机,再有就是像摩托罗拉还有诺基亚这种功能机。其实那个手机它演化到后来功能也非常强大了,它是可以安装第三方程序,而它这里的第三方程序往往就是通过Java ME的方式来开发。小的时候如果用过这种功能机,尤其是玩过这种功能机上的一些手机游戏的话,就可以发现当年的手机游戏加载的那个 logo,就是Java的咖啡杯。所以当时好多的游戏好多程序都是用这一套来去开发,所以正是因为Java的兵分两路,这两路发展都很不错是吧?所以这就使得Java从谷底重回巅峰,重新成为了一个主流语言。

虽然说Java曾经从巅峰到谷底,但是重新重回巅峰,而且他也不再是做什么网页前端开发了,一个是从嵌入式角度切入,一个是从后端切入,所以让这个语言的综合能力变得就更加强大,但是很遗憾没有什么东西是永垂不朽啊。

他虽然说在这两波加持之下重回巅峰,但是时代发生改变又有了新的挑战,新的风暴又出现了,首先是后端这个领域,以PHP为首的后端开发技术,随着网站规模变大,它就变的难以适应,你用PHP用JSP这种东西去开发这种比较简单的中小型企业的网站很快很方便,但是随着我们后来出现了,一些规模更大的网站像淘宝这种庞然大物,这就是我们到了大概就2010年之后,之后我们的网站规模变得越来越大了,我们服务器它的一个复杂程度也越来越大了,所以这个时候PHP这样的一个技术包括JSP的技术都变得难以适应,所以这个的话就变成一个很大挑战。那么另一方面在嵌入式领域或者叫移动端开发领域, 2007年叫做乔布斯发布了第一代iPhone,这件事是可以认为是载入史册的一件大事,这件事它就标志着什么?标志着叫做移动互联网时代开启了,智能手机的时代开启,所以这件事意义是非常大。但是2007年那个时候智能手机只是刚刚登场,还没有翻起涟漪,真正智能手机大规模开始的一个蓬勃发展,大概是2011~2012左右,这个时候iPhone4这可以说是iPhone当年那个最有影响力的版本,所以这个时候就使得什么?这就使得那个传统的功能机它就遭遇滑铁卢。像当年的那个诺基亚本来如日中天,结果很快就要卖总部大楼,所以这件事在当年影响力确实是非常大。所以当时诺基亚基本上凉了,这也就导致那个Java ME这一套技术体系也被雪藏。所以这个时候又给Java带来了一个非常严重的危机,本来两条腿走路是吧,结果两条腿都瘸了,突然间从一个这个跑在前列的一个高手,突然间就变成在地上爬了,所以这个时候对Java来说又是一个非常大的挑战,所以面对这样的挑战又该咋办,Java也并没有选择自暴自弃,还得继续找出路。接下来还需要继续寻找出路,出路找的怎么样?那很明显找的不错,仍然是兵分两路,后端领域开始逐渐摒弃 JSP这一套技术,然后并且在Java社区中诞生了一个新的王者叫做Spring,春天来了是吧?就是给Java带来了新的春天,所谓的spring这个东西不能认为是一个框架,它并非是一个框架,它其实是以spring为首的一组框架,其实就是提供了后端开发的全套解决方案,你可以认为你做后端做服务器的时候,你可能会遇到很多很多的一些比较典型的场景,那么针对这些场景他都给你提供了现场解决方案,这个问题还有这个方案,这样一套东西一经推出之后大家纷纷拍手叫好这个东西而且这个东西它非常好的适应了这种大规模网站的开发。所以这个东西它就开始逐渐后来居上,逐渐把它推到了比PHP位置更高的一个领域,所以在一个叫spring的加持之下,逐渐反超PHP成为了叫做后端开发的 number one。

那么再然后的话另外一条路一条腿他寻求到了新的转型,就那个移动端开发,这一波操作属实是别人给他送了一个神助攻,就虽然那个Java ME倒了,但是新的王者,安卓系统诞生了,安卓背后是谷歌,那么安卓在最开始诞生的时候,然后谷歌当时本来是想以python作为安卓开发的语言。当时Python之父龟叔,当时他就是想主推这个,结果闹离职就是和谷歌搞得不愉快,所以这个时候那个谷歌一怒之下就不去扶持python,反而扶持Java,开始转为使用Java来作为我们安卓这样的一个开发者。所以这个时候Java就属于什么?这个属于就是天上掉个馅饼砸脑瓜子上了,本身就馅饼掉不到他身上,结果这个这边出了点状况一下就掉到身上,其实为什么使用Java其实也有另外一个考量,毕竟前面那些之前做这个手机开发的,其实不少人都是这个Java的开发者,他们之前是写Java的,然后现在的话就安卓刚刚开始这个发展的时候那肯定是希望有更多的人能够参与进来,所以这个时候呢以Java作为这个开发语言就能很好的把之前那批搞Java ME的人给他招安过来,所以这个时候这些人一看这个新的平台的话,所以这个时候就使得安卓上的应用的这个开发者多了那么应用程序就多了这个时候也就会吸引到更多用户,进一步又会吸引到更多的开发者,所以这样的话就属实就构成一个正向循环,这个雪球就滚起来了,不得不说当年谷歌选择Java这是一个双赢的结果,所以正是因为这两条腿开始重新发力。

所以这就使得Java又重新从谷底重回巅峰,王者归来,而且归到什么程度在这两波这个两条腿都是number one的一个情况下,就冲到编程语言排行榜上,叫榜一大哥,而且成为榜一成为了好多年。

值得一提的是在这个 Java重归巅峰的过程,微软其实也在尝试着做一些事情,因为微软它本身就是做操作系统,现在诞生了一个IOS,又诞生一个安卓对他来说危险大,所以微软他就想这么搞他就联合这个叫诺基亚,毕竟诺基亚在这波操作中他也是挺难受,他就联合诺基亚要搞一个什么,就是诺基亚开发硬件,他来开发软件推出了一套,叫windows系统的智能手机,2010年之后搞的。结果这个东西搞成没,那很明显没搞成,这个系统本身就很难用,其次的话就生态几乎为零。就是说当年最火的手机游戏叫什么愤怒的小鸟,然后还有什么神庙逃亡,还有叫什么那个切水果,就水果忍者这些当年最火的游戏在一个windows上都玩不了。

回到Java,虽然说后来一跃成为这个编程语言的第一,但是随着时间的进一步的发展,直接来到这个2020年之后,然后这个时候其实Java也要面临新的挑战了,所以虽然说成为了王者很多年,但是也不是说就能够一直这么走下去,还是说刚才这两个方向,首先是后端开发这个方向,其实Java迎来了最大的挑战者Golang,这个语言它是属于是一个还是非常新的语言,它也是属于师出名门,什么叫师出名门,Golang作者是谁?叫肯汤姆逊,正式C语言之父。上古大神的感觉,肯汤姆逊他早年在那个贝尔实验室,然后搞出了这个C语言+Linux,这都是当年最火的东西,后来他去了谷歌,在谷歌的话,它又和另外几个大佬,在当时联合另外两个大佬也是非常牛逼的大佬,他们一起又搞了一个go语言,就是“C语言原班人马打造”。go这就属于是C语言新时代的继任者,所以为什么你说go这么能打因为确实他这个班底是非常的豪华的,所以其实换句话说从另一个角度讲,那就是这些大佬们觉得那个C已经抢救不了了,就只能摆烂了。

那干脆另起炉灶重开张,重新就搞了个go语言,所以go语言这个东西师出名门,影响力也是很大的,那go语言,它和Java的一个编程风格是截然相反的, Java追求的是规范,一板一眼,其实你说的好听就叫规范,但是说的难听的就叫死板,所以这就使得那个Java开发程序经常“模式套模式,框架罗框架”。开发程序就显得很笨重。开发大规模程序是有优势,但是你开发中小规模的程序,它反而成为了制约。这是属于Java一个很明显的一个缺点。那么相比之下go就是能够很好的弥补这一点,它的一个主打风格就是简单直接,这是go核心的目标,包括它的核心语法都是和C一样,非常精简。所以这就使得这个语言天然就非常好上手,而且另一方面的话,go也抓住了后端开发的新的契机叫做分布式然后微服务化。那什么意思?

因为我们一个网站后端越来越重越来越复,所以这个时候与其你一个程序完成所有问题那不如我们找很多程序让他们相互配合,这个时候每一个程序都可以变得更简单,然后功能也更单一,这种风格这就称之为叫做分布式小,或者叫做微服务化这样一个风格。所以在这个风格里头我们希望的是更简单更快捷,那相比上Java一板一眼。在这样的一套思想下就显得有些格格不入了,所以这个时候go就很好地抓住了这一波机会,因此目前来说go在当前这个业界影响力是非常大非常大的尤其是国内。很多公司都开始纷纷投入到go这个圈子了,所以可以认为go目前来说是Java在后端最大的一个挑战者,但是目前叫做Java的市场份额仍然比go更大,但是即使如此,不得不去正视go带来的威胁。所以这样的话有时候一个威胁是客观存在的,所以未来如何发展我们还得拭目以待。这是后端开发它所应对的一个挑战。

那么再然后的话再说另外一条移动端开发,虽然安卓仍然如日中天是吧?但是有一个核心问题,那就是当年Oracle因为眼馋安卓的收益,直接把谷歌给告了。因为后来Oracle不是收购了Java吗?所以这个时候Oracle就给谷歌说,你要想用安卓使用Java挣钱,那你得给我分点,所以这个时候Oracle就表示谷歌得把钱给我分点(授权费)。

那这个时候谷歌表示我凭本事挣的钱为什么给你分是吧?谷歌他也不乐意,所以最终两个人怎么办?最终两个人对簿公堂开始打官司,这官司一打打了好多年,反正就是一个非常高额的一个授权费,就相当于是一个零头就够咱们一辈子。所以当时就是因为这个事就打官司,所以这个事其实就让谷歌很难受。虽然钱没被Oracle拿到但是至少这个你有被恶心到了,所以这句话叫苍蝇不咬人但是膈应人。虽然这个钱没拿到,但是确实让他恶心到。谷歌就做了两件事,第一件事谷歌开始主推Kotlin作为安卓的开发语言,它不在主推Java了,它主推了一个这个替代品。这个语言其实是Jet Brains推出的,就是搞idea的公司。当然这个公司背后也有谷歌的股份,所以这就相当于谷歌扶持自己旗下的语言成为主推的语言,特点也是把编程语言编译成兼容JVM的字节码。所以就相当于说上层语法虽然不一样,但是到了底层它和Java是完全等价的,所以就使Kotlin白嫖Java生态。所以这一点其实是非常香,就一个语言能不能火,其实主要是看它的生态,生态很重要。所以后来还有别人一看这个太香了是吧?所以后来有其他人一看看了都说好,所以后来Scale、groovy几个语言也是一样的效果。 把它自身定义成一个叫做Java字节码,所以大家一起来白嫖,所以你不是oracle来恶心人吗?那我就反过来恶心你。

那么另一个方向谷歌准备另起炉灶,推出下一代移动端操作系统,下一代系统中搭载的编程语言是什么?是谷歌自研的叫做Dart,对应的这个开发平台叫做Flutter,而且这个下一代系统它的野心很大,要制霸全平台,什么意思?是写一套代码,然后就可以兼容什么?兼容安卓、兼容IOS、兼容windows,甚至兼容网页前端。所以他要一套代码能够制霸全平台可以说野心非常之不小。那毕竟这里面搭载的语言这也是自研的。

但是这个东西未来能走多远,这个东西大概是2016 17年左右诞生的,当时这个市场宣传造势就很猛,但是据说大概是今年年初的时候,据说这个谷歌团队裁员了一大波人,所以这个东西未来发展如何,咱们还得拭目以待。至少这不是一个很好的信号。所以不管怎么样Java目前来说还是受到了一个很重要的一个挑战

另外在我们刚才讲的这20多年30多年这个发展历史过程中好像有一个大名鼎鼎的大佬始终没有露面,没有登场叫做C++,刚才聊了这么多,好像就跟C++没有半毛钱关系。讲什么新的技术旧的技术,新的技术诞生各种技术层出不穷好像跟C++一直都没啥关系。但其实在这整个历程中,C++它是始终存在的,它是属于坐在背后真正操盘的大佬。因为不管是无论是哪个技术,它的这个兴起或者说或者这个衰落,其实就是不管谁赢了都是我C++赢了,因为上述技术的底层核心都是通过C++构成的,所以就像我们的JVM是C++写的。再像我们刚才说的go运行时,这个也是C++的,再包括像操作系统它的这个核心部分也是C++搞得,再然后包括我们现在比较火的AI,背后也都是C++进行支撑,所以这个不管技术怎么更迭。至少目前来说C++它的一个地位还是属于非常独特的一个力量,它是属于有点一种与世无争的高人那种感觉,就任凭你们这几个小辈在这怎么折腾,那他还是稳稳的坐坐在这个幕后来看你们这些技术的一个变化。

当前所学习的Java EE就是进行服务器后端开发,虽然它这个最初的名字是叫面向企业开发,但实际上企业开发是一个大的话题,现在演化演化就变成了针对服务器开发。所以现在我们谈到Java EE 我们就可以把它理解为服务器后端开发,说的再直白一点就叫做开发网站。学完了Java EE,那么就有能力独立开发出一个简单的网站。