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可以在多個平台運行