JavaScript编译器
概述
JavaScript编译器将JavaScript源代码转换为Java类文件。生成的Java类文件可以稍后加载和执行,提供了一种方便的方法来传输JavaScript,同时避免了翻译成本。
请注意,shell中可用的顶级函数(例如print)在编译的脚本在shell之外运行时不可用。
编译器命令行
java org.mozilla.javascript.tools.jsc.Main
[options] file1.js [file2.js...]
其中 options 是:
-extends
java-class-name
指定从传入的JavaScript源文件生成的Java类应扩展Java类 java-class-name。源文件中的每个全局函数都会成为生成类的方法,并覆盖基类中具有相同名称的任意方法。
-implements
java-intf-name
指定从传入的JavaScript源文件生成的Java类应实现Java接口 java-intf-name。源文件中的每个全局函数都会成为生成类的方法,并实现接口中具有相同名称的任意方法。
`-debug
-g`
指定应生成调试信息。不能与优化级别大于零的optLevel同时使用。
-main-method-class
className
指定用于主方法实现的类名称。该类必须具有与public static void main(Script sc, String[] args)
匹配的方法。
-nosource
不将源代码保存在类文件中。以这种方式编译的函数和脚本无法被反编译。此选项可用于避免分发源代码或仅为节省生成类文件中的空间。
-o
outputFile
将类文件写入 outputFile,其文件名应以.class结尾且必须是一个可写的文件名。
-d
outputDirectory
将类文件写入 outputDirectory。
-opt
optLevel
以级别 optLevel 进行优化,该级别必须是介于-1到9之间的整数。有关更多详细信息,请参见优化。如果 optLevel 大于零,则不得指定-debug
。
-package
packageName
指定将类生成到的包。字符串 packageName 必须由有效的标识符字符组成,或者由点分隔。
-version
versionNumber
指定编译时使用的语言版本。字符串_versionNumber_必须为100、110、120、130、140、150、160或170之一。有关语言版本的更多信息,请参见JavaScript语言版本。
示例
$ cat test.js
java.lang.System.out.println("你好,妈妈!");
$ java org.mozilla.javascript.tools.jsc.Main test.js
$ ls *.class
test.class
$ java test
你好,妈妈!
$ java org.mozilla.javascript.tools.jsc.Main -extends java.applet.Applet
-implements java.lang.Runnable NervousText.js