Kotlin 能取代 Java 嗎?

2021-01-12 CSDN

作者 | Paresh Sagar

譯者 | 安翔

責編 | 伍杏玲

當談到 Android 應用程式開發時,哪種程式語言會首先出現在你的腦海呢?我猜你會立即想到 Java,畢竟大多數的 Android 應用程式都是用 Java開發的。

但自從在兩年前的谷歌 I/O 大會推出 Kotlin 以來,如今的 Kotlin 也在 Android 應用程式開發領域中佔據一席之地。

Kotlin 是什麼呢?它的前景到底如何呢?

Kotlin

Kotlin 是靜態類型的開源程式語言,可以有效地運行在 Java虛擬機(JVM)上。Kotlin 由 JetBrains 開發,並得到谷歌的強力支持。

在最近的 Jexenter 調查中,Kotlin 在最熱門的技術發展趨勢榜單上高居第六位。App brain 最新的統計數據顯示,Kotlin 語言在 2018 年的頂級應用程式中佔據了25.30%的市場份額,佔新應用程式安裝量的40.76%。 如今Pivotal、Atlassian、Pinterest、Evernote 和 Uber 等商業巨頭都在使用 Kotlin進行 Android 應用程式開發。

Kotlin 的優點

效率極高

Kotlin 語法簡潔直觀,編寫和部署程序所需的代碼量更少,時間也更短,大大提高了開發團隊的開發效率。因此,開發者可以快速開發出 Android 應用。

能夠調用 Java 代碼

該功能不僅讓開發者受益,對於擁有大量 Java 代碼庫的公司來說也是利好。

易於維護

Kotlin 得到多種 IDE 的有力支撐,比如 Android studio 等,這方便了開發者對代碼的維護。

可靠

最新版的 Kotlin 兼容之前所有老版本,這解決了 Android 開發人員最大的痛點:需要處理多個版本。

簡單易學

由於它不需要依賴太多行動應用程式開發的背景知識,開發者可以更輕鬆地上手學習 Kotlin。

Android Studio 支持

Android Studio 提供多種擴展工具的有力支持,開發人員可以同時使用這兩種語言。

Kotlin 的缺點

編譯速度緩慢

很多開發者都提到 Kotlin 代碼編譯速度的飄忽不定,有時候它編譯得很快,有時候又很慢。

社區支持力度有限

Kotlin 開發者社區規模比較小,因此其提供的學習資源有限,開發者將面臨很多疑問無法解答的局面。

開發人員稀缺

Kotlin 的開發人員數量比較少,因此用 Kotlin 開發的熱門 Android 應用數量有限。

Java

Java 被認為是開發應用程式最好的程式語言之一,2018年12月的 TIOBE 指數顯示 Java 在程式語言排行榜中高居第一。

Java 相比 Kotlin 的優勢

可移植性

Java 幾乎可以在任何系統上運行,因此Java 編寫出大部分 Android 應用程式。

龐大的社區

藉助 GitHub 和 Stack Overflow 等大型技術社區,開發人員差不多可以從中獲得所有關於 Java 代碼問題的解決方案。

跨平臺

Java 不僅限於 Android 應用程式開發,也支持跨平臺應用程式開發。

豐富的資源

Android 開發者可以藉助 Java 豐富的庫和 SDK 來提升自己的開發效率。

Java 的短板

運行速度緩慢

與其他語言相比,Java 運行需要更多的內存和速度要慢得多。

笨重

和其他語言相比,如果要實現相同的功能,Java 所需的代碼量更多。這不僅耗費更多的開發時間,也更容易出現Bug。

Java 與 Kotlin 對比

Java

Kotlin

靜態成員

字符串模板

非類的原始類型

單例

非私有域

空安全

通配符類型

擴展函數

檢查異常

智能 Casts

毫無疑問,Java 仍然是 Android 編程的王者,但作為開發人員,你也需要了解最新的技術。

原文:https://dzone.com/articles/java-vs-kotlin-which-one-will-be-the-best-in-2019本文為 CSDN 翻譯,如需轉載,請註明來源出處。

【完】

