kotlin真的會代替java嗎?
不,Java不會被取代的,因為它是許多應用程序的主要開源語言。有龐大的用戶群和代碼庫。
Kotlin編譯為在JVM上運行的字節碼;它取決于Java類庫。它們的互操作性意味著Java不會被取代。此外,Google I / O的公告表明Kotlin正在被添加到Android生態系統中,而不是取代Java。
我更想有體系地來審視這個問題。
首先,Kotlin是什么?
自Kotlin發行以來,Java社區的人們一直擔心Java將來會過時。但是,這種新的編程語言到底是什么?
Kotlin是在Java虛擬機(JVM)上運行的靜態類型編程語言。它的開發始于2010年的JetBrains,但是直到2016年,才發布了第一個穩定版本(Kotlin v1.0)。
到Kotlin v1.0發行時,Kotlin在Android開發人員社區中迅速發展起來,其使用的插件已用于大多數IDE。
Google宣布Kotlin是Android開發的官方支持語言之前,Java是開發Android應用程序的流行語言。
打造出Kotlin的原因
當JetBrains決定開發Kotlin時,他們認為大多數編程語言都沒有他們想要的功能。但是,JetBrains的負責人Dmitry Jemerov表示Scala接近但編譯速度較慢。
Kotlin旨在像Java一樣快地進行編譯,但是比Java具有更簡潔,更實用的語法。就像Java以印度尼西亞的島嶼命名一樣,Kotlin也以圣彼得堡附近的Kotlin島命名。JetBrains的團隊希望Kotlin將推動其IntelliJ IDEA的銷售和增長。
在2016年首次穩定發布Kotlin v1.0之后,在2017年11月推出了Kotlin v1.2。添加了諸如在JVM和JavaScript之間共享代碼等功能。Kotlin旨在成為一種工業級的面向對象的語言,其語法比Java更好,同時仍可與Java代碼完全互操作。這意味著您可以在Java代碼中編寫Kotlin代碼-允許應用程序逐漸從Java遷移到Kotlin。
Kotlin的優點
簡潔的語法;開發Kotlin的原因之一是使用一種語言,其樣板代碼更少。Kotlin的語法比Java短,從而使開發人員可以更快地開發其應用程序。它比Java所需的編碼少大約20%。此外,使用簡潔的代碼和更少的代碼編寫,可以減少錯誤,從而減少調試工作。與Java的互操作性;Kotlin和Java類可以存在于同一項目中。兼容性至關重要,因為Kotlin仍在開發中,其下沒有那么多的庫和框架。互操作性可以將高級Java庫和框架添加到Kotlin項目中,而不必將項目更改為Java。同樣,我們可以將Kotlin代碼添加到現有的Android Studio Java項目中,而無需在Kotlin中重寫整個應用程序。可同時利用兩種范式; 每個編程范例都有其優點和缺點。具有能夠同時利用兩種范式的優勢的語言是一個加號。Kotlin在這一領域大放異彩,可以編寫滿足這兩種范例的函數。避免了空問題;困擾Java的一個主要問題是可空性,那就是沒有價值。因此,我們必須使用許多空指針異常try-catch短語,以防止我們的應用程序意外出現“應用程序無響應”錯誤。當我喜歡編寫Android應用程序時,可空性使我感到困擾。幸運的是,Kotlin通過在其類型系統中包含null來解決此問題,因此我們可以編寫代碼而不必擔心null解決方法。類型安全;Kotlin是類型安全的,具有可選類型,每個類都是一個函數,每個函數都是一個類。所有這些都有助于進行安全檢查。從Java切換到Kotlin很容易;盡管沒有必要將應用程序的Java代碼切換到Kotlin,但轉換非常容易。在Android Studio中,您只需要安裝Kotlin插件,將其添加到Gradle插件中,然后單擊convert。可維護性,支持和可靠性;Kotlin由技術領域的主要參與者構建并提供支持。JetBrains制造了一些最智能的IDE,當然還有Google,這是Android背后的力量。因為是久經考驗的真正開發工具,所以生產率和滿意度更高。在2016年首次穩定發布之前,Kotlin已經通過了一系列Alfa和Beta階段測試,成為一種高度可靠的語言。Kotlin的缺點
學習資源有限的小型開發者社區;如果有一件事對于學習一種新語言至關重要,那就是擁有一個龐大的社區來提供支持和學習材料。Java已經存在了數十年,擁有龐大的開發人員社區以及大量的學習資源。僅通過Stack Overflow即可輕松找到編碼Java時可能出現的任何問題的答案。Kotlin是一種相當新的語言,要找到可能出現的問題的解決方案并不容易,因此使應用程序開發過程變得困難。編譯速度不穩定;盡管Kotlin旨在像Java一樣快地進行編譯,但有時它的運行速度明顯慢得多。但是,我確定JetBrains正在努力修復。涉及學習曲線;盡管Kotlin是像Java一樣考慮到面向對象程序設計的,但兩種語言的核心卻不同,因此需要時間來學習或培訓團隊。Java之與Kotlin
確實,由于受到Google的支持,Kotlin的發展速度很快。并且具有Java簡潔的語法。但是,Java已經存在了20多年了,它經得起時間的考驗。
Java是一種通用編程語言,它不僅限于機器應用程序。作為一種平臺無關的語言,它可以在任何硬件平臺或操作系統上運行。Java的多功能性使其可用于開發服務器端應用程序,桌面應用程序,使用Java applet的瀏覽器應用程序以及嵌入式移動應用程序。
根據編程語言的受歡迎程度排名的TIOBE指數,Java自2011年以來一直位居榜首。
哪些編程領域適合Kotlin?
Kotlin旨在改善Java,應該做Java所做的一切。作為開發Android應用程序的官方語言,其主要用于適合于本機Android應用程序的開發。Kotlin還可以編譯為JavaScript,并且可以創建在啟用了JavaScript的瀏覽器中運行的應用程序。可以直接在Intellij IDEA中編寫JavaScript代碼,然后使用Maven或使用命令行進行編譯。Kotlinx.html是Kotlin模板引擎,用于在Web應用程序中構建HTML。Kotlin可用于使用簡潔明了的代碼開發服務器端/后端應用程序。JetBrains提供了Ktor框架,可用于使用協同程序在Kotlin中創建Web應用程序。Spring Java框架使用Kotlin的功能來提供簡潔的API。Kotlin可編譯為JavaScript,因此可用于Node.js的服務器端編碼。Kotlin可用于企業應用程序開發,因為它以JVM為目標,就像使用純Java編碼的應用程序一樣,并且在性能上可與Java媲美。哪些編程領域適合Java?
Java已經存在了很長時間,它已經在編程的所有領域中得到了應用。有眾多的代碼庫和框架針對后端,前端,移動和桌面應用程序的任何編碼方案。此外,與Kotlin相比,大量的開發人員社區將幫助你在編碼或學習Java時進行導航。Java可以在所有設備上運行:手機,Windows,Mac,Linux和電視。
示例代碼片段顯示Kotlin與Java有何不同
Java的Hello World
class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); } }
Kotlin的Hello World
package hello fun main() { println("Hello World") }
在Java中創建Android對象(Android應用的一個場景)
public class MyActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); } }
在Kotlin中創建Android對象(Android應用的一個場景)
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) } }
初學者應該學習Java還是Kotlin?
Java是學習面向對象編程概念的一種語言。Kotlin具有類似的OOP概念,但有所改進。初學者應該學哪種語言,存在爭議,因此我將提出一些意見:
Google正在推動Kotlin進行Android開發。由于Kotlin語法簡短,已經熟悉Java的開發人員愛上了Kotlin,實際上鼓勵了初學者從Kotlin開始。但是,我寧愿鼓勵初學者從Java開始。
由于目前為止Kotlin的學習材料不足,因此對于嘗試學習Kotlin的初學者來說,這確實令人沮喪。即使像Android Developer網站上的那些教程一樣,仍然會將Kotlin示例與Java進行了比較,以幫助闡明這一點。因此,如果沒有Java知識,那將會造成混亂。
Kotlin開發人員的工作崗位不如Java開發人員多,因為它仍然是一種不斷增長的語言。最后,一旦您了解了Java,將Kotlin添加到您的技能中將非常容易。
最后的結論
Kotlin會取代java嗎?目前看來還不會。
關于Kotlin正在取代Java的觀點,我認為不會成為現實。Kotlin編譯是在JVM之上執行的字節碼,因此Java是運行Kotlin所必需的。
的確,得益于Google和JetBrains的支持,將Kotlin用于Android開發已獲得了極大的普及。它與Java的互操作性使其成為現有Java開發人員的最佳選擇。
像任何編程語言一樣,它都有一個學習曲線,而Kotlin還不夠完美。好處是,可以在一個項目中輕松使用Java或Kotlin的代碼庫。
其簡潔的語法避免了Java之類的樣板代碼,因此減少了將要編寫的代碼量,這只能使其成為任何Android開發人員都值得學習的語言。