99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Kotlin編程語言現(xiàn)在是Android應(yīng)用程序開發(fā)人員的首選語言

DPVg_AI_era ? 來源:lq ? 2019-05-10 08:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在昨天凌晨的 Google I/O 大會(huì)上,Google 官方正式宣布,Kotlin 編程語言現(xiàn)在是 Android 應(yīng)用程序開發(fā)人員的首選語言。Java 占據(jù) Android 開發(fā)絕對(duì)統(tǒng)治的時(shí)代一去不復(fù)返了。

Kotlin,東宮太子

谷歌昨天宣布,Kotlin 編程語言現(xiàn)在是 Android 應(yīng)用程序開發(fā)人員的首選語言。

谷歌在今天的聲明中寫道:“Android 的開發(fā)將越來越以 Kotlin 為先。” 許多新的 Jetpack API 和特性將首先在 Kotlin 中提供。如果你要開始一個(gè)新項(xiàng)目,你應(yīng)該用 Kotlin 來寫;用 Kotlin 編寫通常意味著更少的代碼 —— 更少用于類型、測試和維護(hù)方面的代碼?!?/p>

就在兩年前的 2017 年 I/O 大會(huì)上,谷歌宣布在其 Android Studio IDE 中支持 Kotlin??紤]到 Java 長期以來一直是 Android 應(yīng)用程序開發(fā)的首選語言,這有點(diǎn)令人驚訝。在過去的兩年里,Kotlin 的人氣只增不減。谷歌說,超過 50% 的專業(yè) Android 開發(fā)人員現(xiàn)在使用該語言開發(fā)他們的應(yīng)用程序,在最新的 Stack Overflow 開發(fā)人員調(diào)查中,它被列為第四大最受歡迎的編程語言。

Android 的首席倡導(dǎo)者切特?哈斯 (Chet Haase) 表示:“我們宣布,我們正在采取的下一個(gè)重大舉措是,我們將以 Kotlin 為先。”

哈斯說:“我們知道,不是每個(gè)人現(xiàn)在都在用 Kotlin,但是我們相信,你會(huì)需要它的?!?/p>

“你可能有充分的理由繼續(xù)使用 C++ 和 Java 編程語言,這完全沒問題。這些語言不會(huì)消失。”

Kotlin,Android 世界的 Swift?

早在 2015 年,Kotlin 就有“Android 世界的 Swift”的稱號(hào)。

Kotlin 是一門與 Swift 類似的靜態(tài)類型 JVM 語言,由 JetBrains 設(shè)計(jì)開發(fā)并開源。與 Java 相比,Kotlin 的語法更簡潔、更具表達(dá)性,而且提供了更多的特性,比如,高階函數(shù)、操作符重載、字符串模板。它與 Java 高度可互操作,可以同時(shí)用在一個(gè)項(xiàng)目中。

按照 JetBrains 的說法,根據(jù)他們多年的 Java 平臺(tái)開發(fā)經(jīng)驗(yàn),他們認(rèn)為 Java 編程語言有一定的局限性和問題,而且由于需要向后兼容,它們不可能或很難得到解決。

因此,他們創(chuàng)建了 Kotlin 項(xiàng)目,主要目標(biāo)是:

創(chuàng)建一種兼容 Java的語言

編譯速度至少同 Java 一樣快

比 Java 更安全

比 Java 更簡潔

比最成熟的競爭者Scala 還簡單

若在當(dāng)時(shí)看來,Android 世界的 Swift 稱號(hào)似乎底氣不足,更像是一種美好的愿望。那么在 2017、2019 兩屆的 Google I/O 以后,這個(gè)說法可以站住腳了。

Kotlin 真比 Java 強(qiáng)?

許多新語言的出現(xiàn)似乎都是源于對(duì)某種其它語言的厭倦,Kotlin 看上去也是如此。但在 JetBrains 看來,Kotlin 項(xiàng)目的原始動(dòng)機(jī)就是為了提升生產(chǎn)力。JetBrains 開發(fā)者支持組組長 Hadi Hariri 在接受 InfoQ 采訪時(shí)表示:

