changeset 1148:b4ac69f5297e

Removed bootstrap, made buildable with modular JDK
author Jiri Vanek <jvanek@redhat.com>
date Fri, 06 Feb 2015 15:14:32 +0100
parents c2470c99438b
children dbe0614c2eca
files AUTHORS ChangeLog Makefile.am acinclude.m4 configure.ac plugin/icedteanp/IcedTeaNPPlugin.cc tests/test-extensions/net/sourceforge/jnlp/tools/CodeSignerCreator.java
diffstat 7 files changed, 116 insertions(+), 382 deletions(-) [+]
line wrap: on
line diff
--- a/AUTHORS	Fri Feb 06 13:30:11 2015 +0100
+++ b/AUTHORS	Fri Feb 06 15:14:32 2015 +0100
@@ -27,6 +27,7 @@
 Kurt Miller <kurt@intricatesoftware.com>
 Saad Mohammad <smohammad@redhat.com>
 Martin Olsson  <martin@minimum.se>
+Fridrich Strba <fridrich.strba@suse.com>
 Andrew Su <asu@redhat.com>
 Joshua Sumali <jsumali@redhat.com>
 Jiri Vanek <jvanek@redhat.com>
--- a/ChangeLog	Fri Feb 06 13:30:11 2015 +0100
+++ b/ChangeLog	Fri Feb 06 15:14:32 2015 +0100
@@ -1,3 +1,19 @@
+2014-02-06  Fridrich Strba <fridrich.strba@suse.com>
+
+	Removed bootstrap, made buildable with modular JDK
+	* AUTHORS: Fridrich added
+	* Makefile.am: defined composeclasspath to create always valid classpath elements
+	EMMA_JAVA_ARGS and EMMA_MODIFIED_FILES renamed to COVERAGE_JAVA_ARG and
+	COVERAGE_MODIFIED_FILES. Removed RHINO_RUNTIME, BOOT_DIR. PLUGIN_RUNTIME 
+	renamed to PLUGIN_JAR. All manual constructions of classpath replaced by
+	composeclasspath. All BOOT_ definition replaced by SYSTEM_JRE_DIR and
+	SYSTEM_JDK_DIR. Removed all legacy emma targets. Removed all bootstrap targets.
+	* acinclude.m4: added check for jdk9
+	* configure.ac: removed check for emma
+	* plugin/icedteanp/IcedTeaNPPlugin.cc: added support for jdk9 mimetypes
+	* tests/test-extensions/net/sourceforge/jnlp/tools/CodeSignerCreator.java:
+	made aware of jdk9
+	
 2014-02-06  Jiri Vanek  <jvanek@redhat.com>
 
 	Also javaws.png icon is being installed in make install.
--- a/Makefile.am	Fri Feb 06 13:30:11 2015 +0100
+++ b/Makefile.am	Fri Feb 06 15:14:32 2015 +0100
@@ -1,3 +1,14 @@
+# Functions to compose path/classpath
+
+EMPTY :=
+SPACE := $(EMPTY) $(EMPTY)
+define joinsegments
+$(subst $(SPACE),:,$(strip $1))
+endef
+define composeclasspath
+$(if $(call joinsegments,$1),-classpath $(call joinsegments,$1),)
+endef
+
 # Source directories
 
 export TOP_BUILD_DIR = $(abs_top_builddir)
@@ -47,8 +58,8 @@
 export UNIT_CLASS_NAMES = $(abs_top_builddir)/unit_class_names
 export REPRODUCERS_CLASS_NAMES = $(abs_top_builddir)/reproducers_class_names
 export REPRODUCERS_CLASS_WHITELIST = $(abs_top_srcdir)/netx-dist-tests-whitelist
-export EMMA_JAVA_ARGS=-Xmx2G
-export EMMA_MODIFIED_FILES=tests-output.xml ServerAccess-logs.xml stdout.log stderr.log all.log
+export COVERAGE_JAVA_ARGS=-Xmx2G
+export COVERAGE_MODIFIED_FILES=tests-output.xml ServerAccess-logs.xml stdout.log stderr.log all.log
 export EMMA_BACKUP_SUFFIX=_noEmma
 export EMMA_SUFFIX=_withEmma
 export META_MANIFEST = META-INF/MANIFEST.MF
@@ -73,7 +84,7 @@
 export JACOCO_AGENT_SWITCH="$(JACOCO_AGENT_SWITCH_BODY)=excludes=$(JACOCO_BASE_EXCLUDE)$(JACOCO_ADVANCED_EXCLUDE),inclbootstrapclasses=true"
 export JACOCO_AGENT_JAVAWS_SWITCH=\"$(JACOCO_AGENT_SWITCH),destfile=$(JACOCO_JAVAWS_RESULTS)\"
 export JACOCO_AGENT_PLUGIN_SWITCH=\"$(JACOCO_AGENT_SWITCH),destfile=$(JACOCO_PLUGIN_RESULTS)\"
