top | item 40242707

(no title)

obdev | 1 year ago

How does Hydraulic Conveyor improve the distribution of cross-platform JavaFX applications, especially compared to the standard jlink/jpackage workflow?

discuss

order

mike_hearn|1 year ago

Our website https://hydraulic.dev/ covers the most important points but compared to jlink/jpackage:

• Delta software updates without code changes. On Windows apps update in the background even when not running.

• It can do web-style synchronous updates on app launch.

• Can build for every platform from any platform. Linux cloud CI workers can be 10x cheaper than Mac workers, so this feature can save you a lot of money!

• Lots of usability work and features around code signing/notarization. It can do signing without MS/Apple tools and it knows how to use cloud signing services, remote HSMs, local HSMs, the Mac keychain (protected from other apps), custom enterprise signing services that can only be accessed via scripts, it can check for many kinds of mistakes (a particular weakness of vendor tools), it will help you buy certificates by generating CSRs for you.

• Generates a download HTML page that detects your user's OS and CPU to give them a big green download button, it can upload all the artifacts to S3 or GitHub Pages/Releases or any other server via SFTP. It renders icons for you, etc.

• Deployment by Windows IT is easy and installation doesn't require users to have admin rights on their system.

• It can publish to the MS Store which lets you avoid needing to buy signing certificates for a one off $19 fee.

• It comes with commercial support. With other tools if you get stuck you're on your own.

----

All the above works for Electron and native apps too. For JVM users specifically:

• It figures out which JDK modules you need using jdeps and bundles a minimized JDK.

• It provides a Gradle plugin that can read config out from your build configuration automatically.

• Easily bundle JCEF if you want an embedded Chromium.

• (soon) It will provide an API that lets you check for updates and trigger them manually. This is done, it just needs to be fully documented and published to Maven Central.

• It has way better support for native code than jpackage. It will dig through your JARs to find native libraries that don't match the target machine and delete them, it will sign them in-place, it can extract them ahead of time and then set up your system properties to make them be loaded from the right places and so on.

• It can bundle custom TLS root certificates into your JVM trust store. That's especially useful for enterprise settings.

That's not even a complete list by any means. Conveyor is packaged with itself and is a JVM app written mostly in Kotlin, so the above features get dogfooded by us.

I wrote this tool partly because I really wanted to close the gap between web and desktop dev, to let developers have more freedom around frameworks and languages than they do today. It's not right for everyone but if you aren't hog-tied to the browser then the pain of distribution is really removed by this thing, and that lets you focus on building your app.

obdev|1 year ago

Thank you. Your software has indeed a decent feature set. I will definitely try it out as soon as possible. I wish you the best of luck with the business!