” 盡管當(dāng)時(shí)我們已經(jīng)開發(fā)了對(duì)幾種基于 JVM 的編程語言的支持,我們還是基本都在 Java 環(huán)境下寫基于 IntelliJ 的 API。IntelliJ 開發(fā)系統(tǒng)是基于 Groovy 和 Gant 的,Groovy 也用于測試,RubyMine 中還有一些 JRuby 代碼,情況就是如此。我們希望轉(zhuǎn)向更具表現(xiàn)力的語言從而提高生產(chǎn)力。同時(shí),我們不能接受在 Java 互操作性或編譯速度方面的妥協(xié)?!?/p>

Kotlin 與 Java 總是在主觀比較

“Kotlin 比 Java 好”,“Kotlin 可讀性比 Java 強(qiáng)”,“Kotlin 開發(fā)速度比 Java 快”,類似這樣的陳述缺少相關(guān)準(zhǔn)確數(shù)據(jù)的支持,所以都?xì)w為主觀看法一類。

主觀看法是個(gè)體開發(fā)人員在對(duì)與 Kotlin 或 Java 相關(guān)的主題作出一個(gè)或多個(gè)主觀判斷時(shí)形成。

開發(fā)人員的主觀判斷存在如下問題:

沒有與主觀判斷相關(guān)聯(lián)的量化指標(biāo)。

主觀判斷存在很大的偏見。

主觀判斷的偏見在開發(fā)人員之間存在很大的差異。

由于沒有與主觀判斷相關(guān)聯(lián)的量化指標(biāo),建立在這些判斷基礎(chǔ)上的觀點(diǎn)只是反映出了開發(fā)人員之前就有的偏見。不同的開發(fā)人員可能有著截然不同的偏見,因此,有開發(fā)人員認(rèn)為 Kotlin 是不錯(cuò)(或糟糕)的 Java 替代者并不意味著其他開發(fā)人員也這么認(rèn)為。

而且,由于沒有客觀指標(biāo),主觀分歧就無法客觀地消除,這經(jīng)常會(huì)導(dǎo)致 “口水戰(zhàn)”。

相較于 Java,Kotlin 的確在一些方面有較大優(yōu)勢:效率高、易維護(hù)、可靠、簡單易學(xué)。在一些特定場景下,許多 Java 開發(fā)者因?yàn)槟承┓矫娴膯栴}選擇了切換到 Kotlin:比如受夠了 Java NullPointerException 的人都喜歡 Kotlin 的 Null 安全特性;擴(kuò)展函數(shù)被大量使用;除了擴(kuò)展 Java 類,人們也常常將 Java 代碼遷移到 Kotlin。

根據(jù)英國軟件公司 Pusher 的調(diào)查數(shù)據(jù)顯示,在樣本數(shù) 2744 人的調(diào)查中,超過 87% 的受調(diào)者已經(jīng)完成了遷移。他們有的使用了遷移向?qū)?,有的直接手?dòng)修改代碼。超過四分之一的受調(diào)者遷移到 Kotlin 后又回到了 Java。有技術(shù)方面的原因,也有組織方面的原因。其中使用了反射或代碼生成的工具是被提及最多的因素。

“Kotlin 的枚舉不能包含常量。在自定義注解時(shí)(比如 @IntDef),為了保持接口的整潔,需要將值保存在枚舉中?!?/p>

“我們正在使用 Realm,但它不能與數(shù)據(jù)類一起使用?!?/p>

“我們的 Java 代碼中使用了 Retrolambda,因?yàn)轭愋腿笔?,很難轉(zhuǎn)到 Kotlin?!?/p>

“另一個(gè)團(tuán)隊(duì)不喜歡 Kotlin,我們也預(yù)料不到會(huì)這樣。”

“這不是我們決定的,我們是按照公司的規(guī)則來的?!?/p>

Java 依舊是編程語言排行榜上的第一名。但Java 是最好的語言么?不是,因?yàn)樵诿總€(gè)領(lǐng)域都有更合適的編程語言。

那么,Java 語言到底有什么優(yōu)勢可以占據(jù)排行榜第一的位置呢?

其一,語法比較簡單,學(xué)過計(jì)算機(jī)編程的開發(fā)者都能快速上手。

