对于JAVA的跨平台和C的可移植性,一直存在疑惑,这里说说个人理解

1.C的可移植性需要在不同的操作系统上多次编译成不同的目标代码,甚至需要为不同的操作系统编写不同的代码,而JAVA因为有JVM的支持,就免去了这个麻烦

2.JAVA的跨平台是一次编译,依托JVM可以到处运行

引用在论坛上看到一位仁兄的发言,觉得很有道理

在java之前,跨平台是很痛苦的事情,主要是因为所有对于系统的调用,在不同的操作系统下结果都不一样,简单的来说,int的长度在不同操作系统里面就不一样,甚至于连字节排列的顺序都不同。调用同一个函数返回的格式也不同,因此,写程序的人自己要对不同的系统非常了解,如果真的需要对不同操作系统进行兼容,要在程序里面写很多if,编译的时候要先判断使用的操作系统,创造很多环境变量才能编译,而且编译好的二进制可执行文件只能在本系统上运行。如果你写的是个功能库供别人调用的,那么光对操作系统的判断就占了代码的绝大部分,而且,还要你在不同平台下进行测试,这可是个艰苦卓绝的工作。建议你有空可以看看apache httpd服务器的源代码就知道了。 

自从有了java之后,就把操作系统兼容的工作丢给了jvm了,对于程序员来说就再也不要关心int有几位,还有高位在前还是地位在前的问题了,你只要用java的代码把你程序的逻辑实现出来就可以了,这些兼容的问题就交给jvm去处理吧。这样,如果你写一个程序交付给客户使用,如果客户的环境是运行AIX的,你就不需要在本地也装一个AIX来开发和运行,你可以在windows上完成所有的开发,然后把编译好的文件交给客户就可以了,以后有别的客户需要在Solaris上运行这个程序,你都不用修改,直接拿过去就可以运行,这难道不是一种方便吗?只有被跨平台开发折磨过的人才能更深得体会到用java开发跨平台应用的优势。

另外再引用一段对于PHP跨平台的理解

我用PHP的时间不算太短,才4年左右,现在基本上不用了,改用JAVA了 

并不是因为PHP不好,我个人很喜欢PHP 

但是我的写的程序中很多是需要在M$和Linux两个平台上搬来搬去用的(因为我无法限制用户的平台) 

如果用PHP的话,很多扩展在两个平台上不见得通用,甚至有的不支持 

为了一个程序写两个版本,或者在程序中写大量的判断,我想我的时间和精力不够用了 

改用java,只需要在运行平台上安装相应的jvm, 我只管我的程序能否正确的运行,剩下的我就不用管了,多省事

btw: 
并不认为JAVA是万金油,什么地方都可以用,只是认为能省点事干嘛不省点?? 反正现在机器配置都不错,运行性能差点没关系吧 :-)

posted on 2012-05-08 00:04  ZimZz  阅读(742)  评论(0编辑  收藏  举报