kotlin能取代java吗?

编辑: admin           2017-08-06         

      kotlin能取代java吗?本人是java爱好者,从大学的时候就很喜欢java,毕业后进入深圳华为技术有限公司也是主要搞java项目,就连后来跳槽到中移动也是搞java,所以算是与java有着深厚的友谊。那么,这段时间又有人问我一个问题:kotlin能取代java吗?就这个问题我收集了一些相关资料,我想你看了之后对你一定有所帮助。

      我们先来看看开源中国社区上的讨论;

      Kotlin VS Java:编译速度大比拼,到底谁更快?

      把一个Java应用程序转换为Kotlin,编译时间要多久?

      这是关于Kotlin的一系列文章。分为三个部分。 第一部分讨论了从Java转换到Kotlin。第二部分是我对Kotlin的看法。

      在前面的文章中, 我讨论了把Android 应用从Java 100%转换为Kotlin 。 Kotlin代码比Java的简洁,更易于维护,所以我认为转换是值得的。 但有些人不想试用Kotlin,因为他们担心它编译可能没有Java快。 这个关注点绝对是正确的,如果变得编译很慢,没有人愿意转换他们的代码。 所以,让我们编译Lock App试一下 ,然后我把它转换成Kotlin。 我不会试图比较一行代码的编译速度; 相反,我将尝试回答将代码从Java转换为Kotlin是否会影响其总体构建的时间。

      我如何测试构建时间

      我写了一个shell来重复执行gradle。 所有测试连续进行10次。 该项目的每个场景之前clean,并使用Gradle daemon ,daemon之前停止一次。

      本文中的所有测试都在运行于3.4 GHz的Intel Core i7-6700上,使用32GB的DDR4内存和三星850 Pro SSD。 源代码是用Gradle 2.14.1构建的。

      测试

      我想在几种常见的使用场景中运行基准:使用和不使用Gradle daemon+clean,没有文件更改的增量编译,以及更改的文件的增量编译。

      在转换之前,App Lock的Java代码有5,491个方法和12,371行代码。 改写后,这些数字下降到4,987方法和8,564行Kotlin代码。 在重写期间没有发生大的架构更改,因此在重写之前和之后测试编译时间应该很好地了解Java和Kotlin之间的构建时间的差异。

      clean + 不用Gradle daemon Build

      这是两种语言中构建时间最差的情况:从冷启动运行一个clean的构建。 对于这个测试,我禁用了Gradle daemon。

      这里是十个构建所花费的时间:

      

    kotlin能取代java吗?

     

      在这种情况下的结果是,Java构建时间平均为15.5秒,而Kotlin平均为18.5秒:增加了17%。 这对Kotlin来说并不是一个好的开始,但是大部分人不会这么编译他们的代码。

      对于没有Gradle daemon 并且clean构建,Java编译比Kotlin快17%

      clean +Gradle daemon Build

      这个JIT编译器的问题 ,就像JVM中,是它们需要时间来编译对报告的执行的代码,等等的处理随时间增加的性能,因为它运行。 如果停止JVM进程,那么性能增益会丢失。 在构建Java代码时,通常在每次构建时启动和停止JVM。 这迫使JVM每次构建时重做工作。 为了解决这个问题,Gradle附带了一个守护进程,它将在构建之间保持活跃,以便保持JIT编译的性能提升。 你可以通过在gradle命令行加参数--daemon或者在gradle.properties文件添加一句org.gradle.daemon=true。

      

    kotlin能取代java吗?

     

      可以看到,第一次运行所花费的时间与没有daemon的时间相同,但后续运行的性能提高,直到第四次运行。 在这种情况下,查看第三次运行后的平均构建时间更有用,其中daemon已工作过了。 对于热运行,在Java中执行clean构建的平均时间为14.1秒,而Kotlin以16.5秒的速度运行时间:多了13%。

      对于clean + Gralde daemon 编译,Java编译比Kotlin快13%。

      Kotlin正在赶上Java,但仍然稍微落后。 但是,无论使用什么语言,Gradle daemon都会将构建时间减少40%以上。 如果你还没有使用它,你应该用上。

      所以Kotlin编译在完整代码情况下比Java慢一点。 但是你通常只会对几个文件进行更改后编译,增量构建将有不同的性能。 所以,让我们来看看Kotlin在增量编译是否可以赶上。

      增量构建

      编译器最重要的性能特性之一是使用增量编译。 正常构建将重新编译项目中的所有源文件,但是增量构建将跟踪自上次构建以来哪些文件已更改,并且只重新编译这些文件和依赖它们的文件。 这可能对编译时间有巨大的影响,特别是对于大型项目。

      增量构建在kotlin1.0.2以后版本支持 ,你可以在你的gradle.properties文件添加kotlin.incremental = true实现。

      那么当使用增量编译时,Kotlin与Java的编译时相比如何? 以下是没有更改文件时使用增量编译的基准:

      

    kotlin能取代java吗?

     

      接下来,我们将使用修改后的源文件测试增量编译。 为了测试这个,我在每次构建之前改变了一个java文件,Kotlin也一样。 在这个基准测试中,源文件是没有其他文件依赖的UI文件:

      

    kotlin能取代java吗?

     

      最后,让我们看看使用修改的源文件进行增量编译,其中文件导入到项目中的许多其他文件

      

    kotlin能取代java吗?

     

      你可以看到Gradle daemon仍需要两三次运行来预热,但是之后两种语言的性能是非常相似的。 没有更改,Java每个热建立4.6秒,而Kotlin平均4.5秒。 当我们更改一个没有被任何其他文件使用的文件时,Java平均需要7.0秒来做一个热构建,Kotlin是6.1秒。 最后,当我们更改项目中许多其他文件导入的文件时,Java需要7.1秒才能在Gradle daemon加热后执行增量构建,而Kotlin平均6.0秒。

      在最常见的情况下 - 启用增量编译的部分构建 - Kotlin编译速度快或略快于Java。

      结论

      我们对几个不同的场景进行了基准测试,看看Kotlin在编译时间是否可以跟上Java。 虽然Java在clean构建比Kotlin 快10-15%,但这些情况很少。 对于大多数开发人员来说,更常见的情况是部分构建,其中增量编译进行了大量改进。 随着Gradle daemon运行和增量编译的开启,Kotlin编译速度快或略快于Java。

      这是一个我完全没有想到并且令人印象深刻的结果。 我必须赞扬Kotlin团队设计一种不仅具有很多优秀功能,而且能够快速编译的语言。

      如果你因为编译时试图使用Kotlin,你不必担心:Kotlin的编译速度和Java一样快。

      英语原文:Kotlin vs Java Compilation Speed https://medium.com/keepsafe-engineering/kotlin-vs-java-compilation-speed-e6c174b39b5d#.l8wax2t8j

      编译:掘金.

      下面再看下CSDN上的分享:Kotlin真的会取代JAVA吗?

      自从Kotlin 成为 Android 开发一级语言,Kotlin确实以其实用,高效赢得了海外很多公司和开发者的认可,比如Square的Jake大神一直在推Kotlin。Kotlin在国外至少有将近2年的应用生产环境的实践(非JetBrains内部实践应用)。在移动开发中,相比iOS程序员,Android程序员总是很幸运,因为我们有很多优秀好用的工具(Android Studio等),选用Kotlin,则是Google 为开发者提供高效的开发工具的一贯作风。

      

    kotlin能取代java吗?

     

      先来晒一晒Kotlin的几大特点:

      Kotlin是静态类型编程语言,用于现代多平台应用,100%可与Java™和Android™互操作 [java] 

      Kotlin是非常简介的编程语言

      Create a POJO with getters, setters, equals(), hashCode(), toString() and copy() in a single line:

      data class Customer(val name: String, val email: String, val company: String)

      Or filter a list using a lambda expression:

      val positiveNumbers = list.filter { it > 0 }

      Want a singleton? Create an object:

      object ThisIsASingleton {

      val companyName: String = "JetBrains"

      }

      [java] view plain copy

      Kotlin 很安全

      Get rid of those pesky NullPointerExceptions, you know, The Billion Dollar Mistake

      var output: String

      output = null // Compilation error

      Kotlin protects you from mistakenly operating on nullable types

      val name: String? = null // Nullable type

      println(name.length()) // Compilation error

      And if you check a type is right, the compiler will auto-cast it for you

      fun calculateTotal(obj: Any) {

      if (obj is Invoice)

      obj.calculateTotal()

      }

      [java] view plain copy

      方便使用 兼容JVM上现有library

      Use any existing library on the JVM, as there’s 100% compatibility, including SAM support.

      import io.reactivex.Flowable

      import io.reactivex.schedulers.Schedulers

      Flowable

      .fromCallable {

      Thread.sleep(1000) // imitate expensive computation

      "Done"

      }

      .subscribeOn(Schedulers.io())

      .observeOn(Schedulers.single())

      .subscribe(::println, Throwable::printStackTrace)

      Target either the JVM or JavaScript. Write code in Kotlin and decide where you want to deploy to

      import kotlin.browser.window

      fun onLoad() {

      window.document.body!!.innerHTML += "

      Hello, Kotlin!"

      }

      几篇社区的博文帮助大家更好的了解kotlin

      -hello Kotlin https://yq.aliyun.com/articles/63548

      -用Kotlin写Android程序 https://yq.aliyun.com/articles/65204

      -使用Kotlin&Anko,扔掉XML开发Android应用 https://yq.aliyun.com/articles/47834

      那么问题来了

      你是否已经开始使用准备使用Kotlin?

      你觉得Kotlin与JAVA之间的区别有哪些,优势or缺点?

      你觉得Kotlin会取代JAVA吗?

      kotlin能取代java吗最有价值的参考回答:

      1、Google已经宣布Kotlin为Android开发的第一语言了。

      2、Kotlin这门语言确实比Java简化了代码量,确实有可取之处,有时间学习一下也是挺好的,也不是很难。

      3、安卓一向是Java应用的一大范围之一,在安卓去Java话的当今,毫无疑问的一点那就是Java的市场应用将会大幅下滑,Java从编程开发语言跌出第一位宝座就是从该事件开始的。

      4、应该不会,介绍Kotlin的时候就说了只是java的一个什么而已,并没有说要取代,那得看google以后想如何发展它的作用了。

      另外:

      Kotlin作为Android开发语言相比传统Java有什么优势

      很高兴有人能提到Kotlin这门语言,

      前段时间做了一个项目就是用Kotlin写的。首先谈几点

      1。废弃了java语言中findViewById(),kotlin可以直接用id名字找到控件

      

    kotlin能取代java吗?

     

      2.没有java中那么多重载方法,写一个就好了,非必要参数给个默认值;

      

    kotlin能取代java吗?

     

      3.扩展:在父类中定义一个方法,在子类中直接使用:

      在父类定义,表示只要继承了Activity都可以直接调用

      

    kotlin能取代java吗?

     

      

    kotlin能取代java吗?

     

      还有很多,我不一一列举了。。。

      好了,通过以上叙述,相信关于kotlin能取代java吗这个问题你已经捕捉到了有价值的东西。

  •   4
  • 相关文章

    电脑教程:教你如何选择浏览器快速上网
    javac不是内部或外部命令
    kotlin能取代java吗?
    protel dxp 2004软件无法打开PCB文件(图也是用DXP2004画的)
    protel dxp使用教程详细解读【下篇】
    protel dxp使用教程详细解读【中篇】
    protel dxp使用教程详细解读【上篇】
    水星路由器设置密码_水星路由器怎么改密码 水星路由器
    打印机无法打印全部_打印机无法打印的原因与解决办法
    cf赤焰尼泊尔活动_cf跑男归来活动网址 cf跑男归
Copyright ©2009-2021 逆火网训All Rights Reserved.     滇ICP备2023009294号-57