現在主流的手機平台很多,比如:Windows開發的Windows Phone(WP-"X"),
Apple(蘋果公司)開發的ios,Google(谷歌)開發的android,等等!
而這些操作系統平台的語言支持大同小異;
1、Windows Phone上支持VB,C#,C,C++;
2、iOS上支持Object-c,C,C++;
3、android上支持java,C,C++;
既然如此,我們要想開發一款應用,而且兼容主流平台都能應用,而且不想寫太多的代碼,我們如何選擇開發語言呢?答案是:我們可以選擇C++語言。
C++語言是如何跨平台的?
1、首先說一下,C#,java也跨平台,它們是怎樣跨平台的?
C#,java跨平台,指的是,經過“編譯系統” 編譯,生成中間文件“字節碼”,這樣的字節碼經過不同平台“解釋器”再解釋一次,就變成了適應各個平台的“機器碼”。
2、而C++語言,源代碼是直接經過編譯器編譯成“操作系統”可以執行的“機器碼”,
那么它是怎么跨平台的呢?因為支持C++語言的各個平台的架構不同(比如CPU能夠處理的指令集不一樣),所以一份C++源代碼要想在另一個操作系統平台上執行,就必須用該平台相對應的C++代碼編譯器對C++源代碼重新進行編譯,生成該平台可以直接執行的機器代碼。
它的執行過程是:預處理->編譯->匯編->鏈接->機器碼
3、我一直以為:匯編指令是字節碼,而不是二進制文件,實際上錯了,字節碼也是二進制文件,只不過它與具體的機器碼不同,具體的機器碼是與具體的運行設備有關的,而匯編指令是與具體的硬件環境無關的。
所以說java,C#跨平台是建立在“虛擬機”的基礎上的,通過虛擬機,將字節碼 通過“解釋器”,解釋成 機器碼。(java的虛擬機,C#的.net運行時環境)。所以也有的人說java,C#是解釋性語言,而C、C++是編譯性語言。
java,C#的跨平台受到"虛擬機"的限制,如:
1、.net環境只能在windows下有,Linux(Android),和Unix(ios)都不支持;
2、java虛擬機平台主要是Android支持,Windows(WP)和Mac(ios)都不支持;
3、.net環境、java虛擬機 在windows上默認是沒有安裝的。
4、java虛擬機可以配置在mac,windows(PC操作系統)上,但是不能配置在WP,IOS(移動操作系統)上,只能配置在android(移動操作系統)。
由於C/C++不受虛擬機限制,一份同樣的源程序,只需要在每個不同的平台重新編譯一次,就可以在各種平台上運行應用程序。而java則是編譯一次,然后放到不同平台的java虛擬機上運行!
因為java最后是解釋執行的,C,C++不需要解釋執行,所以C++的執行速度更快一些!
總結一下:
1、C++跨平台是一份源代碼,在不同的平台上編譯;
2、java跨平台是一份源代碼,編譯后生成中間字節碼,然后通過 不同平台的java虛擬機來解釋執行的。