微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编写Kotlin / JVM和Kotlin / JS的区别?

如何解决编写Kotlin / JVM和Kotlin / JS的区别?

我阅读了有关Kotlin的Big Nerd Ranch指南,并且在许多地方都谈到了Kotlin / Java互操作,但从未谈论过JS或本机。我已经具有扎实的Java背景知识,因此我已经习惯于在Kotlin代码中使用java类。我试图编写一个Kotlin程序,该程序将在大多数(如果不是全部)功能都是使用JavaScript编写的网站上运行,并且我试图了解如何编写代码以确保其可互操作。我可以继续在Kotlin / JS代码中使用java类吗?编写Kotlin / JVM代码和Kotlin / JS代码有什么区别? (前)Java程序员在学习使用Kotlin与JS互操作时应该知道什么?如果最近写的任何好书中都有关于这一点的章节,那也将有所帮助。

解决方法

Kotlin / JS将Kotlin代码(包括其自己的标准库)编译为Javascript代码。最后,您只有Javascript。您所没有的就是与Java虚拟机的任何连接。 Kotlin的标准库不提供将Javascript代码桥接到JVM的任何魔力,因此它可以利用Java类。所以不,您不能在标准Kotlin / JS中使用Java类。

,

正如史蒂夫已经提到的那样,您不能在Kotlin / JS中使用Java类。

将Kotlin / JS视为打字稿。 它提供了不同的语法来编写最终可编译为JS的代码。

以下是编写Kotlin / JS代码与Kotlin / JVM代码的显着差异

  • Kotlin / JS内部使用yarn进行依赖项管理。这使您能够依赖npmjs等上可用的任何javascript模块(请参见下面的注释)
  • 除了标准库外,您还可以利用其他kotlin-first框架,例如kotlinx-serialization,ktor等
  • 测试库将特定于JS。因此,您需要熟悉karma / mocha家族,而不是mockito / mockk / junit家族。
  • 协程的功能将有所不同-无论是在编写代码的方式还是在性能预期方面。

我发现阅读有关Kotlin Multiplatform的内容有助于阐明很多关于kotlin的功能。

我知道这不是特别要问的,而是给考虑使用Kotlin / JS的人2仙(截至20年9月)

  • 如果您熟悉Kotlin,并且除了http i / o(ktor),React(kotlin-react)和基本的html / css(由kotlin样式覆盖)之外,没有预见到太多的第三方依赖,那就太好了。
  • 使用JS模块作为依赖项并不像使用JVM依赖项那样简单,因为没有现成的互操作。在使用它们之前,必须先在Kotlin中define个javascript函数/类(请参阅here)。因此,如果您预见到会利用许多现有的javascript模块,那将不是理想的前进方式。
  • 如果您有一个典型的后端-前端模型,其中后端可编译为JVM,而前端则可编译为JS,则非常好。您可以在后端和前端代码之间(通过Kotlin Multiplatform)利用通用数据模型和http i / o框架。我发现这极大地提高了生产力!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?