到底該用Kotlin開發Android應用,還是用Java?
譯文【51CTO.com快譯】還記得多年前有關Android與iOS孰優孰劣的辯論嗎?如今,Kotlin與Java的爭論,時常廣泛地發生在開發人員之中。不過,由于大家往往關注的是Java所不具備的Kotlin功能,因此他們的結論可能略顯偏頗。下面,我將從資深應用開發人員的角度,綜合比較Kotlin與Java在不同領域的優缺點,以方便您做出判斷和選擇。
首先,我們來簡單了解一下這兩種語言。
Kotlin:簡介
由JetBrain推出的Kotlin,旨在提高Java的生產率。它是一種靜態類型的語言,可用于JavaScript,以及Java虛擬機(JVM)中。由于Google在2019年宣布將其選為首選開發語言,因此Kotlin的流行度得以大幅提升。
使用Kotlin開發的流行應用包括:
- Trello
- Evernote
- Coursera
- Uber
目前,有許多行業巨頭企業正在考慮從Java或其他語言遷移到Kotlin。
Kotlin的常見問題與解答
相比Java,Kotlin是一種較新的語言,因此許多初學者(甚至一些專業開發人員)經常圍繞著它,提出各種問題。下面便是一些常見的問題與解答。
我應該在上手Kotlin之前學習Java嗎?
如果您是一位經驗豐富的開發人員,并且掌握著與移動應用開發相關的基礎知識,那么您可能無需成為Java專家,便可以開始學習Kotlin。但是,如果您不太熟悉移動應用的開發,那么在上手Kotlin之前,最好通過學習Java來打下基礎。
我可以使用Kotlin進行Web開發嗎?
Kotlin是一個全棧式的解決方案,因此它也可以被用于Web開發。在服務器上,您不但可以將Kotlin用在前端,也可以在后端使用它。
Kotlin和Java是否一回事?
Kotlin和Java在某些方面的確有著相似之處,但它們在速度和性能方面截然不同。
Java:簡介
Java是由Sun Microsystems(后被Oracle收購了)于1995年發布的,一種面向對象的編程語言。目前,大部分Android應用,以及Android系統本身都是基于Java的。這正是其成為所有Android應用開發人員優先選擇的原因。此外,由于Java的大多數元素都是開源的,因此,它很容易被用來進行程序開發。
使用Java開發的流行應用包括:
- Spotify
- NASA WorldWind
- Signal
- CashApp
- Minecraft
下面,讓我們基于各項功能特性,來了解Kotlin和Java之間的區別。
編寫代碼的速度
Kotlin的主要優勢之一在于簡潔。在與Java同等實現最終目標的前提下,您可以用Kotlin更快地編寫出更少量的代碼,進而快速完成任務。
不過,在使用Kotlin時,您可能需要花費更多的時間,去全面考慮解決方案。而使用Java則不需花費過多的時間去準備方案。因此,您需要自行判斷,到底是要節省“磨刀功”、還是“砍柴功”了。
性能與功能
由于兩種語言都可以編譯出能夠在JVM上運行的字節碼(ByteCode),因此我們無法直接比較它們的內存使用情況。下面,讓我們來看看Kotlin與Java在性能與功能上的不同:
- Java提供了異常檢查的功能,Kotlin則不然。
- Kotlin具有協程(Coroutines,可以幫助編寫異步代碼),Java則沒有。
- Kotlin提供了擴展功能。
- Kotlin內置了高階函數(Higher-order functions)和Lambda,因此開發者不必去處理Retrolambdas插件。在Java中,您將必須通過可調用函數,來實現高階函數。同時,Java在其第8版本中引入了Lambda。
- Kotlin為委派提供了原生支持,并具有內聯函數(inline functions)。
- Java具有非私有字段(non-private fields)和NullPointerExceptions,Kotlin則不然。
- Kotlin沒有像Java那樣的靜態成員,但是它提供了替代對象。
- Kotlin具有null safe特性。
- Kotlin具有smart casts,Java則沒有。
總體而言,Kotlin雖然不及Java功能豐富,但是它在開發Android應用性能方面比較占優。
穩定性
由于相對較新,因此Kotlin沒有長期支持的版本。而Java有著Java 8和Java 11之類的長期支持版本。這就意味著,如果這些版本出現了問題,其原始開發者將會使用補丁程序,對其進行修復。
可見,Java在穩定性上勝出。當然,Kotlin并不能因此被稱為不穩定的編程語言。
文檔資料
Oracle提供了充足的Java官方文檔,可供您學習與研究。此外,由于有著長時間的積累,您可以很容易地找到Java的相關教程、書籍和指南。
作為相對年輕的語言,Kotlin當然也有著不錯的官方文檔。不過,您需要通過深挖,才能找到更多的資源。
社區
作為一種古老的語言,Java比Kotlin擁有更廣泛的開發者社區。不過有調查表明(https://insights.stackoverflow.com/survey/2020#top-paying-technologies),業界有62.9%的開發者喜歡Kotlin,而只有44.1%的開發者表示他們喜歡Java。
因此,您可以放心地使用這兩種語言。如果碰到任何與語言有關的問題,您都可以從各個的社區,快速地獲得在線支持與解決方案。
易于學習
由于Kotlin比Java更需要編程基礎,因此Java更易于學習和實現。當然,如果您更善于抽象思想,那么學習Kotlin就不是什么問題了。
編譯速度
有測試表明:在使用Gradle(譯者注:是一個基于Apache Ant和Apache Maven概念的,項目自動化構建開源工具)守護程序進行純凈(clean)構建時,Java的編譯速度比Kotlin快17%;而隨著Gradle守護進程的持續運行,Java最終的編譯速度比Kotlin快13%。
當然,純凈構建在真實編碼實踐中極其少見,大多數開發人員都會用到增量(incremental)構建。下面是在對Gradle守護程序進行了兩至三次持續運行后,不同類型的增量構建在編譯速度上的比較結果:
- 不作任何更改 - Java(4.6秒),Kotlin(4.5秒)。
- 更改某個未被其他用戶使用的文件 - Java(7秒),Kotlin(6.1秒)。
- 更改項目中由其他文件導入的文件 - Java(7.1秒),Kotlin(6秒)。
由上述結果可知,Java的純凈構建速度更快;而Kotlin在增量構建時更快。
小結
綜合上述比較,我們不難看出:對于資深Java程序員而言,從自己熟悉的語言切換到另一種新的語言,其意義不大。而對于初學者而言,Kotlin的學習曲線則更為陡峭。當然,Kotlin的如下兩個主要優勢,可能會成為企業在項目中使用它的驅動原因:
- Kotlin能夠大幅減少應用開發的用時。
- Kotlin可以減少應用崩潰的可能性。
基于Kotlin的上述優勢,如果企業需要在Android開發領域保持競爭優勢的話,就會趨向選擇Kotlin,而不是Java。那么企業內部的開發人員也就會順應此趨勢,開始學習Kotlin,這種面向未來的語言。
原文標題:Kotlin vs. Java in Android App Development,作者: Anand Mahajan
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】