自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

到底該用Kotlin開(kāi)發(fā)Android應(yīng)用,還是用Java?

譯文
開(kāi)發(fā) 后端
本文從資深應(yīng)用開(kāi)發(fā)人員的角度,綜合比較Kotlin與Java在不同領(lǐng)域的優(yōu)缺點(diǎn),以方便您做出判斷和選擇。

[[387456]]

【51CTO.com快譯】還記得多年前有關(guān)Android與iOS孰優(yōu)孰劣的辯論嗎?如今,Kotlin與Java的爭(zhēng)論,時(shí)常廣泛地發(fā)生在開(kāi)發(fā)人員之中。不過(guò),由于大家往往關(guān)注的是Java所不具備的Kotlin功能,因此他們的結(jié)論可能略顯偏頗。下面,我將從資深應(yīng)用開(kāi)發(fā)人員的角度,綜合比較Kotlin與Java在不同領(lǐng)域的優(yōu)缺點(diǎn),以方便您做出判斷和選擇。

首先,我們來(lái)簡(jiǎn)單了解一下這兩種語(yǔ)言。

Kotlin:簡(jiǎn)介

由JetBrain推出的Kotlin,旨在提高Java的生產(chǎn)率。它是一種靜態(tài)類型的語(yǔ)言,可用于JavaScript,以及Java虛擬機(jī)(JVM)中。由于Google在2019年宣布將其選為首選開(kāi)發(fā)語(yǔ)言,因此Kotlin的流行度得以大幅提升。

使用Kotlin開(kāi)發(fā)的流行應(yīng)用包括:

  • Trello
  • Evernote
  • Coursera
  • Pinterest
  • Uber

目前,有許多行業(yè)巨頭企業(yè)正在考慮從Java或其他語(yǔ)言遷移到Kotlin。

Kotlin的常見(jiàn)問(wèn)題與解答

相比Java,Kotlin是一種較新的語(yǔ)言,因此許多初學(xué)者(甚至一些專業(yè)開(kāi)發(fā)人員)經(jīng)常圍繞著它,提出各種問(wèn)題。下面便是一些常見(jiàn)的問(wèn)題與解答。

我應(yīng)該在上手Kotlin之前學(xué)習(xí)Java嗎?

如果您是一位經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員,并且掌握著與移動(dòng)應(yīng)用開(kāi)發(fā)相關(guān)的基礎(chǔ)知識(shí),那么您可能無(wú)需成為Java專家,便可以開(kāi)始學(xué)習(xí)Kotlin。但是,如果您不太熟悉移動(dòng)應(yīng)用的開(kāi)發(fā),那么在上手Kotlin之前,最好通過(guò)學(xué)習(xí)Java來(lái)打下基礎(chǔ)。

我可以使用Kotlin進(jìn)行Web開(kāi)發(fā)嗎?

Kotlin是一個(gè)全棧式的解決方案,因此它也可以被用于Web開(kāi)發(fā)。在服務(wù)器上,您不但可以將Kotlin用在前端,也可以在后端使用它。

Kotlin和Java是否一回事?

Kotlin和Java在某些方面的確有著相似之處,但它們?cè)谒俣群托阅芊矫娼厝徊煌?/p>

Java:簡(jiǎn)介

Java是由Sun Microsystems(后被Oracle收購(gòu)了)于1995年發(fā)布的,一種面向?qū)ο蟮木幊陶Z(yǔ)言。目前,大部分Android應(yīng)用,以及Android系統(tǒng)本身都是基于Java的。這正是其成為所有Android應(yīng)用開(kāi)發(fā)人員優(yōu)先選擇的原因。此外,由于Java的大多數(shù)元素都是開(kāi)源的,因此,它很容易被用來(lái)進(jìn)行程序開(kāi)發(fā)。

使用Java開(kāi)發(fā)的流行應(yīng)用包括:

  • Spotify
  • NASA WorldWind
  • Signal
  • CashApp
  • Minecraft

下面,讓我們基于各項(xiàng)功能特性,來(lái)了解Kotlin和Java之間的區(qū)別。