其二,在若干了領(lǐng)域都有很強(qiáng)的競爭力,比如服務(wù)端編程,高性能網(wǎng)絡(luò)程序,企業(yè)軟件事務(wù)處理,分布式計(jì)算,Android 移動(dòng)終端應(yīng)用開發(fā)等等。

最重要的一點(diǎn)是符合工程學(xué)的需求,成為企業(yè)軟件公司的首選,也受到互聯(lián)網(wǎng)公司的青睞。

綜合而言,Java 語言全能方面是最好的。但同樣可以看到,Android 社區(qū)擁抱 Kotlin 的速度越來越快,也許有一天,在 Android 世界里,我們會(huì)看到 Kotlin 對(duì) Java 的超越。

為什么谷歌會(huì)支持 Kotlin?

免責(zé)聲明:以下內(nèi)容純屬基于既有事實(shí)合理推測,毫無任何實(shí)錘。

還記得谷歌與 Oracle 曠日持久的 Java 侵權(quán)案嗎?這個(gè)持續(xù)時(shí)間長達(dá) 8、9 年的紛爭目前以谷歌敗訴為最新結(jié)局,其需要向 Oracle 賠償 88 億美元。(編者注:在過去幾年時(shí)間里,幾次裁決分別判兩家公司勝訴或敗訴。今年 1 月份,谷歌不服判決上訴美國最高法院做最終裁決。)

事件的起因是在 2010 年,作為 Java 擁有者的 Oracle 認(rèn)為,谷歌在 Android 系統(tǒng)上無償使用了 37 個(gè) Java APIs,這侵犯了他們的專利,而在 Android 中還有 9 行代碼抄襲了 Java,這侵犯了他們的版權(quán)。

那 9 行代碼造成抄襲的緣由據(jù)說是因?yàn)楫?dāng)時(shí)谷歌的一位工程師在為 Android 項(xiàng)目工作的同時(shí),又為 Sun 公司的 OpenJDK 效力,后來,該工程師直接從 OpenJDK 中復(fù)制了 9 行代碼到 Android 中,由于 Google 沒有得到 Sun 公司的授權(quán),所以 Oracle 收購 Sun 之后,Java 易主,這就相當(dāng)于侵犯了 Oracle 的版權(quán)。

而對(duì)于那 37 個(gè) Java APIs,雙方各執(zhí)己見,谷歌認(rèn)為 API 不應(yīng)受版權(quán)保護(hù),而 Oracle 則認(rèn)為谷歌對(duì)其的使用具有很強(qiáng)的商業(yè)性,再加上用 Java 寫的 Android 代碼無法在 JVM 上運(yùn)行,這對(duì) Java 語言是一種分裂,同時(shí) Oracle 認(rèn)為,Android 通過不當(dāng)使用 Java API 擠占了 Java ME 可能的市場,這是它巨額索賠的根基。

2016 年初,Google 發(fā)言人表示,Android N(7.0) 不再沿用現(xiàn)有的 Java APIs 內(nèi)容,而是遷移至基于 OpenJDK 的方法,為開發(fā)者創(chuàng)建一個(gè)通用代碼庫。雖然沒法規(guī)避 Java APIs 官司,但至少可以減少潛在的可能糾紛。

到了 2017 年的 Google I/O 大會(huì),Google 宣布 Kotlin 成為 Android 開發(fā)的一級(jí)語言,可以說對(duì) Kotlin 寄予了厚望。此后,Kotlin 也被開發(fā)者視為 Java 的替代品。

在之后的一年時(shí)間里,Google 可以說把 Kotlin 當(dāng)親兒子看待,為什么這么說呢?讓我們來梳理這一年 Google 為 Kotlin 做了什么:

2017 年 11 月,Android Studio 3.0 正式開放下載,此版本的 Android Studio 將 Kotlin 語言支持集成到 IDE 中,在此版本上,代碼自動(dòng)完成和語法突出顯示都可以在此版本上平穩(wěn)運(yùn)行,今年 4 月推出的 Android Studio 3.1 為 Kotlin 代碼提供了更好的 Lint 支持,并通過為 Android Emulator 添加 Quick Boot 功能加快了測試速度。

