nashorn/README
changeset 26649 1d7a917a35e2
parent 23764 1feafd50182e
child 26650 6652a6d37d93
equal deleted inserted replaced
26648:9a64e15eff37 26649:1d7a917a35e2
     1 - What is Nashorn?
     1 8058545: With strict mode, bean property assignment of a non-existent property should result in TypeError
     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 clean 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    git clone https://github.com/tc39/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 Ant target to get/update external test suites:
       
   100 
       
   101     ant externals
       
   102     ant update-externals
       
   103     
       
   104 These tests take time, so we have a parallelized runner for them that
       
   105 takes advantage of all processor cores on the computer:
       
   106 
       
   107     cd nashorn~jdk8/nashorn/make
       
   108     ant test262parallel
       
   109     
       
   110 - How to write your own test?
       
   111 
       
   112 Nashorn uses it's own simple test framework. Any .js file dropped under
       
   113 nashorn/test directory is considered as a test. A test file can
       
   114 optionally have .js.EXPECTED (foo.js.EXPECTED for foo.js) associated
       
   115 with it. The .EXPECTED file, if exists, should contain the output
       
   116 expected from compiling and/or running the test file.
       
   117 
       
   118 The test runner crawls these directories for .js files and looks for
       
   119 JTReg-style @foo comments to identify tests.
       
   120 
       
   121     * @test - A test is tagged with @test.
       
   122 
       
   123     * @test/fail - Tests that are supposed to fail (compiling, see @run/fail
       
   124       for runtime) are tagged with @test/fail.
       
   125 
       
   126     * @test/compile-error - Test expects compilation to fail, compares
       
   127       output.
       
   128 
       
   129     * @test/warning - Test expects compiler warnings, compares output.
       
   130 
       
   131     * @test/nocompare - Test expects to compile [and/or run?]
       
   132       successfully(may be warnings), does not compare output.
       
   133 
       
   134     * @subtest - denotes necessary file for a main test file; itself is not
       
   135       a test.
       
   136 
       
   137     * @run - A test that should be run is also tagged with @run (otherwise
       
   138       the test runner only compiles the test).
       
   139 
       
   140     * @run/fail - A test that should compile but fail with a runtime error.
       
   141 
       
   142     * @run/ignore-std-error - script may produce output on stderr, ignore
       
   143       this output.
       
   144 
       
   145     * @argument - pass an argument to script.
       
   146 
       
   147     * @option \ - pass option to engine, sample.
       
   148 
       
   149 /**
       
   150  * @option --dump-ir-graph
       
   151  * @test
       
   152  */