发新话题
打印

Java程序员的迷失—论“虚拟机”

Java程序员的迷失—论“虚拟机”

虚拟机技术现在非常抢手,人们认为它可以完成一切事情。人们热衷于让JVM可以运转Ruby、PHP或其它一些抢手语言,以及支持像Java FX之类的技术。这种现象是好是坏?Joe Winchester以自己的阅历来论证了对此的看法。
  在Java出现之前我一直是Smalltalk(注:Smalltalk被公认为历史上第二个面向对象的程序设计语言,和第一个真正的集成开发环境。)的爱好者。从Smalltalk转向Java的阅历,到现在依然让我记忆犹新,从一门语言转向另一门语言并不是一件轻松的事情。我依然记妥当你真正掌握这门新语言时所抵达的临界状态,掌握一门新语言往往需求破费数月甚至数年的时间,经过这段时间的历练,你才能做出真正优秀的设计,以及晓得如何最好的应用它的哪一个模式,如何防止错误发生,以及如何停止性能调优等等。
  最近因为工作需求,我要回过头来看一些以前的Smalltalk代码,这时我发现,在阅历过这一段学习Java编程的阶段后,我曾经很难清晰的了解过去自己所编写的Smalltalk代码,很清楚,我一定不能再称自己是一个合格的Smalltalk程序员。
  说这些只是为了表达我的一个观念:我认为每团体只可能知晓一门编程语言,换句话说,如果你什么都知晓,其实也就说你什么都知晓。我喜欢一个只有一门语言、漂亮复杂的“扁平构造”世界。在这样一个世界中,程序员之间交流会变得愈加轻松,每团体可以彼此分享共同的阅历,而且不也不用来回的在不同的语言之间跳来跳去。
  当Java第一次面世的时候,曾经有些虚拟机方面的家伙停止一些没有前途的尝试:让Java运转在Smalltalk虚拟机上。虽然他们拥有一个非常酷的叫做通用虚拟机(Universal Virtual Machine,UVM)的技术,但是归根究竟,这实际上还是一个维护Smalltalk地盘的对抗行为。从实际上说这可能是一个好的思路,人们不再用必需学习一种新的语法就可以体验新语言的益处;但是实际上并非如此,运用Java本地接口JNI编程来使两者联络起来是一件令程序员非常痛苦的事情,这简直就是一场噩梦,程序员在编程的时候要堕入很多麻烦,例如在不同语言类型之间存在很多数据类型转化的问题。
  要想在Java下停止Smalltalk编程,或许在Smalltalk下停止Java编程,你需求非常知晓两种语言,而且你需求拥有一个非常发达的大脑来调试虚拟机注册表和大量设置DOS堆栈的个数。
  数年以来,微软的家伙一直在抨击Java程序的速度慢,它们认为Java程序是解释型字节码,而不是完全编译好的,这也是人们怀疑Java性能的一个次要借口,而多数微软的语言则都被编译为解释好的p-code。然而现在微软又末尾宣扬它的通用语言运转时(CLR),将其称为编程的圣杯。这一点和 Smalltalk/Java混合UVM非常相似。实际上,圣迪奥康扉旗舰店CLR上似乎只运转微软的语言,自从其问世以来并没有惹起太多其他语言的程序员倒戈。
  现在有一种现象令我感到非常忧虑,“虚拟机可以完成一切”的观念正在逐渐复苏。人们的精力不再集中在Java和这个语言向前开展所需求的改良上,人们把精力都投入到让Java虚拟机JVM去运转Ruby、PHP或其它同类盛行语言上,还有让Java虚拟机支持Java FX这个简直和Java语法无关的技术上。如果这一切都完成了,留给我们的又是什么呢?
  我们拥有了一个不仅仅可以运转Java还可以运转其它语言的虚拟机;我们拥有了很多不运用Java编写但可以编译为Java的语言;我们拥有一些失去了自身价值定位的东西。换言之,我们迷失了自己的方向,失去了准确的定位。
  关于我们这些编程序的人来说,我依然认为熟练掌握多种语言实际上是行不通的,我们最终会变为二流程序员,只能编写性能蹩脚和设计恶劣的程序,更不用说随着环境和语言的切换,调试方面的噩梦随处可见。
  那么为什么人们对虚拟机的热情如此高涨呢?你或许会说,其它语言是静态的而Java是静态的;或许其它语言像PHP、Ruby更适于Web编程;或许什么其它的缘由?这些都是现实,不过我认为,我们应该去完善Java来处理这些问题,而不是增加复杂度朝着虚拟机用力,让其支持这些几年前曾经不存在的语言。关于Java来说,没有什么错误和难题是不可以被处理的。我认为这才是人们应该关注的中央,而不是让JVM变成一个杂而不精的东西,否者Java最终将面临与Smalltalk相反的命运。
  历史总是在惊人的反复,如果我们不把Java看作一门语言,而仅仅看作是一些“Java技术”之类的东西的话,我们就正在让它走向消亡,使其绝关于其它语言的优势逐渐削弱,同时也让编写优秀软件变为一件更难的事情。
jiyizhen-buy.com颈椎保健枕太空记忆枕 igerl.com歌瑞尔内衣

TOP

发新话题