相關焦點

  • 開發崗位這麼多,為什麼選Java?你學Java了嗎-開課吧
    學習沒有捷徑,希望大家都能少走一些彎路,學有所成!Java語言相關內容推薦:java工程師工資一般多少?java自學容易嗎?公司會要嗎-開課吧java難學嗎?Java零基礎自學能學會嗎-開課吧
  • java軟體工程師的這些要求你有嗎?
    如今java是IT界數一數二的語言,許多程式設計師都想要成為java軟體工程師,那大家知道企業對於java軟體工程師的技術要求有哪些嗎?java軟體工程師的技術要求一.java技術要求:1.具有良好的Java語言基礎,面向對象編程基礎2.熟悉Struts、Hibernate、Spring等主流技術框架3.熟悉XML解析、Excel導出、文件上傳、發送E-mail等常見業務的實現二.資料庫技術要求1.掌握、運用SQLServer
  • Java transient關鍵字使用小記
    示例code如下:import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream
  • Java程式設計師必備基礎:Java代碼是怎麼運行的?
    java源文件編譯為class字節碼 類加載器把字節碼加載到虛擬機的方法區。 因此,在運行Java程序之前,需要編譯器把代碼編譯成java虛擬機所能識別的指令程序,這就是Java字節碼,即class文件。 所以,Java代碼運行的第一步是:把Java原始碼編譯成.class 字節碼文件。
  • 我的世界java版和基巖版不為人知的秘密
    我的世界可以分為三個版本:java版、基巖版、教育版。而某種意義上來說,教育版屬於基巖版的一種,所以暫且討論Java版和基巖版。先說java版,它使用java語言進行開發,主要運行的平臺是電腦,例如windows、macos,java版mc需要依賴啟動器,如mojiang的官方啟動器,或者大家熟知的第三方啟動器hmcl那電腦版等於java版嗎?No!基巖版也可以在電腦上運行,例如在微軟商店購買的 Minecraft for Windows 10就是基巖版的Mc。
  • 跟我學java編程—認識java的整數類型
    示例2:int類型的溢出在D盤Java目錄下,新建「OverFlow.java」文件。用記事本打開「OverFlow.java」文件,輸入以下代碼:編譯「OverFlow.java」文件,在命令行窗口輸入「javac OverFlow.java」並執行命令,編譯器顯示如下信息:編譯器給出過大的整數錯誤信息,num的數值明顯超出的int所能表示的最大值。
  • 跟我學java編程—認識java語言的字符類型
    用記事本打開「CharSample.java」文件,輸入以下代碼:編譯「CharSample.java」文件,在命令行窗口輸入「javac CharSample.java」並執行命令,編譯通過後,在命令行窗口輸入「java CharSample」運行Java程序,命令行窗口顯示如下信息:
  • Java反射機制深入詳解
    (來自Sun)JavaBean 是 reflection 的實際應用之一,它能讓一些工具可視化的操作軟體組件。這些工具通過 reflection 動態的載入並取得 Java 組件(類) 的屬性。反射是從1.2就有的,後面的三大框架都會用到反射機制,涉及到類」Class」,無法直接new CLass(),其對象是內存裡的一份字節碼.
  • Java失寵,谷歌宣布Kotlin現在是Android開發的首選語言
    其一,語法比較簡單,學過計算機編程的開發者都能快速上手。其二,在若干了領域都有很強的競爭力,比如服務端編程,高性能網絡程序,企業軟體事務處理,分布式計算,Android 移動終端應用開發等等。最重要的一點是符合工程學的需求,成為企業軟體公司的首選,也受到網際網路公司的青睞。綜合而言,Java 語言全能方面是最好的。
  • Java基礎教程:java反射機制教程
    這時候java語言在設計的時候為我們提供了一個機制,就是反射機制,他能夠很方便的去解決我們的問題。 二、深入分析java反射機制 1、獲取Class類 在java中萬事萬物皆對象,Useruser=newUser()一行代碼我們知道了user是User類的實例對象,通過Studentstu=newStudent()我們知道了
  • 如何使用JAVA反射/JAVA反射實例
    內容輸出,調用toString() }};3、如何使用反射包package com.test.instancedemo.instancedemo ;import java.lang.reflect.Constructor
  • JAVA專業術語面試100問
    10、String能被繼承嗎?為什麼?11、String和StringBuilder、StringBuffer的區別?(強烈推薦兩本書《java並發編程的藝術》、《深入理解Java虛擬機》)Synchronized和Volatile的區別:1、Volatile 僅能使用在變量級別;Synchronized則可以使用在變量、方法、和同步代碼塊等類級別的。
  • Android被指抄襲Java代碼引爭議
    (轉自谷奧)首先是第一組的7個抄襲的java文件(PolicyNodeImpl.java, AclEntryImpl.java, AclImpl.java, GroupImpl.java, OwnerImpl.java, PermissionImpl.java 和 PrincipalImpl.java)都屬於原始碼裡的測試分支。任何程式設計師都不會將測試代碼放到最終發布的產品裡。
  • JAVA系列-GC
    這樣能在一些場景中顯著提高性能,因為避免了在Java堆和Native堆中來回複製數據。https://www.cnblogs.com/cxxjohnson/p/8625713.htmlhttps://www.cnblogs.com/czwbig/p/11127159.htmlc. 7種垃圾回收器查看默認的垃圾回收器JVM參數:java
  • 通過「訪問修飾符」java想告訴我們什麼?
    在平時編寫代碼的時候我們一定會用到public、private這些「java訪問修飾符「,可是你知道java為什麼要設計這些「訪問修飾符」嗎?今天我們就一起來看看廢話少說,先看定義!01定義java有四個訪問修飾符public:被public修飾的成員可以被所有類訪問到protected:所修飾的成員會被位於同一包中所有類可以訪問到。
  • 跟我學java編程—Java邏輯運算符
    示例1:邏輯運算符在D盤Java目錄下,新建「LogicSample.java」文件。用記事本打開「LogicSample.java」文件,輸入以下代碼:代碼結構分析程序功能主要是演示邏輯運算符的用法。類似語句「bJudge = !
  • Java常見內存溢出異常分析
    at java.util.Arrays.copyof(Arrays.java:3181)   堆內存溢出的時候,虛擬機會拋出java.lang.OutOfMemoryError:java heap space,出現此種情況的時候,我們需要根據內存溢出的時候產生的dump文件來具體分析(需要增加-XX:+HeapDumpOnOutOfMemoryErrorjvm啟動參數)。
  • 機器人能取代你的工作嗎?用計算器算算
    機器人能取代你的工作嗎?現在你可以通過一個適當的算法來判斷。                    你有膽量測下自己工作被取代的可能性嗎?即使你認為自己的工作很安全,但不要小瞧了技術進步的力量。早在2004年,一些專家認為開車是一項複雜的任務,不可能實現自動化,然而6年後,谷歌就宣布其第一輛自動駕駛汽車的原型。餐廳服務員有94%的機會被機器人取代,儘管研究人員一開始也認為這是一個無法自動化的工作。
  • Java編程中基礎反射詳細解析
    類加載器負責加載所有的類,系統為所有加載到內存中的類生成一個java.lang.Class 的實例。反射Java反射就是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;並且能改變它的屬性。
  • 幾個不錯的java graphql 開發包
    使用nodejs 以及腳本語言開發graphql 特別快,但是java 也有幾個不錯的graphql 開發包 graphql-java