1. java的跨平台是不是指同一个源程序在windows电脑上运行就能得到一个适合windows电脑的
不是,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代码。
2. C++ 定义适应不同平台调用不同代码的方法
1、一般是在编译时指定,比如在windows编译,就指定__WINDOWS__宏,所有和windows有关的代码都被这个宏包围,于是就会被编译,而由于__LINUX__没有定义,所以linux相关的代码不会被编译。
2、一般设计好一个api,假设为f,在头文件f.h中声明为
void f();
为了简单起见,我们放在一个实现文件中,如果复杂可以分成多个文件。这里实现文件为f.cpp
void f()
{
#if defined(__WINDOWS__)
// windows specific code
#elif defined(__LINUX__)
// linux specific code
#else
# error "unknown platform"
#endif
}
若分成多个实现文件,不必像单个文件那样将平台相关代码用宏组织,理由是编译时会编译平台特定文件,可以这么组织文件。命名文件时加上平台缩写,比如上f.cpp,windows上命名为f.win32.cpp,linux上命名为f.linux.cpp,这样可以放在一个文件夹中组织,或者将不同实现文件放在不同文件夹中,windows上我们建立win32文件夹,linux上我们建立linux文件夹。如此组织,编译时,需要为不同平台编译不同文件。
3. 前端一套代码实现多端适配 有哪些方案
可以使用成熟的框架来实现适配,比如bootstrap,element-ui. 另外,也可以自己写css,实现宽度自适应,原理就是元素的宽度用百分比来设定。
4. Java的跨平台特性是指它的源代码可以在多个平台运行
错
Java代码是字节代码,就像楼上所说的Java是运行在虚拟机上的,虚拟机将Java字节代码和具体的平台给隔开,不同平台上面运行的虚拟机是不一样的,而这些虚拟机对Java代码要求是一样的,所以Java可以在多个平台运行