Rhino

Rhino 是完全用 Java 编写的 JavaScript 的开源实现。「Rhino is an open-source implementation of JavaScript written entirely in Java」

  • 所有者: mozilla/rhino
  • 平台: Linux,Mac,Windows,BSD
  • 許可證: Other
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Rhino: JavaScript in Java

Rhino is an implementation of JavaScript in Java.

License

Rhino is licensed under the MPL 2.0.

Releases

The current release is Rhino 1.7.14. Please see the Release Notes.

Compatibility table which shows which advanced JavaScript
features from ES6, and ES2016+ are implemented in Rhino.

GitHub Action Status

Documentation

Information for script builders and embedders:

Archived

JavaDoc for all the APIs:

https://javadoc.io/doc/org.mozilla/rhino

Building

How to Build

Rhino builds with Gradle. Here are some useful tasks:

./gradlew jar

Build and create Rhino jar in the buildGradle/libs directory.

git submodule init
git submodule update
./gradlew test

Build and run all the tests, including the official ECMAScript Test Suite.
See Running tests for more detailed info about running tests.

./gradlew testBenchmark

Build and run benchmark tests.

Releasing and publishing new version

  1. Ensure all tests are passing
  2. Remove -SNAPSHOT from version in gradle.properties in project root folder
  3. Create file gradle.properties in $HOME/.gradle folder with following properties. Populate them with maven repo credentials and repo location.
mavenUser=
mavenPassword=
mavenSnapshotRepo=
mavenReleaseRepo=
  1. Run Gradle task to publish artifacts to Maven Central.
./gradlew publish
  1. Increase version and add -SNAPSHOT to it in gradle.properties in project root folder.
  2. Push gradle.properties to GitHub

Running

Rhino can run as a stand-alone interpreter from the command line:

java -jar buildGradle/libs/rhino-1.7.12.jar -debug -version 200
Rhino 1.7.9 2018 03 15
js> print('Hello, World!');
Hello, World!
js>

There is also a "rhino" package for many Linux distributions as well as Homebrew for the Mac.

You can also embed it, as most people do. See below for more docs.

Java 16 and later

If you are using a modular JDK that disallows the reflective access to
non-public fields (16 and later), you may need to configure the JVM with the
--add-opens
option to authorize the packages that your scripts shall use, for example:

--add-opens java.desktop/javax.swing.table=ALL-UNNAMED

Issues

Most issues are managed on GitHub:

https://github.com/mozilla/rhino/issues

Contributing PRs

To submit a new PR, please use the following process:

  • Ensure that your entire build passes "./gradlew check". This will include
    code formatting and style checks and runs the tests.
  • Please write tests for what you fixed, unless you can show us that existing
    tests cover the changes. Use existing tests, such as those in
    "testsrc/org/mozilla/javascript/tests", as a guide.
  • If you fixed ECMAScript spec compatibility, take a look at test262.properties and see
    if you can un-disable some tests.
  • Push your change to GitHub and open a pull request.
  • Please be patient as Rhino is only maintained by volunteers and we may need
    some time to get back to you.
  • Thank you for contributing!

Code Formatting

Code formatting was introduced in 2021. The "spotless" plugin will fail your
build if you have changed any files that have not yet been reformatted.
Please use "spotlessApply" to reformat the necessary files.

If you are the first person to touch a big file that spotless wants to make
hundreds of lines of changes to, please try to put the reformatting changes
alone into a single Git commit so that we can separate reformatting changes
from more substantive changes.

Warning: If you build with Java 16 or later, you need to apply a
workaround for a "spotless" issue. Otherwise, the task will be disabled
and your PR may fail.

The following must be added to your gradle.properties.

org.gradle.jvmargs=--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
 --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \
 --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \
 --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
 --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED

For more details, see https://github.com/diffplug/spotless/issues/834#issuecomment-819118761

More Help

The Google group is the best place to go with questions:

https://groups.google.com/forum/#!forum/mozilla-rhino

主要指標

概覽
名稱與所有者mozilla/rhino
主編程語言JavaScript
編程語言Java (語言數: 7)
平台
許可證Other
所有者活动
創建於2011-05-12 18:47:26
推送於2025-06-01 22:28:16
最后一次提交2025-05-28 17:18:51
發布數47
最新版本名稱Rhino1_8_0_Release (發布於 )
第一版名稱Rhino140R3_RELEASE (發布於 )
用户参与
星數4.4k
關注者數173
派生數885
提交數4.6k
已啟用問題?
問題數785
打開的問題數223
拉請求數758
打開的拉請求數51
關閉的拉請求數225
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?