<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          為什么 Java 后端開(kāi)發(fā)沒(méi)有大規(guī)模采用 Kotlin?

          共 3855字,需瀏覽 8分鐘

           ·

          2021-05-19 23:58

          作者 | Ivan Sanchez
          譯者 | 王者
          策劃 | 萬(wàn)佳

          在使用了 Java 15 年后,我寫(xiě)了第一行 Kotlin 代碼,到現(xiàn)在已經(jīng)差不多 5 年了。我們的團(tuán)隊(duì)用 Utterlyidle 替代 Spring,用 Totallylazy 進(jìn)行函數(shù)式編程。我們是 IntelliJ 的忠實(shí)粉絲,并試著充分利用它提供的 Java 工具。

          那個(gè)時(shí)候,我們不只使用 Java。有一些團(tuán)隊(duì)對(duì) Scala 感興趣,并用它開(kāi)發(fā)了一些服務(wù)。但是,因?yàn)?Scala 與 Java 代碼庫(kù)協(xié)作的復(fù)雜性以及緩慢的構(gòu)建時(shí)間,對(duì)于我們大多數(shù)人來(lái)說(shuō),它并沒(méi)有太大吸引力。

          2017 年,谷歌宣布 Kotlin 成為 Android 的官方開(kāi)發(fā)語(yǔ)言,另一個(gè)與我們關(guān)系密切的團(tuán)隊(duì)開(kāi)始評(píng)估是否可以在他們的服務(wù)器端開(kāi)發(fā)中使用它。最后,我們大多數(shù)人都去嘗試了一下。

          我被 Kotlin 給代碼庫(kù)帶來(lái)的影響震撼到了。它給人的感覺(jué)是更高效、更安全,雖然開(kāi)發(fā)工具沒(méi)有 Java 那么成熟,但也足夠好了。

          從一門(mén)陳舊而冗長(zhǎng)的編程語(yǔ)言中解脫出來(lái),并探索哪些編碼風(fēng)格更適合 Kotlin 的特性,這本身就是一件非常有趣的事情。Kotlin 與 Java 出色的互操作性意味著我們可以增量地依賴(lài)現(xiàn)有的生態(tài)系統(tǒng)和過(guò)渡系統(tǒng),而不會(huì)對(duì)工作造成重大干擾。

          很快,由于對(duì) Kotlin 的興趣,我們一起開(kāi)發(fā)了 http4k,一個(gè)用于開(kāi)發(fā) Kotlin HTTP 應(yīng)用程序的工具包,并組織了 Kotlin 開(kāi)發(fā)研討會(huì),幫助其他團(tuán)隊(duì)嘗試使用 Kotlin。

          最后,我們看到其他各種項(xiàng)目也在服務(wù)器端使用 Kotlin,也看到了一些團(tuán)隊(duì)強(qiáng)烈不愿意采用 Kotlin 的原因。

          有意思的是,這種抗拒并不總是因?yàn)榫幊陶Z(yǔ)言本身。那么,為什么 Java 服務(wù)器端開(kāi)發(fā)社區(qū)沒(méi)有更多地采用 Kotlin 呢?

          以下是我和我的同事們看到的一些原因。

          1“我們沒(méi)有時(shí)間學(xué)習(xí)一門(mén)新語(yǔ)言”

          這也就是我們?cè)谲浖_(kāi)發(fā)項(xiàng)目當(dāng)中經(jīng)常看到的“忙著砍柴沒(méi)時(shí)間磨斧子”現(xiàn)象。這通常預(yù)示著更深層次問(wèn)題,比如不斷增加的技術(shù)債務(wù)和開(kāi)發(fā)效率問(wèn)題。

          健康的軟件項(xiàng)目需要開(kāi)發(fā)者花大量時(shí)間去學(xué)習(xí)。一個(gè)有能力的 Java 開(kāi)發(fā)者可以在數(shù)小時(shí)內(nèi)掌握 Kotlin 的基本知識(shí),并在數(shù)天內(nèi)提高開(kāi)發(fā)效率。

          如果采用新語(yǔ)言可以讓他們寫(xiě)的代碼更簡(jiǎn)單,遇到的問(wèn)題更少,那么投入就是值得的。

          2“Java 的每一個(gè)版本都在變得更好”

          這是真的,Java 正在變得更好,而且發(fā)布的速度也越來(lái)越快。但是,對(duì)于處理空值這么簡(jiǎn)單的事情,仍然遠(yuǎn)遠(yuǎn)落后于 Kotlin。

          也許 Java 社區(qū)已經(jīng)習(xí)慣了這種演化速度。盡管如此,Kotlin 還是提供了一種方法,可以在項(xiàng)目中用上很多 Kotlin 特性。

          3“作為 Java 開(kāi)發(fā)者,我們感到很自豪”

          這種想法是最要命的。如果一個(gè)程序員把他們的專(zhuān)業(yè)身份和一種編程語(yǔ)言聯(lián)系在一起,那就沒(méi)有辦法了。

          如果說(shuō) Java 開(kāi)發(fā)者不想賭上自己的事業(yè)踏入一門(mén)新語(yǔ)言的未知領(lǐng)域,我可以理解。或者他們可能想成為一個(gè)領(lǐng)域的專(zhuān)家,這也很合理。

          但是,我也并沒(méi)有看到哪個(gè) Java 開(kāi)發(fā)者因?yàn)槭褂?Kotlin 而“落后”了。相反,這表明他們一直在尋找適合自己的工具,這是一種積極的特質(zhì)。

          4“Kotlin 是一種被炒作的語(yǔ)言,它的未來(lái)是未知的”

          這是我們?cè)?2017 年經(jīng)常聽(tīng)到的反對(duì)采用 Kotlin 的說(shuō)法。在那一年,谷歌宣布將 Kotlin 作為 Android 的官方開(kāi)發(fā)語(yǔ)言,讓我們確信科技巨頭們對(duì)這門(mén)語(yǔ)言是感興趣的。

          現(xiàn)在,Spring 和 Micronaut 等流行框架似乎已經(jīng)接受了這門(mén)新語(yǔ)言,之前的反對(duì)聲就不那么經(jīng)常聽(tīng)到了。

          希望這能讓更多的服務(wù)器端開(kāi)發(fā)對(duì)這門(mén)語(yǔ)言有足夠的了解,并嘗試一下。

          5“我正在使用 Eclipse,不想切換到 IntelliJ”

          在 Eclipse 中使用 Kotlin 的體驗(yàn)與 JetBrains 的 IDEA 不太一樣。

          這是可以理解的,因?yàn)殇N(xiāo)售開(kāi)發(fā)工具是 JetBrains 的商業(yè)模式之一,而且這種情況短期內(nèi)不太可能改變。

          對(duì)于這些人來(lái)說(shuō),他們能夠期望的是 Kotlin 可以達(dá)到一個(gè)質(zhì)量臨界點(diǎn),證明 Eclipse 為它提供進(jìn)一步的支持是值得的。但在此之前,對(duì)于 Kotlin 開(kāi)發(fā)者來(lái)說(shuō),最好的開(kāi)發(fā)體驗(yàn)仍然是使用 JetBrains 產(chǎn)品。

          我認(rèn)為,IntelliJ 已經(jīng)是一個(gè)更好的 Java IDE 了,所以它也值得一試。

          6“Kotlin 開(kāi)發(fā)者太貴了,而且很難招到”

          這一點(diǎn)很難說(shuō),從招聘網(wǎng)站的數(shù)據(jù)來(lái)看,Kotlin 開(kāi)發(fā)者的薪資總體上略高一些。

          如果我們只考慮服務(wù)器端開(kāi)發(fā)者,就很難進(jìn)行比較。一般來(lái)說(shuō),Java 開(kāi)發(fā)者的薪資是最高的,但在 Kotlin 方面并沒(méi)有足夠的數(shù)據(jù)來(lái)進(jìn)行比較。

          有趣的是,在實(shí)際當(dāng)中,我們可以看到高級(jí) Java 開(kāi)發(fā)者經(jīng)常是率先采用 Kotlin 的人,這可能會(huì)給人留下 Kotlin 開(kāi)發(fā)者很“貴”的印象。

          在招聘方面,我們并沒(méi)有覺(jué)得很難招到 Kotlin 開(kāi)發(fā)者。我們很清楚,有些工作需要使用這門(mén)新語(yǔ)言,并允許開(kāi)發(fā)者在工作中邊學(xué)邊用。

          這似乎讓 Java 開(kāi)發(fā)者放下心來(lái),并吸引了那些熱衷于學(xué)習(xí)新事物的人。

          7“Kotlin 太復(fù)雜了”

          Kotlin 之所以成為 Scala 等語(yǔ)言的替代語(yǔ)言,其中一個(gè)原因是它在易用性和高級(jí)特性之間取得了良好的平衡,與 Java 具有更好的互操作性,所以更有可能被流行框架采用。

          在實(shí)際當(dāng)中,這種反對(duì)聲與團(tuán)隊(duì)的技能、風(fēng)格和習(xí)慣有關(guān)。

          初學(xué)者一般會(huì)像使用 Java 一樣使用 Kotlin,但隨著他們?cè)絹?lái)越熟悉這門(mén)語(yǔ)言,可能會(huì)深入使用一些特性 (例如擴(kuò)展和內(nèi)聯(lián)函數(shù)),從而導(dǎo)致代碼庫(kù)變得越來(lái)越難以理解。

          在團(tuán)隊(duì)完全掌握新語(yǔ)言之前,我們建議盡可能長(zhǎng)時(shí)間地使用普通的 Kotlin 特性。最后,團(tuán)隊(duì)中的大多數(shù)人都會(huì)在選擇很酷的語(yǔ)言特性和保持代碼庫(kù)易于理解之間找到平衡點(diǎn)。

          8“在一個(gè)代碼庫(kù)中使用兩種語(yǔ)言讓人感到困惑”

          這是在實(shí)際項(xiàng)目中沒(méi)有嘗試過(guò) Kotlin 的人經(jīng)常會(huì)有的擔(dān)憂(yōu)。

          在實(shí)際當(dāng)中,當(dāng)團(tuán)隊(duì)意識(shí)到新的 Kotlin 代碼需要與 Java 共存,那么在一個(gè)項(xiàng)目中使用兩種語(yǔ)言并不會(huì)給他們?cè)斐珊艽蟮耐纯唷?/p>

          這里有一個(gè)有用的規(guī)則:“如果一個(gè)變更涉及到兩種語(yǔ)言,首先將舊代碼轉(zhuǎn)換成 Kotlin”。

          這樣,團(tuán)隊(duì)就可以避免大爆炸式的重寫(xiě),并將需要添加新特性的地方進(jìn)行逐步遷移。

          如果需要保留一些 Java 代碼,那也沒(méi)關(guān)系。很有可能是因?yàn)檫@些代碼仍然有用,并且沒(méi)有進(jìn)行重構(gòu)的迫切需求。

          9“我們更喜歡 Java”

          在實(shí)際當(dāng)中,有一些場(chǎng)景不一定要使用 Kotlin,一切仍然能夠進(jìn)行得很順利,團(tuán)隊(duì)能夠以可接受的速度完成工作。

          然而,根據(jù)我們的經(jīng)驗(yàn),這是例外,而不是常態(tài)。通常情況下,這種對(duì)語(yǔ)言的抗拒源于缺少時(shí)間和興趣,而不是因?yàn)闆](méi)有可提升的空間。

          如果沒(méi)有在真正的項(xiàng)目中使用 Kotlin,是也很難體會(huì)到 Kotlin 的好處的。即使是作為一個(gè)實(shí)驗(yàn),也存在很多焦慮。

          對(duì)于這種情況,我們建議“在工作中邊學(xué)邊用”(以編碼道場(chǎng)、培訓(xùn)等形式),創(chuàng)造一個(gè)可以進(jìn)行這種實(shí)驗(yàn)的安全環(huán)境。

          這樣可以幫助團(tuán)隊(duì)評(píng)估他們對(duì) Java 的使用狀況,以及是否值得在 Kotlin 上投入。

          10“我看不出 Kotlin 會(huì)帶來(lái)什么好處”

          有時(shí)候,Java 開(kāi)發(fā)者意識(shí)不到語(yǔ)言方面存在的限制,或者是因?yàn)樗麄円呀?jīng)習(xí)慣了。有時(shí)候,他們會(huì)抗拒新語(yǔ)言,因?yàn)樾抡Z(yǔ)言會(huì)讓他們質(zhì)疑自己正在使用的語(yǔ)言。

          在不深入細(xì)節(jié)的情況下,我們可以說(shuō) Kotlin 的簡(jiǎn)潔性和安全性是它的主要優(yōu)點(diǎn)。然而,有些人聲稱(chēng)他們不認(rèn)為 Java 的冗長(zhǎng)有什么問(wèn)題,并且寫(xiě)出來(lái)的代碼也很安全。

          在真正去嘗試 Kotlin 之前,人們很容易將其忽略掉。而在真正面對(duì)它的時(shí)候,一些人會(huì)繼續(xù)尋找不嘗試使用它的理由。

          11一些想法

          采用一種新的編程語(yǔ)言,特別是在正在進(jìn)行的項(xiàng)目當(dāng)中,這對(duì)于大多數(shù)團(tuán)隊(duì)來(lái)說(shuō)都是一個(gè)挑戰(zhàn)。對(duì)變化的抗拒與特定的環(huán)境有關(guān),與項(xiàng)目需求和個(gè)人原因以及語(yǔ)言本身也有關(guān)。

          話(huà)雖如此,我仍然鼓勵(lì)更多從事 Java 服務(wù)器端的開(kāi)發(fā)者,如果有機(jī)會(huì)的話(huà),可以嘗試一下 Kotlin。

          原文鏈接:
          https://medium.com/google-developer-experts/why-are-java-server-side-developers-not-adopting-kotlin-8eb53e06ee99?fileGuid=nbh1KOt8ZzMdpX2m
          < END >


          推薦?? :1049天,100K!簡(jiǎn)單復(fù)盤(pán)!

          推薦?? :年薪 40W Java 開(kāi)發(fā)是什么水平?

          推薦?? :Github掘金計(jì)劃:Github上的一些優(yōu)質(zhì)項(xiàng)目搜羅

          我是 Guide哥,擁抱開(kāi)源,喜歡烹飪。Github 接近 10w 點(diǎn)贊的開(kāi)源項(xiàng)目 JavaGuide 的作者。未來(lái)幾年,希望持續(xù)完善 JavaGuide,爭(zhēng)取能夠幫助更多學(xué)習(xí) Java 的小伙伴!共勉!凎!點(diǎn)擊查看我的2020年工作匯報(bào)!
          歡迎準(zhǔn)備面試的朋友加入我的星球
          一個(gè)純 Java 面試交流圈子 !Ready!
          原創(chuàng)不易,歡迎點(diǎn)贊分享。咱們下期再會(huì)!
          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日日干日日摸 | 在线播放黄色国产 | 成人av影音先锋 成人电影无码三区 | 99成人 国产精品视频 | 91av-91av在线盒子 |