虛擬座談會:Android開發需要新的語言嗎?
在Java之外,Android是否需要一門新的開發語言,長久以來一直都是業內茶余飯后時常提起的話題,特別是蘋果推出了Swift語言,以及Oracle和Google關于Java的專利糾紛,讓這一問題備受關注。恰逢國內Google技術社區盛事 北京GDG Devfest 2015 在北航舉辦,InfoQ記者邀請到大會上的幾位講師對這一問題發表了自己的看法。
在討論這一問題之前,先讓我們了解一下問題的背景。從去年以來,Swift、Go、Dart語言的社區都對Android開發表示了興趣:
- 今年早些時候有一個 Silver項目 致力于用Swift來開發跨平臺的應用,不過在Android平臺是通過將Swift轉換為Java代碼實現的。而另一些人則在等待Swift開源以便將其移植到Android,有人已經做了一些前期的研究, 在Android上運行Swift代碼 ,表明這至少在理論上是可行的。
- Go語言對Android開發的支持更加官方,在去年發布的Go 1.4中就已經支持了Android開發,Go語言也是在各種Android新語言的流言中最常出場的一位。但Go語言從目前的趨勢來看,在服務端發展的可能性更大,它的部分特性也更適用于服務端編程。
- Dart語言自今年Google宣布Chrome不再內置Dart VM之后遭遇重大挫折,很多人認為它最終將被拋棄,但這門語言背后有 多位優秀的開發者和語言設計者 ,自從不再將替代JavaScript作為目標后,Dart反而迎來了更廣闊的施展空間。今年Dart峰會上Google宣布了用于Android開發的 Sky框架 (現更名為Flutter),更用120fps的流暢性打消了人們對這個曾被用于前端開發的腳本語言的疑慮。
除了這三門已經有一定歷史積累的語言,另一個被認為可能替代Java的是Kotlin語言。Kotlin是開發工具公司JetBrains設計的一門新語言,旨在替代Java,其風格更加貼近現代語言,一經推出便受到Android開發社區的注意,聲勢也越來越大。
最近Kotlin語言剛剛發布1.0的rc版,我們正好從這個話題入手來看看國內Android開發社區是如何看上面的問題的。
InfoQ:Kotlin最近發布1.0rc版,是否研究過,感覺如何? Swift、 Go、Dart語言社區都對Android開發感興趣,Android開發是否需要另一門語言,如果有,最看好哪個?
朱凱(Flipboard Android工程師):Kotlin我嘗試過,沒有做過深入研究。它給我的感覺就像是一個除了沒有動態語言特性之外應有盡有的Java,很爽。我覺得 Kotlin目前可以作為Java的一種補充應用于Android開發(例如用于POJO),而且就相互兼容性來看,Kotlin是最適合做這種事的。但 要說替代Java,目前還沒有能夠做到的語言,包括Kotlin。未來我不知道,如果有的話我最看好Kotlin,但我覺得 Kotlin最終行不行還得看Google怎么決定。
韓國愷(北京GDG社區組織者、開發者):沒研究過Kotlin。每個人都有自己喜愛的編程語言,但特定的系統或框架決定了它所采用的主語言,其它語言想加入就比較難。以Web為例,所有瀏覽器都只支持一種語言(JavaScript),其它語言想成為瀏覽器的主力語言就很難或者會很受限。而服務器端由于沒有這種限制,而呈現百花齊放的景象,Java、Go、PHP、Ruby都可以。再說Android,我感覺Android系統的語言環境介于 Web和服務器端之間。JVM本身可以支持多種語言,使用NDK可以進行C/C++開發,同時又包含Web環境以及與系統的交互,所以Android比 Web環境的語言選擇余地要大。不過應用層還是以Java為主的,其它語言的使用多少會受到一些影響。另外,語言的開發成本也選擇一個語言很重要的方面,新語言都要走很長的路。
段建華(遨游瀏覽器Android工程師):Kotlin有過關注和簡單了解。Kotlin和Java很類似,使用起來也比Java輕巧很多,同時也可以規避了Java中的一些坑。使用Swift開發Android程序的聽到的較少,使用Go語言開發Android應用是已經可以實現的。
個人覺得Android需要一門新的語言的需求有,但是不夠迫切。Android一開始選定Java,目的就是利用龐大的Java程序員群可以快速的低成本地創造出豐富的Android應用。曾經的Oracle和Google就Android侵權官司,棄用Java炒的沸沸揚揚,議論紛紛。然而 現在Java依舊是Android的官方語言,地位沒有動搖。
而Kotlin在Android界開始有名氣,應該是來自DroidCon NYC 2015,目前國內使用的據我了解,都是少數個別開發者在使用。因而我覺得Kotlin挑戰Java的地位,推廣和宣傳必不可少。
如果真的需要一們新的語言,論實力來說Go很強,當然Kotlin有著Jetbrains支持也不錯。就個人而言,我更傾向于Kotlin,因為我覺得它與Java相近,轉換成本較低。
Android開發到底是否需要新語言,這個新語言到底會是什么,在Google沒有正式發布之前沒有正確的答案,但這不妨礙我們站的角度稍微高一點,來挑選出我們心目中最適合的新語言。各位Android開發的讀者如有自己的看法也歡迎討論。