我非常清楚,java是一个可移植的language..and,是字节代码使其可移植。
然而,我也研究过C是一种可移植的语言。用C编写的程序是可移植的,即为一种计算机或操作系统编写的程序可以在另一种计算机或操作系统上运行。
那么C可移植性和Java可移植性之间有什么区别呢?我们可以说C也是一种像java这样的可移植语言吗?我知道java可移植性可能是基于不同的应用程序,如mac、PC、移动phone..and C不能用于这样的cases..But --我的问题仍然是,两种语言的可移植性有何不同?
请澄清我的困惑。提前谢谢..。
发布于 2011-02-24 13:54:16
Java与对象兼容.您可以在一个patform上编译它,生成的类文件可以在任何JVM上运行。
C是可移植的源.只要你遵守规则,你就可以把你的C源代码编译在任何ISO C编译器上--这意味着不使用未定义或实现定义的行为或任何非标准特性。
发布于 2011-02-24 13:57:01
在C中,只有源代码是可移植的,如果存在合适的C编译器,则必须在每个目标平台上重新编译它。此外,如果您访问任何库或操作系统功能,则它必须存在于您希望在其上运行程序的任何平台上。
java的重要之处在于,语言本身带来了许多标准的libarary函数,所以您很少需要访问操作系统api。
发布于 2011-02-24 13:53:57
区别在于,使用c++通常(除非使用类似LLVM的东西)需要在新架构上重新编译,而java使用相同的字节代码。
但是我认为你不应该说语言是可移植的,而是编译器是可移植的。很容易想象c的字节代码实现直接运行在不同的体系结构上,或者直接编译版本的java,需要在新的体系结构上重新编译。
在实践中,可移植性主要涉及到图书馆。特别是便携式GUI总是有问题的。而c标准不包含任何与它相关的内容。另一方面,Java有GUI工具包,它们在许多平台上(在一定程度上)都能工作。但是,让这样的GUI在所有平台上都有本土化的感觉是很困难的,并且通常需要额外的工作,即使使用跨平台工具包(而且许多GUI跨平台GUI工具包都会感到陌生,不管您投入了多少工作)。
另外,在文件命名方案、路径分隔符、多线程与分叉、在何处存储哪些文件的约定、.它们中的大多数很难用跨平台库来抽象。
https://softwareengineering.stackexchange.com/questions/118158
复制相似问题