跨平臺語言

如今主流的手機平臺不少,好比:Windows開發的Windows Phone(WP-"X"),java

Apple(蘋果公司)開發的ios,Google(谷歌)開發的android,等等!android

而這些操做系統平臺的語言支持大同小異;ios

一、Windows Phone上支持VB,C#,C,C++;windows

二、iOS上支持Object-c,C,C++;架構

三、android上支持java,C,C++;操作系統

既然如此,咱們要想開發一款應用,並且兼容主流平臺都能應用,並且不想寫太多的代碼,咱們如何選擇開發語言呢?答案是:咱們能夠選擇C++語言。.net

 

C++語言是如何跨平臺的?開發

     一、首先說一下,C#,java也跨平臺,它們是怎樣跨平臺的?編譯器

C#,java跨平臺,指的是,通過「編譯系統」 編譯,生成中間文件「字節碼」,這樣的字節碼通過不一樣平臺「解釋器」再解釋一次,就變成了適應各個平臺的「機器碼」。虛擬機


     二、而C++語言,源代碼是直接通過編譯器編譯成「操做系統」能夠執行的「機器碼」,

      那麼它是怎麼跨平臺的呢?由於支持C++語言的各個平臺的架構不一樣(好比CPU可以處理的指令集不同),因此一份C++源代碼要想在另外一個操做系統平臺上執行,就必須用該平臺相對應的C++代碼編譯器對C++源代碼從新進行編譯,生成該平臺能夠直接執行的機器代碼。

  它的執行過程是:預處理->編譯->彙編->連接->機器碼

 

       三、我一直覺得:彙編指令是字節碼,而不是二進制文件,實際上錯了,字節碼也是二進制文件,只不過它與具體的機器碼不一樣,具體的機器碼是與具體的運行設備有關的,而彙編指令是與具體的硬件環境無關的。

 

      因此說java,C#跨平臺是創建在「虛擬機」的基礎上的,經過虛擬機,將字節碼 經過「解釋器」,解釋成 機器碼。(java的虛擬機,C#的.net運行時環境)。因此也有的人說java,C#是解釋性語言,而C、C++是編譯性語言。

 

java,C#的跨平臺受到"虛擬機"的限制,如:

一、.net環境只能在windows下有,Linux(Android),和Unix(ios)都不支持;

二、java虛擬機平臺主要是Android支持,Windows(WP)和Mac(ios)都不支持;

三、.net環境、java虛擬機 在windows上默認是沒有安裝的。

四、java虛擬機能夠配置在mac,windows(PC操做系統)上,可是不能配置在WP,IOS(移動操做系統)上,只能配置在android(移動操做系統)。

 

因爲C/C++不受虛擬機限制,一份一樣的源程序,只須要在每一個不一樣的平臺從新編譯一次,就能夠在各類平臺上運行應用程序。而java則是編譯一次,而後放到不一樣平臺的java虛擬機上運行!

 

由於java最後是解釋執行的,C,C++不須要解釋執行,因此C++的執行速度更快一些!

 

總結一下:

    一、C++跨平臺是一份源代碼,在不一樣的平臺上編譯;

    二、java跨平臺是一份源代碼,編譯後生成中間字節碼,而後經過 不一樣平臺的java虛擬機來解釋執行的。

相關文章
相關標籤/搜索