1.C语言帝国的统治现在是公元1995年,C语言帝国统治我们已经20多年了,时间太长了。1972年,随着C语言的诞生和Unix的出现,帝国迅速确立了统治地位。从北美到欧洲,从欧洲到亚洲,无数程序员臣服于他的脚下。Empire为我们提供了极好的好处:接近硬件,运行速度极快,效率极高。利用这些好处,程序员用C开发了很多系统级的软件,操作系统、编译器、数据库、网络系统……但是帝国也给我们戴上了两个沉重的枷锁:指针和内存管理。指针非常强大,可以直接操作内存,但是帝国并没有给我们做越界检查的工具,导致很多新手程序员很容易出错。至于内存管理,Empire则更彻底放任:可以释放自己分配的空间!更要命的是,这些问题在编译时是找不到的,到了运行时就会突然暴露出来,常常让我们摸着石头过河去调试。我们的很多时间和宝贵的精力都浪费在仔细处理指针和内存分配上。每一个程序员都被这两件事毁掉了!帝国宣称的可移植性是骗我们的,他声称我们在一台机器上写的程序可以在另一台机器上编译,其实不是这样的。他要求我们尽量使用标准的C函数库。其次,如果遇到一些平台特有的调用,需要每个平台都写一份!稍有不慎就会导致编译失败。1982年,Empire引入了一种新的语言C++,它增加了面向对象的功能,与C兼容,有静态类型检查,性能良好。但是这种新语言太复杂了,没有比我聪明的人能完全掌握它,而且它的许多特性也出奇地复杂。C++在图形和游戏方面取得了一些成功,但我一直没能学好。2.反抗我决定反抗这个庞大的帝国,我偷偷的带领着一群志同道合的兄弟离开了。我们要建立一个新鲜自由的领土。为了吸引更多的程序员加入我们,我们需要创造一门新的语言,它应该有这样一个特点:语法有点像C,让大家很容易接受C语言没有指针,内存不再考虑管理。经不起真正的可移植性、一次编写、到处运行的面向对象类型的安全和,我们不得不提供一套高质量的类库,随语言一起发布。我想把这门语言命名为C++--,即C++minusminus,因为我想在C++的基础上对其进行改进和简化。后来发现不行,设计理念太不一样了。只需重新启动炉子。我在门口看到一棵橡树,所以我把这个语言叫做橡树。但是后来发布的时候,发现Oak已经被别人使用了。我们讨论了很久,最后决定把这门新语言叫做Java。为了实现跨平台,我们在操作系统和应用程序之间增加了一个抽象层:Java虚拟机Java编写的程序都运行在虚拟机上,除了特殊情况,不需要看到操作系统。3.Blockbuster为了吸引更多的人加入我们的新领地,我们决定举办一场展示会,向大家展示Java的能力。诞生不久的Java其实还远非完美。我们应该做什么?我们将目光投向了新兴的互联网。1995年,网页简单粗暴,缺乏交互性。所以我们在浏览器上做了一个小插件,把java运行环境放在上面。然后在其上开发了一个图形界面程序(Applet),使其看起来美观震撼。每一个看到他的程序员都会“哇”一声!他不知所措。爪哇还活着!通过Applet,无数程序员看到了Java这门语言。了解了这门语言的特点后,很快就有很多受不了C帝国暴虐的程序员加入我们,我们的地盘开始飞速扩张。甚至C语言帝国的一些商业巨头也来与我们合作,包括甲骨文、微软等巨头。微软的老大比尔盖茨也说过:这是迄今为止设计的最好的语言!但是BillGates很没办法,买了我们的Javalicense之后,虽然Applet在他们自己的浏览器上也是支持的,但是他们偷偷修改Java,想把Java绑在自己的操作系统上赚钱,Java就变得不可移植了。这是我们无法忍受的。我们和微软展开了持久战,迫使微软退出Java领域,自己开发.NET,这是后话了。4、开疆拓土从1995年到1997年,我们依靠Java不断攻城掠地。我们王国的人数还在不断增加,达到了数十万,已经是一股不容忽视的力量。但是大家发现Java除了Applets和一些小程序,似乎不能做其他的事情。C帝国的人一直嘲笑我们慢,像个玩具。1998年,经过阴谋,我们的Java王国决定派出三支大军向外扩张:Java2标准版(J2SE):占领桌面Java2移动版(J2ME):占领手机Java2企业版(J2EE):占领服务器的两支军队很快被击溃。J2SE的领导者发现开发桌面应用程序的程序员根本无法接受Java。虽然我们有一个非常优雅的Swing可以用来开发界面,但是开发出来的界面非常丑陋,和原生桌面相去甚远。尤其是为了运行程序,还得安装虚拟机,这是大家难以忍受的。一直冷门的J2ME也是如此。当然,更重要的原因是乔布斯还没有重新发明手机,移动互联网还没有起步。迷失在东方,收获在桑葚,J2EE赶上了大好时光,互联网有了长足的发展。大家突然发现Java是为了写服务端程序而发明的!强大、健壮、安全、简单和跨平台!以J2EE规范为指导,特别适合团队开发复杂的大型项目。授权BEA率先使用J2EE许可证,推出Weblogic。凭借其集群功能,首次展示了复杂应用的可扩展性和高可用性。这个后来称为中间件,将程序员从事务管理、安全管理、权限管理等方面解放出来,让他们专注于业务开发。这一下子俘获了一大批程序员的心。很快,爪哇王国的人口就达到了数百万人。榜样的力量是无穷的,很快其他商业巨头也纷纷入局,尤其是IBM,在Java上大举投资,不仅开发了自己的应用服务器Websphere,还推出了Eclipse这个极具吸引力的开源开发平台。当然,IBM通过使用java获得了非常可观的收益,软件+硬件+服务的三驾马车滚滚向前,将IBM推向了一个新的高峰。5.帝国的诞生。没有人想到,除了商业巨头,程序员们会如此热爱Java王国。他们开发了大量基于Java的平台、系统和工具,例如:构建工具:Ant、Maven、Jekins应用服务器:Tomcat、Jetty、Jboss、Websphere、weblogicWeb开发:Struts、Spring、Hibernate、myBatis开发工具:Eclipse、Netbean、intellijidea、Jbuilder。...等等等等。..而且大部分都是开源的!微软眼睁睁地看着服务器端市场被Java王国占领,怎么可能放弃?他们很快推出了.NET来打,但是我们不管了,因为他的系统是封闭的,所有的软件都是自己做的:开发工具是VisualStudio,应用服务器是IIS,数据库是SQLServer.只要你用.NET,基本上就和微软绑定了。再加上他们的系统只能运行在Windows服务器上,这种服务器在高端市场的占有率实在是太低了。2005年底,一个新的王国突然出现。他们声称开发效率比Java快5-10倍,吸引了大批程序员的加入。这个新王国叫做RubyonRails,它结合了PHP系统的优点(快速开发)和Java系统的优点(程序规范),特别适合简单网站的快速开发。虽然发展很快,但并未对Java王国产生实质性的威胁,很少有大型商业系统使用RubyonRails构建。除了RubyonRails,还有PHP和Python,适合快速开发不太复杂的Web系统。但关键的、复杂的业务系统开发仍处于Java王国的统治之下。所以我们对他们很好。2006年,一支名为Hadoop的大军让Java王国入侵大数据领域。由于使用了Java语言,大多数程序员可以很快的理解Map/Reduce以及分布式文件系统在Hadoop中的实现。通过编写处理海量数据的程序,Java王国的版图得到了极大的扩展。2008年,诞生了一个叫Android的系统,随着移动互联网的迅速普及,Android上运行的是Java!在谷歌的支持下,Java王国占领了移动端,完成了J2ME的不劳而获的事业!截至今年,全球估计有1000万程序员加入了Java王国。其广阔的地域和强大的实力是其他语言无法比拟的。Java占据了服务器端开发的绝大部分,尤其是关键的复杂系统,移动端的绝大部分,大数据领域的绝大部分。一个伟大的帝国诞生了。这个帝国还能存在多久?谁将摧毁这个庞大的帝国?我不知道,你呢?查看该作者更多好文