-export JACOCO_OPERATOR_EXEC=$(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -cp $(JACOCO_OPERATOR_DIR):$(JACOCO_CLASSPATH):. org.jacoco.operator.Main
+export JACOCO_OPERATOR_EXEC=$(SYSTEM_JRE_DIR)/bin/java $(COVERAGE_JAVA_ARGS) -cp $(JACOCO_OPERATOR_DIR):$(JACOCO_CLASSPATH):. org.jacoco.operator.Main
 
 # linking variables
 export PLUGIN_LINK_NAME=libjavaplugin.so
@@ -95,27 +106,20 @@
 
 # Build directories
 
-export BOOT_DIR = $(abs_top_builddir)/bootstrap/jdk1.6.0
-
-if WITH_RHINO
-  RHINO_RUNTIME=:$(RHINO_JAR)
-else
-  RHINO_RUNTIME=
-endif
-
-if WITH_HAMCREST
-  JUNIT_RUNTIME:=$(JUNIT_JAR):$(HAMCREST_JAR)
-else
-  JUNIT_RUNTIME:=$(JUNIT_JAR)
-endif
+# note this is *space* separated list, as composeclasspath is called on them in classpath usage
+JUNIT_RUNTIME:=$(JUNIT_JAR) $(HAMCREST_JAR)
 
 # support for javaws -html needs plugin.jar on classpath. rest of javaws works of course without it.
 if ENABLE_PLUGIN
-  PLUGIN_RUNTIME=:$(datadir)/$(PACKAGE_NAME)/plugin.jar
+  PLUGIN_JAR=$(datadir)/$(PACKAGE_NAME)/plugin.jar
+endif
+
+# Conditional defintions
+if HAVE_TAGSOUP
+  NETX_EXCLUDE_SRCS=
 else
-  PLUGIN_RUNTIME
+  NETX_EXCLUDE_SRCS=net.sourceforge.jnlp.MalformedXMLParser.java
 endif
-export RUNTIME = $(BOOT_DIR)/jre/lib/rt.jar:$(BOOT_DIR)/jre/lib/jsse.jar$(RHINO_RUNTIME):$(BOOT_DIR)/jre/lib/resources.jar
 
 # Flags
 export IT_CFLAGS=$(CFLAGS) $(ARCHFLAG)
@@ -131,7 +135,7 @@
 #    IllegalAccessException
 #  - we want full privileges
 #
-export UNIFIED_CLASSPATH=$(datadir)/$(PACKAGE_NAME)/netx.jar$(PLUGIN_RUNTIME)$(RHINO_RUNTIME):$(TAGSOUP_JAR)
+export UNIFIED_CLASSPATH=$(call joinsegments, $(datadir)/$(PACKAGE_NAME)/netx.jar $(PLUGIN_JAR) $(RHINO_JAR) $(TAGSOUP_JAR))
 export UNIFIED_BOOTCLASSPATH=-Xbootclasspath/a:$(UNIFIED_CLASSPATH)
 # note javaws, itwebsettings and policyeditor (== LAUNCHER_BOOTCLASSPATH) must be always able to compileand run *without* plugin
 export LAUNCHER_BOOTCLASSPATH="$(UNIFIED_BOOTCLASSPATH)"
@@ -155,15 +159,6 @@
 	net.sourceforge.jnlp.tools net.sourceforge.jnlp.util \
 	sun.applet
 
-NETX_EXCLUDE_SRCS=
-
-# Conditional defintions
-if HAVE_TAGSOUP
-NETX_CLASSPATH_ARG=-classpath $(TAGSOUP_JAR)
-else
-NETX_EXCLUDE_SRCS+=net.sourceforge.jnlp.MalformedXMLParser.java
-endif
-
 if ENABLE_PLUGIN
 export ICEDTEAPLUGIN_CLEAN = clean-IcedTeaPlugin
 export LIVECONNECT_DIR = netscape sun/applet
@@ -228,7 +223,7 @@
 # end of `D`shortcuts
 
 #exported autoconf copies
-export EXPORTED_JAVAC=$(BOOT_DIR)/bin/javac
+export EXPORTED_JAVAC=$(SYSTEM_JDK_DIR)/bin/javac
 #end of exported autoconf copies
 
 # binary names
@@ -460,10 +455,9 @@
 stamps/liveconnect.stamp: liveconnect-source-files.txt stamps/netx.stamp
 	if test "x${LIVECONNECT_DIR}" != x; then \
 	  mkdir -p $(abs_top_builddir)/liveconnect && \
-	  $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
+	  $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \
 	      -d $(abs_top_builddir)/liveconnect \
-	      -bootclasspath $(NETX_DIR):$(RUNTIME) \
-	      $(NETX_CLASSPATH_ARG) \
+	      $(call composeclasspath,$(NETX_DIR) $(TAGSOUP_JAR) $(RHINO_JAR)) \
 	      -sourcepath $(LIVECONNECT_SRCS) \
 	      @liveconnect-source-files.txt ; \
 	fi
@@ -474,7 +468,7 @@
 	if test "x${LIVECONNECT_DIR}" != x; then \
 	  (cd $(abs_top_builddir)/liveconnect ; \
 	   mkdir -p lib ; \
-	   $(BOOT_DIR)/bin/jar cf lib/classes.jar $(LIVECONNECT_DIR) ; \
+	   $(SYSTEM_JDK_DIR)/bin/jar cf lib/classes.jar $(LIVECONNECT_DIR) ; \
 	   cp -pPR $(SRC_DIR_LINK) $(LIVECONNECT_SRCS) src; \
 	   find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \
 	   cd src ; \
@@ -512,7 +506,7 @@
 	mkdir "$$PLAIN_DOCS_TARGET_DIR" ; \
 	mkdir "$$MAN_DOCS_TARGET_DIR" ; \
 	HTML_DOCS_INDEX="$$HTML_DOCS_TARGET_DIR/index.html" ; \
-	TP_COMMAND="$(BOOT_DIR)/bin/java -cp $(NETX_DIR) net.sourceforge.jnlp.util.docprovider.TextsProvider" ; \
+	TP_COMMAND="$(SYSTEM_JRE_DIR)/bin/java -cp $(NETX_DIR) net.sourceforge.jnlp.util.docprovider.TextsProvider" ; \
 	TP_TAIL="false $(FULL_VERSION)" ; \
 	LANG_BACKUP=$$LANG ; \
 	echo "<html><head><title>$(PLUGIN_VERSION)</title></head>" > "$$HTML_DOCS_INDEX" ; \
@@ -551,13 +545,12 @@
 	mkdir -p stamps
 	touch $@
 
-stamps/netx.stamp: netx-source-files.txt stamps/bootstrap-directory.stamp stamps/netx-html-gen.stamp
+stamps/netx.stamp: netx-source-files.txt stamps/netx-html-gen.stamp
 	mkdir -p $(NETX_DIR)
-	$(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
-	    -d $(NETX_DIR) \
-	    -sourcepath $(NETX_SRCDIR) \
-	    -bootclasspath $(RUNTIME) \
-	    $(NETX_CLASSPATH_ARG) \
+	$(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \
+		-d $(NETX_DIR) \
+		-sourcepath $(NETX_SRCDIR) \
+		$(call composeclasspath, $(TAGSOUP_JAR) $(RHINO_JAR)) \
 	    @netx-source-files.txt
 	(cd $(NETX_RESOURCE_DIR); \
 	 for files in $$(find . -type f); \
@@ -574,7 +567,7 @@
 stamps/netx-dist.stamp: stamps/netx.stamp $(abs_top_builddir)/netx.manifest stamps/generate-docs.stamp
 	(cd $(NETX_DIR) ; \
 	 mkdir -p lib ; \
-	 $(BOOT_DIR)/bin/jar cfm lib/classes.jar \
+	 $(SYSTEM_JDK_DIR)/bin/jar cfm lib/classes.jar \
 	  $(abs_top_builddir)/netx.manifest javax/jnlp net sun; \
 	 cp -pPR $(SRC_DIR_LINK) $(NETX_SRCDIR) src; \
 	 find src -type f -exec chmod 640 '{}' ';' -o -type d -exec chmod 750 '{}' ';'; \
@@ -646,9 +639,9 @@
 	fi
 	rm -f stamps/docs.stamp
 
-stamps/netx-docs.stamp: stamps/bootstrap-directory.stamp
+stamps/netx-docs.stamp:
 if ENABLE_DOCS
-	$(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \
+	$(SYSTEM_JDK_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \
 	 -d ${abs_top_builddir}/docs/netx -sourcepath $(NETX_SRCDIR) \
 	 -doctitle 'IcedTea-Web: NetX API Specification' \
 	 -windowtitle 'IcedTea-Web: NetX ' \
@@ -662,10 +655,10 @@
 	rm -rf ${abs_top_builddir}/docs/netx
 	rm -f stamps/netx-docs.stamp
 
-stamps/plugin-docs.stamp: stamps/bootstrap-directory.stamp
+stamps/plugin-docs.stamp:
 if ENABLE_DOCS
 if ENABLE_PLUGIN
-	$(BOOT_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \
+	$(SYSTEM_JDK_DIR)/bin/javadoc $(JAVADOC_MEM_OPTS) $(JAVADOC_OPTS) \
 	 -d ${abs_top_builddir}/docs/plugin -sourcepath $(NETX_SRCDIR):$(LIVECONNECT_SRCS) \
 	 -doctitle 'IcedTea-Web: Plugin API Specification' \
 	 -windowtitle 'IcedTea-Web: Plugin ' \
@@ -696,7 +689,7 @@
 		rmdir $(TESTS_DIR) ; \
 	fi
 
-stamps/check-pac-functions.stamp: stamps/bootstrap-directory.stamp
+stamps/check-pac-functions.stamp:
 	./jrunscript $(abs_top_srcdir)/tests/netx/pac/pac-funcs-test.js \
 	  $$(readlink -f $(abs_top_srcdir)/netx/net/sourceforge/jnlp/runtime/pac-funcs.js) ; \
 	mkdir -p stamps && \
@@ -710,11 +703,11 @@
 
 $(JUNIT_RUNNER_JAR): junit-runner-source-files.txt stamps/test-extensions-compile.stamp
 	mkdir -p $(JUNIT_RUNNER_DIR) && \
-	$(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
+	$(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \
 	  -d $(JUNIT_RUNNER_DIR) \
-	  -classpath $(JUNIT_RUNTIME):$(TEST_EXTENSIONS_DIR) \
+	  $(call composeclasspath, $(JUNIT_RUNTIME) $(TEST_EXTENSIONS_DIR)) \
 	  @junit-runner-source-files.txt && \
-	$(BOOT_DIR)/bin/jar cf $@  -C $(JUNIT_RUNNER_DIR) .
+	$(SYSTEM_JDK_DIR)/bin/jar cf $@  -C $(JUNIT_RUNNER_DIR) .
 
 stamps/junit-jnlp-dist-dirs: junit-jnlp-dist-simple.txt stamps/junit-jnlp-dist-signed.stamp junit-jnlp-dist-custom.txt
 	mkdir -p $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)
@@ -759,16 +752,16 @@
 	      cd "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/srcs/" ; \
 	      srcFiles=`find . -mindepth 1 -type f -name "*.java" | sed "s/.\/*//"` ; \
 	      notSrcFiles=`find . -mindepth 1 -type f \! -name "*.java" | sed "s/.\/*//"` ; \
-	      $(BOOT_DIR)/bin/javac -cp $(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect -d "$(REPRODUCERS_BUILD_DIR)/$$dir/" $$srcFiles ; \
+	      $(SYSTEM_JDK_DIR)/bin/javac -cp $(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect -d "$(REPRODUCERS_BUILD_DIR)/$$dir/" $$srcFiles ; \
 	      if [ -n "$$notSrcFiles" ] ; then \
 	        cp -R --parents $$notSrcFiles "$(REPRODUCERS_BUILD_DIR)/$$dir/" ; \
 	      fi ; \
 	      cd "$(REPRODUCERS_BUILD_DIR)/$$dir/" ; \
 	      if [ -f $(META_MANIFEST) ]; \
 	      then \
-	        $(BOOT_DIR)/bin/jar cfm "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" $(META_MANIFEST) * ; \
+	        $(SYSTEM_JDK_DIR)/bin/jar cfm "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" $(META_MANIFEST) * ; \
 	      else \
-	        $(BOOT_DIR)/bin/jar cf "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" * ; \
+	        $(SYSTEM_JDK_DIR)/bin/jar cf "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar" * ; \
 	      fi; \
 	      cd "$$d" ; \
 	    fi; \
@@ -782,12 +775,12 @@
 	types=($(SIGNED_REPRODUCERS)) ; \
 	for which in "$${types[@]}" ; do \
 	  tcaw=$(TEST_CERT_ALIAS)_$$which ; \
-	  $(BOOT_DIR)/bin/keytool -genkey -alias $$tcaw -keystore $$keystore -keypass $(PRIVATE_KEYSTORE_PASS) -storepass $(PRIVATE_KEYSTORE_PASS) -dname "cn=$$tcaw, ou=$$tcaw, o=$$tcaw, c=$$tcaw" ; \
+	  $(SYSTEM_JRE_DIR)/bin/keytool -genkey -alias $$tcaw -keystore $$keystore -keypass $(PRIVATE_KEYSTORE_PASS) -storepass $(PRIVATE_KEYSTORE_PASS) -dname "cn=$$tcaw, ou=$$tcaw, o=$$tcaw, c=$$tcaw" ; \
 	    . $(abs_top_srcdir)/NEW_LINE_IFS ; \
 	  signedReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
 	    IFS="$$IFS_BACKUP" ; \
 	  for dir in "$${signedReproducers[@]}" ; do \
-	   $(BOOT_DIR)/bin/jarsigner -keystore $$keystore -storepass $(PRIVATE_KEYSTORE_PASS) -keypass $(PRIVATE_KEYSTORE_PASS)  "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar"  $$tcaw ; \
+	   $(SYSTEM_JDK_DIR)/bin/jarsigner -keystore $$keystore -storepass $(PRIVATE_KEYSTORE_PASS) -keypass $(PRIVATE_KEYSTORE_PASS)  "$(REPRODUCERS_TESTS_SERVER_DEPLOYDIR)/$$dir.jar"  $$tcaw ; \
 	  done ; \
 	done ; \
 	mkdir -p stamps && \
@@ -838,11 +831,11 @@
 	keystoredir=`dirname $(PUBLIC_KEYSTORE)`; \
 	[ ! -d $(keystoredir) ] && mkdir -p $(keystoredir); \
 	for which in "$${types[@]}" ; do \
-	  $(BOOT_DIR)/bin/keytool -delete -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) ; \
+	  $(SYSTEM_JDK_DIR)/bin/keytool -delete -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) ; \
 	done ;
 	types=($(SIGNED_REPRODUCERS)) ; \
 	for which in "$${types[@]}" ; do \
-	  $(BOOT_DIR)/bin/keytool -export -alias $(TEST_CERT_ALIAS)_$$which -file $(EXPORTED_TEST_CERT_PREFIX)_$$which.$(EXPORTED_TEST_CERT_SUFFIX) -storepass $(PRIVATE_KEYSTORE_PASS) -keystore $(PRIVATE_KEYSTORE_NAME) ; \
+	  $(SYSTEM_JDK_DIR)/bin/keytool -export -alias $(TEST_CERT_ALIAS)_$$which -file $(EXPORTED_TEST_CERT_PREFIX)_$$which.$(EXPORTED_TEST_CERT_SUFFIX) -storepass $(PRIVATE_KEYSTORE_PASS) -keystore $(PRIVATE_KEYSTORE_NAME) ; \
 	done ;
 	mkdir -p stamps && \
 	touch $@
@@ -857,7 +850,7 @@
 	keystoredir=`dirname $(PUBLIC_KEYSTORE)`; \
 	[ ! -d $(keystoredir) ] && mkdir -p $(keystoredir); \
 	for which in "$${types[@]}" ; do \
-	  yes | $(BOOT_DIR)/bin/keytool -import -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) -file $(EXPORTED_TEST_CERT_PREFIX)_$$which.$(EXPORTED_TEST_CERT_SUFFIX) ;\
+	  yes | $(SYSTEM_JDK_DIR)/bin/keytool -import -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) -file $(EXPORTED_TEST_CERT_PREFIX)_$$which.$(EXPORTED_TEST_CERT_SUFFIX) ;\
 	done ;
 	mkdir -p stamps && \
 	touch $@
@@ -872,7 +865,7 @@
 	keystoredir=`dirname $(PUBLIC_KEYSTORE)`; \
 	[ ! -d $(keystoredir) ] && mkdir -p $(keystoredir); \
 	for which in "$${types[@]}" ; do \
-	  $(BOOT_DIR)/bin/keytool -delete -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) ; \
+	  $(SYSTEM_JDK_DIR)/bin/keytool -delete -alias $(TEST_CERT_ALIAS)_$$which -keystore $$PUBLIC_KEYSTORE -storepass $(PUBLIC_KEYSTORE_PASS) ; \
 	done ;
 	-rm -rf stamps/netx-dist-tests-import-cert-to-public
 
@@ -883,9 +876,9 @@
 	mkdir -p $(TEST_EXTENSIONS_DIR);
 	mkdir -p $(NETX_TEST_DIR);
 	ln -s $(TEST_EXTENSIONS_DIR) $(TEST_EXTENSIONS_COMPATIBILITY_SYMLINK);
-	$(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
+	$(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \
 	 -d $(TEST_EXTENSIONS_DIR) \
-	 -classpath $(JUNIT_RUNTIME):$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar \
+	 $(call composeclasspath, $(JUNIT_RUNTIME) $(NETX_DIR)/lib/classes.jar $(abs_top_builddir)/liveconnect/lib/classes.jar) \
 	 @test-extensions-source-files.txt && \
 	mkdir -p stamps && \
 	touch $@
@@ -898,9 +891,9 @@
 stamps/test-extensions-tests-compile.stamp: stamps/junit-jnlp-dist-dirs test-extensions-tests-source-files.txt  stamps/test-extensions-compile.stamp
 	mkdir -p $(TEST_EXTENSIONS_TESTS_DIR);
 	for x in `cat $(abs_top_builddir)/test-extensions-tests-source-files.txt` ; do \
-	  $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
+	  $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \
 	   -d $(TEST_EXTENSIONS_TESTS_DIR) \
-	   -classpath $(JUNIT_RUNTIME):$(NETX_DIR)/lib/classes.jar:$(TEST_EXTENSIONS_DIR) \
+	   $(call composeclasspath, $(JUNIT_RUNTIME) $(NETX_DIR)/lib/classes.jar $(TEST_EXTENSIONS_DIR)) \
 	   $$x ; \
 	done ; \
 	mkdir -p stamps && \
@@ -915,9 +908,9 @@
 	  IFS="$$IFS_BACKUP" ; \
 	  for dir in "$${simpleReproducers[@]}" ; do \
 	    echo "compiling" $$dir ; \
-	    $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
+	    $(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \
 	      -d $(TEST_EXTENSIONS_TESTS_DIR) \
-	      -classpath $(JUNIT_RUNTIME):$(NETX_DIR)/lib/classes.jar:$(TEST_EXTENSIONS_DIR) \
+	      $(call composeclasspath, $(JUNIT_RUNTIME) $(NETX_DIR)/lib/classes.jar $(TEST_EXTENSIONS_DIR)) \
 	    "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/"*.java ; \
 	    if [ -d "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases" ]; then \
 	        pushd "$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases" ; \
@@ -981,9 +974,9 @@
  $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(REPRODUCERS_CLASS_NAMES) stamps/process-custom-reproducers.stamp
 	cd $(TEST_EXTENSIONS_DIR) ; \
 	class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
-	CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_RUNTIME):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR):$(TEST_EXTENSIONS_SRCDIR) ; \
-	  $(BOOT_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
-	 -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names
+	CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) . $(TEST_EXTENSIONS_TESTS_DIR) $(TEST_EXTENSIONS_SRCDIR)) ; \
+	  $(SYSTEM_JRE_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
+	 -Xbootclasspath/a:$$CLASSPATH CommandLine $$class_names
 if WITH_XSLTPROC
 	-$(XSLTPROC)  --stringparam logs logs_reproducers.html $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/jreport.xsl $(TEST_EXTENSIONS_DIR)/tests-output.xml > $(TESTS_DIR)/index_reproducers.html
 	-$(XSLTPROC)  $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/logs.xsl $(TEST_EXTENSIONS_DIR)/ServerAccess-logs.xml > $(TESTS_DIR)/logs_reproducers.html
@@ -1128,9 +1121,9 @@
 stamps/netx-unit-tests-compile.stamp: stamps/netx.stamp \
  netx-unit-tests-source-files.txt stamps/test-extensions-compile.stamp
 	mkdir -p $(NETX_UNIT_TEST_DIR) && \
-	$(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
+	$(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \
 	 -d $(NETX_UNIT_TEST_DIR) \
-	 -classpath $(JUNIT_RUNTIME):$(abs_top_builddir)/liveconnect/lib/classes.jar:$(NETX_DIR)/lib/classes.jar:$(TEST_EXTENSIONS_DIR):$(TAGSOUP_JAR) \
+	 $(call composeclasspath, $(JUNIT_RUNTIME) $(abs_top_builddir)/liveconnect/lib/classes.jar $(NETX_DIR)/lib/classes.jar $(TEST_EXTENSIONS_DIR) $(TAGSOUP_JAR)) \
 	 @netx-unit-tests-source-files.txt && \
 	mkdir -p stamps && \
 	touch $@
@@ -1160,8 +1153,8 @@
 	done ; \
 	cd $(NETX_UNIT_TEST_DIR) ; \
 	class_names=`cat $(UNIT_CLASS_NAMES)` ; \
-	CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_RUNTIME):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR):$(TAGSOUP_JAR) ; \
-	  $(BOOT_DIR)/bin/java -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names 
+	CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(abs_top_builddir)/liveconnect/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) $(TEST_EXTENSIONS_DIR) . $(TEST_EXTENSIONS_SRCDIR) $(TAGSOUP_JAR)) ; \
+	  $(SYSTEM_JRE_DIR)/bin/java -Xbootclasspath/a:$$CLASSPATH CommandLine $$class_names 
 if WITH_XSLTPROC
 	-$(XSLTPROC) --stringparam logs logs_unit.html $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/jreport.xsl $(NETX_UNIT_TEST_DIR)/tests-output.xml > $(TESTS_DIR)/index_unit.html
 	-$(XSLTPROC) $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/logs.xsl $(NETX_UNIT_TEST_DIR)/ServerAccess-logs.xml > $(TESTS_DIR)/logs_unit.html
@@ -1170,57 +1163,10 @@
 	mkdir -p stamps && \
 	touch $@
 
-#warning,  during this target tests.build/netx/unit/tests-output.xml is backup and rewriten (but not coresponding html file)
-#xml results run from emma sandbox, however, can be wrong, co the new tests-output.xml is then renamed and orginal one restored
-#you can add -ix "-*Test*" -ix "-*test*"  to ignore all test cases from statistics
-stamps/run-unit-test-code-coverage.stamp: stamps/netx-unit-tests-compile.stamp $(JUNIT_RUNNER_JAR)  \
- $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)  $(UNIT_CLASS_NAMES)
-if WITH_EMMA
-	cd $(NETX_UNIT_TEST_DIR) ; \
-	for file in $(EMMA_MODIFIED_FILES) ; do \
-	  mv $(NETX_UNIT_TEST_DIR)/$$file  $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
-	done ;\
-	class_names=`cat $(UNIT_CLASS_NAMES)` ; \
-	CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_RUNTIME):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR) ; \
-	$(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH -cp $(EMMA_JAR) -Demma.report.html.out.encoding=UTF-8 emmarun \
-	 -Dreport.html.out.encoding=UTF-8 \
-	 -raw \
-	 -sp $(NETX_SRCDIR) \
-	 -sp $(NETX_UNIT_TEST_SRCDIR) \
-	 -sp $(JUNIT_RUNNER_SRCDIR) \
-	 -r html \
-	 -r xml \
-	 -cp $(NETX_DIR)/lib/classes.jar \
-	 -cp $(JUNIT_JAR) \
-	 -cp $(HAMCREST_JAR) \
-	 -cp $(JUNIT_RUNNER_JAR) \
-	 -cp $(BOOT_DIR)/jre/lib/rt.jar \
-	 -cp $(BOOT_DIR)/jre/lib/jsse.jar \
-	 -cp $(BOOT_DIR)/jre/lib/resources.jar \
-	 -cp $(RHINO_RUNTIME) \
-	 -cp $(TEST_EXTENSIONS_DIR) \
-	 -cp $(TEST_EXTENSIONS_SRCDIR) \
-if HAVE_TAGSOUP
-	 -cp $(TAGSOUP_JAR) \
-endif
-	 -cp . \
-	 -ix "-org.junit.*" \
-	 -ix "-junit.*" \
-	 CommandLine $$class_names ;  \
-	for file in $(EMMA_MODIFIED_FILES) ; do \
-	  mv $(NETX_UNIT_TEST_DIR)/$$file  $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_SUFFIX)" ; \
-	  mv $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)"  $(NETX_UNIT_TEST_DIR)/$$file ; \
-	done ;
-else 
-	echo "Sorry, coverage report cant be run without emma installed. Try install emma or specify with-emma value" ;
-	exit 5
-endif 
-	touch $@
-
 stamps/compile-jacoco-operator.stamp: jacoco-operator-source-files.txt
 if WITH_JACOCO	
 	mkdir -p $(JACOCO_OPERATOR_DIR) && \
-	$(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
+	$(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \
 	  -d $(JACOCO_OPERATOR_DIR) \
 	  -classpath $(JACOCO_CLASSPATH) \
 	  @jacoco-operator-source-files.txt ;
@@ -1243,13 +1189,13 @@
 		cp --parents $$filename $(NETX_UNIT_TEST_DIR) ; \
 	done ; \
 	cd $(NETX_UNIT_TEST_DIR) ; \
-	for file in $(EMMA_MODIFIED_FILES) ; do \
+	for file in $(COVERAGE_MODIFIED_FILES) ; do \
 	  mv $(NETX_UNIT_TEST_DIR)/$$file  $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
 	done ;\
 	class_names=`cat $(UNIT_CLASS_NAMES)` ; \
-	CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_RUNTIME):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):$(JACOCO_CLASSPATH):.:$(TEST_EXTENSIONS_SRCDIR):$(TAGSOUP_JAR) ; \
-	  $(BOOT_DIR)/bin/java $(JACOCO_AGENT_SWITCH) -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH  CommandLine $$class_names ; \
-	for file in $(EMMA_MODIFIED_FILES) ; do \
+	CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(abs_top_builddir)/liveconnect/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) $(TEST_EXTENSIONS_DIR) $(JACOCO_CLASSPATH) . $(TEST_EXTENSIONS_SRCDIR) $(TAGSOUP_JAR)) ; \
+	  $(SYSTEM_JRE_DIR)/bin/java $(JACOCO_AGENT_SWITCH) -Xbootclasspath/a:$$CLASSPATH CommandLine $$class_names ; \
+	for file in $(COVERAGE_MODIFIED_FILES) ; do \
 	  mv $(NETX_UNIT_TEST_DIR)/$$file  $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_SUFFIX)" ; \
 	  mv $(NETX_UNIT_TEST_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)"  $(NETX_UNIT_TEST_DIR)/$$file ; \
 	done ; \
