RoboVM將Java 8程序員匯聚至iOS平臺
譯文【51CTO譯文】RoboVM允許開發人員使用lambdas與defaults,同時帶來對硬件及原生iOS API進行全面訪問的能力。
Java在iOS平臺上的糟糕表現一直是Java開發者們的心頭痛處。盡管Java開發人員能夠通過種種迂回方式將自己構建的應用程序運行在這類設備之上,但蘋果公司在其iOS智能手機與平板設備上針對Java作出的開發限制仍然令人頭痛不已。為了解決這一老大難問題,RoboVM作為同類技術方案中的佼佼者在最近于舊金山召開的JavaOne技術大會上正式亮相。
RoboVM能夠將Java字節碼轉換為原生ARM或者x86代碼,其中還包含一套用于對接Java與Objective-C代碼的通道。就目前而言RoboVM尚主要被運用在游戲應用領域,但項目創始人Niklas Therning預計在今年十一或者十二月其1.0版本發布之后,其適用范圍將推廣到更多應用程序類型當中。在最近的一次郵件采訪中,他回答了記者就RoboVM提出的各項問題。
記者: 在iOS上運行Java代碼到底存在著哪些局限?
Therning: 蘋果公司自2010年年末起開始允許開發者在應用當中嵌入翻譯程序,而且這些應用當中還嵌入有所有運行所需的腳本內容,這相當于大大削弱了iOS對于Java的限制力度。但即使原有限制條件仍然存在,RoboVM也仍然能夠發揮良好的實際效果——因為它并不需要啟動其它可執行文件,也用不著嵌入任何翻譯程序或者在運行時當中對任何代碼進行翻譯。在RoboVM的支持下,所有字節碼都會在開發者的設備上被提前編譯為機器碼,而最終獲得的應用程序成品在構建風格上與Xcode以及Objective-C/Swift打造的原生應用非常相近——換言之,不再具備鮮明的Java應用風格……。我們已經在實踐當中證明在RoboVM的作用下,Java與其它JVM語言也能在iOS平臺上順利起效而且絲毫無需違背蘋果所制定的iOS開發者計劃許可協議。我真的完全沒有從蘋果的指導性資料中發現任何與之相悖的情況。
記者: RoboVM解決方案中是否包含有革命性的技術成果?如果有的話,您能否具體談談?
Therning: RoboVM是目前惟一一套能夠幫助開發人員切實使用Java 8中各類新型語言功能的解決方案,其中包括lambdas與default方法。RoboVM的獨特之處在于,它能夠實現對硬件以及原生iOS API的全面訪問,這是借助一系列Java到Objective-C綁定機制完成的。利用這些綁定機制,大家可以利用Java語言實現一切原本能夠通過蘋果的Xcode以及Objective-C/Swift所實現的應用程序構建需求。
記者: RoboVM方案中是否包括了JavaFX?
Therning: RoboVM讓開發人員得以利用JavaFX GUI框架打造出跨平臺應用程序,并能夠在不同平臺之間實現100%代碼重復使用率。我們目前正在著力研究LodgOn,希望能讓JavaFX同時在iOS以及Android移動設備上順利起效,獲得的結果也相當令人振奮。不過需要強調一點,RoboVM的運行并不依賴于JavaFX。如果大家更傾向于利用原生UI組件進行應用程序開發,那么也可以選擇這種替代方式。在JavaOne 2014大會的主題演講中,我們展示了技術人員如何在利用原生UI開發Android與iOS應用程序的同時,仍然在兩套平臺間保持極高的代碼重復使用率。
記者: 那么RoboVM是如何將自身與Codename One之類的項目區分開來的?根據后者的官方網站,其號稱自身能夠“將Java字節碼翻譯成原生C/Objective-C代碼并利用Xcode編譯機制實現移動應用程序的無縫化開發。”
Therning: 在RoboVM當中,我們為自己的預編譯機制選擇了一種略有差別的實現方案。相對于Codename One將Java代碼翻譯為C/Objective-C形式,我們選擇充分發揮LLVM項目工具鏈的固有優勢。大家可以將RoboVM看成LLVM的一種前端,其能夠將Java字節碼翻譯成為LLVM位碼,后者隨后會利用LLVM后端進行優化并被翻譯成機器碼。LLVM支持所有不同類型的CPU架構與操作系統方案; 從理論層面講,它足以支撐RoboVM將全部上述環境納入可用范疇。
但就目前而言,我們仍然把精力集中在iOS身上。通過利用LLVM位碼而非C/Objective-C作為過渡階段——區別于Codename One的作法——我們能夠對最終機器碼成品進行更為有效的控制,并在代碼緊湊性與運行速度上實現遠超C/Objective-C的實際效果。
原文鏈接:RoboVM beckons Java 8 programmers to iOS
核子可樂譯