2018 年 2 月,Google 推出預(yù)覽版本的 Android KTX,Android KTX 是一組擴(kuò)展程序,它在 Android 框架和支持庫上提供了一個(gè)良好的 API 層,使 Kotlin 代碼更加簡潔。

在 Google I/O 2018 上,Google 發(fā)布了 Android Jetpack,它是下一代的 Android 組件,它將支持庫向后兼容和立即更新的優(yōu)點(diǎn)融合到更多組件中,提高開發(fā)速率和質(zhì)量,不僅如此,Android Jetpack 將全面兼容 Kotlin,而且它還能利用 Android KTX 使得 Kotlin 代碼更加簡潔。

這些都是 Google 逐漸向 Kotlin 靠攏的證據(jù),雖然還不至于讓 Kotlin 完全取代 Java,但不難看出 Google 的 “偏心”。

事實(shí)上,Kotlin 自己也非常爭氣:2017 年 11 月,在第一屆 Kotlin 專題大會(huì) KotlinConf 上,Kotlin 首席設(shè)計(jì)師 Andrey Breslav 宣布 Kotlin 將支持 iOS 開發(fā)和 Web 開發(fā),這意味著 Kotlin 向全平臺(tái)開發(fā)邁出了重要的一步。

Kotlin 目前正處于發(fā)展的初始階段,還有很多成長的空間。Google 現(xiàn)在是把它當(dāng)成 Android 黃昏時(shí)期的救命稻草,它能與 Java 100% 互通,但它存在的目的并不是為了取代 Java,只是為了讓開發(fā)者有多種選擇。雖說編程語言只是軟件實(shí)現(xiàn)的一種工具,開發(fā)者無論選擇哪種語言都沒有絕對(duì)的對(duì)與錯(cuò)。但在互聯(lián)網(wǎng)時(shí)代,開發(fā)者應(yīng)該懂得審時(shí)度勢,擁抱變化,才能走得更遠(yuǎn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 谷歌
    +關(guān)注

    關(guān)注

    27

    文章

    6231

    瀏覽量

    108188
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1956

    瀏覽量

    36692
  • kotlin
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    4361

原文標(biāo)題:Java失寵,谷歌宣布Kotlin現(xiàn)在是Android開發(fā)的首選語言

文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    NanoEdge AI Studio 面向STM32開發(fā)人員機(jī)器學(xué)習(xí)(ML)技術(shù)

    NanoEdge? AI Studio*(NanoEdgeAIStudio)是一種新型機(jī)器學(xué)習(xí)(ML)技術(shù),可以讓終端用戶輕松享有真正的創(chuàng)新成果。只需幾步,開發(fā)人員便可基于最少量的數(shù)據(jù)為其項(xiàng)目創(chuàng)建
    的頭像 發(fā)表于 04-22 11:09 ?596次閱讀
    NanoEdge AI Studio 面向STM32<b class='flag-5'>開發(fā)人員</b>機(jī)器學(xué)習(xí)(ML)技術(shù)

    AWTK-WEB 快速入門(5) - C 語言 WebSocket 應(yīng)用程序

    導(dǎo)讀WebSocket可以實(shí)現(xiàn)雙向通信,適合實(shí)時(shí)通信場景。本文介紹一下使用C語言開發(fā)AWTK-WEB應(yīng)用程序,并用WebSocket與服務(wù)器通訊。用AWTKDesigner新建一個(gè)應(yīng)用程序
    的頭像 發(fā)表于 02-19 11:49 ?458次閱讀
    AWTK-WEB 快速入門(5) - C <b class='flag-5'>語言</b> WebSocket <b class='flag-5'>應(yīng)用程序</b>

    gitee 支持的編程語言有哪些

    Gitee(碼云)是一個(gè)基于 Git 的代碼托管和研發(fā)協(xié)作平臺(tái),類似于 GitHub 和 GitLab。它支持多種編程語言,允許開發(fā)者托管和管理代碼,進(jìn)行版本控制,以及協(xié)作開發(fā)。以下是
    的頭像 發(fā)表于 01-06 09:50 ?677次閱讀

    android手機(jī)上emulate應(yīng)用程序的方法

    Android手機(jī)上模擬(emulate)應(yīng)用程序的方法通常涉及到使用Android模擬器(Emulator)或類似的工具來模擬Android環(huán)境,以便在沒有實(shí)際物理設(shè)備的情況下運(yùn)行
    的頭像 發(fā)表于 12-05 15:33 ?1227次閱讀

    MSPDebugStack開發(fā)人員指南

    電子發(fā)燒友網(wǎng)站提供《MSPDebugStack開發(fā)人員指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-05 14:49 ?0次下載
    MSPDebugStack<b class='flag-5'>開發(fā)人員</b>指南

    語言模型開發(fā)語言是什么

    在人工智能領(lǐng)域,大語言模型(Large Language Models, LLMs)背后,離不開高效的開發(fā)語言和工具的支持。下面,AI部落小編為您介紹大語言模型
    的頭像 發(fā)表于 12-04 11:44 ?704次閱讀

    AWTK-WEB 快速入門(1) - C 語言應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹一下如何使用C語言開發(fā)AWTK-WEB應(yīng)用
    的頭像 發(fā)表于 11-27 11:46 ?726次閱讀
    AWTK-WEB 快速入門(1) - C <b class='flag-5'>語言</b><b class='flag-5'>應(yīng)用程序</b>

    如何選擇適合自己的編程語言

    在當(dāng)今這個(gè)技術(shù)日新月異的時(shí)代,編程語言的選擇對(duì)于軟件開發(fā)者來說至關(guān)重要。不同的編程語言有著不同的優(yōu)勢和適用場景,因此,選擇合適的
    的頭像 發(fā)表于 11-15 09:37 ?1926次閱讀

    編程語言的誤區(qū)與常見問題

    誤區(qū)一:編程語言的選擇 常見問題: 初學(xué)者在選擇編程語言時(shí),往往會(huì)被市場上的熱門語言所吸引,而忽視了自己的實(shí)際需求和興趣。 一些
    的頭像 發(fā)表于 11-15 09:35 ?760次閱讀

    NPU支持的編程語言有哪些

    與NPU一起使用: C/C++ : C和C++是性能要求較高的應(yīng)用的首選語言,尤其是在需要直接與硬件交互的場景中。許多NPU硬件都提供了C/C++接口,以便開發(fā)者能夠充分利用硬件性能。 Python : Python是深度學(xué)習(xí)和
    的頭像 發(fā)表于 11-15 09:21 ?1947次閱讀

    串口屏支持哪些編程語言開發(fā)環(huán)境?

    串口屏作為一種常用的顯示和交互設(shè)備,支持多種編程語言開發(fā)環(huán)境。以下是對(duì)串口屏支持的編程語言開發(fā)
    的頭像 發(fā)表于 11-13 11:45 ?754次閱讀
    串口屏支持哪些<b class='flag-5'>編程</b><b class='flag-5'>語言</b>和<b class='flag-5'>開發(fā)</b>環(huán)境?

    MCU編程語言開發(fā)環(huán)境介紹

    MCU編程語言 MCU編程語言是用于編寫MCU程序的高級(jí)編程
    的頭像 發(fā)表于 11-01 11:51 ?2199次閱讀

    C語言與其他編程語言的比較

    C語言作為一種歷史悠久的編程語言,自其誕生以來,一直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級(jí)編程
    的頭像 發(fā)表于 10-29 17:30 ?1090次閱讀

    C2000 ePWM開發(fā)人員指南

    電子發(fā)燒友網(wǎng)站提供《C2000 ePWM開發(fā)人員指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-07 09:45 ?0次下載
    C2000 ePWM<b class='flag-5'>開發(fā)人員</b>指南

    plc編程st語言怎么編

    控制。下面是一個(gè)基本的ST語言編程指南,包括如何開始編寫一個(gè)簡單的程序。 1. 基本結(jié)構(gòu) ST程序通常包含變量聲明、函數(shù)(或過程)定義和主程序
    的頭像 發(fā)表于 08-25 10:05 ?2833次閱讀