在Predix上運行Scala的HelloWorld

在Predix上運行Scala的HelloWorld

Scala語言的名稱來自於“可伸展的語言”,Scala 是一種函數對象混合的語言。它可以運行在Java平臺上,Scala程序會被編譯爲JVM的字節碼。它們的執行期性能通常與Java程序一致。Scala代碼可以調用Java方法,訪問Java字段,繼承自Java類和實現Java接口。
Scala是一種把面向對象和函數式編程理念加入到靜態類型語言中的混血兒。Scala的許多不同的方面都展現了面向對象和函數式編程的熔合。在可伸展性方面,這兩種編程風格具有互補的力量。Scala的函數式編程使得它便於快速地從簡單的碎片開始建立一些有趣的東西。它的面向對象特性又使它便於構造大型系統並使它們適應於新的需求。Scala中這兩種風格的組合使得它有可能表達新的編程模式和控件抽象。併產生了易讀、簡潔的編程風格。由於它良好的延展性,用Scala編程將會有很多的樂趣。

下面將介紹如果把一個Scala的HelloWorld程序部署運行在Predix平臺上.

首先準備好一個Scala應用, 可以參考下面這個模板使用git clone複製到本地:

$ git clone https://github.com/noru/predix-scala-helloworld.git

注意, 上面的模板代碼中的manifest.yml指定了Scala在Predix上使用的buildpack爲:

https://github.com/heroku/heroku-buildpack-scala.git

這是一個第三方提供的buildpack, 使用中需要遵循一些規定. 比如, 它會默認執行sbt compile stage來打包, 請保證自己應用的build.sbt包含這個任務. 或者像示例代碼中, 使用sbt-native-packager(https://github.com/sbt/sbt-native-packager)來自動包含一個stage任務, 同時在打包結果中也會自動包含一個啓動腳本, 一般在target/universal/stage/bin/文件夾下面, 與應用程序同名. 這個腳本就可以作爲啓動命令, 放在manifest.yml或者Procfile文件中:

  // in manifest.yml
  - comment: target/universal/stage/bin/hello-scala

  // or in Procfile
  web: target/universal/stage/bin/hello-scala

另外一種發佈方式是, 利用Scala與Java的無縫連接, 直接使用java buildpack. 這種方式需要提前打包好你的應用程序. 本文裏不再詳述.

推送hello-scala應用到Predix上

和推送其他應用一樣,我們用cf push就可以完成應用的推送. 由於模板中已經有了manifest.yml, 所以不必指定任何參數.

$ cd hello-scala
$ cf push

查看hello-scala應用

當部署完成hello-scala應用後,我們就可以從cf push命令的輸出中獲取該應用的URL。如下面註釋標出的地方:


... 其他命令行輸出 ...

requested state: started
instances: 1/1
usage: 512M x 1 instances
urls: hello-scala.run.aws-jp01-pr.ice.predix.io // <-- 訪問APP的url
last uploaded: Sun Jul 2 05:25:14 UTC 2017
stack: cflinuxfs2
buildpack: https://github.com/heroku/heroku-buildpack-scala.git

     state     since                    cpu    memory           disk             details
#0   running   2017-07-02 01:26:24 PM   0.0%   281.7M of 512M   164.3M of 350M

在瀏覽器中鍵入這個地址, 就能夠看到我們Scala程序的輸出了:

hello-scala

小結

Scala運行於JVM, 併兼容現有的Java程序, 甚至還有.NET平臺的實現. 得益於此, Scala程序可以方便的部署運行在各種環境中, 在Predix中也不例外, 只需要指定一個合適的buildpack. 喜歡面向對象與函數式變成相結合的獨特魅力的開發人員, 可以在Predix平臺上輕鬆開始工業互聯網應用的開發.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章