最新版本的Kotlin通过多平台项目支持JVM和JavaScript平台的代码共享。除此之外,它还带来了语言和类库方面的大量改进,以及更好的编译器性能。

\\

Kotlin在1.1版本中就已引入了对JavaScript的支持,而最新版本的Kotlin让开发者可以很方便地管理在JVM和JavaScript平台上运行的项目。因为有了Kotlin Native,在未来还将支持本地二进制包。

\\

多平台项目(multi-platform project)的基本原理是按照一定的方式来组织项目模块,如一系列公共模块和平台特定模块。平台特定模块所包含的代码要么是运行在JVM上,要么是运行在JavaScript平台上,可以自由访问相应平台的包。每一个平台特定模块都需要一个公共模块,这些公共模块提供了所谓的“预期声明(expected declaration)”,平台特定模块必须实现这些声明。因为有了这种机制,平台独立代码可以调用平台特定代码。公共模块只能包含Kotlin代码,也只能使用Kotlin的包,而平台特定模块可以包含Java或JavaScript代码,它们可以被编译成特定的格式。

\\

下面是如何定义公共模块和相应平台模块的例子:

\\

// Common module\\package org.jetbrains.foo\\expect class Foo(bar: String) {\    fun frob()\}\\fun main(args: Array\u0026lt;String\u0026gt;) {\    Foo(\"Hello\").frob()\}\\// JVM module\\package org.jetbrains.foo\\actual class Foo actual constructor(val bar: String) {\    actual fun frob() {\        println(\"Frobbing the $bar\")\    }\}

\\

一些跨平台库为Kotlin在公共模块方面带来了更强大的能力,包括一个序列化库、一个测试库和一个HTML同构库。

\\

在语言方面,Kotlin 1.2为某些场景提供了改进的智能类型转换和类型推断,标准库中新增了kotlin.math包,序列和集合中也加入了新的标准库函数。

\\

Kotlin 1.2中的编译器变得更快了,比1.1要快25%。在后续的次要版本中,编译器性能将会有进一步的提升。

\\

Kotlin 1.2已经被绑定到IntelliJ IDEA 2017.3当中,可以从官方的发布说明中看到更多相关信息。

\\

查看英文原文:Kotlin 1.2 Introduces Multi-Platform Projects

Kotlin 1.2引入多平台项目特性相关推荐

  1. 微软开源区块链平台项目 Bletchle

    在比特币领域大获成功后,越来越多的行业开始尝试通过区块链(Blockchain)技术在自己的业务中实施分布式分类帐(Ledger). 什么是区块链 区块链是一种用于创建数字交易分类帐的数据结构,或有关 ...

  2. 基于Java EE平台项目管理系统的设计与实现(论文+PPT+源码)

    分类号_______________ 密级________________ UDC _______________ 学号 毕业设计(论文) 论文题目 基于Java EE平台项目管理系统的设计与实现 T ...

  3. Cesar竞赛平台项目中期总结

    Cesar竞赛平台项目中期总结 软件51 谢运帷 2015013185 我们小组的选题是大学生竞赛平台项目,经过我们需求分析,原型设计等等步骤,我们终于要开始着手实现这一个庞大的竞赛平台项目.我们使用 ...

  4. 基于SpringBoot+Vue前后端分离的在线教育平台项目

    基于SpringBoot+Vue前后端分离的在线教育平台项目 赠给有缘人,希望能帮助到你!也请不要吝惜你的大拇指,你的Star.点赞将是对我最大的鼓励与支持! 开源传送门: 后台:Gitee | Gi ...

  5. 古文字识别助手与众包平台——项目博客五

    古文字识别助手与众包平台--项目博客五 背景: 由于本项目算法部分为使用python编写,所以需要在springboot中调用外部的python程序进行计算本项目算法评分模块. 在登录功能和社区功能的 ...

  6. 小程序+springboot+vue技术构建分帐式多商户入驻商城系统开发,引入lombok简化项目代码

    网页设计中使用了三种语言:HTML.CSS和JavaScript.HTML和CSS一直是网页设计的基础,而JavaScript则被用于添加网站的动态视图. 在提供吸引人的UI/UX时,JavaScri ...

  7. 古文字识别助手与众包平台——项目博客三

    古文字识别助手与众包平台--项目博客三 背景: 由于骨刻文项目存在许多骨刻文的静态图片,为了前端能够快速获取到相应的图片,后端打算再部署一个nginx静态服务器,用来存取在项目中客户上传的各种图片.同 ...

  8. 视频教程-JSP从入门到精通2016+在线视频教学平台项目实训-其他

    JSP从入门到精通2016+在线视频教学平台项目实训 19年软件开发经验,设计开发40多个大型软件,10年从事高等教育,主要为java系列课程,带你轻松进入java生涯. 赖国荣 ¥68.00 立即订 ...

  9. 安全传输平台项目——配置管理终端-框架搭建-初始化

    在学习安全传输平台项目总结了笔记,并分享出来.有问题请及时联系博主:Alliswell_WP,转载请注明出处. 10-安全传输平台项目-第09天(配置管理终端-框架搭建-初始化) 一.复习 1.复习数 ...