編寫代碼的速度

Kotlin的主要優(yōu)勢(shì)之一在于簡(jiǎn)潔。在與Java同等實(shí)現(xiàn)最終目標(biāo)的前提下,您可以用Kotlin更快地編寫出更少量的代碼,進(jìn)而快速完成任務(wù)。

不過(guò),在使用Kotlin時(shí),您可能需要花費(fèi)更多的時(shí)間,去全面考慮解決方案。而使用Java則不需花費(fèi)過(guò)多的時(shí)間去準(zhǔn)備方案。因此,您需要自行判斷,到底是要節(jié)省“磨刀功”、還是“砍柴功”了。

性能與功能

由于兩種語(yǔ)言都可以編譯出能夠在JVM上運(yùn)行的字節(jié)碼(ByteCode),因此我們無(wú)法直接比較它們的內(nèi)存使用情況。下面,讓我們來(lái)看看Kotlin與Java在性能與功能上的不同:

  • Java提供了異常檢查的功能,Kotlin則不然。
  • Kotlin具有協(xié)程(Coroutines,可以幫助編寫異步代碼),Java則沒(méi)有。
  • Kotlin提供了擴(kuò)展功能。
  • Kotlin內(nèi)置了高階函數(shù)(Higher-order functions)和Lambda,因此開(kāi)發(fā)者不必去處理Retrolambdas插件。在Java中,您將必須通過(guò)可調(diào)用函數(shù),來(lái)實(shí)現(xiàn)高階函數(shù)。同時(shí),Java在其第8版本中引入了Lambda。
  • Kotlin為委派提供了原生支持,并具有內(nèi)聯(lián)函數(shù)(inline functions)。
  • Java具有非私有字段(non-private fields)和NullPointerExceptions,Kotlin則不然。
  • Kotlin沒(méi)有像Java那樣的靜態(tài)成員,但是它提供了替代對(duì)象。
  • Kotlin具有null safe特性。
  • Kotlin具有smart casts,Java則沒(méi)有。

總體而言,Kotlin雖然不及Java功能豐富,但是它在開(kāi)發(fā)Android應(yīng)用性能方面比較占優(yōu)。

穩(wěn)定性

由于相對(duì)較新,因此Kotlin沒(méi)有長(zhǎng)期支持的版本。而Java有著Java 8和Java 11之類的長(zhǎng)期支持版本。這就意味著,如果這些版本出現(xiàn)了問(wèn)題,其原始開(kāi)發(fā)者將會(huì)使用補(bǔ)丁程序,對(duì)其進(jìn)行修復(fù)。

可見(jiàn),Java在穩(wěn)定性上勝出。當(dāng)然,Kotlin并不能因此被稱為不穩(wěn)定的編程語(yǔ)言。

文檔資料

Oracle提供了充足的Java官方文檔,可供您學(xué)習(xí)與研究。此外,由于有著長(zhǎng)時(shí)間的積累,您可以很容易地找到Java的相關(guān)教程、書籍和指南。

作為相對(duì)年輕的語(yǔ)言,Kotlin當(dāng)然也有著不錯(cuò)的官方文檔。不過(guò),您需要通過(guò)深挖,才能找到更多的資源。

社區(qū)

