Tuesday 31 October 2023

JDE and Java licensing

I know, I know - not enough blogging.

This might be a cracker for you!

Here is one that might be a little interesting.  What is big red doing with Java licensing and how this may affect you and your JDE.

Java SE Universal Subscription is what we are dealing with, an announcement earlier this year.  So in 2023 in Jan it was announced that if you are using java, then you need to pay for all employees in your company.  Not just the ones that are using Java - yay.

What licensing is currently offering the following licences:


See the current price list here: Oracle Java SE Universal Subscription Price List

There has been a significant change, if you have needed to download java from oracle, then you probably should be paying for it.  


The above has been stolen from a much better article -  https://redresscompliance.com/decoding-oracle-java-licensing-java-licensing-changes-2023/

Let's clarify exactly what Java SE is and why you need it...  Java SE is the product name for all of the below...  This diagram shows you the relationship between jdk, jre and jvm.



Java SE contains both the JRE (Java Runtime envrionment) and JDK (Java Development Kit).  In general a JDK contains a JRE.

So, if you have any of the above items on your machine, then there is a chance that you need to licence them.  If your company is writing code that ends with .java - this means there is a good chance that you might need a licence - but there are some exceptions...  

Remember, some bases to compile and run a java program - you will need a java environment, which includes an JDK.  javac is part of the jdk.


So the above uses the jdk to create a class file and the JRE to run the program.  And, I need a licence...  Or do I?

Take a look what my cheeky mac says:

shannonmoir@f5au367 ~ % which java

/usr/bin/java

shannonmoir@f5au367 ~ % java -version 

The operation couldn’t be completed. Unable to locate a Java Runtime.

Please visit http://www.java.com for information on installing Java.



So it's certainly not shipped by default in a new OS.  I need to google java download and see


This helps too - as it has the relevant links

Important Oracle Java License Information

The Oracle Java License changed for releases starting April 16, 2019.

The Oracle Technology Network License Agreement for Oracle Java SE is substantially different from prior Oracle Java licenses. This license permits certain uses, such as personal use and development use, at no cost -- but other uses authorized under prior Oracle Java licenses may no longer be available. Please review the terms carefully before downloading and using this product. An FAQ is available here.

Commercial license and support is available with a low cost Java SE Subscription.

So it seems that me as a developer is all good, but if I ship my magnificent code listed above to a customer...  They need java to run it...  So - they need to pay up!  The classic user pays.  

Back to JDE:

Let's think about where we use Java for JDE and then determine if Java SE license is required.

So...  

  • weblogic uses Java
  • a local web instance uses Java - which is weblogic
  • BIP uses java on enterprise servers
  • Server Manager (agents and console) use java
  • kernels (metadata) use java
What version of Java do I need for JDE?  Everything at the moment point back to version 8.

Server version

JDK Version

Oracle WebLogic Server 12c (12.2.1.3)

Oracle JDK 1.8.0_131+ Refer to the Certify system for the exact versions

Oracle WebLogic Server 12c (12.2.1.4)

Oracle JDK 1.8.0_211+ Refer to the Certify system for the exact versions.

Oracle Weblogic Server 14c (14.1.1.0.0)

Oracle JDK 1.8.0_251+ Refer to the Certify system for the exact versions.

We are limited to version 8 at this stage, which has a supported roadmap until 2030...  as seen here: https://www.oracle.com/au/java/technologies/downloads/#java21

What you will also notice is that the java release roadmap is very confusing.  From a JDE perspective, we follow MTR's and that seems to be limited to version 8.  It's been going crazy over the last year, kinda fitting in with the oracle release numbers, 21 at the moment.

Above shows a little hint about Java SE available to run with other licensed oracle products...

It's actually easy to see what is using java, just go to your task manager in your operating system of choice.  You'll see java running and therefore you are using licences. 

As the screen shot above indicates, about using Java with oracle products os that there is a special way of inheriting your license.  I'm guessing that this applies to JDE and OTF (Oracle technology foundation)...  Let's look further. 

The table above says that Java 8 can only be licensed with:

My Oracle Support (Oracle Customers Only) and Oracle Technology Network License Agreement for Java SE for Personal, Development and other Users only.

MOS and OTN.  Well, we are MOS for JDE maintenance.

My.Oracle.Support Note 1557737.1 - Support Entitlement for Java SE When Used As Part of Another Oracle Product

Looks like we are nearly there... Wow, this is far more complex than I originally thought.  

I'm probably not allowed to copy everything verbatim, but the essence of the MOS support note 1557737.1 above states:

Oracle customers of Oracle products that use the Oracle JRE or Oracle JDK are entitled, without the need to separately purchase Oracle Java SE Subscriptions, to the following:

  • Download and use Oracle Java SE updates, patches, and tools for use with the licensed Oracle product. Customers are only entitled to download such Java SE versions as are required by their Oracle product.
  • Install and use such Java SE updates, patches, and tools to develop or deploy an Oracle product.
  • Customers can file service requests for Java issues against an Oracle product, but not directly against Java SE.

In most cases, this means that Oracle customers are expected to download and install Oracle Java SE updates and patches only on those servers licensed to use an Oracle product and to configure the downloaded Java SE version to be used only with the Oracle product.

Some Oracle products are licensed as server products but also contain client applications or client-side libraries. For such Oracle products, Java SE updates and patches can be installed on the client side and either used to run only client applications provided by Oracle or used to run custom client applications built using client libraries provided as part of the Oracle product and accessed through a proprietary, product-specific protocol.

Examples:

  • Customer is using WebLogic Server. Customer is entitled to download and use Java SE updates and patches to run WebLogic Server. This example is applicable for any server-side Oracle product based on Java and includes most Oracle middleware and applications products.
  • Customer has built a custom client application that uses HTTP to talk to WebLogic Server. The customer is NOT entitled to download and install Java SE updates and patches on the client, since the client application is not using a product-specific protocol.
  • Customer has built a client application that uses JDBC drivers to connect to a licensed instance of an Oracle database.  The customer is NOT entitled to download and install Java SE updates and patches on the client, because JDBC drivers do not use a product-specific protocol.

If the customer’s entitlement to the supported Oracle product ends, the customer’s entitlement to any Java SE product downloaded under this entitlement also is ended.

That last paragraph is a doozy, I read that to mean - if you are not paying maintenance then you cannot use Java SE anymore without a separate license.  Nice.

Summary:

My summary is that if you are paying maintenance to oracle for JDE, you can use Java 8 for your JDE products and also the oracle technology foundation products that have been included in your bundle and use oracle.  BUT - if your are writing code in java and connecting to these databases / services - then you might need a license.