手把手教你使用Kotlin Native無伺服器功能!
之前,我們都是通過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將來使用更多功能會很有幫助!
※EMC與IBM同時更新虛擬機備份軟體 助力虛擬化管理
※為AI而生 英特爾推出視覺處理器Myriad X
※VMware在VMworld 2017上公布了5件安全大事
※七夕你們收到了什麼禮物?3D列印的月亮夠不夠勁兒?
※程序員請注意:據調查企業更青睞具有開源開發經驗的人才
TAG:IT168企業級 |
※手把手教你做Syndicate
※手把手教你用Python庫Keras做預測
※手把手教你使用PowerShell繞過AppLocker
※手把手教你自釀世濤 Stout Mini mash
※手把手教你將YouTube上的流量引流到Pinterest
※TensorFlow手把手教你概率編程:TF Probability內置了開源教材,新手友好
※手把手教你NumPy來實現Word2vec
※手把手教你用Cloud AutoML做毒蜘蛛分類器
※GitHub 9K Star!Apollo作者手把手教你微服務配置中心之道
※手把手帶你寫Cover Letter,骨灰級教案呈上
※58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換
※手把手教您使用 Tunni線
※手把手教你搭建AlphaZero
※「攻略」如何玩好WhatsApp?手把手帶你玩轉WhatsApp
※手把手教你如何更換iPhone 6S的電池,送給iPhone 6S的忠實粉!
※手把手教你用Python進行Web抓取
※pandas創始人手把手教你利用Python進行數據分析
※NVIDIA線下交流會:手把手教你搭建TensorFlow&Caffe深度學習伺服器
※乾貨!手把手教你為FreeSync顯示器開啟G-Sync教程
※pandas 庫作者手把手教你 Python 數據分析