Elasticsearch Oracle Java dependency

We’ve been asked to get back with details on whether Elasticsearch is using any of the licensed components Oracle, other then the pure JRE, which is actually free.

I’m trying to see if there is any forum report at the Elasticsearch end that categorically says that Elasticsearch is not using any of the paid components in Java SE..

Oracle Java SE/Server JRE installation includes a binary code license agreement http://www.oracle.com/technetwork/java/javase/terms/license/index.html you have to agree with, this is totally your private business.

Where do you get the information from that "the pure JRE" is "actually free"? Whatever you mean by "free", it is surely not correct if you refer to hacking the Oracle Server JRE, which comes with a binary code license. If you mean you are allowed to redistribute the JRE, see http://www.oracle.com/technetwork/java/javase/jre-8-readme-2095710.html

With regard to Elasticsearch, you can consult


and I understand from this page there is no strict dependency or technical requirement on anything with Oracle Java products because Elasticsearch 5.x also runs on OpenJDK 8 .

I suggest to use OpenJDK 8 http://openjdk.java.net/install/ because of the GNU Public License http://openjdk.java.net/legal/gplv2+ce.html which ensures the freedom you certainly mean.


Thanks! This is helpful data.

With the recent reports of Oracle stepping up the drive to charge money for users of Java, I'm also interested to know if Elasticsearch uses/relies on any of the following components of Java, namely:

JRE Usage Tracking (Present in JRE 7+ & 8+)
Java Flight Recorder (Present in JDK 7+ & 8+)
Java Mission Control (Present in JDK 7+ & 8+)
Java Advanced Management Console (Present in JDK 8+)

Even if Elasticsearch also runs on OpenJDK 8, the above question still stands in cases where it is running on Oracle JDK 7+ or 8+.

Can you shed some light on this?

The following link might be useful, it's a public discussion about the Oracle Java licensing topic. I am not able to verify all the statements, I'm not a lawyer, so you are on your own.

Elasticsearch, to my knowledge, does not force you to use black-magic Oracle JVM parameters such as

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=myrecording.jfr

but it is always possible for sysadmins to tamper with the configuration after having downloaded and installed Oracle Java, and then running a Java application like Elasticsearch afterwards.

As said, it's primarily a business of the person who installed Java, not just Elasticsearch.

In order to validate, you should check the file config/jvm.options and the environment variables ES_CLASSPATH, ES_JVM_OPTIONS, and ES_JAVA_OPTS of your Elasticsearch installation for proper values, and examine the Java process command line of running processes for dubious parameters.

Also make sure to verify the Java installation on the computers for proper configuration. In case of doubt you should ask your sysadmin and/or policy/compliance/legal department for help, they are able to explain and understand the Java installations and the license agreements.

I agree with @jprante. Elasticsearch needs a JRE that looks like the OpenJDK. As in one that implements all the stuff it implements. So Oracle JRE, is fine from a technical perspective. The OpenJDK packages are fine too.

The trouble with the OpenJDK releases is that they are typically packaged by different folks in different distributions. We test against a wide range of distros and java versions so that little check mark next to OpenJDK is well earned. Zulu ought to work as well but it isn't on the list so it isn't officially supported. I believe some of our windows builds test against it.

Thanks Jörg. This is very helpful. My primary intent was to determine a way to list the capability that ES is using in Java. If we can reasonably establish that it not using any of the paid components, then we might be OK.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.