@@ -1264,99 +1210,6 @@
 endif 
 	touch $@
 
-#warning,  during this target tests.build/netx/jnlp_testsengine/tests-output.xml is backup and rewriten (but not coresponding html file)
-#xml results run from emma sandbox, however, can be wrong, co the new tests-output.xml is then renamed and orginal one restored
-stamps/run-reproducers-test-code-coverage.stamp: stamps/run-netx-dist-tests.stamp $(REPRODUCERS_CLASS_NAMES)
-if WITH_EMMA
-	cd $(TESTS_DIR) ; \
-	for file in $(EMMA_MODIFIED_FILES) ; do \
-	  mv $(TEST_EXTENSIONS_DIR)/$$file $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
-	done ;\
-	echo "backuping javaws and netx.jar in $(DESTDIR)" ; \
-	netx_backup=$(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx_backup.jar ; \
-	javaws_backup=$(DESTDIR)$(bindir)/javaws_backup ; \
-	mv $(DESTDIR)$(bindir)/javaws $$javaws_backup ;  \
-	mv $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar $$netx_backup ; \
-	nw_bootclasspath="$(LAUNCHER_BOOTCLASSPATH):$(EMMA_JAR):$$netx_backup" ; \
-	instructed_dir=$(TESTS_DIR)/instr ; \
-	echo "instrumenting netx.jar from $$netx_backup through $$instructed_dir" ; \
-	$(BOOT_DIR)/bin/java -cp  $(EMMA_JAR) emma instr -d $$instructed_dir -ip $$netx_backup ; \
-	pushd $$instructed_dir ; \
-	$(BOOT_DIR)/bin/jar -cf $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar * ; \
-	popd ; \
-	rm -rf $$instructed_dir ; \
-	echo "patching $(javaws)" ; \
-	cat $$javaws_backup | sed "s,$(LAUNCHER_BOOTCLASSPATH),$$nw_bootclasspath," > $(DESTDIR)$(bindir)/$(javaws) ; \
-	chmod 777 $(DESTDIR)$(bindir)/$(javaws) ; \
-	testcases_srcs=( ) ; \
-	k=0 ; \
-	types=($(ALL_REPRODUCERS)); \
-	for which in "$${types[@]}" ; do \
-	  . $(abs_top_srcdir)/NEW_LINE_IFS ; \
-	  simpleReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
-	  IFS="$$IFS_BACKUP" ; \
-	  for dir in "$${simpleReproducers[@]}" ; do \
-	    testcases_srcs[k]="-sp" ; \
-	    k=$$((k+1)) ; \
-	    testcases_srcs[k]="$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/" ; \
-	    k=$$((k+1)) ; \
-	    done ; \
-	  done ; \
-	cd $(TEST_EXTENSIONS_DIR) ; \
-	class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
-	CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(abs_top_builddir)/liveconnect/lib/classes.jar:$(JUNIT_RUNTIME):$(JUNIT_RUNNER_JAR):$(TEST_EXTENSIONS_DIR):.:$(TEST_EXTENSIONS_SRCDIR) ; \
-	$(BOOT_DIR)/bin/java  \
-	 $(EMMA_JAVA_ARGS) \
-	  $(REPRODUCERS_DPARAMETERS) \
-	 -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH -cp $(EMMA_JAR) emmarun  \
-	   -raw \
-	   -cp $(NETX_DIR)/lib/classes.jar \
-	   -cp $(JUNIT_JAR) \
-	   -cp $(HAMCREST_JAR) \
-	   -cp $(JUNIT_RUNNER_JAR) \
-	   -cp $(BOOT_DIR)/jre/lib/rt.jar \
-	   -cp $(BOOT_DIR)/jre/lib/jsse.jar \
-	   -cp $(BOOT_DIR)/jre/lib/resources.jar \
-	   -cp $(RHINO_RUNTIME) \
-	   -cp . \
-	   -cp $(TEST_EXTENSIONS_SRCDIR) \
-	   -cp $(TEST_EXTENSIONS_TESTS_DIR) \
-	   -ix "-org.junit.*" \
-	   -ix "-junit.*" \
-	   CommandLine $$class_names ; \
-	mv $(TEST_EXTENSIONS_DIR)/coverage.ec $(TEST_EXTENSIONS_DIR)/coverageX.ec ; \
-	mv $(TEST_EXTENSIONS_DIR)/coverage.es $(TEST_EXTENSIONS_DIR)/coverageX.es ; \
-	$(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -cp $(EMMA_JAR) emma merge \
-	  -in $(TESTS_DIR)/coverage.em \
-	  -in $(TEST_EXTENSIONS_DIR)/coverageX.ec \
-	  -in $(TEST_EXTENSIONS_DIR)/coverageX.es ; \
-	$(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -cp $(EMMA_JAR)  -Demma.report.html.out.encoding=UTF-8 emma report \
-	  -Dreport.html.out.encoding=UTF-8 \
-	  -in $(TEST_EXTENSIONS_DIR)/coverage.es  \
-	  -sp $(NETX_SRCDIR) \
-	  -sp $(NETX_UNIT_TEST_SRCDIR) \
-	  -sp $(JUNIT_RUNNER_SRCDIR) \
-	  -sp $(TEST_EXTENSIONS_SRCDIR) \
-	  -sp $(TEST_EXTENSIONS_TESTS_SRCDIR) \
-	  -r html \
-	  -r xml \
-	  "$${testcases_srcs[@]}" ; \
-	echo "restoring javaws and netx.jar in $(DESTDIR)" ; \
-	rm -f $(DESTDIR)$(bindir)/$(javaws) $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar ; \
-	rm -f $(DESTDIR)$(bindir)/$(javaws);  \
-	mv $$javaws_backup $(DESTDIR)$(bindir)/$(javaws);  \
-	mv $$netx_backup $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar ; \
-	for file in $(EMMA_MODIFIED_FILES) ; do \
-	  mv $(TEST_EXTENSIONS_DIR)/$$file  $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_SUFFIX)" ; \
-	  mv $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)"  $(TEST_EXTENSIONS_DIR)/$$file ; \
-	done ;\
-	rm $(TEST_EXTENSIONS_DIR)/coverage.txt ; 
-else
-	echo "Sorry, coverage report cant be run without emma installed. Try install emma or specify with-emma value" ;
-	exit 5
-endif
-	touch $@
-
 $(COVERABLE_PLUGIN_DIR):
 	mkdir -p $(COVERABLE_PLUGIN_DIR);
 	
@@ -1396,7 +1249,7 @@
 stamps/compile-jacoco-operator.stamp stamps/build-fake-plugin.stamp
 if WITH_JACOCO
 	cd $(TESTS_DIR) ; \
-	for file in $(EMMA_MODIFIED_FILES) ; do \
+	for file in $(COVERAGE_MODIFIED_FILES) ; do \
 	  mv $(TEST_EXTENSIONS_DIR)/$$file $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)" ; \
 	done ;\
 	echo "backuping javaws in $(DESTDIR)$(bindir)" ; \
@@ -1425,9 +1278,9 @@
 	  done ; \
 	cd $(TEST_EXTENSIONS_DIR) ; \
 	class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
-	CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_RUNTIME):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_DIR):$(JACOCO_CLASSPATH):$(TEST_EXTENSIONS_TESTS_DIR):$(TEST_EXTENSIONS_SRCDIR) ; \
-	  $(BOOT_DIR)/bin/java $(JACOCO_AGENT_SWITCH) $(REPRODUCERS_DPARAMETERS) \
-	 -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH CommandLine $$class_names ; \
+	CLASSPATH=$(call joinsegments $(NETX_DIR)/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) . $(TEST_EXTENSIONS_DIR) $(JACOCO_CLASSPATH) $(TEST_EXTENSIONS_TESTS_DIR) $(TEST_EXTENSIONS_SRCDIR)) ; \
+	  $(SYSTEM_JRE_DIR)/bin/java $(JACOCO_AGENT_SWITCH) $(REPRODUCERS_DPARAMETERS) \
+	 -Xbootclasspath/a:$$CLASSPATH CommandLine $$class_names ; \
 	if [ -f $(JACOCO_JAVAWS_RESULTS) ] ; then \
 	  jacoco_javaws_results=$(JACOCO_JAVAWS_RESULTS) ; \
 	  $(JACOCO_OPERATOR_EXEC) \
