加入CODE CHINA

· 不限速    · 不限空间    · 不限人数    · 私仓免费

免费加入
README.md

Rhino: JavaScript in Java

Rhino

Rhino is an implementation of JavaScript in Java.

License

Rhino is licensed under the MPL 2.0.

Releases

Rhino 1.7R5 January 29, 2015
Rhino 1.7.6 April 15, 2015
Rhino 1.7.7 June 17, 2015
Rhino 1.7.7.1 February 2, 2016
Rhino 1.7.7.2 August 24, 2017
Rhino 1.7.8 January 22, 2018
Rhino 1.7.9 March 15, 2018
Rhino 1.7.10 April 9, 2018
Rhino 1.7.11 May 30, 2019
Rhino 1.7.12 January 13, 2020
Rhino 1.7.13 September 2, 2020

Release Notes for recent releases.

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

Mozilla

Documentation

Information for script builders and embedders:

https://developer.mozilla.org/en-US/docs/Rhino_documentation

JavaDoc for all the APIs:

http://mozilla.github.io/rhino/javadoc/index.html

More resources if you get stuck:

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Community

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.

./gradlew test -Dquick

The tests in Test262Suite and MozillaSuiteTest are run 3 times by default (at differing optimization levels). The quick parameter can be used to only run them once.

It is also possible to limit the Test262Suite to 1 run by setting the environment variable TEST_262_OPTLEVEL to for example -1.

./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.

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.

More Help

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

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

项目简介

🚀 Github 镜像仓库 🚀

源项目地址

https://github.com/mozilla/rhino

发行版本 13

Rhino 1.7.13

全部发行版

贡献者 94

全部贡献者

开发语言

  • C++ 53.0 %
  • Java 34.8 %
  • JavaScript 9.8 %
  • C 1.0 %
  • Perl 0.9 %