java中使用kotlin
Kotlin团队最近参加了Reddit AMA ,似乎有很多人参与其中-共有600多条评论,因此我们只讨论其中的一些亮点。
如果您想提供帮助,请在下面的评论部分中分享您的个人亮点。
Kotlin vs. Java:谁领先一步?
参加AMA的一名Redditor询问Kotlin团队是否担心Java最终会使Kotlin变得无关紧要,因为前者正在加强其功能游戏(例如自动类型推断或ValValla项目的通用化泛型)。 Kotlin首席语言设计师Andrey Breslav回答了以下问题:
- JVM功能可以并且会在出现时自动识别(这适用于Valhalla),因此我们只有在它们出现时才会感到高兴。
-
如果Java编程语言在各个方面都变得比Kotlin更好,那将真的很酷 ,因为世界将从中受益匪浅。 在此之前,我认为现在取得进展仍然很好。 竞争会使您变得健康。 因此,我认为这是一件积极的事情。
另外,如果有任何一种语言领先于Kotlin,则意味着它首先尝试了某些功能,这对我们只有好处,因为我们可以从他们的经验中学到并希望使功能变得更好(例如,协程式程序就是这种情况) 。
底线:我不关心世界上任何语言所取得的积极进展。 我对此很满意:)
还请参见: Kotlin可以取代Java进行Android开发吗? 新报告说是
另一位Redditor指出Java世界已经发生了很多变化,并认为六个月的节奏将带来很多变化。 Kotlin库团队负责人回答说,尽管他喜欢Java,但是它最大的一些问题是选择不当的默认值,普遍的可变性和可空性问题。
他补充说, 在保持合理程度的向后兼容性的同时 ,将Java转换为“现代语言”可能“几乎是不可能的” 。 许多年前,Java社区一直在呼吁使用向后不兼容的“ Java 2.0”。 我们终于有了它。 Kotlin是Java 2.0。 Java的未来是Kotlin 。”
Kotlin会变得太复杂吗?
阿比绍夫(Abishov)问车队,他们是否担心Kotlin可能变得过于复杂且随着时间的流逝而膨胀。 安德烈·布雷斯拉夫(Andrey Breslav)解释说,“他们倾向于集中精力添加很少会显着改变体验的功能,而不是增加影响较小的功能。”
基本上,他们正在尽最大努力使该语言保持“精简和现代”。 他还表达了团队的愿望,即“使代码可共享,并且最好以一种语言编写代码。”
“正在建设中”功能
一位Redditor询问用户在将来的版本中应该期待哪些新功能。 根据Breslav的说法,他们目前正在使用的某些功能包括:
- 改善对多平台编程的语言支持
- 协程毕业
- 编写用于IO,套接字,序列化,日期等的通用库
- 将Kotlin / Native发行(目前是技术预览):适用于iOS和其他平台
- 为JS库的Kotlin标头设置中央存储库(又名“ DefnitelyKotlin”)
- 编译器和IDE中的性能改进
- 生成代码的性能优化
- Kotlin / JVM和Kotlin / JS中增量编译的改进
还请参见: Kotlin 1.2:跨JVM和JavaScript的多平台项目
可能会影响性能的常见错误:提示与技巧
dgeorge92要求团队分享一些有关如何避免“可能会影响性能而又不会立即对程序员显而易见的常见错误”的技巧。 Kotlin开发倡导者和《 Kotlin in Action》的合著者Svetlana Isakova解释说:“如果没有具体的示例和适当的基准,很难对性能进行推理”,但提供了以下技巧:
- 了解集合的内联操作和序列的惰性操作之间的区别很重要。 如果您说list.filter {} .map {}操作是内联=>,则会创建一个中间集合,如果该集合很大,这可能是意外的性能缺陷。
- 语言中没有原始类型,可以是Int或Int?。 但是Int在字节码中仍然是原始int(在大多数情况下),而Int? 是包装类型,因此所有有关原始/包装类型的常规推理都适用于此。
- 我们的lambda是真正的闭包,这意味着它们可以捕获可变的变量,但是在这种情况下,它的工作方式与您在Java中编写的一样:通过创建其他Ref对象来存储对变量的引用。 而且,不捕获任何变量的lambda更便宜,因为它们在运行时仅使用一个对象来实现。
绝妙的技巧: “显示Kotlin字节码”操作,然后“反编译”按钮。 有助于了解幕后情况。
在此处查看整个AMA。
翻译自: https://jaxenter.com/kotlin-team-ama-highlights-139520.html
java中使用kotlin