有感"Java is not platform-independent, it is the platform"
国内的朋友对开发工具都有超乎想像的热情。
每每连上开发类的站点,要么Delphi Vs VC,要么Java Vs C#。正巧,今天读到Bjarne的名句,深有感触,不由就此说上几句。
这是Bjarne对Java所说的那"一句"话:"Java is not platform-independent, it is the platform。"是的,它并非平台无关,它"就是"平台。
原来如此.....以提倡跨平台起家的Java,又如何跨过自身的平台?借用明斯基拷问人工智能本质时的那句话:"用一把手钳,能拆开它自身吗?"
现在的虚拟机还是非常简单的。仅仅提供了基础功能的抽象,可以安装运行在各个操作系统之上。但竞争的加剧也会让它的尺寸也再次加"巨"的,那时的虚拟机的复杂性又如何?它,会不会又是新一层的操作系统?
.net起来了,Java起来了,那IBM呢?那CA呢?难道他们不想拥有搞自已的虚拟机?难道这个领域就不会有自已的Linus?是否又会出现千帆共竞的状况?
我们不要打破了操作系统间的隔阂,又人为造出虚拟机的疆界!!!
以其现代的编程思想,Java赢得了大量的推崇者。对,我知道你很推崇Java,但你不得不承认,要拥有跨平的互操作性,不仅仅是技术就可以解决的问题。
关键在于规范。
但,Sun在此问题上的态度并不让人满意。那种枉图将标准控制在自已手里以赢取商业利益的作法,实在是太过短视的。如果微软放弃标准控制权的.Net的中间代码、C#等标准得以通过....
对我这样一个普通开发者而言,.net平台同Java平台最大的不同,就在于Java虚拟机是可以向下跨操作系统平台的,而.net的framword是可以向上跨语言平台的。
那么,从市场的角度来看,会发生什么呢?
结论很简单,Sun必须放弃控制标准的企图!
如果Sun仍执迷不悟,则.net成为标准的可能性将大为增力。接下来的,当然就是第三方厂商在各个操作系统上的移置。当然,也可能是微软自已,那要取决于它是否仍持以操作系统为中心的市场策略了。我想,这绝不是Sun所希望看到的结局。
如果Sun放弃了对Java控制,则自法律角度来说,Java也将是可以生成.net的中间代码了(以微软一惯的卑鄙手段,它一定会这样做的)。而JVM,如果不开放对其它开发语言的前端,继承这许多编程的人力、物力资源,它靠什么来同.net竞争呢?
假设都Sun能选择正确的市场策略,则JVM和.net都将是持多语言,接下来是什么?
不再有语言之争,只有两个平台的framework之争!!!
那么,在这些个平台上,我们将使用什么语言作开发呢?当然,原生语言是最好的选择,在.net上用C#,在JVM上用Java,那跨平台会不会是有最好的开发语言?那在第三方第四方的虚拟机平台上用什么?
"XML",好多高声的喊叫。对,XML现在是跨平台的唯一希望了。但请不要忘记,XML全称是Extensible Markup Language,仅仅是一种标记语言。
几个月前我同朋友有一场争论,核心焦点就在于XML是否图灵完备。在我个人看来,XSL即为其提供了完备的图灵机能力,让其有能力表达任一程序设计语言表达的语意。但一定没有人认为,XSL能实际运用于独立程序设计中,毕竟,理论同实做仍有巨大的差别。
如果XML只能用做粘合剂,那我们的问题仍在面前:跨平台会不会是有最好的开发语言?
我的答案是否定的,没有对每个人每个目的都最佳的语言。其实对我来说,这个问题的答案就是C++,因为我熟悉它,喜爱它。你会有你的答案,也许是Perl,也许是Java。
在将来,在XML超级粘合剂的支持下,选择语言的最大理由,也许只是个人的喜好而已。