How to escape the Java Pricing and Licensing Nightmare - Alternatives to Oracle
If you are a business owner that uses Java, you must be familiar with the nightmare that Oracle unleashed in September 2018. It might be the reason you are reading this article right now.
For those of you who don’t know: In September 2018, Oracle commercialized their services with Java SE 11. Meaning, you can still use the Oracle JDK for free, but only for development and testing purposes. If you want to use it for production, you will have to pay Oracle from day one. Ever since this came out, developers all over the world are worried sick. They don’t wanna start paying for services, updates, and patches they always received for free.
If you look at the release dates of all the patches in the past few years, you will find how frequent and important they have become to be avoided. Java SE 7, 8, and 9 were all released with at least a 3-4 years gap from the prior version. However, Java SE 10 was released just 6 months later in March 2018 and Java SE 11 in September 2018. They also have a scheduled release for Java SE 12 (19.3) just 6 months later in March 2019.
Now, before we start evaluating other options, let’s consider what it means to go with Oracle.
Well, it goes without saying that this is more of a compromise than an approach to avoid costs. However, if you aren’t satisfied with 3rd party vendors, don’t wanna spend time migrating to a new language, and having trouble with the current version, this is probably your best option. You will receive regular paid support from Oracle without having to do anything else. Keep into account an estimate of all the expenses, including the hours spent on migrating to a new language and compare that with the Oracle pricing. Unlike most companies out there, it might be cheaper in your case to comply with the harsh pricing scheme of Oracle rather than to migrate. It probably isn’t.
For most businesses, this must be an obvious NO. So, here are some ways you can avoid the Oracle Pricing and Licensing and reconsider your options:
1. Stay on your current version forever
This might seem like the simplest choice and it certainly is the easiest way to avoid these newfound expenses.
But it’s not feasible for any business to migrate every 6 months, considering the costs involved and time spent. But it certainly isn’t viable to stay on your current version in the long run. With regular security updates and patches, your code might stop working within a few months of the next update. No matter how satisfied you are with your current version, eventually you will find a need to upgrade.
- Avoid Costs
- No support from Oracle after "End of Public Updates"
- Outdated security patches
- Outdated features
- Changing vendors
- Changing requirements
- Not viable in the long run
2. Migrate from 8-11 (and to OpenJDK and rely on the community to fix things)
OpenJDK always used to be something developers tried to avoid, until September 2018. Oracle shook every developer into a nightmare when it commercialized it’s Oracle JDK. It used to the default choice for every developer, being more stable and latest with features. But now everybody’s looking to avoid these costs by shifting to OpenJDK.
Oracle barely left a difference between it’s Oracle JDK and OpenJDK 11 other than the license file. You can still use Oracle JDK 11 for free for development and testing purposes. However, you would need to pay Oracle a subscription fee if you want to use it for production.
So if you want to stay on a specific major version of OpenJDK, and still receive all the security patches and bug fixes, you seem to have 2 options. Either you can pay someone cheaper than Oracle for the commercial support, or hope for/rely on the community for free support.
There are many vendors out there like IBM, RedHat, and Azul who offer commercial support for specific versions they mark under long-term support. They will offer you the similar support for bug fixes and updates just like Oracle, but cheaper.
- Moving forward with Java community, supporting the OpenJDK
- Being able to utilize latest features Java has to offer.
- Overall direction of Java ecosystem is uncertain. We cannot predict how well Redhat or others support Java.
- Frequency of updates is unknown at this time.
- Risk of community fragmentation and multiple versions with non-compatible VMs.
- Paid support costs may be high.
3. Leave Java and move to Django or some other framework if possible.
This is probably the best option for your project. It’s a one time expense, and you will never have to worry about the Oracle pricing and Licensing ever again. Django is much easier and quicker to set up, so is it’s deployment. There’s no need for paid support from Oracle or any other 3rd party vendor as Django has LTS releases.
However, every code needs to be written again from scratch, which will require high expertise and hours of your time. Not to mention the bugs you might encounter in the process and time spent on fixing them. That’s where we step in.
- No further costs from Oracle
- One-time expense
- Easier and quicker setup
- Django ORM has the least ceremony and more productive
- Django is a very high quality framework and has LTS releases
- Start from the scratch
- Need to deal with new bugs
- Time needed to migrate is high
- You may not want to go a dynamic language like python.