當前位置:
首頁 > 知識 > 手把手教你使用Kotlin Native無伺服器功能!

手把手教你使用Kotlin Native無伺服器功能!

之前,我們都是通過Apache OpenWhisk 來使用Kotlin Serverless功能。為什麼會是這種情況呢?這是因為Kotlin Native應用程序是不能在JVM中運行的,必須依靠OpenWhisk、Vagrant和Virtual Box等等。

Kotlin Native Serverless

首先,要設置環境:

手把手教你使用Kotlin Native無伺服器功能!

使用ssh登錄機器:

$ vagrant ssh

直接測試,使用上傳到Docker 的Docker容器 :

手把手教你使用Kotlin Native無伺服器功能!

如果要新的測試動作,只需運行:

手把手教你使用Kotlin Native無伺服器功能!

輸出結果如下:

手把手教你使用Kotlin Native無伺服器功能!

OpenWhisk允許使用docker容器,並包含一個在動作調用時執行的二進位文件。二進位文件使用JSON字元串接收1個參數,並且需要返回一個JSON字元串。

首先是安裝和配置kotlin native:

手把手教你使用Kotlin Native無伺服器功能!

注意:最後一行可能導致錯誤,因為沒有為編譯器提供任何參數。

現在開始創建項目,初步設置如下:

手把手教你使用Kotlin Native無伺服器功能!

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

konan.home=/kotlin-native/dist

在src / main.kt文件夾中創建一個簡單的main:

手把手教你使用Kotlin Native無伺服器功能!

編譯:

$ gradlew clean build

使用clean build的原因是文件修改之後,有時gradle不會重新編譯文件。

手把手教你使用Kotlin Native無伺服器功能!

由於在此沒有使用JVM構建任何Java代碼,所以這裡使用C JSON庫。

首先克隆或者是在git中創建一個子模塊:

手把手教你使用Kotlin Native無伺服器功能!

創建shell腳本將C代碼編譯成可以使用的庫:

手把手教你使用Kotlin Native無伺服器功能!

該腳本將創建一個LLVM格式的庫 ,這是Kotlin Native使用的體系結構。

更新gradle腳本來編譯C代碼,並將其鏈接到程序中:

手把手教你使用Kotlin Native無伺服器功能!

手把手教你使用Kotlin Native無伺服器功能!

最後,我們需要為C代碼添加一個定義文件,這樣Kotlin可以為它創建和存根。

該文件應放在src / c_interop / Parson.def中:

手把手教你使用Kotlin Native無伺服器功能!

檢查一切是否正常:

手把手教你使用Kotlin Native無伺服器功能!

生成文件:

  • build/clang/parson.bc - 這是鏈接庫。

  • build/konan/interopStubs/genParsonInteropStubs/Parson/Parson.kt - 這是用於調用庫的Kotin存根。

使用parson來修改程序:

手把手教你使用Kotlin Native無伺服器功能!

手把手教你使用Kotlin Native無伺服器功能!

手把手教你使用Kotlin Native無伺服器功能!

為了能夠調用Parson,創建Kotlin/Native互操作性功能:

再次構建程序後,我們可以這樣使用:

手把手教你使用Kotlin Native無伺服器功能!

現在,我們需要為它創建一個docker。OpenWhisk具有基於alpine linux的docker base image。任何人都可以通過docker base image來製作Kotlin Native Serverless功能。

image的docker文件是:

手把手教你使用Kotlin Native無伺服器功能!

因為構建需要使用gradle,所以選擇了openjdk 8,使用OpenWhisk提供的actionProxy python3腳本來創建一個可以通過HTTP服務於操作的flask伺服器。操作放在folder /action中,並命名為exec。

為fibonacci功能創建一個docker image:

手把手教你使用Kotlin Native無伺服器功能!

最後,創建一個簡單的腳本來發布docker hub中的鏡像:

手把手教你使用Kotlin Native無伺服器功能!

以相同的方式將文件添加到docker中,運行該命令來更新映像。

最後將所有內容匯總在一起:

手把手教你使用Kotlin Native無伺服器功能!

這是學習Kotlin Native很好的例子,對Kotlin將來使用更多功能會很有幫助!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

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 數據分析