Modify

Opened 23 months ago

Last modified 5 weeks ago

#17858 assigned enhancement

OpenWebStart/Java 11 migration

Reported by: Don-vip Owned by: Don-vip
Priority: major Milestone: Longterm
Component: Core Version:
Keywords: java11 adoptopenjdk icedtea-web Cc: Bjoeni

Description

Things are starting to take shape with what comes after Java WebStart (see #16047):

https://openwebstart.com/

On the current roadmap, the first version will be released end of October. A macro planning for a Java 8 => Java 11 transitions for all JOSM users would roughly look like this:

  • September 2019: we start testing OpenWebStart on all platforms. Likely we'll found a lot of bugs
  • November 2019 : first OpenWebStart version. Unlikely to fix all bugs we'll find
  • Somewhere in 2020: OpenWebStart version without any bug impacting us, we start asking everyone to switch
  • End of 2020: End of Java WebStart support by Oracle for Java 8. We force everyone to switch
  • Somewhere in 2021: Enough JOSM users have switched to OpenWebStart so we can consider moving the codebase to Java 11.

Attachments (7)

rockets_win.png (4.0 KB) - added by Don-vip 6 weeks ago.
rocket_dark.png (4.4 KB) - added by Don-vip 6 weeks ago.
Screenshot 2021-03-27 at 12.23.47.png (30.8 KB) - added by simon04 6 weeks ago.
Screenshot 2021-03-27 at 14.08.28.png (130.3 KB) - added by simon04 6 weeks ago.
dialog.png (32.4 KB) - added by Don-vip 6 weeks ago.
dialog2.png (29.9 KB) - added by Don-vip 6 weeks ago.
Screenshot 2021-04-02 at 00.29.33.png (93.0 KB) - added by simon04 5 weeks ago.

Download all attachments as: .zip

Change History (50)

comment:1 Changed 22 months ago by Don-vip

First problem: #17632

comment:2 Changed 22 months ago by Don-vip

Keywords: adoptopenjdk icedtea-web added

comment:3 Changed 22 months ago by Don-vip

First alpha version (0.2.0) is available for download: https://openwebstart.com/download/

comment:4 Changed 20 months ago by Don-vip

Milestone: Longterm

comment:5 Changed 16 months ago by mdk

Version 1.1.1 is released (at 16.12.2019)

comment:7 Changed 15 months ago by Don-vip

AdoptOpenJDK API now available through https://josm.openstreetmap.de/remote/adoptopenjdk-api/ (#18723)

comment:8 Changed 15 months ago by Don-vip

https://wiki.ubuntu.com/BionicBeaver/ReleaseNotes/

As of 18.04.4, OpenJDK 11 is the default in 18.04.

OpenJDK 8 has moved to universe and will remain available there for the life of 18.04, to provide migration time for packages, custom applications, or scripts that can't be build with OpenJDK 11. OpenJDK 8 will be updated in 18.04 until Ubuntu 16.04 LTS reaches EOL in April 2021.

comment:10 Changed 13 months ago by Don-vip

AdoptOpenJDK officially refused to ship OpenJFX in their binary distributions:
https://github.com/AdoptOpenJDK/TSC/issues/27#issuecomment-607663428

So the best distribution for us would be Azul Zulu and Bellsoft's Liberica.

comment:11 Changed 13 months ago by taylor.smock

Another issue: #19044 (Azul Zulu 11.0.6/AdoptOpenJDK 11.0.6). It looks like jdk.swing.interop.SwingInterOpUtils doesn't exist, for whatever reason. Oddly enough, it is never directly called by us (its called by JFXPanel, which is in the java distribution). I haven't filed a bug upstream, since I haven't run with a "standard" version of Azul Zulu yet.

EDIT: Not reproducible with Azul Zulu or AdoptOpenJDK from CLI.

Possibly related to https://github.com/AdoptOpenJDK/IcedTea-Web/issues/595 .

Last edited 13 months ago by taylor.smock (previous) (diff)

comment:12 Changed 12 months ago by mdk

It looks like ​https://github.com/AdoptOpenJDK/IcedTea-Web/issues/595 is fixed in the actual release 1.1.7

comment:13 Changed 7 months ago by jBeata

Do you have a more clear deadline for moving the code-base to Java11? It will happen in the first half of 2021 or the second?

comment:14 in reply to:  13 Changed 7 months ago by stoecker

Replying to jBeata:

Do you have a more clear deadline for moving the code-base to Java11? It will happen in the first half of 2021 or the second?

Usually when less than 5% of our users use older versions. Currently 70% of our users use Java 8. About 20% use Java 11.

comment:15 Changed 7 months ago by Don-vip

Oracle changed again their plans concerning Java 8. It was previously expected they stop releasing public updates of Java 8 on java.com (the version used by nearly all our Windows users) at the end of 2020.

Now the plan is:

Oracle will continue to provide free public updates and auto updates of Java SE 8 indefinitely for Personal, Development and other Users via java.com. Oracle will provide at least 18 months notice on this page and other communication channels if an end of availability date is set. [...]
Oracle does not plan to migrate desktops from Java SE 8 to later versions via the auto update feature. This includes the Java Plugin and Java Web Start. [...]

So we won't see any major decrease of Java 8 usage until we force this change by promoting OpenWebStart and Java 11 to our users. I didn't start to work on this yet.

Given on our past experience, it takes months between the time we start to deprecate a version of Java and the time enough people abandoned it, so I wouldn't see a Java 11 migration before Q2 2021 at best.

comment:16 in reply to:  15 Changed 7 months ago by stoecker

Replying to Don-vip:

Q2 2021 at best.

Still very optimistic. Q4 2021 or later seems more realistic ;-) Even Linux has still about 30% Java 8.