@@ -1456,7 +1309,7 @@
 	mv $$javaws_backup $(DESTDIR)$(bindir)/$(javaws);  \
 	echo "restoring  plugin in $(DESTDIR)/$(libdir)$(BUILT_PLUGIN_LIBRARY)" ; \
 	mv $$plugin_backup $(DESTDIR)$(libdir)/$(BUILT_PLUGIN_LIBRARY) ; \
-	for file in $(EMMA_MODIFIED_FILES) ; do \
+	for file in $(COVERAGE_MODIFIED_FILES) ; do \
 	  mv $(TEST_EXTENSIONS_DIR)/$$file  $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_SUFFIX)" ; \
 	  mv $(TEST_EXTENSIONS_DIR)/"$$file""$(EMMA_BACKUP_SUFFIX)"  $(TEST_EXTENSIONS_DIR)/$$file ; \
 	done ;
@@ -1495,57 +1348,21 @@
 	exit 5
 endif
 
-run-test-code-coverage: stamps/run-unit-test-code-coverage.stamps stamps/run-reproducers-test-code-coverage.stamps
-if WITH_EMMA
-	cd $(TESTS_DIR) ; \
-	k=0 ; \
-	types=($(ALL_REPRODUCERS)); \
-	for which in "$${types[@]}" ; do \
-	  . $(abs_top_srcdir)/NEW_LINE_IFS ; \
-	  simpleReproducers=(`cat $(abs_top_builddir)/junit-jnlp-dist-$$which.txt `); \
-	  IFS="$$IFS_BACKUP" ; \
-	  for dir in "$${simpleReproducers[@]}" ; do \
-	    testcases_srcs[k]="-sp" ; \
-	    k=$$((k+1)) ; \
-	    testcases_srcs[k]="$(REPRODUCERS_TESTS_SRCDIR)/$$which/$$dir/testcases/" ; \
-	    k=$$((k+1)) ; \
-	  done ; \
-	done ; \
-	$(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -cp $(EMMA_JAR) emma merge \
-	 -in $(NETX_UNIT_TEST_DIR)/coverage.es \
-	 -in $(TEST_EXTENSIONS_DIR)/coverage.es ; \
-	$(BOOT_DIR)/bin/java $(EMMA_JAVA_ARGS) -cp $(EMMA_JAR)  -Demma.report.html.out.encoding=UTF-8 emma report \
-	 -Dreport.html.out.encoding=UTF-8 \
-	 -in $(TESTS_DIR)/coverage.es \
-	 -in $(TESTS_DIR)/coverage.em \
-	 -sp $(NETX_SRCDIR) \
-	 -sp $(NETX_UNIT_TEST_SRCDIR) \
-	 -sp $(JUNIT_RUNNER_SRCDIR) \
-	 -sp $(TEST_EXTENSIONS_SRCDIR) \
-	 -sp $(TEST_EXTENSIONS_TESTS_SRCDIR) \
-	 "$${testcases_srcs[@]}" \
-	 -r html \
-	 -r xml ; 
-else
-	echo "Sorry, coverage report cant be run without emma installed. Try install emma or specify with-emma value" ;
-	exit 5
-endif
-
 run-test-server-on-44321: stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \
  stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp
 	cd $(TEST_EXTENSIONS_DIR) ; \
-	CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_RUNTIME):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR) ; \
-	  $(BOOT_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
-	 -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH net.sourceforge.jnlp.ServerAccess
+	CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) . $(TEST_EXTENSIONS_TESTS_DIR)) ; \
+	  $(SYSTEM_JRE_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
+	 -Xbootclasspath/a:$$CLASSPATH net.sourceforge.jnlp.ServerAccess
 
 run-test-server-on-random-port: stamps/netx.stamp stamps/junit-jnlp-dist-dirs stamps/netx-dist-tests-import-cert-to-public \
  stamps/test-extensions-compile.stamp stamps/compile-reproducers-testcases.stamp $(JUNIT_RUNNER_JAR) stamps/copy-reproducers-resources.stamp
 	cd $(TEST_EXTENSIONS_DIR) ; \
-	CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_RUNTIME):$(JUNIT_RUNNER_JAR):.:$(TEST_EXTENSIONS_TESTS_DIR) ; \
-	  $(BOOT_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
-	 -Xbootclasspath/a:$(RUNTIME):$$CLASSPATH net.sourceforge.jnlp.ServerAccess randomport 
+	CLASSPATH=$(call joinsegments, $(NETX_DIR)/lib/classes.jar $(JUNIT_RUNTIME) $(JUNIT_RUNNER_JAR) . $(TEST_EXTENSIONS_TESTS_DIR)) ; \
+	  $(SYSTEM_JRE_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
+	 -Xbootclasspath/a:$$CLASSPATH net.sourceforge.jnlp.ServerAccess randomport 
 
-clean-netx-tests: clean-netx-unit-tests clean-junit-runner clean-netx-dist-tests clean-test-code-coverage-jacoco clean-test-code-coverage
+clean-netx-tests: clean-netx-unit-tests clean-junit-runner clean-netx-dist-tests clean-test-code-coverage-jacoco
 	if [ -e $(TESTS_DIR)/netx ]; then \
 	  rmdir $(TESTS_DIR)/netx ; \
 	fi
@@ -1602,34 +1419,6 @@
 	rm -f $(abs_top_builddir)/$(PRIVATE_KEYSTORE_NAME)
 	rm -f stamps/run-netx-dist-tests.stamp
 
-clean-unit-test-code-coverage:
-	if [ -e stamps/run-unit-test-code-coverage.stamp ]; then \
-	  rm -rf $(NETX_UNIT_TEST_DIR)/coverage ; \
-	  rm -f $(NETX_UNIT_TEST_DIR)/coverage.xml ; \
-	  rm -f $(NETX_UNIT_TEST_DIR)/coverageX.es ; \
-	  rm -f $(NETX_UNIT_TEST_DIR)/coverageX.ec ; \
-	  rm -f $(NETX_UNIT_TEST_DIR)/coverage.es ; \
-	  rm -f $(NETX_UNIT_TEST_DIR)/tests-output_withEmma.xml ; \
-	  rm -f stamps/run-unit-test-code-coverage.stamp ; \
-	fi
-
-clean-reproducers-test-code-coverage:
-	if [ -e stamps/run-reproducers-test-code-coverage.stamp ]; then \
-	 rm -rf $(TEST_EXTENSIONS_DIR)/coverage ; \
-	 rm -f $(TEST_EXTENSIONS_DIR)/coverage.xml ; \
-	 rm -f $(TEST_EXTENSIONS_DIR)/coverage.es ; \
-	 rm -f $(TEST_EXTENSIONS_DIR)/tests-output_withEmma.xml ; \
-	 rm -f stamps/run-reproducers-test-code-coverage.stamp ; \
-	fi
-
-clean-test-code-coverage: clean-unit-test-code-coverage clean-reproducers-test-code-coverage
-	if [ -e $(TESTS_DIR)/coverage.xml ]; then \
-	  rm -rf $(TESTS_DIR)/coverage  ; \
-	  rm -f $(TESTS_DIR)/coverage.xml  ; \
-	  rm -f $(TESTS_DIR)/coverage.es  ; \
-	  rm -f $(TESTS_DIR)/coverage.em ; \
-	fi
-
 clean-unit-test-code-coverage-jacoco:
 	if [ -e stamps/run-unit-test-code-coverage-jacoco.stamp ]; then \
 	  rm -rf $(NETX_UNIT_TEST_DIR)/coverage ; \
@@ -1673,11 +1462,11 @@
 if ENABLE_PLUGIN
 stamps/plugin-tests.stamp: $(PLUGIN_TEST_SRCS) stamps/plugin.stamp
 	mkdir -p plugin/tests/LiveConnect
-	$(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
+	$(SYSTEM_JDK_DIR)/bin/javac $(IT_JAVACFLAGS) \
 	 -d plugin/tests/LiveConnect \
 	 -classpath liveconnect/lib/classes.jar \
 	 $(PLUGIN_TEST_SRCS) ;
-	$(BOOT_DIR)/bin/jar cf plugin/tests/LiveConnect/PluginTest.jar \
+	$(SYSTEM_JDK_DIR)/bin/jar cf plugin/tests/LiveConnect/PluginTest.jar \
 	  plugin/tests/LiveConnect/*.class ;
 	cp -pPR $(SRC_DIR_LINK) $(abs_top_srcdir)/plugin/tests/LiveConnect/*.{js,html} \
 	  plugin/tests/LiveConnect ;
@@ -1686,85 +1475,6 @@
 	touch stamps/plugin-tests.stamp
 endif
 
-# Bootstrap Directory Targets
-# ===========================
-
-stamps/native-ecj.stamp: 
-	mkdir -p stamps ; \
-	if test "x$(GCJ)" != "xno"; then \
-	  $(GCJ) $(IT_CFLAGS) -Wl,-Bsymbolic -findirect-dispatch -o native-ecj \
-	    --main=org.eclipse.jdt.internal.compiler.batch.Main ${ECJ_JAR} ; \
-	fi ; \
-	touch stamps/native-ecj.stamp
-
-clean-native-ecj:
-	rm -f native-ecj
-	rm -rf stamps/native-ecj.stamp
-
-# bootstrap
-stamps/bootstrap-directory.stamp: stamps/native-ecj.stamp
-	mkdir -p $(BOOT_DIR)/bin stamps/
-	ln -sf $(JAVA) $(BOOT_DIR)/bin/java
-	ln -sf $(JAR) $(BOOT_DIR)/bin/jar
-	ln -sf $(abs_top_builddir)/javac $(BOOT_DIR)/bin/javac
-	ln -sf $(JAVADOC) $(BOOT_DIR)/bin/javadoc
-	if [ -e "$(KEYTOOL)" ] ; then \
-	  ln -sf $(KEYTOOL) $(BOOT_DIR)/bin/keytool ;\
-	else \
-	  echo "#! /bin/sh" > $(BOOT_DIR)/bin/keytool ;\
-	  echo "echo \"keytool not exist on your system, signed part of reproducers test will fail\"" >> $(BOOT_DIR)/bin/keytool ;\
-	  chmod 777 $(BOOT_DIR)/bin/keytool ;\
-	fi
-	if [ -e "$(JARSIGNER)" ] ; then \
-	  ln -sf $(JARSIGNER) $(BOOT_DIR)/bin/jarsigner ;\
-	else \
-	  echo "#! /bin/sh" > $(BOOT_DIR)/bin/jarsigner ;\
-	  echo "echo \"jarsigner not exist on your system, signed part of reproducers test will fail\"" >> $(BOOT_DIR)/bin/jarsigner ;\
-	  chmod 777 $(BOOT_DIR)/bin/jarsigner ;\
-	fi
-	if [ -e "$(PACK200)" ] ; then \
-	  ln -sf $(PACK200) $(BOOT_DIR)/bin/pack200 ;\
-	else \
-	  echo "#! /bin/sh" > $(BOOT_DIR)/bin/pack200 ;\
-	  echo "echo \"pack200 does not exist on your system, custom reproducer for pack200 will fail\"" >> $(BOOT_DIR)/bin/pack200 ;\
-	  chmod 777 $(BOOT_DIR)/bin/pack200 ;\
-	fi
-	mkdir -p $(BOOT_DIR)/jre/lib && \
-	ln -s $(SYSTEM_JRE_DIR)/lib/rt.jar $(BOOT_DIR)/jre/lib && \
-	if [ -e $(SYSTEM_JRE_DIR)/lib/jsse.jar ] ; then \
-	  ln -s $(SYSTEM_JRE_DIR)/lib/jsse.jar $(BOOT_DIR)/jre/lib ; \
-	else \
-	  ln -s rt.jar $(BOOT_DIR)/jre/lib/jsse.jar ; \
-	fi
-	if [ -e $(SYSTEM_JRE_DIR)/lib/resources.jar ] ; then \
-	  ln -s $(SYSTEM_JRE_DIR)/lib/resources.jar $(BOOT_DIR)/jre/lib ; \
-	else \
-	  ln -s rt.jar $(BOOT_DIR)/jre/lib/resources.jar ; \
-	fi
-	ln -sf $(SYSTEM_JRE_DIR)/lib/$(JRE_ARCH_DIR) \
-	  $(BOOT_DIR)/jre/lib/ && \
-	if ! test -d $(BOOT_DIR)/jre/lib/$(INSTALL_ARCH_DIR); \
-	  then \
-	  ln -sf ./$(JRE_ARCH_DIR) \
-	    $(BOOT_DIR)/jre/lib/$(INSTALL_ARCH_DIR); \
-	fi;
-	mkdir -p $(BOOT_DIR)/include && \
-	for i in $(SYSTEM_JDK_DIR)/include/*; do \
-	  test -r $$i | continue; \
-	  i=`basename $$i`; \
-	  rm -f $(BOOT_DIR)/include/$$i; \
-	  ln -s $(SYSTEM_JDK_DIR)/include/$$i $(BOOT_DIR)/include/$$i; \
-	done
-	mkdir -p stamps
-	touch stamps/bootstrap-directory.stamp
-
-clean-bootstrap-directory:
-	rm -rf $(BOOT_DIR)
-	if [ -e ${abs_top_builddir}/bootstrap ] ; then \
-	  rmdir ${abs_top_builddir}/bootstrap ; \
-	fi
-	rm -f stamps/bootstrap-directory.stamp
-
 # Target Aliases
 # ===============
 
@@ -1790,10 +1500,6 @@
 
 run-netx-dist-tests: stamps/run-netx-dist-tests.stamp
 
-run-unit-test-code-coverage: stamps/run-unit-test-code-coverage.stamp
-
-run-reproducers-test-code-coverage: stamps/run-reproducers-test-code-coverage.stamp
-
 run-unit-test-code-coverage-jacoco: stamps/run-unit-test-code-coverage-jacoco.stamp
 
 run-reproducers-test-code-coverage-jacoco: stamps/run-reproducers-test-code-coverage-jacoco.stamp
--- a/acinclude.m4	Fri Feb 06 13:30:11 2015 +0100
+++ b/acinclude.m4	Fri Feb 06 15:14:32 2015 +0100
@@ -734,15 +734,20 @@
   AC_MSG_RESULT($JAVA_VERSION)
   HAVE_JAVA7=`echo $JAVA_VERSION | awk '{if ($(0) >= 1.7) print "yes"}'`
   HAVE_JAVA8=`echo $JAVA_VERSION | awk '{if ($(0) >= 1.8) print "yes"}'`
+  HAVE_JAVA9=`echo $JAVA_VERSION | awk '{if ($(0) >= 1.9) print "yes"}'`
   if test -z "$HAVE_JAVA7"; then
     AC_MSG_ERROR([JDK7 or newer is required, detected was: $JAVA_VERSION])
   fi
   if ! test -z "$HAVE_JAVA8"; then
     VERSION_DEFS="-DHAVE_JAVA8"
   fi
+  if ! test -z "$HAVE_JAVA9"; then
+    VERSION_DEFS="-DHAVE_JAVA9"
+  fi
   AC_SUBST(VERSION_DEFS)
   AM_CONDITIONAL([HAVE_JAVA7], test x"${HAVE_JAVA7}" = "xyes")
   AM_CONDITIONAL([HAVE_JAVA8], test x"${HAVE_JAVA8}" = "xyes")
+  AM_CONDITIONAL([HAVE_JAVA9], test x"${HAVE_JAVA9}" = "xyes")
 ])
 
 AC_DEFUN_ONCE([IT_FIND_KEYTOOL],
--- a/configure.ac	Fri Feb 06 13:30:11 2015 +0100
+++ b/configure.ac	Fri Feb 06 15:14:32 2015 +0100
@@ -120,8 +120,6 @@
     [/usr/share/java/junit4.jar /usr/share/junit-4/lib/junit.jar])
 IT_FIND_OPTIONAL_JAR([hamcrest], HAMCREST,
     [/usr/share/java/hamcrest/all.jar /usr/share/java/hamcrest-core.jar])
-IT_FIND_OPTIONAL_JAR([emma], EMMA,
-    [/usr/share/java/emma.jar])
 IT_FIND_OPTIONAL_JAR([jacoco], JACOCO,
     [/usr/share/java/jacoco/org.jacoco.core.jar])
 IT_FIND_OPTIONAL_JAR([asm], ASM,
--- a/plugin/icedteanp/IcedTeaNPPlugin.cc	Fri Feb 06 13:30:11 2015 +0100
+++ b/plugin/icedteanp/IcedTeaNPPlugin.cc	Fri Feb 06 15:14:32 2015 +0100
@@ -64,7 +64,15 @@
 #define PLUGIN_FULL_NAME PLUGIN_NAME " (using " PLUGIN_VERSION ")"
 #define PLUGIN_DESC "The <a href=\"" PACKAGE_URL "\">" PLUGIN_NAME "</a> executes Java applets."
 
-#ifdef HAVE_JAVA8
+#ifdef HAVE_JAVA9
+ #define JPI_VERSION "1.9.0_" JDK_UPDATE_VERSION
+ #define PLUGIN_APPLET_MIME_DESC \
+  "application/x-java-applet;version=1.8:class,jar:IcedTea;"\
+  "application/x-java-applet;version=1.9:class,jar:IcedTea;"
+ #define PLUGIN_BEAN_MIME_DESC \
+  "application/x-java-bean;version=1.8:class,jar:IcedTea;" \
+  "application/x-java-bean;version=1.9:class,jar:IcedTea;"
+#elif HAVE_JAVA8
  #define JPI_VERSION "1.8.0_" JDK_UPDATE_VERSION
  #define PLUGIN_APPLET_MIME_DESC \
   "application/x-java-applet;version=1.8:class,jar:IcedTea;"
--- a/tests/test-extensions/net/sourceforge/jnlp/tools/CodeSignerCreator.java	Fri Feb 06 13:30:11 2015 +0100
+++ b/tests/test-extensions/net/sourceforge/jnlp/tools/CodeSignerCreator.java	Fri Feb 06 15:14:32 2015 +0100
@@ -204,7 +204,7 @@
             String className = null;
             if (javaVersion.startsWith("1.7")) {
                 className = "sun.security.x509.CertAndKeyGen";
-            } else if (javaVersion.startsWith("1.8")) {
+            } else if (javaVersion.startsWith("1.8") || javaVersion.startsWith("1.9")) {
                 className = "sun.security.tools.keytool.CertAndKeyGen";
             } else {
                 throw new AssertionError("Unrecognized Java Version");