Java持续占据主导地位的原因,第9位:Java虚拟机 Java虚拟机是按照运行Javac编译器产生的那些代码来的目的来设计和优化的,但是某个时候开始,开发者们意识到 Java虚拟机也可以运行其他代码。只要编译器们产出标准的Java字节码,Java虚拟机根本不关心是使用的那种编程语言。Haskell、Scala 和Clojure的开发者们按这个方式设计他们的编译器搭上了Java这趟快车。而且他们只是这个由Java虚拟机产生的生态圈中几个比较优秀的代表。
吸引力是显而易见的,Sun/Oracle为创建跨平台环境而努力,所有其它人从中受益。Sun/Oracle的工程师们消除平台间差异,并考虑兼容性问题,然后所有人可以运行他们想运行的程序。
微软在创建C#时借用(并扩展)了这个创意,为大部分主要语言设计了编译器,这样C#虚拟机就可以运行这些语言编写的所有程序。C#程序员说他们可以用很多不同的语言编写程序,只要通过一个Windows盒子将其运行在一个虚拟机上即可。何等灵活! Java持续占据主导地位的原因,第10位:NoSQL革命很大部分建立在Java之上
很久之前,数据库是一个神秘的黑盒子,它保存信息并快速有效的应对查询请求。然后NoSQL革命来临,程序员们意识到他们可以自己编写自己的数据库,并根据需求修剪其代码。那些最重要的NoSQL工具中很多都是用Java编写的。Cassandra、Lucene、ElasticSearch、HBase和Neo4J只是一些经常提到的NoSQL选择。然后还有一些像acid-state等程序,使用Haskell编写并运行在Java虚拟机中。
这些工具通常是开源的,可以方便的集成。一些开发者将其独立运行,另一些人将它们集成在自己的模块比如库中。不论哪种方式,Java在数据库层中成为通用
语言的情况,保证了Java开发者们的生活更简单了些。 他们更少担心由于字符编码和行结束符带来的小故障。这意味着Java开发者们可以享受由
NoSQL革命带来的丰硕果实。 Java持续占据主导地位的原因,第11位:Minecraft游戏融入00后们的共同情结中 也许布鲁克林时尚的非主流们对Java嗤之以鼻,但是Java程序员们却领先一步。在Ruby时尚团正聚集起自己的一群粉丝时,他们之后的一代人却爱上了Java。为什么?一个词:Minecraft。它用Java编写而成。如果孩子们想要扩展该游戏,他们就需要学习Java来设计其插件。这保证下一代程序员第一个学习的是Java。 Java持续占据主导地位的原因,第12位:开源 Sun一直是开源领域中的领导者之一,但它却在完全开放Java的过程中时有犹豫。但这并没有妨碍Java程序员们发布很多伟大的有着宽松开源许可的库和项目。Apache项目一直都在使用一个没要求太多回报的许可证来提供优秀的Java代码。
Sun在2007年完成了在GPL许可下公开大部分代码的工作,从那时开始,它和它之后的新主人Oracle想努力成为它认为的Java的合格管家。当然,这种开放的立场并没有阻止Oracle将Google拖入一场混乱的法律诉讼中,但是另一方面,Java平台很大程度是开放和免费的。 讨厌它的人很多,但Java持续前行
的确Java有它自己的问题,而且讨厌的Java人们也会越来越多, 并将他们的不满情绪充斥在线上评论区中。Java垃圾回收器会引起程序的小抽风。程序书写规则繁重,也并不能阻止那些确实差劲的代码。注解(译注:annotation)太复杂。各个特性也不如之前演进的频繁。花括号增加混乱。其缺点列表很长,但是通常是合情理的。
然而目前还没有出现一个广度和深度上可与之竞争的对手。虽然一些抱怨很容易解决,但是解决方案本身会带来自己的问题。最接近的也许是JavaScript,依靠有闪电般速度的Node.js,它在服务器领域越来越有吸引力。不过这些创意可以被复制,程序员们也可以用其来编写快速的Java。
在最后,这是Java的优势之一:它运行所有程序,而且接受改变。如果你需要不同的功能,你可以将大部分库替换成自己的代码。语言是开源的而且灵活多变。不论语言和平台有什么限制,都可以相对轻松的解决。这意味着Java程序员继续是最具生产力的人员之一。即使相关图书不在能再占据畅销榜,软件更新也没之前频繁,Java将依然存在甚至更加兴旺。
|