Java: To bundle or not

Duke WavingIntroduction

As every Java application developer knows, in order for your users to use your application, they need a Java Runtime Environment (JRE) on their computer. Traditionally, this was done by providing the user with instructions on how to download and install a JRE (or check if they have he correct JRE), prior to installing your software. In recent years, particularly with the gaining popularity of JavaFX, and because of Mac App Store requirements, the trend has been moving towards bundling a JRE with your application. As a Java developer, I’ve been debating this in my mind, and can see both pros and cons of bundling a JRE.

Pros of bundling a JRE

Bundling a JRE, basically means that your application includes its own JRE, that gets installed, along with your application; typically within the same folder (Windows) or within the app bundle (Mac). The biggest advantage to bundling, is that your users don’t need to worry about installing or managing JREs, and can just use your application. A second advantage is that you can better control which version of the JRE will be used with your application. Additionally, if you want to distribute your Java application on the Mac App Store, it needs to include a bundled JRE.

Cons of bundling a JRE

The biggest con of bundling a JRE, is that users won’t always being most current JRE available, when running your application. Oracle is currently releasing regular updates to Java 8 every 3 months, and so a user that installed your application a year ago, will have an outdated version of Java, and may be missing some important security fixes. The best solution for this is, to release updates your applications, with the latest JRE, every time Oracle makes an update; but this can become a little onerous and time-consuming and there is no guarantee the user will update the application. Another con, is that including a JRE greatly increases the download size of your application; although with current internet speeds this is becoming less of an issue. Finally, bundling a JRE also means the user will have many, possibly redundant, JREs sitting around on their computers. Again, with current hard drive sizes that probably isn’t too much of an issue, but it just doesn’t seem efficient.


I am still sitting on the fence with this, and currently release two version of my apps; one with a bundled JRE and one without. This can also be a pain, and so am considering moving to just bundling in the future. If anyone has any comments, or best practices that they use, I’d love to hear them.

PWMinder Desktop 3.0.2 Released

PWMinder Desktop on LaptopPWMinder Desktop Password Manager 3.0.2 has been released, and is now available for download for both Windows and Mac OS X. PWMinder Desktop, is an application for securely storing, managing all of your passwords.

PWMinder Desktop 3.0.2 is a minor release that contains the following changes:

For more information, including features, download and purchase information please visit the PWMinder Desktop Home Page.

How to keep Java up to date on your computer

Java is a popular programming language that is used to run a variety of software applications and programs. The beauty of Java, is that it allows software developers to write programs that can be run on a variety of Operating Systems, including Windows, Mac OS X and Linux.  Java has come under fire in recent years as being not very secure.  Most of the reported issues, however, are with the browser add-on (used to run applets) and don’t affect desktop applications (see my blog post titled: How does Java Security Flaw affect Desktop Applications, for more information).  Having said that, Java, like any other software, receives periodic updates to fix potential security and other issues, and so it is important to keep your Java version up to date.

Read more…

Java on Mac OS X

This is a follow up to another Blog post I made:

How does Java Security Flaw affect Desktop Applications

Java has been in the news a lot in the past few days, and not for good reasons. A major security flaw was found in the Java browser plugin, and a fix has subsequently been released by Oracle. This has left a lot of computer users wondering whether they have Java on their computer, which version they might have, and which version should they have.

Read more…

How does Java Security Flaw affect Desktop Applications

There have been several articles in the past few days discussing the Java Security flaw, and the subsequent fix by Oracle.  A lot of these articles recommend removing Java, and basically inciting a fear of Java.  As a Java developer, these blanket statements about Java obviously have me concerned.  When assessing the threat, I think it is best to first understand what Java is and how it used, before purging Java from all computers.

Read more…

Installing Java on Windows

Java is a programming language (originally developed by Sun, now managed by Oracle), used to create web applications, desktop applications and applets. In order to run Java desktop applications, or Java applets, you need to have a Java Runtime Environment (JRE) and/or Java Plugin, installed on your computer. If you are running Windows, getting the JRE and Plugin, is very easy.

Read more…

Cross Platform Code Signing

I recently decided to enhance my software’s professionalism and improve my users’ experience, by signing my software applications. My goal was to be able to sign my windows executables (.exe), Java applets and jar, (.jar) files and Mac .app bundles. By signing my code I could assure my customers of the authenticity of my software, and help ensure the integrity of the files.

Read more…

Creating Cross-Platform Installers for Java Applications on a Budget

As most Java developers have come to realize, one of the most challenging aspects of developing cross-platform Java applications, is how to deploy them, in the most native way possible, to their various target platforms e.g. Windows, Linux and Mac OS X. There are several commercial solutions available, but these cost in the range of $500 to $2000, which may be a bit steep for an independent software developer. In this article, I will provide an overview of how I approached this problem, while developing PWMinder, using a combination of open source tools; and I hope this will provide a framework for those of you facing similar issues.

Read more…