快捷搜索:  汽车  科技

kotlin 数据类使用场景(小白必读超详细Kotlin)

kotlin 数据类使用场景(小白必读超详细Kotlin)OpenWhisk允许使用docker容器,并包含一个在动作调用时执行的二进制文件。二进制文件使用JSON字符串接收1个参数,并且需要返回一个JSON字符串。输出结果如下:$ vagrant ssh直接测试,使用上传到Docker 的docker容器 :如果要新的测试动作,只需运行:

之前,我们都是通过Apache OpenWhisk 来使用Kotlin Serverless功能。为什么会是这种情况呢?这是因为Kotlin Native应用程序是不能在JVM中运行的,必须依靠OpenWhisk、Vagrant和Virtual Box等等。

Kotlin Native Serverless

首先,要设置环境:

kotlin 数据类使用场景(小白必读超详细Kotlin)(1)

使用ssh登录机器:

$ vagrant ssh

直接测试,使用上传到Docker 的docker容器 :

kotlin 数据类使用场景(小白必读超详细Kotlin)(2)

如果要新的测试动作,只需运行:

kotlin 数据类使用场景(小白必读超详细Kotlin)(3)

输出结果如下:

kotlin 数据类使用场景(小白必读超详细Kotlin)(4)

OpenWhisk允许使用docker容器,并包含一个在动作调用时执行的二进制文件。二进制文件使用JSON字符串接收1个参数,并且需要返回一个JSON字符串。

首先是安装和配置kotlin native:

注意:最后一行可能导致错误,因为没有为编译器提供任何参数。

现在开始创建项目,初步设置如下:

kotlin 数据类使用场景(小白必读超详细Kotlin)(5)

使用gradle.properties指定kotlin-native的安装位置:

konan.home=/kotlin-native/dist

在src / main.kt文件夹中创建一个简单的main:

kotlin 数据类使用场景(小白必读超详细Kotlin)(6)

编译:

$ gradlew clean build

使用clean build的原因是文件修改之后,有时gradle不会重新编译文件。

kotlin 数据类使用场景(小白必读超详细Kotlin)(7)

由于在此没有使用JVM构建任何Java代码,所以这里使用C JSON库。

首先克隆或者是在git中创建一个子模块:

kotlin 数据类使用场景(小白必读超详细Kotlin)(8)

创建shell脚本将C代码编译成可以使用的库:

kotlin 数据类使用场景(小白必读超详细Kotlin)(9)

该脚本将创建一个LLVM格式的库 ,这是Kotlin Native使用的体系结构。

更新gradle脚本来编译C代码,并将其链接到程序中:

kotlin 数据类使用场景(小白必读超详细Kotlin)(10)

kotlin 数据类使用场景(小白必读超详细Kotlin)(11)

最后,我们需要为C代码添加一个定义文件,这样Kotlin可以为它创建和存根。

该文件应放在src / c_interop / Parson.def中:

kotlin 数据类使用场景(小白必读超详细Kotlin)(12)

检查一切是否正常:

kotlin 数据类使用场景(小白必读超详细Kotlin)(13)

生成文件:

  • build/clang/parson.bc - 这是链接库。

  • build/konan/interopStubs/genParsonInteropStubs/Parson/Parson.kt - 这是用于调用库的Kotin存根。

使用parson来修改程序:

kotlin 数据类使用场景(小白必读超详细Kotlin)(14)

kotlin 数据类使用场景(小白必读超详细Kotlin)(15)

kotlin 数据类使用场景(小白必读超详细Kotlin)(16)

为了能够调用Parson,创建Kotlin/Native互操作性功能:

再次构建程序后,我们可以这样使用:

kotlin 数据类使用场景(小白必读超详细Kotlin)(17)

现在,我们需要为它创建一个docker。OpenWhisk具有基于alpine linux的docker base image。任何人都可以通过docker base image来制作Kotlin Native Serverless功能。

image的docker文件是:

kotlin 数据类使用场景(小白必读超详细Kotlin)(18)

因为构建需要使用gradle,所以选择了openjdk 8,使用OpenWhisk提供的actionProxy python3脚本来创建一个可以通过HTTP服务于操作的flask服务器。操作放在folder /action中,并命名为exec。

为fibonacci功能创建一个docker image:

kotlin 数据类使用场景(小白必读超详细Kotlin)(19)

最后,创建一个简单的脚本来发布docker hub中的镜像:

kotlin 数据类使用场景(小白必读超详细Kotlin)(20)

以相同的方式将文件添加到docker中,运行该命令来更新映像。

最后将所有内容汇总在一起:

kotlin 数据类使用场景(小白必读超详细Kotlin)(21)

这是学习Kotlin Native很好的例子,对Kotlin将来使用更多功能会很有帮助!

猜您喜欢: