IcedTeaWeb: using java 9 run args ?
Laurent Bourgès
bourges.laurent at gmail.com
Fri Oct 19 12:45:54 UTC 2018
Sorry I was not clear enough.
I propose to call java -cp netx.jar ParseVersion instead of java -version
inside existing sh/bat scripts.
Not jshell at all !
Such ParseVersion class will just do the tricky version check and return a
single digit: 6, 7, 8, 9, 11 ...
Then scripts will not use cut/head ...
Laurent
Le ven. 19 oct. 2018 à 14:12, Jiri Vanek <jvanek at redhat.com> a écrit :
> On 10/19/18 1:14 PM, Laurent Bourgès wrote:
> > Jiri,
> >
> > One more question:
> > Why not parse java.version in java itself ?
> >
> > Shell scripts need to parse 1.8 or 9+ to handle properly java command
> arguments.
>
> Two issues. One is as you write - jdk8 still needs tobe handled.
> Issue two, many distributions have jshell in devel subpackages.
>
> Otherwise I would be +1. In all my work, which handles java version (and
> usually requires javac) I
> have: if [jshell] then jdk8OrLess else jshel ....
>
> But ITW is targeting to JRE only. And in jdk9,jshell was in sdk.
>
> J:(
> >
> > Laurent
> >
> > Le jeu. 18 oct. 2018 à 23:05, Laurent Bourgès <bourges.laurent at gmail.com
> > <mailto:bourges.laurent at gmail.com>> a écrit :
> >
> > Jiri,
> > I took some time to illustrate my proposal about simplifying shell
> scripts to work on OpenJDK11
> > and 8:
> >
> > I need the install directory for ITW:
> > +ITW_INS=/home/bourgesl/libs/icedtea-web-1.7-HEAD/install
> >
> > Then I removed all add-reads / add-exports (except patch-module) and
> added argument to use arg file:
> > *+ # add JDK9 arg file:
> > + COMMAND[k]="@$ITW_INS/bin/itw-run.args"
> > + k=$((k+1))*
> >
> > Arg File named itw-run.args in the same folder as shell scripts
> (sh/bat) :
> > --add-reads=java.base=ALL-UNNAMED,java.desktop
> > --add-reads=java.desktop=ALL-UNNAMED,java.naming
> > --add-reads=java.naming=ALL-UNNAMED,java.desktop
> >
> > --add-exports=java.desktop/sun.awt=ALL-UNNAMED,java.desktop
> > --add-exports=java.desktop/javax.jnlp=ALL-UNNAMED,java.desktop
> >
> >
> --add-exports=java.base/com.sun.net.ssl.internal.ssl=ALL-UNNAMED,java.desktop
> >
> --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED,java.desktop
> > --add-exports=java.base/sun.security.action=ALL-UNNAMED,java.desktop
> >
> --add-exports=java.base/sun.security.provider=ALL-UNNAMED,java.desktop
> > --add-exports=java.base/sun.security.util=ALL-UNNAMED,java.desktop
> >
> --add-exports=java.base/sun.security.validator=ALL-UNNAMED,java.desktop
> > --add-exports=java.base/sun.security.x509=ALL-UNNAMED,java.desktop
> >
> --add-exports=java.base/jdk.internal.util.jar=ALL-UNNAMED,java.desktop
> >
> --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED,java.desktop
> >
> > --add-exports=java.desktop/sun.awt.X11=ALL-UNNAMED,java.desktop
> > --add-exports=java.desktop/sun.applet=ALL-UNNAMED,java.desktop
> > --add-exports=java.desktop/sun.applet=ALL-UNNAMED,jdk.jsobject
> >
> >
> --add-exports=java.naming/com.sun.jndi.toolkit.url=ALL-UNNAMED,java.desktop
> >
> > It is simpler to me to gather all add-reads/add-exports declaration
> in such arg file (less
> > obfuscated) and it will be reused by windows script too.
> >
> > What do you think ?
> > I will go on modifying the Makefile generating such shells from
> templates launchers.in
> > <http://launchers.in> (sed ...)
> >
> > Laurent
> >
> > PS: diff for my javaws / javaws11 installed scripts (generated):*
> > *
> > --- /home/icedtea/icedtea-web-1.7-HEAD/install/bin/javaws
> > +++ /home/icedtea/icedtea-web-1.7-HEAD/install/bin/javaws11
> > @@ -1,14 +1,16 @@
> > #!/bin/bash
> >
> > +ITW_INS=/home/bourgesl/libs/icedtea-web-1.7-HEAD/install
> > +ITW_SHARE=$ITW_INS/share
> > +
> > NASHORN=lib/ext/nashorn.jar
> > -JAVA=/home/bourgesl/apps/ojdk8//jre/bin/java
> >
> -LAUNCHER_BOOTCLASSPATH='-Xbootclasspath/a:/home/bourgesl/libs/icedtea-web-1.7-HEAD/install/share/icedtea-web/netx.jar'
> > +JAVA_BASE=/home/bourgesl/apps/openjdk-11+28_linux-x64_bin
> >
> +LAUNCHER_BOOTCLASSPATH="-Xbootclasspath/a:$ITW_SHARE/icedtea-web/netx.jar"
> > LAUNCHER_FLAGS=-Xms8m
> > CLASSNAME=net.sourceforge.jnlp.runtime.Boot
> >
> -BINARY_LOCATION=/home/bourgesl/libs/icedtea-web-1.7-HEAD/install/bin/javaws
> >
> -SPLASH_LOCATION=/home/bourgesl/libs/icedtea-web-1.7-HEAD/install/share/icedtea-web/javaws_splash.png
> > +BINARY_LOCATION=$ITW_INS/bin/javaws11
> > +SPLASH_LOCATION=$ITW_SHARE/icedtea-web/javaws_splash.png
> > PROGRAM_NAME=javaws
> >
> -CP=/home/bourgesl/apps/ojdk8//jre/lib/rt.jar:/home/bourgesl/apps/ojdk8//jre/lib/jfxrt.jar
> >
> > CONFIG_HOME=$XDG_CONFIG_HOME
> > if [ "x$CONFIG_HOME" = "x" ] ; then
> > @@ -27,15 +29,14 @@
> > fi;
> > if [ "x$CUSTOM_JRE" != "x" ] ; then
> > if [ -e "$CUSTOM_JRE" -a -e "$CUSTOM_JRE/bin/java" ] ; then
> > - JAVA=$CUSTOM_JRE/bin/java
> > - CP=$CUSTOM_JRE/lib/rt.jar:$CUSTOM_JRE/lib/jfxrt.jar
> > -
> LAUNCHER_BOOTCLASSPATH=$LAUNCHER_BOOTCLASSPATH:$CUSTOM_JRE/$NASHORN
> > + JAVA_BASE=$CUSTOM_JRE
> > else
> > - echo "Your custom JRE $CUSTOM_JRE read from
> deployment.properties under key $PROPERTY_NAME
> > as $CUSTOM_JRE is not valid. Using default ($JAVA, $CP) in attempt
> to start. Please fix this."
> > + echo "Your custom JRE $CUSTOM_JRE read from
> deployment.properties under key $PROPERTY_NAME
> > as $CUSTOM_JRE is not valid. Using default ($JAVA) in attempt to
> start. Please fix this."
> > fi
> > -else
> > -
> LAUNCHER_BOOTCLASSPATH="$LAUNCHER_BOOTCLASSPATH:/home/bourgesl/apps/ojdk8//jre/$NASHORN"
> > fi;
> > +
> > +JAVA=$JAVA_BASE/bin/java
> > +echo "JAVA: $JAVA"
> >
> > MODULAR_JDK="NO"
> > version=`${JAVA} -version 2>&1 | head -n 1 | cut -d'-' -f1 | cut
> -d'"' -f2 | cut -d'.' -f1`
> > @@ -44,6 +45,9 @@
> > fi
> > if [ $version -ge "9" ]; then
> > MODULAR_JDK="YES"
> > +else
> > + CP=$JAVA_BASE/lib/rt.jar:$JAVA_BASE/lib/jfxrt.jar
> > + LAUNCHER_BOOTCLASSPATH=$LAUNCHER_BOOTCLASSPATH:$JAVA_BASE/$NASHORN
> > fi
> >
> > JAVA_ARGS=( )
> > @@ -55,7 +59,7 @@
> >
> > SPLASH="false"
> > if [ "x$ICEDTEA_WEB_SPLASH" = "x" ] ; then
> > -SPLASH="true"
> > + SPLASH="true"
> > fi;
> > while [ "$#" -gt "0" ]; do
> > case "$1" in
> > @@ -78,8 +82,8 @@
> > COMMAND[k]="${JAVA}"
> > k=$((k+1))
> > if [ "$SPLASH" = "true" ] ; then
> > -COMMAND[k]="-splash:${SPLASH_LOCATION}"
> > -k=$((k+1))
> > + COMMAND[k]="-splash:${SPLASH_LOCATION}"
> > + k=$((k+1))
> > fi;
> > COMMAND[k]="${LAUNCHER_BOOTCLASSPATH}"
> > k=$((k+1))
> > @@ -87,96 +91,30 @@
> > k=$((k+1))
> >
> > if [ "x$MODULAR_JDK" == "xYES" ] ; then
> > -COMMAND[k]="--patch-module"
> > -k=$((k+1))
> >
> -COMMAND[k]="java.desktop=:/home/bourgesl/libs/icedtea-web-1.7-HEAD/install/share/icedtea-web/netx.jar"
> > -k=$((k+1))
> > -# jsobject must be pathched separately from plugin
> > -# otherwise netscape pkg would be shared by two modules, which is
> forbiden
> > -JSOBJECT_JAR=
> > -# plugin jar may not be built
> > -if [ ! "x$JSOBJECT_JAR" == "x" ] ; then
> > COMMAND[k]="--patch-module"
> > k=$((k+1))
> > - COMMAND[k]="jdk.jsobject=$JSOBJECT_JAR"
> > + COMMAND[k]="java.desktop=$ITW_SHARE/icedtea-web/netx.jar"
> > + k=$((k+1))
> > + # jsobject must be patched separately from plugin
> > + # otherwise netscape pkg would be shared by two modules, which is
> forbiden
> > + JSOBJECT_JAR=
> > + # plugin jar may not be built
> > + if [ ! "x$JSOBJECT_JAR" == "x" ] ; then
> > + COMMAND[k]="--patch-module"
> > + k=$((k+1))
> > + COMMAND[k]="jdk.jsobject=$JSOBJECT_JAR"
> > + k=$((k+1))
> > + fi
> > +
> > *+ # add JDK9 arg file:
> > + COMMAND[k]="@$ITW_INS/bin/itw-run.args"
> > + k=$((k+1))*
> > +else
> > + COMMAND[k]="-classpath"
> > + k=$((k+1))
> > + COMMAND[k]="${CP}"
> > k=$((k+1))
> > fi
> > -
> > -COMMAND[k]="--add-reads"
> > -k=$((k+1))
> > -COMMAND[k]="java.base=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-reads"
> > -k=$((k+1))
> > -COMMAND[k]="java.desktop=ALL-UNNAMED,java.naming"
> > -k=$((k+1))
> > -COMMAND[k]="--add-reads"
> > -k=$((k+1))
> > -COMMAND[k]="java.naming=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> > -COMMAND[k]="java.desktop/sun.awt=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> > -COMMAND[k]="java.desktop/javax.jnlp=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> >
> -COMMAND[k]="java.base/sun.security.provider=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> > -COMMAND[k]="java.base/sun.security.util=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> > -COMMAND[k]="java.base/sun.security.x509=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> >
> -COMMAND[k]="java.base/jdk.internal.util.jar=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> >
> -COMMAND[k]="java.base/sun.security.validator=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> >
> -COMMAND[k]="java.base/com.sun.net.ssl.internal.ssl=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> >
> -COMMAND[k]="java.base/sun.net.www.protocol.jar=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> > -COMMAND[k]="java.desktop/sun.awt.X11=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> >
> -COMMAND[k]="java.naming/com.sun.jndi.toolkit.url=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> > -COMMAND[k]="java.desktop/sun.applet=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> > -COMMAND[k]="java.base/sun.security.action=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> >
> -COMMAND[k]="java.base/sun.net.www.protocol.http=ALL-UNNAMED,java.desktop"
> > -k=$((k+1))
> > -COMMAND[k]="--add-exports"
> > -k=$((k+1))
> > -COMMAND[k]="java.desktop/sun.applet=ALL-UNNAMED,jdk.jsobject"
> > -k=$((k+1))
> > -fi
> > -
> >
> > i=0
> > while [ "$i" -lt "${#JAVA_ARGS[@]}" ]; do
> > @@ -184,14 +122,20 @@
> > i=$((i+1))
> > k=$((k+1))
> > done
> > -COMMAND[k]="-classpath"
> > -k=$((k+1))
> > -COMMAND[k]="${CP}"
> > -k=$((k+1))
> > +
> > COMMAND[k]="-Dicedtea-web.bin.name <http://Dicedtea-web.bin.name
> >=${PROGRAM_NAME}"
> > k=$((k+1))
> > COMMAND[k]="-Dicedtea-web.bin.location=${BINARY_LOCATION}"
> > k=$((k+1))
> > +
> > +# icedtea-web.edt.debug
> > +#COMMAND[k]="-Dicedtea-web.edt.debug=true"
> > +#k=$((k+1))
> >
> > COMMAND[k]="${CLASSNAME}"
> > k=$((k+1))
> > j=0
> > @@ -201,6 +145,7 @@
> > k=$((k+1))
> > done
> >
> > +echo "CLI: '${COMMAND[@]}' "
> > exec -a "$PROGRAM_NAME" "${COMMAND[@]}"
> >
> > exit $?
> >
> >
> > Le mar. 9 oct. 2018 à 12:20, Jiri Vanek <jvanek at redhat.com <mailto:
> jvanek at redhat.com>> a écrit :
> >
> > On 10/9/18 9:24 AM, Laurent Bourgès wrote:
> > > Jiri,
> > >
> > > I will prototype moving all java9 args from linux launchers
> into a common arg file: itw.args.
> > >
> > > It will reduce the size and complexity and allow its reuse in
> windows launchers.
> > > I suppose it will simplify rust launchers too.
> >
> > Major issue is I guess to find that file. The global x user
> configurations are different.
> > Also it
> > can use per-vm configurations and in addition (linux x window)
> x (installed x selfbuild x
> > unpacked) locations are different.
> >
> > Maybe more friendly will be to include that in deployment
> properties? Maybe path to this
> > file can be
> > in deplyment properties?
> >
> >
> > This complication was the actual reason I had it hardcoded.
> (especilly with duplicated
> > hardcoding
> > in plugin, but htat issue is mos likely gone by plugin being
> deprecatyed in 1.8 and removed
> > in 1.9).
> >
> > Now, if this file will be used for -add-provides and friends,
> should it serve also for other
> > java
> > params? We already ahve this covered via -J and via one
> deployment property (whih is I'm afraid
> > untested, unknow and never tempted out of the plugin).
> >
> > Thoughts?
> > J.
> > >
> > >
> > > > I wonder if you would agree giving java 9 add-reads,
> add-export args as argument
> > files ?
> > > > See
> > > >
> > >
> >
> https://blog.codefx.org/java/five-command-line-options-hack-java-module-system/#Thoughts-On-Command-Line-Options
> > > >
> > > > It would simplify a lot the linux / windows shell
> scripts and possibly rust
> > launchers (1.8) and
> > > > allow using the same arg file for both win/unix
> launcher (unified).
> > > >
> > >
> > > Hi!
> > >
> > > Interesting idea...
> > >
> > > Isnt it already achievable via -J ?
> > > /me not tried
> > >
> > >
> > > This work is dedicated to improving existing shell scripts,
> not using arg file for the jnlp
> > > application (out of scope).
> > >
> > > Cheers,
> > > Laurent
> >
> >
> > --
> > Jiri Vanek
> > Senior QE engineer, OpenJDK QE lead, Mgr.
> > Red Hat Czech
> > jvanek at redhat.com <mailto:jvanek at redhat.com> M: +420775390109
> >
> >
> >
> > --
> > --
> > Laurent Bourgès
> >
>
>
> --
> Jiri Vanek
> Senior QE engineer, OpenJDK QE lead, Mgr.
> Red Hat Czech
> jvanek at redhat.com M: +420775390109
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20181019/8479c6a0/attachment-0001.html>
More information about the distro-pkg-dev
mailing list