作為一種古老的語(yǔ)言,Java比Kotlin擁有更廣泛的開(kāi)發(fā)者社區(qū)。不過(guò)有調(diào)查表明(https://insights.stackoverflow.com/survey/2020#top-paying-technologies),業(yè)界有62.9%的開(kāi)發(fā)者喜歡Kotlin,而只有44.1%的開(kāi)發(fā)者表示他們喜歡Java。

因此,您可以放心地使用這兩種語(yǔ)言。如果碰到任何與語(yǔ)言有關(guān)的問(wèn)題,您都可以從各個(gè)的社區(qū),快速地獲得在線支持與解決方案。

易于學(xué)習(xí)

由于Kotlin比Java更需要編程基礎(chǔ),因此Java更易于學(xué)習(xí)和實(shí)現(xiàn)。當(dāng)然,如果您更善于抽象思想,那么學(xué)習(xí)Kotlin就不是什么問(wèn)題了。

編譯速度

測(cè)試表明:在使用Gradle(譯者注:是一個(gè)基于Apache Ant和Apache Maven概念的,項(xiàng)目自動(dòng)化構(gòu)建開(kāi)源工具)守護(hù)程序進(jìn)行純凈(clean)構(gòu)建時(shí),Java的編譯速度比Kotlin快17%;而隨著Gradle守護(hù)進(jìn)程的持續(xù)運(yùn)行,Java最終的編譯速度比Kotlin快13%。

當(dāng)然,純凈構(gòu)建在真實(shí)編碼實(shí)踐中極其少見(jiàn),大多數(shù)開(kāi)發(fā)人員都會(huì)用到增量(incremental)構(gòu)建。下面是在對(duì)Gradle守護(hù)程序進(jìn)行了兩至三次持續(xù)運(yùn)行后,不同類型的增量構(gòu)建在編譯速度上的比較結(jié)果:

  • 不作任何更改 - Java(4.6秒),Kotlin(4.5秒)。
  • 更改某個(gè)未被其他用戶使用的文件 - Java(7秒),Kotlin(6.1秒)。
  • 更改項(xiàng)目中由其他文件導(dǎo)入的文件 - Java(7.1秒),Kotlin(6秒)。

由上述結(jié)果可知,Java的純凈構(gòu)建速度更快;而Kotlin在增量構(gòu)建時(shí)更快。

小結(jié)

綜合上述比較,我們不難看出:對(duì)于資深Java程序員而言,從自己熟悉的語(yǔ)言切換到另一種新的語(yǔ)言,其意義不大。而對(duì)于初學(xué)者而言,Kotlin的學(xué)習(xí)曲線則更為陡峭。當(dāng)然,Kotlin的如下兩個(gè)主要優(yōu)勢(shì),可能會(huì)成為企業(yè)在項(xiàng)目中使用它的驅(qū)動(dòng)原因:

  • Kotlin能夠大幅減少應(yīng)用開(kāi)發(fā)的用時(shí)。
  • Kotlin可以減少應(yīng)用崩潰的可能性。

基于Kotlin的上述優(yōu)勢(shì),如果企業(yè)需要在Android開(kāi)發(fā)領(lǐng)域保持競(jìng)爭(zhēng)優(yōu)勢(shì)的話,就會(huì)趨向選擇Kotlin,而不是Java。那么企業(yè)內(nèi)部的開(kāi)發(fā)人員也就會(huì)順應(yīng)此趨勢(shì),開(kāi)始學(xué)習(xí)Kotlin,這種面向未來(lái)的語(yǔ)言。

原文標(biāo)題:Kotlin vs. Java in Android App Development,作者: Anand Mahajan

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:華軒 來(lái)源: 51CTO
相關(guān)推薦

2017-05-22 11:09:53

KotlinAndroid

2010-06-13 09:31:45

WindowsLinux服務(wù)器操作系統(tǒng)

2020-11-05 12:07:12

JWTJWS前端

2024-08-05 01:22:16

2024-06-04 10:49:05

Rust插件開(kāi)發(fā)工具

2022-09-13 07:31:50

工具代碼Lombok

2014-12-05 09:49:18

2023-11-24 08:17:38

金額類型存儲(chǔ)

2010-06-22 16:31:19

IT技術(shù)周刊

2015-05-04 13:21:56

DartAndroid

2024-12-17 08:30:01

2024-07-10 10:54:44

2023-05-18 08:38:13

Java鎖機(jī)制

2023-01-18 08:25:23

數(shù)據(jù)庫(kù)存儲(chǔ)類型

2016-10-14 14:16:28

Spring BootJava應(yīng)用

2018-05-25 16:32:45

Spring BootJava開(kāi)發(fā)

2018-05-30 15:22:03

KotlinAndroid開(kāi)發(fā)

2018-10-09 15:26:19

JavaPython語(yǔ)言

2018-09-26 14:17:00

編程語(yǔ)言JavaPython

2020-11-18 09:48:09

Synchronize多線程Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)