8
|
Luis Miguel Serrano · 技术社区 · 14 年前 |
1
8
可移植性的单位是 而不是 . 声明并初始化整型变量的类 在你描述的所有平台上运行,还有很多其他平台。他们理解相同的字节码,即使他们使用不同的机制执行它,从字节码解释器到JIT编译,再到Android的Dalvik(它将JVM字节码转换成自己的指令集)。 即使我们只关注一个整数变量,使用“核心”功能的Java 在这些设备上工作。J2ME、Android和J2SE之间有很多共同点(尤其是后两个J2ME是为资源有限的设备设计的标准Java API的精简版本,因此可用的标准API更少)。
在Windows /Mac/Linux系统中,应用程序通常是显式启动、使用和-当你完成时,告诉它退出。与Android手机相比:在这种情况下,应用程序可能是在响应某个事件时启动的(可能是收到的短信,或者是从web上下载的特定类型的文件)
怎样
为什么?
它开始了-一个简单的
这些并不是晦涩难懂的功能——它们是手机作为手机使用所必需的——所以所有的本地应用程序都必须处理它们。 |
2
4
编译Java代码时,会生成一个独立于系统的字节码(类文件)。这个字节码被馈送到系统中的JVM(Java虚拟机)。因为每个系统都有自己的JVM,所以在哪里编译源代码并不重要。编译器生成的字节码可以由任何机器的任何JVM解释。因此它被称为平台无关语言。 谢谢 |
3
2
记住并明确一点,只有Java语言是独立于平台的,并试图理解句子的含义。Java与平台无关意味着使用Java开发的代码可以在任何机器上运行。
当您编译
现在你说它不是在实践中,所以原因只是Java语言是独立于平台的,但是它的运行时环境,或者说JVM,是依赖于平台的,它是为每个操作系统分别编写的。所以我们可以说Java语言是独立于平台的,但是它的运行时环境是依赖于平台的。 |
4
1
|
5
1
Sun micro systems发布了不同版本的jdk。一个是基于windows的,另一个是基于linux/unix的。当我们安装jdk时,会得到jvm、jre和javac。假设我们在装有英特尔处理器的windows中编写一个java程序,安装了windows jdk,那么jdk的java编译器会将.java文件转换成.class文件,其中包含与汇编语言代码类似的字节码指令这些字节码指令只有jvm才能理解。如果我们使用Windows O.S中生成的.class文件,如果我们在Linux中运行,那么Linux机器的JVM通过使用由JavaSoT人开发并被放置为JVM的一部分的近似200 +指令集来内部重写Java程序。然后.class文件被执行。所以这里的重点是,jdk依赖于平台,但是.class不依赖于平台,它独立于平台,因为jvm只负责运行任何.class文件。每个jdk的jvm内部都有预定义的指令集,即大约200+。 |