P.S. Added --os option to our checkjosm tool :-)

comment:17 Changed 7 months ago by Don-vip

I meant S2, with Q4 in mind actually :)

comment:18 Changed 7 months ago by jBeata

Thanks for the clarification. We also use Java 8 since the minimum version for running JOSM is Java 8. But we plan to switch as soon as JOSM main version is updated to 11.

comment:19 Changed 2 months ago by Don-vip

Current numbers:

Java Main Version --> 8 (7174, 67.6%) 9 (21,  0.2%) 10 (24,  0.2%) 11 (2130, 20.1%) 12 (167,  1.6%) 13 (248,  2.3%) 14 (299,  2.8%) 15 (532,  5.0%) 16 (10,  0.1%) 17 (7,  0.1%)

I'm really happy to see that OpenWebStart really kicks in: several versions released, 5 companies seem to sponsor Karakun on front page, nearly 200 developers have starred the project on GitHub. Software is now available on Windows, mac and Linux. It's a complete and viable replacement to Oracle WebStart.

I'll see how to detect Oracle WebStart and suggest users to switch to OpenWebStart. At the same time they do that, they'll switch from Oracle JRE 8 to Azul JRE 11.

@Dirk would it be possible to update checkjosm to get vendor stats? I'd like to see the percentage of users running an Oracle runtime versus those who do not.

comment:20 Changed 2 months ago by stoecker

That information isn't available in the User-Agent, so I can't display it :-)

comment:21 in reply to:  20 Changed 2 months ago by Don-vip

Replying to stoecker:

That information isn't available in the User-Agent, so I can't display it :-)

Ah, I thought it was sent. I'll check only Java 8 then. Should be the same thing.

comment:22 Changed 2 months ago by Bjoeni

Cc: Bjoeni added

comment:23 Changed 6 weeks ago by Don-vip

I just fixed #18737 which was the only blocker to OpenWebStart migration. Let's get rid of Oracle Java WebStart.

Changed 6 weeks ago by Don-vip

Attachment: rockets_win.png added

Changed 6 weeks ago by Don-vip

Attachment: rocket_dark.png added

comment:24 Changed 6 weeks ago by Don-vip

Vote for your preferred rocket icon! Which one looks the best? 1, 2, 3, 4?



comment:25 Changed 6 weeks ago by simon04

I vote for 4️⃣ :-)

comment:26 Changed 6 weeks ago by simon04

