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
首先,要设置环境:
使用ssh登录机器:
$ vagrant ssh
直接测试,使用上传到Docker 的docker容器 :
如果要新的测试动作,只需运行:
输出结果如下:
OpenWhisk允许使用docker容器,并包含一个在动作调用时执行的二进制文件。二进制文件使用JSON字符串接收1个参数,并且需要返回一个JSON字符串。
首先是安装和配置kotlin native:
注意:最后一行可能导致错误,因为没有为编译器提供任何参数。
现在开始创建项目,初步设置如下:
使用gradle.properties指定kotlin-native的安装位置:
konan.home=/kotlin-native/dist
在src / main.kt文件夹中创建一个简单的main:
编译:
$ gradlew clean build
使用clean build的原因是文件修改之后,有时gradle不会重新编译文件。
由于在此没有使用JVM构建任何Java代码,所以这里使用C JSON库。
首先克隆或者是在git中创建一个子模块:
创建shell脚本将C代码编译成可以使用的库:
该脚本将创建一个LLVM格式的库 ,这是Kotlin Native使用的体系结构。
更新gradle脚本来编译C代码,并将其链接到程序中:
最后,我们需要为C代码添加一个定义文件,这样Kotlin可以为它创建和存根。
该文件应放在src / c_interop / Parson.def中:
检查一切是否正常:
生成文件:
-
build/clang/parson.bc - 这是链接库。
-
build/konan/interopStubs/genParsonInteropStubs/Parson/Parson.kt - 这是用于调用库的Kotin存根。
使用parson来修改程序:
为了能够调用Parson,创建Kotlin/Native互操作性功能:
再次构建程序后,我们可以这样使用:
现在,我们需要为它创建一个docker。OpenWhisk具有基于alpine linux的docker base image。任何人都可以通过docker base image来制作Kotlin Native Serverless功能。
image的docker文件是:
因为构建需要使用gradle,所以选择了openjdk 8,使用OpenWhisk提供的actionProxy python3脚本来创建一个可以通过HTTP服务于操作的flask服务器。操作放在folder /action中,并命名为exec。
为fibonacci功能创建一个docker image:
最后,创建一个简单的脚本来发布docker hub中的镜像:
以相同的方式将文件添加到docker中,运行该命令来更新映像。
最后将所有内容汇总在一起:
这是学习Kotlin Native很好的例子,对Kotlin将来使用更多功能会很有帮助!