在Predix上运行Scala的HelloWorld

2023-10-12 22:20
文章标签 运行 scala helloworld predix

本文主要是介绍在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 Procfileweb: 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.gitstate     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平台上轻松开始工业互联网应用的开发.

这篇关于在Predix上运行Scala的HelloWorld的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/198834

相关文章

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5