java的跨平台一直都受到一些人的质疑,我也不例外,装了jre才能运行的java怎么可以算是跨平台呢,先是要按照你的系统选择jre安装,然后才能正常的跨平台,这是不是一个幌子呢?
但是仔细想想,在多操作系统可以选择的时代里,你还有什么办法让一种语言能够跨平台呢?java的跨平台方案确实是一种解决方案,让程序员们可以更少的考虑操作系统的问题。java来自于一个失败的项目,这让我想起C也是来自于一个失败的项目,多么相似的历史背景啊。当然.net也是想进去跨平台的领域,你只要安装.net framework就行了。但是你有没有发现你装了个.net framework3,突然发现你的软件需要的是.net framework2,你必须重新下一个,这是多么让人伤心的事啊(这点我觉得微软应该做的更好,如有不对请君指正)。
当你开发C\C++时候,你是不是一直在使用某个操作系统的库函数?这是不是意味着你必须安装这么一个系统才能运行你所写的程序呢,这种开发方式是完全与系统相关的。所以说java是真的跨平台的,你不用再怀疑了。你只需要下载20M都不到的jre就可以运行所有的java程序,相比.net,你是幸福的,而且它完全向下兼容,所有以前开发的程序你仍旧可以使用,包装了这么多的类库,还包含了旧的类库,大小也只有100M的空间占用,真是值得称道。当然你可能会说它的功能有.net强大么,我承认确实没有。但是你可以通过开源的项目解决,你觉得你应该让用户们把它所有的类库都装上?这是不是太浪费了呢?真的需要的类库只有那么些,你却装了很多用不到的。
关于跨平台,我又不经想起了flash player的AS3.0也是一个虚拟环境运行,微软的silverlight也一样,打造丰富多彩的web时代,功能相当的强大。你可以说他跨平台么?只要你装了浏览器,再装上flash player或者silverlight,你就可以运行他们对应语言开发的web程序了。(注:flash player 8使用的是AS2.0之后的版本都是AS3.0,其内核是完全改变了,所以AS3.0不兼容AS2.0,性能上有很大的提高。)
每一种语言的出现和兴旺,都有它的意义存在,请不要说那种语言好,那种语言不好;请你说那种语言更适合你的开发。