開發Android應用用Kotlin還是Java?
導讀 | 還記得多年前有關Android與iOS孰優孰劣的辯論嗎?如今,Kotlin與Java的爭論,時常廣泛地發生在開發人員之中。不過,由於大家往往關注的是Java所不具備的Kotlin功能,因此他們的結論可能略顯偏頗。下面,我將從資深應用開發人員的角度,綜合比較Kotlin與Java在不同領域的優缺點,以方便您做出判斷和選擇。 |
首先,我們來簡單瞭解一下這兩種語言。
由JetBrain推出的Kotlin,旨在提高Java的生產率。它是一種靜態型別的語言,可用於JavaScript,以及Java虛擬機器(JVM)中。由於Google在2019年宣佈將其選為首選開發語言,因此Kotlin的流行度得以大幅提升。
使用Kotlin開發的流行應用包括:
- Trello
- Evernote
- Coursera
- Uber
- Spotify
- NASA WorldWind
- Signal
- CashApp
- Minecraft
- 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應用效能方面比較佔優。
- 不作任何更改 - Java(4.6秒),Kotlin(4.5秒)。
- 更改某個未被其他使用者使用的檔案 - Java(7秒),Kotlin(6.1秒)。
- 更改專案中由其他檔案匯入的檔案 - Java(7.1秒),Kotlin(6秒)。
- 由上述結果可知,Java的純淨構建速度更快;而Kotlin在增量構建時更快。
- Kotlin能夠大幅減少應用開發的用時。
- Kotlin可以減少應用崩潰的可能性。
- 基於Kotlin的上述優勢,如果企業需要在Android開發領域保持競爭優勢的話,就會趨向選擇Kotlin,而不是Java。那麼企業內部的開發人員也就會順應此趨勢,開始學習Kotlin,這種面向未來的語言。
目前,有許多行業巨頭企業正在考慮從Java或其他語言遷移到Kotlin。
相比Java,Kotlin是一種較新的語言,因此許多初學者(甚至一些專業開發人員)經常圍繞著它,提出各種問題。下面便是一些常見的問題與解答。
如果您是一位經驗豐富的開發人員,並且掌握著與移動應用開發相關的基礎知識,那麼您可能無需成為Java專家,便可以開始學習Kotlin。但是,如果您不太熟悉移動應用的開發,那麼在上手Kotlin之前,最好透過學習Java來打下基礎。
Kotlin是一個全棧式的解決方案,因此它也可以被用於Web開發。在伺服器上,您不但可以將Kotlin用在前端,也可以在後端使用它。
Kotlin和Java在某些方面的確有著相似之處,但它們在速度和效能方面截然不同。
Java是由Sun Microsystems(後被Oracle收購了)於1995年釋出的,一種物件導向的程式語言。目前,大部分Android應用,以及Android系統本身都是基於Java的。這正是其成為所有Android應用開發人員優先選擇的原因。此外,由於Java的大多數元素都是開源的,因此,它很容易被用來進行程式開發。
使用Java開發的流行應用包括:
下面,讓我們基於各項功能特性,來了解Kotlin和Java之間的區別。
Kotlin的主要優勢之一在於簡潔。在與Java同等實現最終目標的前提下,您可以用Kotlin更快地編寫出更少量的程式碼,進而快速完成任務。
不過,在使用Kotlin時,您可能需要花費更多的時間,去全面考慮解決方案。而使用Java則不需花費過多的時間去準備方案。因此,您需要自行判斷,到底是要節省“磨刀功”、還是“砍柴功”了。
由於兩種語言都可以編譯出能夠在JVM上執行的位元組碼(ByteCode),因此我們無法直接比較它們的記憶體使用情況。下面,讓我們來看看Kotlin與Java在效能與功能上的不同:
由於相對較新,因此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程式設計師而言,從自己熟悉的語言切換到另一種新的語言,其意義不大。而對於初學者而言,Kotlin的學習曲線則更為陡峭。當然,Kotlin的如下兩個主要優勢,可能會成為企業在專案中使用它的驅動原因:
原文標題:Kotlin vs. Java in Android App Development,作者: Anand Mahajan
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2765589/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Dice:Android開發者更喜歡Kotlin還是JavaAndroidKotlinJava
- Kotlin對決Java:Android開發的選擇?KotlinJavaAndroid
- 測試開發應該選擇 Java 還是 Go 呢?JavaGo
- 運用Kotlin開發Android應用的一些技巧KotlinAndroid
- [譯]Kotlin中是應該使用序列(Sequences)還是集合(Lists)?Kotlin
- Kotlin on Android 開發環境介紹KotlinAndroid開發環境
- Android開發中Kotlin之於java那些不一樣的功能AndroidKotlinJava
- 【翻譯】ANDROID KTX – 使用Kotlin進行Android開發AndroidKotlin
- 用 Kotlin 開發 Android 專案是一種什麼樣的感受?KotlinAndroid
- Android開發中的Kotlin Coroutine VS RxJavaAndroidKotlinRxJava
- 使用Kotlin高效地開發Android App(二)KotlinAndroidAPP
- 使用Kotlin高效地開發Android App(四)KotlinAndroidAPP
- 使用Kotlin高效地開發Android App(三)KotlinAndroidAPP
- Android開發框架Collection-kotlin(更新篇)Android框架Kotlin
- 使用Kotlin高效地開發Android App(一)KotlinAndroidAPP
- kotlin和java混合開發總結KotlinJava
- [譯]Kotlin中是應該定義函式還是定義屬性?Kotlin函式
- 在 Android 開發中使用 Kotlin 協程 (一) -- 初識 Kotlin 協程AndroidKotlin
- Android版kotlin協程入門(四):kotlin協程開發實戰AndroidKotlin
- Android開發還有前景嗎?Android
- 運維崗轉開發崗,學Python還是Java?運維PythonJava
- Kotlin-first - 谷歌宣佈Kotlin成為Android開發首選語言Kotlin谷歌Android
- Android開發基礎08-掌握kotlin語言AndroidKotlin
- 使用Kotlin高效地開發Android App(五)完結篇KotlinAndroidAPP
- 優化使用kotlin開發Android app的編譯速度優化KotlinAndroidAPP編譯
- 做Java開發,遇到瓶頸是保持現狀還是尋求突破?Java
- 使用Kotlin開發一個追番應用Kotlin
- Android Jetpack - Android TV 應用開發教程AndroidJetpack
- android-ktx 已釋出,你還沒有用過 Kotlin?AndroidKotlin
- 零基礎學Java開發,是自學好還是報班好?Java
- Java開發和Android開發的區別JavaAndroid
- Android 開發學習程式0.27 kotlin使用 和viewbinding的使用AndroidKotlinView
- java還是C?Java
- Android應用開發進階Android
- 開發Android系統應用Android
- 好用到爆的Kotlin擴充套件庫AndroidKTX,如果你也用Kotlin開發Android,You Need It !Kotlin套件Android
- 用Vue.js開發原生應用選擇Weex還是NativeScript?Vue.js
- Android開發,別把Java當JavascriptAndroidJavaScript