• 原文链接:在 mac os 上运行 kotlin native 的第一个程序:hello world 背景   不久前有群友在讨论kotlin,就翻看了聊天记录,发现了kotlin native,能把kotin代码编译成本地可执行文件。就到kotlin的官方...

    原文链接:在 mac os 上运行 kotlin native 的第一个程序:hello world


    背景

      不久前有群友在讨论kotlin,就翻看了聊天记录,发现了kotlin native,能把kotin代码编译成本地可执行文件。就到kotlin的官方网站看了一下。觉得kotlin native确实很有潜力,能够零开销调用c代码,这比JNI要好很多。也许能把kotlin当做一个语法先进的c了。
      顺便说一下,我在2015年使用过一年的kotlin,用来做游戏服务器的开发,对kotlin的基本语法很熟悉了。如果kotlin能以很低的开销来做系统开发的话,这是我很乐意看到的。我前学了半年的swift,发现这货的运行开销很高,不是我想要的,现在有了kotlin native,我倒是想发掘一下,看看它究竟能干什么,希望他给的比我期望的更多。
      现在kotlin native的文档很少,基本是零文档,那没办法,想要探索的话只能是:动手!!!

    编译kotlin-native

    1. 从github下载kotlin native
    2. cd kotlin-native
    3. 下载依赖包:
      ./gradlew dependencies:update
    4. 编译
      ./gradlew dist

      至此,我们就得到了kotin的native编译器,它们在目录:./dist/bin。

    编写hello world

      kotlin-native自带了十来个例子,都是可以编译运行的,此刻,我们对kotlin的编译过程还不太熟悉,就先沿用例子中的编译方式。kotin-native本身是一个gradle项目,可以用idea直接打开这个目录,会自动识别项目类型。不要忘记安装kotin插件,这样idea才能识别kotlin的语法。如果你不使用idea,那你可以忽略它。

    1. 翻到kotlin-native/samples,复制socket目录,并命名为hello。
    2. 进入hello目录,保留build.gradle和main目录,删除其余文件。
    3. 修改hello/build.gradle如下,这里是告诉gradle要编译Hello.kt这个文件:

      apply plugin: 'konan'
      konanArtifacts {
       Hello {
      
       }
      }
      
    4. 删除hello/src/main/kotlin下的所有文件,在hello/src/main/kotlin下创建文件Hello.kt,内容如下,这程序只打印了两个字:
      import kotlinx.cinterop.*
      fun main(args: Array<String>) {
       println("Hello world")
      }
      
    5. 修改 kotlin-native/settings.gradle,添加一行include ‘:hello’
      include ':tensorflow'
      include ':concurrent'
      include ':hello'
      

    编译方法1:命令行编译

      上面的步骤中,我们编写了程序,并修改了主配置,添加了我们新建的项目。接下来,我们来编译这个程序。

    1. 打开命令行终端
    2. cd kotlin-native/samples/hello
    3. 执行 ../gradlew build
    4. 此时会打印一堆东西,耐心等待,如果你上面的步骤没有错误,这里最终会打印:

       BUILD SUCCESSFUL
      
       Total time: 20.522 secs
      

    编译方法2:从idea编译

    1. 右键点击:kotlin-native/samples/hello/build.gradle,选择run
    2. 观察控制台输出,如果出现如下提示,说明成功(注意:一定要有KtFile: Hello.kt这一行): 

       KtFile: Hello.kt
       :hello:build
      
       BUILD SUCCESSFUL
      
       Total time: 25.053 secs
      
    3. 如果没有KtFile: Hello.kt这一行,就需要给kotlin-native/samples/hello/build.gradle添加运行参数,方法是:
      1. 在idea右上角的“运行”图标的左侧,点击下拉选项,点击“edit configurations”,
      2. 在“Program arguments”后填写“build”。意思是告诉gradle执行build任务。
      3. 再次运行kotlin-native/samples/hello/build.gradle

    运行

      编译出来的文件位于:kotlin-native/samples/hello/build/konan/bin,直接在命令行执行它即可,结果如下:

        zhmt$ ./build/konan/bin/Hello.kexe
        Hello world
    

    至此,我们的第一个kotlin native程序顺利执行。



    展开全文
  • 希望此文可以成为能对Kotlin/Native开发者有价值的开发指南,同时该文也会解释使用该平台的预期机制。\u0026#xD;\u0026#xD;在本教程中,我们主要关注的是Kotlin/Native,我们只会粗略地介绍一下如何开发视频层。您.....
  • Kotlin/Native Kotlin/NativeKotlin的本地化构建工具,可以为Kotlin提供C的互操作性以及将Kotin开发应用编译成本地化的可执行程序。 Kotlin/Native 支持mac、linux、win32等多个平台,本文主要将以win32平台为主要...
  • 解读 Kotlin/Native 技术预览版
  • Kotlin/Native开发环境搭建 2020-03-23 00:39:09
    Kotlin/Native is a technology for compiling Kotlin code to native binaries, which can run without a virtual machine. It is an LLVM based backend for the Kotlin compiler and native implementation of t....
  • Kotlin/Native v0.3 发布,将 Kotlin 编译成机器码
  • Kotlin/Native尝试 2019-03-16 17:47:55
    Kotlin/Native尝试 在官网看到Kotlin/Native已经达到1.0 Beta版于是就去尝试了一下,结果发现坑还是挺多的。首先Kotlin/JVM很多库是用不了的,这个已经猜到了。官网说已经预先导入了 POSIX、 gzip、 OpenGL、 Metal...
  • Kotlin Native实战开发 2018-11-18 09:15:36
    Kotlin Native是一种将Kotlin源码编译成不需要任何VM支持的目标平台二进制数据的技术,编译后的二进制数据可以直接运行在目标平台上,它主要包含一个基于LLVM的后端编译器的和一个Kotlin本地运行时库。设计Kotlin ...
  • 当你还在死扣泛型语法的时候,别人的文章早就说了Kotlin/NativeKotlin1.3的新特性”。瞬间感觉自己out了,今天我们就说说这些时髦的东西,也许你能看到一些和别人不一样的东西哦。 前段时间你们的熊猫小哥哥(也...
  • Kotlin Native编程探索 2018-04-14 13:02:02
    Kotlin简介 Kotlin是JetBains开发一种基于JVM的新的编程语言。Kotlin可以编译成字节码运行在JVM上,与Java完美兼容,并在...Kotlin Native利用LLVM来将Kotlin代码编译成本地机器代码,使得Kotlin可以脱离JVM运行。...
  • Kotlin Native 详细体验,你想要的都在这儿
  • IDEA运行kotlin native 2018-11-27 23:41:45
    今天试了下kotlin native,好久没玩过这个玩意儿了。 然后建了一个kotlin native的工程 发现IDEA一直在说是多平台项目 Kotlin Multiplatform Projects are an experimental feature. 运行kotlin native程序 没有...
  • 跨平台一直是老生常谈的话题,cordova、ionic、react-native、weex、kotlin-native、flutter等跨平台框架的百花齐放,颇有一股推倒原生开发者的势头。本文将对当下跨平台移动开发的现状、实现原理、框架的选择等进行...
  • 上一篇文章我讲了用 @CName 这个神奇的注解,可以配置 Kotlin Native 函数在符号表中的名字,进而根据 Jni 静态绑定的规则来对应到 Java nat...
  • AppCode简介 AppCode是JetBrains公司出品的用于开发Mac OS X以及iOS应用程序的集成开发环境,能够支持Xcode项目的运行和调试功能,并为Swift和Objective-C提供广泛的技术支持。目前,AppCode只能运行在Mac OS X操作...
1 2 3 4 5 ... 20
收藏数 4,789
精华内容 1,915