前言:
而今大家对“netbeans导入文件夹”可能比较关怀,朋友们都想要了解一些“netbeans导入文件夹”的相关资讯。那么小编同时在网上汇集了一些对于“netbeans导入文件夹””的相关知识,希望大家能喜欢,小伙伴们一起来学习一下吧!SimpleLanguage 简介
我们发现,开始实现您自己的语言的最简单方法是扩展现有语言,例如 SimpleLanguage。 SimpleLanguage是一种使用Language API构建的演示语言。SimpleLanguage 项目展示了如何使用语言 API 编写您自己的语言。它旨在使用大多数可用的Truffle 语言实现框架(以下简称“Truffle”)功能,并通过内联源文档广泛记录它们的使用。
首先,确保Maven3和 GraalVM 在您的系统中可用。
使用以下命令克隆 SimpleLanguage 存储库:
git clone
JAVA_HOME使用 Linux 的命令行 shell 将环境变量和环境变量设置PATH为 GraalVM 主目录和 bin 文件夹:
export JAVA_HOME=/path/to/graalvmexport PATH=/path/to/graalvm/bin:$PATH
对于 macOS,请使用:
export JAVA_HOME=/path/to/graalvm/Contents/Homeexport PATH=/path/to/graalvm/Contents/Home/bin:$PATH
原文博客 wuxiongwei.com
mvn package从 SimpleLanguage 文件夹执行以构建语言。该命令还在目录中构建一个slnative可执行文件simplelanguage/native和一个sl-component.jar语言组件,稍后可以使用GraalVM Updater工具将其安装到 GraalVM 中。请验证该native-image插件在您的 GraalVM 发行版中是否可用,以避免构建失败:
gu list gu install native-image
您可以通过运行以下命令在打包阶段禁用 SimpleLanguage 本机可执行文件构建:
export SL_BUILD_NATIVE=falsemvn package
在 SimpleLanguage 根文件夹中运行:
./sl ./language/tests/HelloWorld.sl
SimpleLanguage 演示语言根据通用许可许可证(UPL) 获得许可。
IDE 设置
Truffle 框架提供了与语言无关的基础设施,通过提供额外的 API 来实现标准 IDE 功能。如果您想试验您的语言并获得 IDE 的好处,请考虑导入 SimpleLanguage 作为示例。
原文博客 wuxiongwei.com
Eclipse
SimpleLanguage 教学项目已经使用 Eclipse Neon.2 Release 4.6.2 和 Eclipse Oxygen.3A 进行了测试。要将项目文件夹导入所需的 Eclipse 环境:
使用新工作区打开 Eclipse。从 Eclipse 市场(Help -> Eclipse Marketplace)安装m2e和插件。m2e-apt最后,SimpleLanguage从 File -> Import -> Maven -> Existing Maven Projects -> 浏览到 SimpleLanguage 文件夹 -> Finish 导入项目。NetBeans
NetBeans 为调试任意语言提供 GUI 支持。要将 SimpleLanguage 上传到 NetBeans 界面,请执行文件 -> 打开项目 -> 选择simplelanguage文件夹 -> 选中打开所需项目 -> 打开项目。
IntelliJ IDEA
SimpleLanguage 项目已使用 IntelliJ IDEA 进行了测试。打开 IntelliJ IDEA,然后从主菜单栏中选择 File -> Open -> Navigate to 并选择simplelanguage文件夹 -> 按 OK。所有依赖项都将自动包含在内。
运行 SimpleLanguage
要运行 SimpleLanguage 源文件,请执行:
原文博客 wuxiongwei.com
./sl language/tests/HelloWorld.sl
要查看已编译函数的汇编代码,请运行:
./sl -disassemble language/tests/SumPrint.sl转储图
要调查性能问题,我们推荐使用Ideal Graph Visualizer (IGV) ,它是构建在Oracle GraalVM 企业版之上的任何语言实施者的必备工具。它可以在Oracle 技术网下载页面上单独下载。
解压下载的包,进入bin目录,启动IGV:
cd idealgraphvisualizer/binidealgraphvisualizer
从 SimpleLanguage 根文件夹执行以下命令将图形转储到 IGV:
./sl -dump language/tests/SumPrint.sl调试
要使用 Java 调试器开始调试 SimpleLanguage 实现,请将-debug选项传递给程序的命令行启动器:
./sl -debug language/tests/HelloWorld.sl
然后在端口 8000 上附加一个 Java 远程调试器(如 Eclipse)。
GraalVM 的 SimpleLanguage 组件
使用Truffle 框架实现的语言可以打包为组件,以后可以使用GraalVM Updater工具将其安装到 GraalVM 中。mvn package在 SimpleLanguage 文件夹中运行也会构建一个sl-component.jar. 该文件是 GraalVM 的 SimpleLanguage 组件,可以通过运行以下命令进行安装:
gu -L install /path/to/sl-component.jarSimpleLanguage 原生图像
使用 Truffle 构建的语言可以使用Native Image进行 AOT 编译。mvn package在 SimpleLanguage 文件夹中运行还会slnative在该目录中构建一个可执行文件native。该可执行文件是作为单个原生应用程序的完整 SimpleLanguage 实现,不需要 GraalVM 即可执行 SimpleLanguage 代码。除此之外,与在 GraalVM 上运行相比,使用本机可执行文件的一大优势是启动时间大大加快,如下所示:
原文博客 wuxiongwei.com
time ./sl language/tests/HelloWorld.sl== running on org.graalvm.polyglot.Engine@2db0f6b2Hello World! real 0m0.405suser 0m0.660ssys 0m0.108s time ./native/slnativelanguage/tests/HelloWorld.sl== running on org.graalvm.polyglot.Engine@7fd046f06898Hello World! real 0m0.004suser 0m0.000ssys 0m0.000s
该片段显示了使用启动器脚本定时执行“Hello World”程序,该sl启动器脚本使用 Native Image 在 GraalVM 上运行 SimpleLanguage。我们可以看到,在 GraalVM 上运行时,执行需要 405 毫秒。由于我们的 SimpleLanguage 程序只执行一条打印语句,我们可以得出结论,几乎所有这些时间都花在了启动 GraalVM 和初始化语言本身上。当使用本机可执行文件时,我们看到执行只需要 4 毫秒,这表明启动速度比在 GraalVM 上运行快两个数量级。
有关该native-image工具的更多信息,请考虑阅读参考手册。
禁用 SimpleLanguage Native Image Build
通过 Maven 构建本机可执行文件附加到 Mavenpackage阶段。SL_BUILD_NATIVE由于本机可执行文件构建可能需要一些时间,我们通过将环境变量设置为如下方式提供跳过此构建的选项false:
export SL_BUILD_NATIVE=falsemvn package...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building simplelanguage-graalvm-native[INFO] ------------------------------------------------------------------------[INFO][INFO] --- exec-maven-plugin:1.6.0:exec (make_native) @ simplelanguage-graalvm-native ---Skipping the native image build because SL_BUILD_NATIVE is set to false.[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------...使用最新(开发)版本的编译器运行 SimpleLanguage
要使用 Graal 编译器的开发版本运行 SimpleLanguage,我们必须使用该编译器构建 GraalVM。克隆graal存储库 () 并按照vm/README.md文件中的说明构建 GraalVM。
完成后,指向JAVA_HOME新建的 GraalVM 并继续正常构建和运行 SimpleLanguage。
使用命令行运行 SimpleLanguage
执行 SimpleLanguage 代码通常使用脚本来完成,该sl脚本设置必要的命令行,具体取决于JAVA_HOME指向 GraalVM 还是其他 JVM 安装。以下小节描述了这两种情况的命令行。
使用 GraalVM 作为 JAVA_HOME 运行 SimpleLanguage
假设JAVA_HOME指向 GraalVM 安装并且当前工作目录是该simplelanguage目录,要运行 SimpleLanguage 应该执行以下命令:
$JAVA_HOME/bin/java \ -cp launcher/target/launcher-22.1.0-SNAPSHOT.jar \ -Dtruffle.class.path.append=language/target/simplelanguage.jar \ com.oracle.truffle.sl.launcher.SLMain language/tests/Add.sl
简而言之,我们将启动器 JAR 放在类路径上并执行其主类,但我们通过使用-Dtruffle.class.path.append选项通知 GraalVM SimpleLanguage 的存在并向其提供胖语言 JAR 的路径。将语言放在单独的类路径上可确保语言实现与其嵌入上下文(在本例中为启动器)之间的强分离。
禁用类路径分离
笔记!这应该只在开发过程中使用。
出于开发目的,禁用类路径分离并在应用程序类路径上启用语言实现(例如,用于测试语言的内部)很有用。
Maven Central 上的 Language API JAR 导出其模块信息中的所有 API 包。–upgrade-module-path将此选项与此 JAR 一起应用-Dgraalvm.locatorDisabled=true以导出语言 API 包:
-Dgraalvm.locatorDisabled=true --module-path=<yourModulePath>:${truffle.dir} --upgrade-module-path=${truffle.dir}/truffle-api.jar
用于导出语言 API 包的示例 POM–upgrade-module-path可以在Simple Language POM.xml文件中找到。
注意:禁用定位器会有效地从模块路径中删除所有已安装的语言,因为定位器还会为这些语言创建类加载器。要继续使用内置语言,请将模块路径指向所有需要的语言主目录(例如,$GRAALVM/languages/js),将它们添加到模块路径中。
其他 JVM 实现
与包含运行使用Truffle实现的语言所需的所有依赖项的 GraalVM 不同,其他 JVM 实现需要额外的 JAR 才能出现在类路径上。这些是 Maven Central 提供的 Language API 和 GraalVM SDK JAR。
假设JAVA_HOME指向一个股票 JDK 安装,并且当前工作目录是该simplelanguage目录,并且该目录中存在 Language API 和 GraalVM SDK JAR,可以使用以下命令执行 SimpleLanguage:
$JAVA_HOME/bin/java \ -cp graal-sdk-22.1.0.jar:truffle-api-22.1.0.jar:launcher/target/launcher-22.1.0-SNAPSHOT.jar:language/target/simplelanguage.jar \ com.oracle.truffle.sl.launcher.SLMain language/tests/Add.sl
原文博客 wuxiongwei.com
标签: #netbeans导入文件夹