開發Android應用用Kotlin還是Java?

大雄45發表於2021-03-29
導讀 還記得多年前有關Android與iOS孰優孰劣的辯論嗎?如今,Kotlin與Java的爭論,時常廣泛地發生在開發人員之中。不過,由於大家往往關注的是Java所不具備的Kotlin功能,因此他們的結論可能略顯偏頗。下面,我將從資深應用開發人員的角度,綜合比較Kotlin與Java在不同領域的優缺點,以方便您做出判斷和選擇。

首先,我們來簡單瞭解一下這兩種語言。

Kotlin:簡介

由JetBrain推出的Kotlin,旨在提高Java的生產率。它是一種靜態型別的語言,可用於JavaScript,以及Java虛擬機器(JVM)中。由於Google在2019年宣佈將其選為首選開發語言,因此Kotlin的流行度得以大幅提升。

使用Kotlin開發的流行應用包括:

  • Trello
  • Evernote
  • Coursera
  • Pinterest
  • 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擁有更廣泛的開發者社群。不過有調查表明(),業界有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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2765589/,如需轉載,請註明出處,否則將追究法律責任。

相關文章