最新文章

  1. 在python中使用关键字define定义函数_python自定义函数def的应用详解
  2. seaborn可视化散点图并自定义数据轴标签(X轴和Y轴的轴标签,Change X Y Axis Labels to a Seaborn Plot)
  3. Keras之ML~P:基于Keras中建立的回归预测的神经网络模型(根据200个数据样本预测新的5+1个样本)——回归预测
  4. ASCII+Unicode+UTF8(字符编码方式-字节) Base64(字节编码方式-64字符)
  5. 锁的释放流程-unparkSuccessor
  6. python数据分析神器_太香了!墙裂推荐6个Python数据分析神器!!
  7. Java飞机大战敌机消失_Shoot 飞机大战,功能是子弹打在敌机上, 消失 且在内存中 , 小蜜蜂上同理 Games 游戏 247万源代码下载- www.pudn.com...
  8. python 怎么将数组转为列表_Python怎么将文件读入列表?
  9. Ubuntu18.04 快捷键和点击图标无法打开终端显示Failed to execute child process “gnome-terminal“
  10. 50个经典jquery实例_【电气知识】从原理图到程序的4个经典实例详解
  11. VMware的安装与设置
  12. html调整div上下顺序,用了float后div块之间的上下顺序不对了_html/css_WEB-ITnose
  13. 如何在 Mac 上设置自定义锁屏信息?
  14. python scikit learn 关闭开源_Python开源机器学习框架:Scikit-learn六大功能,安装和运行Scikit-learn...
  15. 贴花纸怎么贴_地砖保护膜怎么贴—怎么贴地砖保护膜
  16. 怎样用计算机编码出文字,计算机汉字编码主要有哪些方式
  17. python中的token是什么
  18. stm32核心板可以点亮灯吗_不忘初心牢记使命——自动化科协自行设计开发stm32仿真器...
  19. js substring、substr和slice 截取字符串
  20. MTK_on_line_FAQ_SW_ALPS_System+-+Bootup

热门文章

  1. DFS Gym 100553J Jokewithpermutation
  2. 可持久化数据结构讲解
  3. 通过VB结构数组输入数据VC编写DLL
  4. 47. Permutations II
  5. SQL基础---增删查询操作
  6. iptables基础知识.详解
  7. Eclipse导出可执行Jar文件(包含第三方Jar包)
  8. [linux]Linux挂载光盘,解压光盘内的tar安装包,并安装软件(Install VMware Tools in a Linux Guest)...
  9. Save could not be completed. Eclipse国际化的问题解决
  10. SMO学习笔记(三)——效验数据库备份文件