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.

Conclusion

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.

Test Management with JIRA: Xray vs SynapseRT

Jira Software Logo

Xray for Jira Logo vs SynapseRT Logo

Introduction

I have been using JIRA Software for the past few years for issue tracking, and overall I have been very happy with it. For testing management, in the past, I have used TestLink, but decided it was time I looked into finding something that integrated with JIRA so I could manage all of my testing in one place.  A quick search yielded the three main test management add-ons for JIRA are: Zephyr, Xray and SynapseRT and I have looked into all three.  Because many comparisons have already been written for Zephyr, I decided that I would focus this post on comparing Xray and SynapseRT.

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…

Software Defect Tracking

Introduction

Entering and tracking defects, is one of the main tasks for testers. It is important that any time that a defect is found (whether it was actively being looked for or not), that it is logged. Even if you are not sure if it really is a defect, or if you think it maybe isn’t really that big of a deal; I believe it is better to log it, analyze and then if necessary close it, than it is to just ignore it. This article explains the process of software defect tracking and give recommendations on how to implement a defect tracking system.

Read more…

Software Testing Processes

So you have decided you want to implement a more formal approach to testing your software, but don’t really know where to begin. In this article I will outline a basic structure of the software testing process, including some tips for test case writing, and suggestions for some tools to use in testing. There is no one set process that works for all types of projects or for all teams, so I’m hoping this will get you started, and you can adapt the process to fit your own needs.

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…