README

changeset 3
da1e581c933b
child 775
267e9e895282
equal deleted inserted replaced
2:6031a0bc0ae2 3:da1e581c933b
1 - What is Nashorn?
2
3 Nashorn is a runtime environment for programs written in ECMAScript 5.1
4 that runs on top of JVM.
5
6 - How to find out more about ECMAScript 5.1?
7
8 The specification can be found at
9
10 http://www.ecma-international.org/publications/standards/Ecma-262.htm
11
12 - How to checkout sources of Nashorn project?
13
14 Nashorn project uses Mercurial source code control system. You can
15 download Mercurial from http://mercurial.selenic.com/wiki/Download
16
17 Information about the forest extension can be found at
18
19 http://mercurial.selenic.com/wiki/ForestExtension
20
21 and downlaoded using
22
23 hg clone https://bitbucket.org/gxti/hgforest
24
25 You can clone Nashorn Mercurial forest using this command:
26
27 hg fclone http://hg.openjdk.java.net/nashorn/jdk8 nashorn~jdk8
28
29 To update your copy of the forest (fwith the latest code:
30
31 (cd nashorn~jdk8 ; hg fpull)
32
33 Or just the nashorn subdirectory with
34
35 (cd nashorn~jdk8/nashorn ; hg pull -u)
36
37 To learn about Mercurial in detail, please visit http://hgbook.red-bean.com.
38
39 - How to build?
40
41 To build Nashorn, you need to install JDK 8. You may use the Nashorn
42 forest build (recommended) or down load from java.net. You will need to
43 set JAVA_HOME environmental variable to point to your JDK installation
44 directory.
45
46 cd nashorn~jdk8/nashorn/make
47 ant clean; ant
48
49 - How to run?
50
51 Use the jjs script (see RELESE_README):
52
53 cd nashorn~jdk8/nashorn
54 sh bin/jjs <your .js file>
55
56 Nashorn supports javax.script API. It is possible to drop nashorn.jar in
57 class path and request for "nashorn" script engine from
58 javax.script.ScriptEngineManager.
59
60 Look for samples under the directory test/src/jdk/nashorn/api/scripting/.
61
62 - Documentation
63
64 Comprehensive development documentation is found in the Nashorn JavaDoc. You can
65 build it using:
66
67 cd nashorn~jdk8/nashorn/make
68 ant javadoc
69
70 after which you can view the generated documentation at dist/javadoc/index.html.
71
72 - Running tests
73
74 Nashorn tests are TestNG based. Running tests requires downloading the
75 TestNG library and placing its jar file into the lib subdirectory:
76
77 # download and install TestNG
78 wget http://testng.org/testng-x.y.z.zip
79 unzip testng-x.y.z.zip
80 cp testng-x.y.z/testng-x.y.z.jar test/lib/testng.jar
81
82 After that, you can run the tests using:
83 cd make
84 ant test
85
86 You can also run the ECMA-262 test suite with Nashorn. In order to do
87 that, you will need to get a copy of it and put it in
88 test/script/external/test262 directory. A convenient way to do it is:
89
90 hg clone http://hg.ecmascript.org/tests/test262/ test/script/external/test262
91
92 Alternatively, you can check it out elsewhere and make
93 test/script/external/test262 a symbolic link to that directory. After
94 you've done this, you can run the ECMA-262 tests using:
95
96 cd nashorn~jdk8/nashorn/make
97 ant test262
98
99 These tests take time, so we have a parallelized runner for them that
100 takes advantage of all processor cores on the computer:
101
102 cd nashorn~jdk8/nashorn/make
103 ant test262parallel
104
105 - How to write your own test?
106
107 Nashorn uses it's own simple test framework. Any .js file dropped under
108 nashorn/test directory is considered as a test. A test file can
109 optionally have .js.EXPECTED (foo.js.EXPECTED for foo.js) associated
110 with it. The .EXPECTED file, if exists, should contain the output
111 expected from compiling and/or running the test file.
112
113 The test runner crawls these directories for .js files and looks for
114 JTReg-style @foo comments to identify tests.
115
116 * @test - A test is tagged with @test.
117
118 * @test/fail - Tests that are supposed to fail (compiling, see @run/fail
119 for runtime) are tagged with @test/fail.
120
121 * @test/compile-error - Test expects compilation to fail, compares
122 output.
123
124 * @test/warning - Test expects compiler warnings, compares output.
125
126 * @test/nocompare - Test expects to compile [and/or run?]
127 successfully(may be warnings), does not compare output.
128
129 * @subtest - denotes necessary file for a main test file; itself is not
130 a test.
131
132 * @run - A test that should be run is also tagged with @run (otherwise
133 the test runner only compiles the test).
134
135 * @run/fail - A test that should compile but fail with a runtime error.
136
137 * @run/ignore-std-error - script may produce output on stderr, ignore
138 this output.
139
140 * @argument - pass an argument to script.
141
142 * @option \ - pass option to engine, sample.
143
144 /**
145 * @option --dump-ir-graph
146 * @test
147 */

mercurial