<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>

          Kotlin 為什么沒有被大規(guī)模用于后端開發(fā)?

          共 4060字,需瀏覽 9分鐘

           ·

          2021-04-19 15:55

          點(diǎn)擊“開發(fā)者技術(shù)前線”,選擇“星標(biāo)??”

          讓一部分開發(fā)者看到未來

          作者 | Ivan Sanchez
          譯者 | 王者
          策劃 | 萬佳
          由于自滿、職業(yè)上的自我保護(hù)和缺乏可見性等原因,在服務(wù)器端采用 Kotlin 的進(jìn)展速度非常慢。不過,在某些特定情況下,避免采用 Kotlin 是完全合理的。


          在使用了 Java 15 年后,我寫了第一行 Kotlin 代碼,到現(xiàn)在已經(jīng)差不多 5 年了。
          我們的團(tuán)隊(duì)用 Utterlyidle 替代 Spring,用 Totallylazy 進(jìn)行函數(shù)式編程。我們是 IntelliJ 的忠實(shí)粉絲,并試著充分利用它提供的 Java 工具。
          https://github.com/bodar/utterlyidle
          https://totallylazy.com/
          那個(gè)時(shí)候,我們不只使用 Java。有一些團(tuán)隊(duì)對(duì) Scala 感興趣,并用它開發(fā)了一些服務(wù)。但是,因?yàn)?Scala 與 Java 代碼庫協(xié)作的復(fù)雜性以及緩慢的構(gòu)建時(shí)間,對(duì)于我們大多數(shù)人來說,它并沒有太大吸引力。
          2017 年,谷歌宣布 Kotlin 成為 Android 的官方開發(fā)語言,另一個(gè)與我們關(guān)系密切的團(tuán)隊(duì)開始評(píng)估是否可以在他們的服務(wù)器端開發(fā)中使用它。最后,我們大多數(shù)人都去嘗試了一下。
          我被 Kotlin 給代碼庫帶來的影響震撼到了。它給人的感覺是更高效、更安全,雖然開發(fā)工具沒有 Java 那么成熟,但也足夠好了。
          從一門陳舊而冗長的編程語言中解脫出來,并探索哪些編碼風(fēng)格更適合 Kotlin 的特性,這本身就是一件非常有趣的事情。Kotlin 與 Java 出色的互操作性意味著我們可以增量地依賴現(xiàn)有的生態(tài)系統(tǒng)和過渡系統(tǒng),而不會(huì)對(duì)工作造成重大干擾。
          很快,由于對(duì) Kotlin 的興趣,我們一起開發(fā)了 http4k,一個(gè)用于開發(fā) Kotlin HTTP 應(yīng)用程序的工具包,并組織了 Kotlin 開發(fā)研討會(huì),幫助其他團(tuán)隊(duì)嘗試使用 Kotlin。
          最后,我們看到其他各種項(xiàng)目也在服務(wù)器端使用 Kotlin,也看到了一些團(tuán)隊(duì)強(qiáng)烈不愿意采用 Kotlin 的原因。
          有意思的是,這種抗拒并不總是因?yàn)榫幊陶Z言本身。那么,為什么 Java 服務(wù)器端開發(fā)社區(qū)沒有更多地采用 Kotlin 呢?
          以下是我和我的同事們看到的一些原因。


           “我們沒有時(shí)間學(xué)習(xí)一門新語言”


          這也就是我們?cè)谲浖_發(fā)項(xiàng)目當(dāng)中經(jīng)常看到的“忙著砍柴沒時(shí)間磨斧子”現(xiàn)象。這通常預(yù)示著更深層次問題,比如不斷增加的技術(shù)債務(wù)和開發(fā)效率問題。
          健康的軟件項(xiàng)目需要開發(fā)者花大量時(shí)間去學(xué)習(xí)。一個(gè)有能力的 Java 開發(fā)者可以在數(shù)小時(shí)內(nèi)掌握 Kotlin 的基本知識(shí),并在數(shù)天內(nèi)提高開發(fā)效率。
          如果采用新語言可以讓他們寫的代碼更簡單,遇到的問題更少,那么投入就是值得的。


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


          這是真的,Java 正在變得更好,而且發(fā)布的速度也越來越快。但是,對(duì)于處理空值這么簡單的事情,仍然遠(yuǎn)遠(yuǎn)落后于 Kotlin。
          也許 Java 社區(qū)已經(jīng)習(xí)慣了這種演化速度。盡管如此,Kotlin 還是提供了一種方法,可以在項(xiàng)目中用上很多 Kotlin 特性。


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


          這種想法是最要命的。如果一個(gè)程序員把他們的專業(yè)身份和一種編程語言聯(lián)系在一起,那就沒有辦法了。
          如果說 Java 開發(fā)者不想賭上自己的事業(yè)踏入一門新語言的未知領(lǐng)域,我可以理解。或者他們可能想成為一個(gè)領(lǐng)域的專家,這也很合理。
          但是,我也并沒有看到哪個(gè) Java 開發(fā)者因?yàn)槭褂?Kotlin 而“落后”了。相反,這表明他們一直在尋找適合自己的工具,這是一種積極的特質(zhì)。


           “Kotlin 是一種被炒作的語言,它的未來是未知的”


          這是我們?cè)?2017 年經(jīng)常聽到的反對(duì)采用 Kotlin 的說法。在那一年,谷歌宣布將 Kotlin 作為 Android 的官方開發(fā)語言,讓我們確信科技巨頭們對(duì)這門語言是感興趣的。
          現(xiàn)在,Spring 和 Micronaut 等流行框架似乎已經(jīng)接受了這門新語言,之前的反對(duì)聲就不那么經(jīng)常聽到了。
          希望這能讓更多的服務(wù)器端開發(fā)對(duì)這門語言有足夠的了解,并嘗試一下。


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


          在 Eclipse 中使用 Kotlin 的體驗(yàn)與 JetBrains 的 IDEA 不太一樣。
          這是可以理解的,因?yàn)殇N售開發(fā)工具是 JetBrains 的商業(yè)模式之一,而且這種情況短期內(nèi)不太可能改變。
          對(duì)于這些人來說,他們能夠期望的是 Kotlin 可以達(dá)到一個(gè)質(zhì)量臨界點(diǎn),證明 Eclipse 為它提供進(jìn)一步的支持是值得的。但在此之前,對(duì)于 Kotlin 開發(fā)者來說,最好的開發(fā)體驗(yàn)仍然是使用 JetBrains 產(chǎn)品。
          我認(rèn)為,IntelliJ 已經(jīng)是一個(gè)更好的 Java IDE 了,所以它也值得一試。


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


          這一點(diǎn)很難說,從招聘網(wǎng)站的數(shù)據(jù)來看,Kotlin 開發(fā)者的薪資總體上略高一些。
          如果我們只考慮服務(wù)器端開發(fā)者,就很難進(jìn)行比較。一般來說,Java 開發(fā)者的薪資是最高的,但在 Kotlin 方面并沒有足夠的數(shù)據(jù)來進(jìn)行比較。
          有趣的是,在實(shí)際當(dāng)中,我們可以看到高級(jí) Java 開發(fā)者經(jīng)常是率先采用 Kotlin 的人,這可能會(huì)給人留下 Kotlin 開發(fā)者很“貴”的印象。
          在招聘方面,我們并沒有覺得很難招到 Kotlin 開發(fā)者。我們很清楚,有些工作需要使用這門新語言,并允許開發(fā)者在工作中邊學(xué)邊用。
          這似乎讓 Java 開發(fā)者放下心來,并吸引了那些熱衷于學(xué)習(xí)新事物的人。


           “Kotlin 太復(fù)雜了”


          Kotlin 之所以成為 Scala 等語言的替代語言,其中一個(gè)原因是它在易用性和高級(jí)特性之間取得了良好的平衡,與 Java 具有更好的互操作性,所以更有可能被流行框架采用。
          在實(shí)際當(dāng)中,這種反對(duì)聲與團(tuán)隊(duì)的技能、風(fēng)格和習(xí)慣有關(guān)。
          初學(xué)者一般會(huì)像使用 Java 一樣使用 Kotlin,但隨著他們?cè)絹碓绞煜み@門語言,可能會(huì)深入使用一些特性 (例如擴(kuò)展和內(nèi)聯(lián)函數(shù)),從而導(dǎo)致代碼庫變得越來越難以理解。
          在團(tuán)隊(duì)完全掌握新語言之前,我們建議盡可能長時(shí)間地使用普通的 Kotlin 特性。最后,團(tuán)隊(duì)中的大多數(shù)人都會(huì)在選擇很酷的語言特性和保持代碼庫易于理解之間找到平衡點(diǎn)。


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


          這是在實(shí)際項(xiàng)目中沒有嘗試過 Kotlin 的人經(jīng)常會(huì)有的擔(dān)憂。
          在實(shí)際當(dāng)中,當(dāng)團(tuán)隊(duì)意識(shí)到新的 Kotlin 代碼需要與 Java 共存,那么在一個(gè)項(xiàng)目中使用兩種語言并不會(huì)給他們?cè)斐珊艽蟮耐纯唷?/section>
          這里有一個(gè)有用的規(guī)則:“如果一個(gè)變更涉及到兩種語言,首先將舊代碼轉(zhuǎn)換成 Kotlin”。
          這樣,團(tuán)隊(duì)就可以避免大爆炸式的重寫,并將需要添加新特性的地方進(jìn)行逐步遷移。
          如果需要保留一些 Java 代碼,那也沒關(guān)系。很有可能是因?yàn)檫@些代碼仍然有用,并且沒有進(jìn)行重構(gòu)的迫切需求。


           “我們更喜歡 Java”


          在實(shí)際當(dāng)中,有一些場景不一定要使用 Kotlin,一切仍然能夠進(jìn)行得很順利,團(tuán)隊(duì)能夠以可接受的速度完成工作。
          然而,根據(jù)我們的經(jīng)驗(yàn),這是例外,而不是常態(tài)。通常情況下,這種對(duì)語言的抗拒源于缺少時(shí)間和興趣,而不是因?yàn)闆]有可提升的空間。
          如果沒有在真正的項(xiàng)目中使用 Kotlin,是也很難體會(huì)到 Kotlin 的好處的。即使是作為一個(gè)實(shí)驗(yàn),也存在很多焦慮。
          對(duì)于這種情況,我們建議“在工作中邊學(xué)邊用”(以編碼道場、培訓(xùn)等形式),創(chuàng)造一個(gè)可以進(jìn)行這種實(shí)驗(yàn)的安全環(huán)境。
          這樣可以幫助團(tuán)隊(duì)評(píng)估他們對(duì) Java 的使用狀況,以及是否值得在 Kotlin 上投入。


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


          有時(shí)候,Java 開發(fā)者意識(shí)不到語言方面存在的限制,或者是因?yàn)樗麄円呀?jīng)習(xí)慣了。有時(shí)候,他們會(huì)抗拒新語言,因?yàn)樾抡Z言會(huì)讓他們質(zhì)疑自己正在使用的語言。
          在不深入細(xì)節(jié)的情況下,我們可以說 Kotlin 的簡潔性和安全性是它的主要優(yōu)點(diǎn)。然而,有些人聲稱他們不認(rèn)為 Java 的冗長有什么問題,并且寫出來的代碼也很安全。
          在真正去嘗試 Kotlin 之前,人們很容易將其忽略掉。而在真正面對(duì)它的時(shí)候,一些人會(huì)繼續(xù)尋找不嘗試使用它的理由。


           一些想法


          采用一種新的編程語言,特別是在正在進(jìn)行的項(xiàng)目當(dāng)中,這對(duì)于大多數(shù)團(tuán)隊(duì)來說都是一個(gè)挑戰(zhàn)。對(duì)變化的抗拒與特定的環(huán)境有關(guān),與項(xiàng)目需求和個(gè)人原因以及語言本身也有關(guān)。
          話雖如此,我仍然鼓勵(lì)更多從事 Java 服務(wù)器端的開發(fā)者,如果有機(jī)會(huì)的話,可以嘗試一下 Kotlin。
          原文鏈接:

          https://medium.com/google-developer-experts/why-are-java-server-side-developers-not-adopting-kotlin-8eb53e06ee99


          前線推出學(xué)習(xí)交流一定要備注:研究/工作方向+地點(diǎn)+學(xué)校/公司+昵稱(如Java+上海+上交+卡卡),根據(jù)格式備注,可更快被通過且邀請(qǐng)進(jìn)群

          掃碼助手小姐姐微信,進(jìn)群大廠內(nèi)推&大佬技術(shù)交流



          END


          后臺(tái)回復(fù)“電子書” “資料” 領(lǐng)取一份干貨,數(shù)百面試手冊(cè)等你
          開發(fā)者技術(shù)前線 ,匯集技術(shù)前線快訊和關(guān)注行業(yè)趨勢(shì),大廠干貨,是開發(fā)者經(jīng)歷和成長的優(yōu)秀指南。
          好文點(diǎn)個(gè)在看吧!
          瀏覽 29
          點(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>
                  美女自慰网站免费看 | 无毒不卡视频在线播放 | 黑人巨大精品A片一区二区七区 | 乱伦小说av | 久久久久久久久久艹 |