Java能抵挡住JavaScript的进攻吗?

作者:CQITer小编 时间:2019-02-02 01:22

字号

 JavaScript的进攻

公元2014年,Java 第八代国王终于登上了王位。

第一次早朝,国王坐在高高的宝座上,看着毕恭毕敬的大臣,第一次体会到了皇权的威力。

德高望重的IO大臣颤悠悠地走上前来:“启禀陛下,昨日收到战报,有个叫做Node.js的番邦又一次向我国进攻,我边防将士死伤惨重。”

“Node.js? 那是什么东西?” 国王心中一乐, 还真有人自不量力,想蚍蜉撼树。 想我Java帝国人口之众多,疆域之广阔,踩死你小番邦还不像踩死一只蚂蚁似的。

“那是用JavaScript写的一个框架。” IO大臣看到国王不知道Node.js,心里一沉。

JavaScript? 爱卿说笑了,一个在浏览器中运行的东西,怎么可能进攻我Java后端。”

“陛下有所不知,这JavaScript发展迅猛,不仅占领了前端,还通过Node.js向后端,尤其是我国渗透,臣还听说他们用Electron开始蚕食桌面开发了!”

“竟有这等事!难道他们想通吃? 我们不是有Tomcat吗? 派Tomcat去把Node.js给镇压了。”

国王开始怨恨自己的父亲JDK 7世和祖父JDK 6世没把这个Node.js当成一回事,没有把Node.js给扼杀在摇篮之中,把这个祸害留给了自己,心里开始发虚。

非阻塞异步IO

线程大臣走上前来:“陛下,Tomcat已经率军和Node.js恶战了几日,败下阵来, 这Node.js有个独门武器,叫做‘非阻塞异步IO’。”

“非阻塞? 我听说我们的Tomcat也能实现非阻塞啊!” 王国有点惊讶。

“不行的,陛下,Tomcat在处理连接的时候能实现非阻塞,但是在真正处理请求的时候还是需要同步操作,一个请求对应一个线程来处理,不像Node.js那样,都是异步操作,只有一个主线程在忙活。” 线程大臣做了一个简明扼要的汇报,不知道国王能否听懂。

(码农翻身老刘注: Node.js的故事请参见《Node.js: 我只需要一个店小二》)

“众位爱卿,你们说说该怎么办? 总不能让这小小番邦屡次欺负我堂堂Java帝国吧。”

“臣倒是有一计,” 集合大臣说道,“这Node.js虽然来势汹汹,但是它也有个致命的缺点,那JavaScript是个动态语言,无法进行编译时类型检查,错误只有等到运行时才能暴露出来。用它开发个小项目还可以,一旦项目变大,代码变多,人员变多,那就会变成噩梦了。”

“爱卿说说具体怎么办?”

“我们可以派一些卧底去Node.js, 到处传播这样的消息,瓦解他们的军心和士气,让他们认为Node.js写的系统,很快就会腐化,最终还是要用我堂堂正正的Java语言来重写。”

“嗯,此乃心理战也,至少会稳住一些墙头草,准奏,由爱卿来安排。 ” 国王说道,“不过,此法治标不治本,还是得想办法直接把他们打败。”

“陛下真乃一代圣君,” 线程大臣马上开始拍马屁,与此同时,巧妙地把矛头转向老不死的IO大臣:“我Java帝国在第4代国王的时候就出现了非阻塞IO,这么多年过去了,居然还没发展出类似Node.js的系统,实在是不应该啊。”

“老不死”的IO大臣是何等精明:“陛下明鉴, 我Java帝国应用服务器一直以来都是Tomcat独大,他们采用了线程池,每个请求一个线程的方式,我也不好干预。”

IO大臣把责任推得一干二净。

“没错,” 集合大臣为IO大臣打抱不平,两肋插刀,“还有一点就是这异步编程,听起来很好,但是写起来可就要命了,那么多的回调,简直就是反人类,臣民们戏称为回调地狱,没人愿意那么写,发展不起来也很正常。”

线程大臣马上接口:“此言差矣,陛下已经教会了臣民们如何使用Lambda表达式,并且现在也出现了RxJava,已经没什么回调地狱了!”

“那是现在,以前可没有!”

“......”

国王看到这几位大臣要打起来,马上施展和稀泥之术:“众位爱卿各有道理,你们且说说,怎么才能打败着来势汹汹的Node.js吧。”

没人说话。

国王只好退朝。

京城酒馆

京城的小酒馆向来是一个多方消息的集散地。

一个金发碧眼的小伙子正在“危言耸听”:“听说了没有,Node.js又赢了几仗,Tomcat大军死伤惨重,有不少臣民都投奔到那个番邦去了。”

“这异步操作真的有这么厉害?” 有人问道。

小伙子喝了一口酒: “其实不是异步操作更好,而是在高并发的环境异步操作更有效,大家都知道, 一个机器能支持的线程数目是有限的,不可能一直增加。Tomcat那种一个请求一个线程的方式很快就会遇到瓶颈。”

“你说说,到底有什么好处?”有人刨根问底。

“现在服务器端的操作无非就是操作文件,读写数据库,访问远程服务,这些都是所谓阻塞操作。” 小伙子展开了一张图:

Java能抵挡住JavaScript的进攻吗?

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>Java JavaScript 进攻
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接