Scala 3 体验 NativeImage ,基于sbt + native image 插件

Scala3是最新一代的Scala, 经过重新设计的API,让Scala3可玩性大大提升,跟Python语法非常接近了。但是性能更好。

重点不是这个,我们分享一下如何用sbt创建一个scala 3的项目,然后编译为机器原生镜像 nativeImage

我的机器是macos 12

安装Scala3我是通过cs 工具,安装了cs工具,执行cs setup,它就会把各种需要的东西都装好

先用cs工具装sbt,我执行 cs install sbt

装了sbt,我们就可以创建项目了

我们执行 sbt new scala/scala3.g8

 


创建一个scala3的新项目,然后我们取名为 meo1

我们进入到项目目录cd meo1

注意,我们需要建立一个配置文件,项目的文件路径为:project/plugins.sbt

内容如下

addSbtPlugin("org.scalameta" % "sbt-native-image" % "0.3.1")

 

 

 

然后我们修改build.sbt也就是项目的根目录下面的构建文件,在.settings上面加入


  .enablePlugins(NativeImagePlugin)


最终的构建文件像这样


val scala3Version = "3.1.3"


lazy val root = project
.in(file("."))
.enablePlugins(NativeImagePlugin)
.settings(
name := "meo1",
version := "0.1.0-SNAPSHOT",


scalaVersion := scala3Version,


libraryDependencies += "org.scalameta" %% "munit" % "0.7.29" % Test
)
接着我们运行sbt命令
进入之后,我们执行nativeImage
编译如果没报错,你最终会得到一个执行文件,在target/native-image目录下面
cd target/native-image 运行应用程序
$ ./meo1
Hello world!
 i will delete your http msg
I was compiled by Scala 3. :)

$ otool -L ./meo1
./meo1:
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1858.112.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.100.3)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1858.112.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

 

分类: 默认 标签: 发布于: 2022-06-30 10:51:41, 更新于: 2022-06-30 10:53:23