Awesome, successfully tested (ticket #18737) on macOS! On Windows and macOS the status report lacks any indication that JOSM is running via webstart:

Relative:URL: ^/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2021-03-26 22:41:31 +0100 (Fri, 26 Mar 2021)
Revision:17674
Build-Date:2021-03-27 02:30:56
URL:https://josm.openstreetmap.de/svn/trunk

Identification: JOSM/1.5 (17674 en) Mac OS X 10.16
OS Build number: macOS 11.2.3 (20D91)
Memory Usage: 410 MB / 2048 MB (171 MB allocated, but free)
Java version: 16+36, Azul Systems, Inc., OpenJDK 64-Bit Server VM
Look and Feel: com.formdev.flatlaf.FlatLightLaf
Screen: Display 1 1440×900 (scaling 2,00×2,00) Display 2 3008×1692 (scaling 2,00×2,00)
Maximum Screen Size: 3008×1692
Best cursor sizes: 16×16→16×16, 32×32→32×32
VM arguments: [--add-modules=java.scripting,java.sql, --add-exports=java.desktop/com.apple.eawt=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED, --add-exports=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED, --add-exports=jdk.deploy/com.sun.deploy.config=ALL-UNNAMED, --add-opens=java.base/java.lang=ALL-UNNAMED, --add-opens=java.base/java.nio=ALL-UNNAMED, --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED, --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED, --add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED, --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED, --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED, -Djava.util.Arrays.useLegacyMergeSort=true, --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED,java.desktop, --add-exports=java.base/jdk.internal.util.jar=ALL-UNNAMED,java.desktop, --add-exports=java.base/com.sun.net.ssl.internal.ssl=ALL-UNNAMED,java.desktop, --add-reads=java.naming=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,jdk.jsobject, --add-exports=java.base/sun.security.action=ALL-UNNAMED,java.desktop, --add-reads=java.base=ALL-UNNAMED,java.desktop, --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED,java.desktop, --add-exports=java.naming/com.sun.jndi.toolkit.url=ALL-UNNAMED,java.desktop, --add-exports=java.base/sun.security.util=ALL-UNNAMED,java.desktop,ALL-UNNAMED, --add-reads=java.desktop=ALL-UNNAMED,java.naming, --add-exports=java.desktop/sun.awt=ALL-UNNAMED,java.desktop, --add-exports=java.base/sun.security.x509=ALL-UNNAMED,java.desktop,ALL-UNNAMED, --add-exports=java.desktop/javax.jnlp=ALL-UNNAMED,java.desktop, --add-exports=java.base/sun.security.provider=ALL-UNNAMED,java.desktop, --add-exports=java.base/sun.security.validator=ALL-UNNAMED,java.desktop]

Plugins:
+ ImportImagePlugin (35567)
+ apache-commons (35524)
+ ejml (35458)
+ flatlaf (35703)
+ geotools (35458)
+ jts (35458)
+ log4j (35458)

This statement might help us to identify OpenWebStart:

Class.forName("com.openwebstart.launcher.OpenWebStartLauncher")

comment:27 in reply to:  24 Changed 6 weeks ago by skyper

Replying to Don-vip:

Vote for your preferred rocket icon! Which one looks the best? 1, 2, 3, 4?

I like 1 or 4. Maybe, the dark brown on the outside wings could be a bit lighter. With the dark mode icons need to respect dark and light background and often contrasting outlines like 1 and 2 show are helpful.

Changed 6 weeks ago by simon04

Changed 6 weeks ago by simon04

comment:28 Changed 6 weeks ago by simon04

When starting, OpenWebStart shows this information message:

App name on macos screen menu is Boot · Issue 325 · karakun/OpenWebStart · https://github.com/karakun/OpenWebStart/issues/325

comment:29 in reply to:  26 ; Changed 6 weeks ago by Don-vip

Replying to simon04:

This statement might help us to identify OpenWebStart:

Class.forName("com.openwebstart.launcher.OpenWebStartLauncher")

I plan to use this (not tested yet):

    /**
     * Determines whether JOSM has been started via Web Start (JNLP).
     * @return true if JOSM has been started via Web Start (JNLP)
     * @since xxx
     */
    public static boolean isRunningWebStart() {
        try {
            // See http://stackoverflow.com/a/16200769/2257172
            return Class.forName("javax.jnlp.ServiceManager") != null;
        } catch (ClassNotFoundException e) {
            return false;
        }
    }

    /**
     * Determines whether JOSM has been started via Oracle Java Web Start.
     * @return true if JOSM has been started via Oracle Java Web Start
     * @since 15740
     */
    public static boolean isRunningJavaWebStart() {
        return isRunningWebStart() && Package.getPackage("com.sun.javaws") != null;
    }

    /**
     * Determines whether JOSM has been started via Open Web Start (IcedTea-Web).
     * @return true if JOSM has been started via Open Web Start (IcedTea-Web)
     * @since xxx
     */
    public static boolean isRunningOpenWebStart() {
        return isRunningWebStart() && Package.getPackage("net.adoptopenjdk.icedteaweb") != null;
    }

Changed 6 weeks ago by Don-vip

Attachment: dialog.png added

comment:30 Changed 6 weeks ago by Don-vip

This is the upgrade text I came with. Comments?


For the icon, I've started a poll on Twitter as well, I hope a clear winner comes out :D

comment:31 in reply to:  29 Changed 6 weeks ago by Don-vip

Replying to Don-vip:

    public static boolean isRunningOpenWebStart() {
        return isRunningWebStart() && Package.getPackage("net.adoptopenjdk.icedteaweb") != null;
    }

And we should also be aware of upcoming changes that will probably affect package names for ITW https://blog.adoptium.net/2021/03/eclipse-adoptium-announcement/

comment:32 in reply to:  30 ; Changed 6 weeks ago by simon04

Replying to Don-vip:

This is the upgrade text I came with. Comments?

Two small suggestions:

-Oracle implementation (2x)
+an Oracle implementation

-as a new product: OpenWebStart.
+as a new product: OpenWebStart

What is the difference between "OK" and "Download OpenWebStart"?

You you plan to add this dialog for the 21.03 release (I'm referring to i18n)?

comment:33 in reply to:  32 Changed 6 weeks ago by Don-vip

Replying to simon04:

Two small suggestions:

-Oracle implementation (2x)
+an Oracle implementation

-as a new product: OpenWebStart.
+as a new product: OpenWebStart

Thanks.

What is the difference between "OK" and "Download OpenWebStart"?

OK does nothing, it just closes the dialog. It's the same behaviour as current MainApplication.askUpdateJava dialog.

You you plan to add this dialog for the 21.03 release (I'm referring to i18n)?

Yes, tomorrow evening.

comment:34 in reply to:  30 Changed 6 weeks ago by stoecker

Replying to Don-vip:

This is the upgrade text I came with. Comments?

Remove the remaining sentence after "Java 11" and join the two sentences with "but".

I'd vote for icon 4 (icon 1 is second place).

Changed 6 weeks ago by Don-vip

Attachment: dialog2.png added

comment:35 Changed 6 weeks ago by Don-vip

New version taking into account Simon and Dirk feedback:


comment:36 Changed 6 weeks ago by simon04

Looks good! 👍🏿

comment:37 Changed 6 weeks ago by stoecker

Actually I meant to join the first two sentences, but this is even better ;-)

comment:38 Changed 6 weeks ago by Don-vip

Good :) Thank you :)

