| 1 | IcedTea-Web | 
|---|
| 2 | =========== | 
|---|
| 3 |  | 
|---|
| 4 | The IcedTea-Web project provides a Free Software web browser plugin | 
|---|
| 5 | for running applets written in the Java programming language and an | 
|---|
| 6 | implementation of Java Web Start, originally based on the NetX | 
|---|
| 7 | project. | 
|---|
| 8 |  | 
|---|
| 9 | Homepage (wiki): | 
|---|
| 10 | http://icedtea.classpath.org/ | 
|---|
| 11 |  | 
|---|
| 12 | Bugs (bugzilla): | 
|---|
| 13 | http://icedtea.classpath.org/bugzilla | 
|---|
| 14 |  | 
|---|
| 15 | Mailing List: | 
|---|
| 16 | distro-pkg-dev@openjdk.java.net | 
|---|
| 17 | http://mail.openjdk.java.net/mailman/listinfo/distro-pkg-dev | 
|---|
| 18 |  | 
|---|
| 19 | FAQ: | 
|---|
| 20 | http://icedtea.classpath.org/wiki/FrequentlyAskedQuestions | 
|---|
| 21 |  | 
|---|
| 22 | Anonymous Mercurial checkout: | 
|---|
| 23 | hg clone http://icedtea.classpath.org/hg/icedtea-web | 
|---|
| 24 |  | 
|---|
| 25 | NetX | 
|---|
| 26 | ==== | 
|---|
| 27 |  | 
|---|
| 28 | NetX provides a drop-in replacement for javaws (Java Web Start). Since | 
|---|
| 29 | upstream NetX is dormant, we will be hosting and modifying the sources | 
|---|
| 30 | in the IcedTea-Web repository, particularly in the netx/net/sourceforge/jnlp | 
|---|
| 31 | directory. | 
|---|
| 32 |  | 
|---|
| 33 | IcedTea's NetX currently supports verification of signed jars, trusted | 
|---|
| 34 | certificate storing, system certificate store checking, and provides | 
|---|
| 35 | the services specified by the jnlp API. | 
|---|
| 36 |  | 
|---|
| 37 | The Browser Plugin | 
|---|
| 38 | ================== | 
|---|
| 39 |  | 
|---|
| 40 | IcedTea-Web contains a Free Software browser plugin based on NPRuntime | 
|---|
| 41 | called NPPlugin.  By default, this will be built, and it can be turned | 
|---|
| 42 | off using the -disable-plugin option. | 
|---|
| 43 |  | 
|---|
| 44 | Building IcedTea-Web | 
|---|
| 45 | ==================== | 
|---|
| 46 |  | 
|---|
| 47 | IcedTea-Web is built using the standard: | 
|---|
| 48 |  | 
|---|
| 49 | $ ./autogen.sh (if building from Mercurial rather than a tarball) | 
|---|
| 50 | $ ./configure | 
|---|
| 51 | $ gmake | 
|---|
| 52 | $ gmake install | 
|---|
| 53 |  | 
|---|
| 54 | incantation.  The build requirements are as follows: | 
|---|
| 55 |  | 
|---|
| 56 | * A bootstrap JDK.  At present, only IcedTea6 is supported. | 
|---|
| 57 | * A C compiler (for the launchers). | 
|---|
| 58 | * libX11 | 
|---|
| 59 | * zlib-devel | 
|---|
| 60 |  | 
|---|
| 61 | Additionally, the plugin requires: | 
|---|
| 62 |  | 
|---|
| 63 | * A C++ compiler | 
|---|
| 64 | * firefox-devel | 
|---|
| 65 | * xulrunner-devel | 
|---|
| 66 |  | 
|---|
| 67 | The plugin can be disabled by passing --disable-plugin. | 
|---|
| 68 |  | 
|---|
| 69 | The following optional dependencies enable additional features | 
|---|
| 70 |  | 
|---|
| 71 | * rhino (enables support for using proxy auto config files) | 
|---|
| 72 | * junit4 (enables unit tests) | 
|---|
| 73 |  | 
|---|
| 74 | See ./configure --help if you need to override the defaults. | 
|---|
| 75 |  | 
|---|
| 76 | The following locations are checked for a JDK: | 
|---|
| 77 | * /usr/lib/jvm/java-openjdk | 
|---|
| 78 | * /usr/lib/jvm/icedtea6 | 
|---|
| 79 | * /usr/lib/jvm/java-6-openjdk | 
|---|
| 80 | * /usr/lib/jvm/openjdk | 
|---|
| 81 | * /usr/lib/jvm/java-icedtea | 
|---|
| 82 | * /usr/lib/jvm/java-gcj | 
|---|
| 83 | * /usr/lib/jvm/gcj-jdk | 
|---|
| 84 | * /usr/lib/jvm/cacao | 
|---|
| 85 | in the order given above. | 
|---|
| 86 |  | 
|---|
| 87 | At present, some of these options fail due to sun.* classes required | 
|---|
| 88 | by IcedTea-Web.  Upstream OpenJDK will only be able to compile | 
|---|
| 89 | IcedTea-Web if the patch applet_hole.patch from IcedTea has been | 
|---|
| 90 | applied. | 
|---|
| 91 |  | 
|---|
| 92 | Most targets in IcedTea-Web create stamp files in the stamps directory | 
|---|
| 93 | to determine what and when dependencies were compiled.  Each target | 
|---|
| 94 | has a corresponding clean-x target which removes the output and the | 
|---|
| 95 | stamp file, allowing it to be rebuilt. | 
|---|
| 96 |  | 
|---|
| 97 | Build Modification Options | 
|---|
| 98 | ========================== | 
|---|
| 99 |  | 
|---|
| 100 | The build process may be modified by passing the following options | 
|---|
| 101 | to configure: | 
|---|
| 102 |  | 
|---|
| 103 | * --disable-docs: Don't build the Javadoc documentation. | 
|---|
| 104 | * --with-gcj: Compile ecj to native code with gcj prior to building. | 
|---|
| 105 | * --with-ecj: Specify the location of a 'ecj' binary.  By default, the path | 
|---|
| 106 | is checked for ecj, ecj-3.1, ecj-3.2 and ecj-3.3. | 
|---|
| 107 | * --with-javac: Specify the location of a 'javac' binary.  By default, the path | 
|---|
| 108 | is checked for javac. | 
|---|
| 109 | * --with-jar: Specify the location of a 'jar' binary.  By default, the path | 
|---|
| 110 | is checked for gjar and jar. | 
|---|
| 111 | * --with-ecj-jar: Specify the location of an ecj JAR file.  By default, the | 
|---|
| 112 | following paths are checked: | 
|---|
| 113 | - /usr/share/java/eclipse-ecj.jar | 
|---|
| 114 | - /usr/share/java/ecj.jar | 
|---|
| 115 | - /usr/share/eclipse-ecj-3.{2,3,4,5}/lib/ecj.jar | 
|---|
| 116 |  | 
|---|
| 117 | Other options may be supplied which enable or disable new features. | 
|---|
| 118 | These are documented fully in the relevant section below. | 
|---|
| 119 |  | 
|---|
| 120 | * --disable-plugin: Don't build the browser plugin. | 
|---|
| 121 | * --with-rhino: Specify the location of rhino jar | 
|---|
| 122 | * --with-junit: Specify the location of the junit 4 jar | 
|---|
| 123 |  | 
|---|
| 124 | Rhino Support | 
|---|
| 125 | ============= | 
|---|
| 126 |  | 
|---|
| 127 | IcedTea-Web needs rhino for using Proxy Auto Config (PAC) files. If rhino is | 
|---|
| 128 | not found, or explicitly disabled, then support for PAC files will be disabled. | 
|---|
| 129 |  | 
|---|
| 130 | By default, the following paths are checked for rhino: | 
|---|
| 131 | - /usr/share/java/js.jar | 
|---|
| 132 | - /usr/share/rhino-1.6/lib/js.jar | 
|---|
| 133 | - /usr/share/java/rhino.jar | 
|---|
| 134 |  | 
|---|
| 135 | If a rhino jar is not found, rhino support is disabled. The --with-rhino build | 
|---|
| 136 | option can be used to specify the location of the jar file. To explicitly | 
|---|
| 137 | disable rhino use --with-rhino=no. | 
|---|
| 138 |  | 
|---|
| 139 | JUnit Support | 
|---|
| 140 | ============= | 
|---|
| 141 |  | 
|---|
| 142 | JUnit is needed for running some tests. It has no run-time impact. | 
|---|
| 143 |  | 
|---|
| 144 | By default, the following paths are checked: | 
|---|
| 145 | - /usr/share/java/junit4.jar | 
|---|
| 146 |  | 
|---|
| 147 | If JUnit is not found, JUnit support is disabled. The --with-junit option can | 
|---|
| 148 | be used to specify the location of the JUnit 4 jar. To disable JUnit support | 
|---|
| 149 | explicitly, use --with-junit=no. | 
|---|
| 150 |  | 
|---|
| 151 | A custom JUnit ouput formatter is supplied. This makes the output of JUnit | 
|---|
| 152 | tests match the output of other tests. A simple 'Passed:' or 'FAILED:' is | 
|---|
| 153 | printed out, followed by <TestClass>.<testMethod>. This is also the format used | 
|---|
| 154 | by JTreg. | 
|---|
| 155 |  | 
|---|
| 156 | Testing | 
|---|
| 157 | ======= | 
|---|
| 158 |  | 
|---|
| 159 | A set of automated tests is supplied for IcedTea-Web. They can be run by using | 
|---|
| 160 | 'make check'. Currently, this only tests a few parts of IcedTea-Web. | 
|---|
| 161 |  | 
|---|
| 162 | The number and type of tests run by 'make check' may be affected by the build | 
|---|
| 163 | options, including JUnit support and rhino support. | 
|---|
| 164 |  | 
|---|
| 165 | A test suite is supplied for the browser plugin.  It can be built | 
|---|
| 166 | using 'make plugin-tests' and run by loading the HTML page specified | 
|---|
| 167 | into a browser with the plugin installed. | 
|---|
| 168 |  | 
|---|
| 169 | For debugging, the environment variable ICEDTEAPLUGIN_DEBUG should be | 
|---|
| 170 | set to 'true'.  This will produce output on the console from the C++ | 
|---|
| 171 | side, and output from the Java side in $HOME/.icedteaplugin/java.stdout | 
|---|
| 172 | and $HOME/.icedteaplugin/java.stderr.  It also starts the debug server | 
|---|
| 173 | on port 8787. | 
|---|