tqu*_*rat 5 javascript java code-generation jsr223
我需要从 Java 程序内部生成 JavaScript (ECMAScript) 代码。为此,我正在寻找类似JavaPoet 的东西,但生成 JavaScript 作为输出。
我不能使用将另一种语言翻译成 JavaScript 的这些转译器中的一个(例如 GWT 不是答案),也不能使用从语法树生成 JavaScript 的工具(只有当有一个库可以帮助构建该语法树时......)。
像已经提到的 JavaPoet 之类的东西将是答案,因为它在内存使用和代码大小方面的占用空间都非常小。
生成的 JavaScript 代码的目标是 Java/JSR 223 (Nashorn),如果这相关的话。
指定要求:JavaPoet 使用此代码
MethodSpec main = MethodSpec.methodBuilder("main")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(void.class)
.addParameter(String[].class, "args")
.addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet!")
.build();
TypeSpec helloWorld = TypeSpec.classBuilder("HelloWorld")
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
.addMethod(main)
.build();
JavaFile javaFile = JavaFile.builder("com.example.helloworld", helloWorld)
.build();
javaFile.writeTo(System.out);
Run Code Online (Sandbox Code Playgroud)
创建此 Java 代码
package com.example.helloworld;
public final class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, JavaPoet!");
}
}
Run Code Online (Sandbox Code Playgroud)
(我已经从 JavaPoet 项目网站复制了示例。)
我想要类似的东西来创建 JavaScript 代码。
据我目前所知,StringBuilder 实际上最接近这个要求。首先生成 Java 以将其转换为 JavaScript 应该可以工作,但对我来说看起来很奇怪 - 并且是全部,但不是真正的轻量级。与首先生成 Kotlin 或 Ceylon 代码,然后将其转换为 JavaScript 相同。