Java匹马行天下之Java帝国的崛起大结局
前言:
【博客*缘】
网络真情伴,博客友谊连。
笑中藏泪暖中寒。
回想那些悲喜,苦涩也缠绵。
往事难回首,新篇染旧言。
世间多少梦能全。
感谢相牵,感谢遇时缘。
感谢墨中同守,再聚是何年。
人生只如初见。
一首《博客*缘》送给一直鼓励我支持我陪伴我的博友们。
已经有博友催更了,那我今天直奔主题,欢迎博友们观看小型宫斗剧《Java帝国的崛起》,此剧加本篇共三篇
- 《C国程序员的秃头原因》
- 《Java国出了个Java》
接下来请看《Java帝国的崛起》大结局
前文回顾
上文书《Java国出了个Java》中说到,被Java国收留的程序员们决定重新定义一门新的编程语言,这门语言语法有点像C语言,这样大家容易接受。
- 没有C语言那样的指针。
- 再也不用考虑内存管理。
- 真正的可移植性,编写一次,到处运行。
- 面向对象。
- 类型安全。
还有,我们要提供一套高质量的类库,随语言发行。
最重要的是他们把这门语言起名为Java,整个Java国举国欢庆。现在我要改口了,把从C国逃出来加入Java国的程序员就叫Java程序员了。
不鸣则已,一鸣惊人
凡事都是说起来简单做起来难,单说这个可移植性吧,要想编写一次,到处运行可不是什么简单的事。为了实现跨平台,Java程序员们在操作系统和应用程序之间增加了一个抽象层:Java虚拟机。用Java写的程序都运行在虚拟机上,除非个别情况,都不用看到操作系统。
跨平台
刚才提到了一个专业术语叫跨平台,我来解释一下:
跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不信赖硬件环境。在一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。
Java的跨平台
Java的跨平台是相对于其他编程语言而言的,通过Java语言编写的应用程序在不同的系统平台上都可以运行。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。比如在前文中提到的C语言,在Windows系统上编译的C语言程序,在Linux系统上是不能运行的,而Java语言在不同平台上运行时不需要重新编译。
Java跨平台的原理:java的跨平台是通过Java虚拟机(JVM)来实现的。
Java虚拟机(JVM)
Java源程序想象成我们的C源程序,Java源程序(.java)编译后生成的字节码(.class)就相当于C源程序编译后的二进制可执行文件。JVM虚拟机相当于计算机系统(操作系统+硬件环境),Java解释器相当于CPU。
- .exe文件直接在Windows操作系统下运行,在CPU上运行的是机器码(.exe文件)
- .class字节码文件是运行在JVM虚拟机下的,在Java解释器上运行的是Java字节码文件。
Java解释器相当于运行Java字节码的CPU,但该CPU不是通过硬件实现的,而是用软件实现的。Java解释器实际上就是特定的平台下的一个应用程序。只要实现了特定平台下的解释器程序,Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本。当然,并不是在所有的平台下都有相应的Java解释器程序,这也是Java并不能在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行。
介绍了挺多,好好的故事,中间这样穿插一下确实影响读者思路,不过看你是怎样想的,如果你是抱着看故事的心态来的,那中间介绍的这一大串就可以跳过不看了,但如果你是抱着通过看故事学习的态度来的,那就耐心的看吧,就是给你写的。
为了吸引更多的程序员加入Java国,Java程序员们决定搞一次演示,向大家展示Java的能力。是骡子是马,拉出来遛遛再说,出世未久的Java涉世不深,还不是很完善,但也是“麻雀虽小五脏俱全”了。Java程序员们盯上了刚刚兴起的互联网,1995年时候的网页简单而粗糙,缺乏互动性。Java程序员们正是看到了这一点,灵机一动,在浏览器上弄了一个小插件,把Java运行环境放了上去。然后在上面开发了一个图形界面的程序(Applet),让它看起来美轮美奂、震撼人心。在当时,要是有程序员能看到Java程序员们搞出来的程序,相信都会发出“Wow,牛逼”的惊叹,为之倾倒。
Java火了
通过Applet,无数的程序员看到了Java这门语言,在了解了这门语言的特性以后,很多无法忍受C语言的程序员都加入了Java国,成了Java程序员,由此Java国的领地也迅速扩大。
Java此刻是真的火了,连C国里的一些商业巨头也纷纷跑来和Java国谈合作,其中就包括Oracle、微软这样的巨头。微软的头领比尔盖茨还说:这是迄今为止设计的最好的语言!(风雨欲来花满楼,情节自由发挥想象)
像比尔盖茨这样的巨头能来Java国谈合作,Java国国王感觉喜从天降,幸福的不得了。之前也说了,Java国国王是个十分开明的君主,为人豪爽大方,深得民心,他对来谈合作的外宾都说,只要你们想用,就拿去用,我们对所有人都完全免费开放,欢迎大家使用。本来这对那些来谈合作的人来说都是大好事,但是比尔盖茨有点不地道,甚至有些贪婪,他在得到Java国王的许可后,回到了C国,虽然在自家的浏览器上也支持Applet,但比尔盖茨却试图偷偷地修改Java,想把Java绑死在自家的操作系统上赚钱,这样Java会变得不可移植。
发生这种事,Java国国王就不能忍了,我们自己都是免费开放的,而你却拿我们的东西赚钱,这违背了Java国的信仰,绝不能忍。于是Java国和微软发生了一场旷日持久的游击战争,逼着微软退出了Java领域。不过微软毕竟也是个经历过大风大浪的人,怎会没有后手呢,退出Java领域后他们便开发了自己的.NET,这是后话。
开拓疆土
从1995年到1997年,Java国依靠Java程序员们不断地在网络上攻城略地、开拓疆土,Java国的Java程序员不断增加,达到几十万之众,已经成为一股不容忽视的力量。但是大家发现,此时的Java除了Applet,以及一些小程序之外,似乎干不了别的事情。C国的程序员还不断嘲笑Java程序员们速度慢,像一个玩具。
到了1998年,Java程序员们和Java国王密谋,最终Java国王决定派出三支Java程序员军队向不同领域扩展。
Java2标准版(J2SE):去占领桌面
Java2移动版(J2ME):去占领手机
Java2企业版(J2EE):去占领服务器。
“风萧萧兮易水寒,壮士一去兮不复还”,虽然我知道此句用在此处不合适,但我想表达一种气势,我想起了这一句,史书上说,在送荆轲时,高渐离击筑,荆轲悲歌“风萧萧兮易水寒,壮士一去兮不复还”,唱的太悲壮了,以至于听者嗔目,发尽上指。一段唱毕,只听见荆轲仰头长叹一声,天空中居然出现一道七彩虹。高渐离趁势变了一个调,乐音显得更为激昂,荆轲继而唱道:探虎穴兮入蛟宫,仰天呼气兮成白虹。太子丹最后被彻底地感动了,跪在地上向荆轲敬了一杯酒。好,抒情至此。要是有卖弄文学之嫌,还望博友海涵啊,此乃情到深处,犹如箭在弦上不得不发。
尽管计划很周密,但是天有不测风云,派出去的三支队伍有两支很快败下阵来。
J2SE的首领发现,开发桌面应用的程序员根本接受不了Java,虽然Java程序员有做得很优雅的Swing可以开发界面,但是开发出来的界面非常难看,和原生的桌面差距很大。尤其是为了运行程序还得安装一个虚拟机,大家都接受不了。
J2ME也是,一直不受待见,当然更重要的原因是乔布斯还没有发明新手机,移动互联网还没有启动。
失之东隅,收之桑榆。J2EE去正赶上了好时候,互联网大发展,大家忽然发现,Java简直是为些服务器端程序而发明的!强大、健壮、安全、简单、跨平台!Java国授权BEA公司第一个使用J2EE许可证,推出了WebLogic,凭借其集群功能,第一次展示了复杂应用的可扩展性和高可用性。
这个后来被称为中间件的东西把程序员从事务管理、安全管理、权限管理等方面解放出来,让他们专注于业务开发,这立刻捕获了大量程序员的心。
很快,Java国的Java程序员就达到了数百万之众。
榜样的力量是无穷的,有了第一个吃螃蟹的,很快,其他商业巨头也纷纷入场,尤其是IBM,在Java上疯狂投入,不仅开发了自己的应用服务器WebSphere,还推出了Eclipse这个极具魅力的开源开发平台。当然,IBM利用Java获得了非常可观的效益,软件+硬件+服务三驾马车滚滚向前,把IBM推向了一个新的高峰。
势不可挡的Java从此站起来了
大家也没有想到,除商业巨头以外,程序员也会对Java国这么热爱,他们基于Java开发了大量的平台、系统、工具。
构建工具:Ant、Maven、Jenkins。
应用服务器:Tomcat、Jetty、JBoss、WebSphere、WebLogic。
Web开发:Spring、Hibernate、MyBatis、Struts。
开发工具:Eclipse、NetBeans、IntelliJ IDEA、JBuilder。
······
并且绝大多数是开源的。微软眼睁睁地看着服务器端的市场被Java国占据,岂能善罢甘休?他们赶紧推出.NET来对抗,但Java国已经不在乎了,因为微软的系统都是封闭的,所有的软件都是他们自家的:开发工具是Visual Studio,应用服务器是IIS,数据库是SQL Server。。。。。。只要你用.NET,基本上就会被绑定微软。另外,微软的系统只能运行在Windows服务器上,这个服务器在高端市场的占有率实在是太低了,对Java国来说毫无竞争压力。此情此景好像我们中国,1949年,一个极其特殊的年份,中国人民真正站起来了,一路势如破竹,势不可挡,将蒋介石驱逐至我国台湾,蒋介石即使有心返回大陆,却也无力回天了,越说越激动,我先把激动的心情压住把故事讲完,爱国之情可以体谅的,博友们勿怪。
2005年年底,一个新的王国突然崛起,他们号称开发效率比Java快5~10倍,由此吸引了大批程序员前往加盟,这个新的王国叫做Ruby on Rails,它结合了PHP体系的优点(快速开发)和Java体系的优点(程序规整),特别适合快速开发简单的Web网站。虽然发展很快,但没有对Java国产生实质性的威胁,使用Ruby on Rails搭建大型商业系统的人还很少。除了Ruby on Rails外,还有PHP、Python,都适合快速开发不太复杂的Web系统。但是关键的、复杂的商业系统还是在Java国的统治之下,所以Java国和他们相安无事。
2006年,一支名为Hadoop的军队让Java国***了大数据领域。由于使用Java语言,绝大多数程序员在理解了Map/Reduce、分布式文件系统在Hadoop中的实现以后,很快就能编写处理海量数据的程序。
2008年,一个名为Android的系统横空出世,并且随着移动互联网的爆发迅速普及,运行在Android之上的正是Java!
后来,Java国在Google的支持下,以一种意想不到的方式占领了手机端,完成了当年J2ME壮志未酬的事业!
到目前为止,全世界Java程序员数不胜数,Java国也实力强大,是其他国家无法比拟的。
Java国占据了大部分的服务器开发,尤其关键的、复杂的系统,绝大多数的手机端,以及大部分的大数据领域。
一个伟大的帝国崛起了,这个帝国能生存多久?谁会摧毁这个庞大的帝国呢?
我不知道,你呢?
全剧终
参考文献:《码农翻身》