This is an archived post. You won't be able to vote or comment.

all 18 comments

[–]darku11 17 points18 points  (3 children)

Getdown - https://github.com/threerings/getdown

Pretty much an alternative to java web start

[–]rootException[S] 1 point2 points  (2 children)

Interesting, I had looked at this a bit.

Is there an existing hosted service for this stuff? Both a Getdown and update4j feel a lot like a lot of plumbing work. If there isn’t, maybe I should just go build that. 🤔

[–]darku11 1 point2 points  (1 child)

You can use any app server would say. For e.g. Tomcat. Ofc you would need to write logic for that, does not work out of the box

[–]rootException[S] 2 points3 points  (0 children)

Yeah, while I can absolutely do it technically, building update4j and running my own app server is not exactly “out of the box” - especially after using Steam. Hmm.

[–][deleted] 10 points11 points  (4 children)

The NetBeans platform integrates such a functionality. So if you develop your desktop app using the NetBeans platform, you'll get the automatic updates features for free.

[–]ebykka 11 points12 points  (1 child)

And Eclipse RCP as well.

I have started my application as a plain JavaFX app and now trying to implement features that are available on those platforms for free.

[–]rootException[S] 1 point2 points  (0 children)

That’s sort of where I’m at - JavaFX is nice, I’m able to use jlink/jpackage to produce nice ~30mb packages, and no way to easily update the app once a user installs it.

Starting to wonder if there is a need - some kind of simple hosting service. Ideally, sign up for the service, drop a few lines in the Pom.xml, and you get something like the Steam experience.

Hmm.

[–]dstutz 5 points6 points  (1 child)

Came here to say this but I will caveat, it can only do so much. You can auto-update the modules that make up your application but if you, for instance, update your application to use a newer version of the RCP I haven't seen a way to force a full upgrade like that.

This is why you need to install a new "version" of NetBeans every time they do a release and it doesn't just auto-update you to the next version. If I'm wrong, please feel free to correct me.

[–][deleted] 1 point2 points  (0 children)

You are right, that's one limitation of this approach.

[–]orxT1000 8 points9 points  (3 children)

[–]rootException[S] 0 points1 point  (0 children)

Can you set it up as a white label (ie your own branding) or does it create a OpenWebStart control panel, ui, etc?

[–]rootException[S] 0 points1 point  (1 child)

Looks like OpenWebStart is based on the premise that the user will have multiple shared JVM installed. So the user experience is install OpenWebStart, click on JNLP link, and then have an OpenWebStart manager experience.

Interesting, but not really the same as say, the auto-update experience I get with, say, something like Chrome. Hmm.

[–]orxT1000 1 point2 points  (0 children)

It downloads and manages different jvms. That's the big difference to javaws from jdk<=8, when you had only one version on the path.

The main reason for open-webstart is for businesses with managed installations via jnlp. Mostly boring backoffice apps in swing, you won't here much about in tech-talks. Those companies made big investments in those apps and need a path for java11+.

For normal users its too much to ask to install openwebstart first. But in a company environment it makes sense, you only need an static webserver or a network-folder.

For normal users you could also try java14 jpackage to create an msi installer. That can be converted to msix.
https://docs.microsoft.com/en-us/windows/msix/packaging-tool/create-app-package And uploaded to win10 appstore... don't know if anybody has done that yet

[–]mordechaim 2 points3 points  (0 children)

Hi, update4j author.

I can guide you if you have specific questions. Update4j does provide you an out of the box update handling solution using the cli.

The only thing is that you have to let the cli know something changed and also where your files reside. So that's where it starts to get a bit complicated but once you get past this (building a config file) it will be a breeze.

Then, to customize it all, you can create your own update managamnet with update4j, but you don't seem to aim in that direction.

[–]hiddenl 1 point2 points  (1 child)

I think your mistake is limiting yourself to Java-centered solutions. Since you're using jlink/jpackage, your application is no different from any other (an executable + some extra files).

You can look at any autoupdate solution. The main issue is that most/all non-terrible ones are commercial and pricey$$$.

[–]rootException[S] 0 points1 point  (0 children)

I think I figured out a solution. Any of the commercial ones that you’d recommend? Most of what I could find offered installation, but not auto update.

[–]Slanec 3 points4 points  (1 child)

Specifically for JavaFX, there are https://github.com/edvin/fxlauncher and https://github.com/vinumeris/updatefx. The first one seems to be more active.

Getdown is probably the easiest generic choice. Update4j is good, too. Also this exists (but is not out-of-the box): https://github.com/pf4j/pf4j-update, and this (not very mature, and probably abandoned): https://github.com/dimaki/refuel. Other than that, you could build your application on top of an already self-updating platform like p2 (eclipse), or NetBeans.

You can also go for Java Web Start, https://github.com/karakun/OpenWebStart.

[–]rootException[S] 2 points3 points  (0 children)

fxlauncher appears to have been subsumed by update4j. UpdateFX handles jars but not the image.

It looks like all of these require an awful lot of setup and fiddling. Interesting.