Java社群對Kotlin有什麼看法? - reddit

banq發表於2022-03-06

從 Kotlin 使用 Java,也許更重要的是從 Java 呼叫 Kotlin,幾乎在每個用例中都是完全無縫的。

語言以相同的模式“思考”,因此您不會試圖強迫 Java 成為純粹的函式式或其他東西。如果我用 Kotlin 編寫一個庫,其他開發人員可以在 Java 領域使用它,而無需考慮翻譯它。

JetBrains 在設計互操作性方面做得非常非常好,特別是當您認為它還支援與 Javascript 的良好互操作性時。

 

Kotlin 在後端很受歡迎。在您可以在 Android 上輕鬆使用之前,它很容易與 Spring 一起使用。曾經它是 Java 的替代品(就像 Groovy 一樣)。

誠然,如今它是 Android 唯一真正的選擇,但伺服器端 Java 不斷改進,因此差距沒有那麼大。

 

Kotlin 是一種更具表現力的語言,有好有壞。好是因為它可以讓你真正按照自己的方式做事,壞是因為兩個 Kotlin 開發人員可能正在編寫看起來完全不同的程式碼。

Kotlin 協程與基於反應式程式設計的 Java 庫一起使用,可提供令人印象深刻的後端效能,而無需擔心反應式程式設計,這真的非常棒。

 

Java 正在通過 Project Loom 獲得綠色執行緒,它應該比協程更容易使用。

Loom 的好處是它自動知道要做什麼,而 Kotlin 需要suspend修飾符。

 

正如 Brian Goetz 曾經說過的:Kotlin就像 Java,但有漸進式的優點和缺點。

我所在的團隊大約在兩年前切換到 Kotlin。起初我們遇到了一些問題,但很快就形成了一種共同的風格。我們在程式碼審查方面有很好的文化,我認為這確實有助於在我們的團隊中找到一種共同的風格。

 

我將 Kotlin 視為一種更好的 Java 語言語法。API、JVM、工具、庫生態系統,對我來說仍然是 Java。因此,我對 Kotlin/Native、Kotlin/JS 或協程沒什麼興趣,儘管我偶爾會使用它們。例如,我寧願使用 Loom 而不是 Kotlin 協程。我從來沒有在Android上使用過它。始終是後端、CLI 和桌面。

我對 Kotlin 最大的不滿之一是你不能用它來製作 100% 原生的 Java 庫.

當我編寫庫時,我希望它們實際上是隻是依賴於 Kotlin 標準庫的 Java 庫,因為這是通用語,也是獲得使用的最佳方式。出於這個原因,有時我會在 Java 中重寫介面,但將 impl 保留在 Kotlin 中。

所以在我看來,Kotlin 對 Java 社群來說絕對是好事。尤其是它讓我對 .NET/C# 的興趣大打折扣。.NET 的論點始終是(對我而言)C# 是一種比 Java 更現代、更方便的語言,但生態系統更小,VM​​ 更差……但你得到了適當的屬性等。

不過,Kotlin 超越了 C#,所以現在我明白了什麼是更好的語言、最好的 VM、stdlib 和庫、最好的可移植性和多供應商 VM 環境。這是一個非常棒的組合,我用它編寫的程式碼可供 Java 使用者輕鬆使用。

 

我喜歡 Kotlin,寫起來感覺更自然,並“解決”了 Java 的許多煩惱。但我也發現 Kotlin 更難閱讀,這可能有點諷刺。

我在專業和業餘專案中每天駕駛 Kotlin 幾年後得出的結論。它比 Java 更容易編寫,但更難閱讀。

編寫程式碼確實比閱讀更容易,但是反過來不是,所以我又回到了 Java。

 

Kotlin 也沒有解決我在使用 Java 時遇到的任何問題;Kotlin 以犧牲清晰度和可讀性為代價來優化編寫程式碼。

 

Kotlin 是新的 Scala。它最終將成為今天的 Scala。只是因為Java最終會“趕上”。

 

我們不需要 kotlin,Java沒問題。Kotlin 幾乎沒有存在的理由。它有一些有趣的特性,但 Java 會做到這一點。這並不是說 kotlin 是“錯誤的”,但我永遠不會使用它。

 

我覺得 kotlin 已經跑到了它希望替代Java的地步,但卻失去 jvm 和 jdk 團隊為發展語言所付出的關心。例如,kotlin 有 continuations,iirc,但它們與 jvm 中的內容不相容,這意味著要麼現在結束使用,要麼半途而廢,已經不能利用 jvm 本身中的某些東西。

Kotlin 感覺就像是一種語言,人們更感興趣的是製作一種適合當時流行關鍵字的語言,而不是一種語言實際需要的語言。

顯然,這只是我的意見,你的可能會有所不同。

我只是沒有看到 kotlin 的優勢。如果 kotlin 是一種獨立的語言,而 Java 不存在,我相信它會很好。但現在我只是看不到好處。他們將 Java 生態系統支離破碎,收效甚微。

 

我已經將幾個專案重寫為 kotlin,然後返回並將它們重寫為 java。可悲的是,這是一種時尚。

 

可以在VSCode等編輯器中使用Kotlin 語言:

https://github.com/fwcd/kotlin-language-server

當然,kotlin-language-server 體驗無法與JetBrains  jdtls 相比。

 

 

相關文章