java的跨平台是不是指同一个源程序在windows电脑上运行就能得到一个适合windows电脑的

java的跨平台是不是指同一个源程序在windows电脑上运行就能得到一个适合windows电脑的exe安装包?而在安卓机上运行就能得到一个适合安卓的apk安装包?

不是,Java的跨平台,是指“一次编译,到处运行”,是指Java源代码编译后的字节码(.class)文件可以在不同操作系统上运行(Windows, Linux, MAC等),而这些操作系统上需要有JRE(Java Runtime Enviorment)即虚拟机。

至于Android,只不过是借用了Java编程语言,是Google开发的另一个平台,它用的虚拟机和一般意义上的Java虚拟机JVM(Oracle /SUN的)不一样,叫Dalvik VM,它还需要把Java标准字节码文件(.class) 转换为Davik虚拟机代码(.dex)。apk安装包实际上就是压缩了dex文件的压缩包。

这个跨平台,不包括Android的,这主要是历史原因,Oracle还和Google打了场官司,你可以了解一下。Oracle对Java每推出一个新版本JDK,Google就要快速跟进,创造一些工具(ADT)让其能转化为Davik VM代码。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-24
不是这样理解的。
首先要理解java程序的运行过程,我们写好的是java后缀的文件,然后编译被JVM编译,编译成class后缀文件。这个文件叫做字节码文件,这个字节码文件才是跨平台的关键,因为这个字节码文件无论在什么平台上都是完全一样的。
但是运行的时候呢,被JVM运行。也就是把class文件扔到JVM中来运行。JVM赖以生存的环境叫做jre,这个东西是和平台打交道的。
比如sun开发了windows的jre,那么同一个class扔到JVM,JVM用这个jre和window打交道。
比如sun开发了linux的jre,那么同一个class扔到JVM,JVM用这个jre和linux打交道。
变化的东西sun都帮我们封装好了,我们只需要编写好java,就能够达到一处编译处处运行的跨平台的“神奇”效果。

至于你说的android,编写android程序:全部的java语法+java核心api+android api。
所以,使用的api是不同的。这个和一处编译处处运行是两码事。
相似回答