comment:39 Changed 6 weeks ago by Don-vip

In 17679/josm:

see #17858 - ask Oracle Java WebStart users to switch to OpenWebStart

Rocket icon from https://github.com/twitter/twemoji/blob/v13.0.2/assets/svg/1f680.svg

comment:40 Changed 6 weeks ago by simon04

Java Warnings (Package.getPackage is deprecated since Java 9):

/Users/simon/src/josm/src/org/openstreetmap/josm/tools/Utils.java:1742: warning: [deprecation] getPackage(String) in Package has been deprecated
        return isRunningWebStart() && Package.getPackage("com.sun.javaws") != null;
                                             ^
/Users/simon/src/josm/src/org/openstreetmap/josm/tools/Utils.java:1751: warning: [deprecation] getPackage(String) in Package has been deprecated
        return isRunningWebStart() && Package.getPackage("net.adoptopenjdk.icedteaweb") != null;
                                             ^

comment:41 Changed 6 weeks ago by Don-vip

In 17692/josm:

see #17858 - fix deprecation warnings

Changed 5 weeks ago by simon04

comment:42 in reply to:  28 Changed 5 weeks ago by simon04

Replying to simon04:

When starting, OpenWebStart shows this information message:

"The proxy 'System proxy' does not support 'Passive FTP Mode (PASV)'"

Only affects macOS, see https://github.com/karakun/OpenWebStart/blob/26c8990af7f2214b290d1056cd27a7f78f4477a6/openwebstart/src/main/java/com/openwebstart/proxy/mac/MacProxyProvider.java#L36-L38

Fixed by selecting "No Proxy" in the OpenWebStart Settings:


comment:43 Changed 5 weeks ago by gaben

On Windows, the WebStart dialogue pops up and not steals the focus, sometimes resulting in a JOSM 'loading' indefinitely. The same applies to Java update notification windows. The only way to resolve is to click somewhere on the splash screen.

URL:https://josm.openstreetmap.de/svn/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2021-04-01 23:17:01 +0200 (Thu, 01 Apr 2021)
Build-Date:2021-04-01 21:46:03
Revision:17702
Relative:URL: ^/trunk

Identification: JOSM/1.5 (17702 hu) Windows 10 64-Bit
OS Build number: Windows 10 Pro for Workstations 2009 (19042)
Memory Usage: 912 MB / 1820 MB (719 MB allocated, but free)
Java version: 1.8.0_281-b09, Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM
Look and Feel: com.sun.java.swing.plaf.windows.WindowsLookAndFeel
Screen: \Display0 1920×1200 (scaling 1,00×1,00)
Maximum Screen Size: 1920×1200
Best cursor sizes: 16×16→32×32, 32×32→32×32
System property file.encoding: Cp1250
System property sun.jnu.encoding: Cp1250

Modify Ticket

Change Properties
Set your email in Preferences
Action
as assigned The owner will remain Don-vip.
as The resolution will be set.
to The owner will be changed from Don-vip to the specified user.
The owner will change to Don-vip
as duplicate The resolution will be set to duplicate.The specified ticket will be cross-referenced with this ticket

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.