cbmtvb wrote:
Java的笑能有可能是Android的最大敗筆嗎?
Android官方標準的程式開發環境是Java,所以目前的應用軟體應該大部份是用Java寫的吧,而眾所周知Java的執行是直譯式而非如C/C++ /objC是編譯式的,直譯式的優點是較易達成單一程式碼跨軟硬體平台直接執行,但這點Java也好像只有在瀏覽器內執行的Java applet做得較為成功,至少還能跟Flash鼎足而立;而直譯式的超大缺點則是執行效能遠低於編譯式的,以及無法做到跟系統較為相關的應用,再加上優點達成率低或單一程式碼跨平台的需求不高,因此也造成目前Win、Mac、Linux等三大桌機OS上的知名或常用的應用軟體用Java寫的仍寥寥可數。
框當...框當,無知並不可怕,可怕的是半瓶水響叮噹...

自各大學資訊科系大一新生改教java後,很久沒看過這麼離譜的說法,你的資訊落後了最少十年
java程式是採混合式執行,先直譯一段時間,遇到效能瓶頸的部份就改編譯(JIT),執行速率基本上很接近C,在某些測試中還能勝過C,缺點是消耗的記憶體較多
flash的actionscript也非直譯,在某個版本後就已導入JIT的方式執行,可以說隨著編譯器理論的進步,純直譯式的語言變的越來越少
java applet也不算成功,普及率遠輸flash,更別說鼎足而立
事實上java桌面的失敗也與執行速率無關,主要是輸在
1.程式載入速度(最致命的一點)
2.SUN在桌面應用的技術太兩光或說審美觀太特異,用swing開發的程式外觀(metal)讓很多使用者不習慣
3.API繪圖缺乏硬體加速,導致界面操作很不靈敏
其中2,3兩點在java 1.4以後有很大的改善,但已經讓很多程序員喪失對java桌面的信心
Apple就好多了,在mac os x可以用java寫出又快又漂亮的程式,完全看不出來是用java開發,不過卻喪失了可攜性,因為用了os x專屬的cocoa api
事實上java的桌面應用沒有失敗到寥寥可數,雖然不多,但也有一定的數量,如現在最強大的免空下載器 JDownloader
Android採用Java的優勢似乎看不太到,但Java直譯式的執行效能遠不如編譯式的原生機器碼應該是千古不變的真理吧,所以在此請教大家,Java的笑能有可能是Android的最大敗筆嗎?
沒有什麼是千古不變的真理,尤其是在快速發展的計算機領域,只能說某個理論在特定時間是正確的
有種東西叫java chip,很多java手機都有裝,保證讓你的java程式跑的比C還快,不過Android的java程式並非bytecode格式,很有可能無法加速
至於Andorid採用java有什麼優勢,我懶的多說,反正和其他java手機的理由差不多
就跟ruby越來越流行的道理一樣,執行速率在很多應用領域並非最重要的考量,開發效率、除錯難易度、可攜性、目的碼大小這些因素反而更重要
再說android免授權費又開源,google又不是佛心來著,無聊燒錢寫一套作業系統送給手機製造商
當然想靠平台優勢大力推廣內建的各項google服務,手機的性能只要能跑瀏覽器就夠了,執行速率變的很次要,我惡意的猜測,這也是dalvik vm遲遲沒有JIT的原因,因為google根本不在意單機的效率,一切皆交給雲端計算