This question already has answers here:
Which free version of Java can I use for production environments and or commercial purposes?
(5 answers)
Closed 8 months ago.
If I want to keep my software (be it an application or even a game for Windows) free for me as developer/publisher as well as my users/clients what should I do (use)/can I even do that today?
To download the JDK you have two options (that I know of): OpenJDK / jdk.java.net and Oracle JDK. Am I right to assume that you can use everything from OpenJDK free of charge for commercial use as well, while Oracle JDK depends how they stand, some are free while for some you need a subscription (JDK 17/18 says that they are free under NFTC while for JDK 8 you need a subscription)?
As for JRE, can I download Java from here (version: Windows Offline (64-bit)) and add it in a folder with the software, to check if the user/client has it or not, and prompt an install it they don't have it?
To download the JDK you have two options (that I know of)
Oh, heck no. There's Temurin by Adoptium, Zulu by Azul Systems, Coretto by Amazon. Other vendors include Red Hat, IBM, SAP, BellSoft, Microsoft, Oracle, Pivotal, etc.
Am I right to assume that you can use everything from OpenJDK free of charge for commercial use as well
Yes. But note that they stop supporting it when a new version comes out. I'd use Adoptium or Coretto instead.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
why do people use Azul’s Zulu 9.0.0.15 release of OpenJDK instead of JDK downloaded from oracle.com? I came across this OpenJDK in the Effective java book and haven't tried this open jdk before. Is this because Oracle made the JDK commercial?
why do people use Azul’s Zulu 9.0.0.15 release of OpenJDK instead of JDK downloaded from oracle.com?
In short, there is no version of Java 9 freely supported by Oracle. You can download the last free version from Oracle.
From March 2019, Oracle will only give free support for Java 12 (for 6 months). Oracle will provide free support for the latest version for the first 6 months of release.
However, there are other organisations, like Azul, which provide commercially supported releases from Java 8. To get Oracle's supported releases you need to pay a subscription.
Other organisations such as AdoptJDK and RedHat have their own releases.
For more information
https://www.oracle.com/technetwork/java/javase/tech/eol-135779.html
Is this because Oracle made the JDK commercial?
The OpenJDK has been around since Java 6, but there were some differences and not a strong reason for many to shift versions.
From Java 11, the main difference between OpenJDK and Oracle Java 11 is the installer.
Hopefully, we will see more companies paying for support for the products they rely on to help make money, but also see a variety of options for free use in a secure way.
There are a few OpenJDK's out there.
The official Open JDK and Oracle's JDK are based on the same code but have different licensing models.
The main reason for creating them was to tweak some parts of the code to better handle a part of the API that you think should work differently.
For example, let's say you are a company that uses JAVA and notices that some part of the API works to slowly for your needs. You then can try to improve it and submit it to be part of the Oracle OpenJDK. But it could be rejected or the time it takes for it to be approved takes too long. You might opt to just branch the OpenJDK to make your own version.
At the moment Oracle is going to stop giving its own implementation of the JDK for free but it its version of OpenJDK will remain open and free.
If you read here you will see that Zulu too is just OpenJDK certified and promised to be maintained.
My guess is that the company is just using OpenJDK to give better service to its subscribers so they will get notified when new fixes and patches become available to the general public.
I don't think they change anything in the JDK but just create custom delivery tools around it.
There will be no free LTS release from Oracle as of JDK 11 and that JDK 8 public updates (for commercial users) end in Jan 2019; we are seeing a lot of interest in Zulu.
Here is what is Oracle have announced.
There are now two binaries available from Oracle: the traditional
Oracle JDK (java.oracle.com) which is provided under the Oracle Binary
Code License (with field-of-use restrictions). There is also now an
OpenJDK binary (jdk.java.net) released under the GPLv2 with CPE
license.
As of JDK 11, the Oracle JDK will still be available for download and can be used in development and testing for free. If you want to deploy it into production, you will need a commercial support contract with Oracle. The OpenJDK binaries are free, but every release (including those Oracle designate LTS) will only have updates available for six months (until the next JDK release).
https://youtu.be/YauqubC8FKM?t=1281
I somehow understand the differences between Oracle JDK and Open JDK.
But I can't find reasons to use Open JDK.
Because Oracle JDK already has everything one would need and sometimes faster than Open JDK.
In which cases should someone use Open JDK?
Is it just for legality issues?
If yes, then what are issues?
That because I have been still develop all my projects using Oracle JDK
Other Answers are correct. Here is some other information as well, including vital changes as of early 2021.
Source-code versus Binaries/installers
understand the differences between Oracle JDK and Open JDK.
To sum it up: source-code versus binaries/installers.
OpenJDK is an open-source project, implementing the Java Specifications, JSRs, and JEPs that define the Java platform. This project publishes only source-code, not binaries or installers to get Java running on your computer (except for some early-access builds). Oracle is the principal participant in the OpenJDK project, alongside IBM & Red Hat, Apple, SAP, Azul Systems, Microsoft, and others.
Many companies provide distributions of OpenJDK for installation, as binaries or installers. Oracle is one such company.
Oracle actually provides two such products:
Oracle JDKA commercial product, with paid support plans. (Free-of-cost only for development & testing, not deployment. Read their terms.)
jdk.java.netA build of the OpenJDK source-code, freely available, unsupported.
Oracle has declared their intention to keep their commercial product Oracle JDK at feature-parity with OpenJDK. Oracle even went so far as to open-source and make available at no cost their formerly commercial tools Mission Control and Flight Recorder, both now a part of OpenJDK. So there is nearly no practical difference. One significant difference is that the Oracle company reserves the right to rapidly supply their paid support customer base with urgent patches not currently found in OpenJDK. Ditto for other vendors selling support.
[And for the record, Oracle offers a third implementation of Java, GraalVM, which is a very specialized product.]
Here is a flowchart graphic I made to help guide you in selecting a provider of a Java implementation.
And here is a list of motivations you might consider in choosing a distribution.
November 2017: At the time this question was asked, the reasons for choosing between OpenJDK and Oracle JDK include:
Availability of builds / installers for specific platforms. For example, last time I checked there were no Oracle JDK distros in ".deb" format for Debian / Ubuntu. And no OpenJDK builds for Windows.
Oracle JDK has some commercial features that can be enabled by people who have paid. They are not present on OpenJDK.
Oracle JDK has an annoying click-through license. This is a pain if you are trying to automate deployment; e.g. to cloud VMs. By contrast, OpenJDK on Linux (at least) can be installed and updated using the platform's package manager.
There may be issues if you wanted commercial support for OpenJDK.
There were no substantive license differences between Oracle JDK and OpenJDK if you just plan to use the software. (There are some constraints on binary redistribution for Oracle JDK, but they are about shipping non-standard or stripped-down versions of the Java platform.)
In the future, some of these differences will go away, according to this blog page:
Faster and Easier Use and Redistribution of Java SE
Update in December 2018:
As of January 2019, Oracle JDK Java 8 will be EOL for commercial uses. (But free support will continue until January 2020 for personal use.)
1
Java 9 and Java 10 are EOL.
Commercial uses of Oracle JDK Java 11 and later require a support contract or a subscription from Oracle. OpenJDK Java builds do not have this requirement.
Oracle do not provide support for OpenJDK Java builds, but support is available from 3rd parties. Third parties will also port Oracle security fixes to OpenJDK builds.
Further reading:
Java Is Still Free
OpenJDK Life Cycle and Support Policy (RedHat)
The future of Java and OpenJDK updates without Oracle support
What has changed in Java Release and Update Availability? (Azul Systems)
AdoptOpenJDK Support
1
EOL stands for end-of-life.
An end-of-life (EOL) product is a product that does not receive continuing support, either because existing marketing, support and other processes are terminated, or it is at the end of its useful life.
OpenJDK comes tightly integrated with the distribution update process. For example, on Fedora, this means that you simply can run
dnf update
without activating third-party repositories, and you will get the latest OpenJDK version with all relevant fixes.
OpenJDK is tested by the distribution vendor on this particular distribution. Oracle has different reference platforms for testing of OpenJDK. In the case of Fedora, software written in Java is tested with the OpenJDK version provided by the distribution, while the combination of that software with Oracle JDK receives much less testing.
Oracle also bundles their Java downloads with additional software such as browser toolbars, performance measurement and monitoring tools.
For those, who read this in 2019.
Java SE 8 is the last Java SE release targeting Desktop deployment (eg, Java Web Start and a stand-alone system JRE). Java SE 8 will be end of public updates in January 2019, after which commercial users need to either transition to other technologies, or purchase a Java SE Subscription.
So, another reason to use OpenJDK (in addition to what Stephen C said): it's free of charge for all purposes.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Wondering if anyone switched from Sun/Oracle JDK to OpenJDK?
Is it production ready? Is the version 7 release any different from the Oracle version?
The answer to the question of whether OpenJDK is production-ready likely depends on your application workload. At Azul Systems, we launched the Zulu product around OpenJDK with the intention of supporting production workloads with OpenJDK.
To do this, we prepare our own binary distributions of OpenJDK, test them against the Technology Compatibility Kit ("TCK") for the relevant Java SE standard (ie. 6, 7, and 8) on Windows and Linux platforms, then exercise them in various application scenarios: Java EE application servers, GUI apps, benchmarks, virtualization and cloud contexts, debuggers, etc.
So far OpenJDK is standing up to many types of workloads. There remain a handful of differences between OpenJDK and Hotspot that may or may not pertain to your own workload and application design, for example the browser JRE plugin and Java Web Start are in Hotspot but not in OpenJDK. The core JVM in OpenJDK remains very similar: same interpreter, same C1 and C2 compilers, same garbage collectors, same source compiler and class API hierarchy, and similar basic tools. Many of the remaining gaps stem from encumbrances, meaning items present in the Oracle JDK that could not be made open from their original inclusion and license impact.
In response to the "is Java 7 ready", the differences were indeed likely most pronounced in OpenJDK 6, given its source code evolution through the IcedTea open source project. OpenJDK 7 and OpenJDK 8 started off at GA very similar, then grow to have differences throughout the maintenance cycle, where security fixes flow into OpenJDK regularly, along with big batches of fixes when Oracle does their quarterly critical patch updates. Plus, backports of worthy source changes and fixes into 6 and 7 from the 8 and 9 repositories happen continually throughout the lifecycle. Good code is good code.
When considering production operations, you may also want to consider tech support for the JVM and JDK. While Zulu itself is free, if your production environment warrants support, Azul offers fee-based tech support through different tiers of the Zulu Enterprise offering.
Zulu and Zulu Enterprise are described on the Azul website here:
http://www.azulsystems.com/products/zulu
Disclaimer: I am the Product Manager for Zulu and Zing products at Azul Systems.
There are still regressions in OpenJDK that might affect your operations. See for example : Memory error when trying to change Apache Tomcat port from 8080 to 80
OpenJDK can't be considered as a safe drop in replacement for Sun Java yet, test carefully your applications.
EDIT: For clarity, the issue mentioned is caused by a slightly increased memory usage of OpenJDK compared to Sun Java (not much, but sufficiently to create a memory issue in this case).
In our production environment we develop some JavaEE applications, I changed JDK to OpenJDK, everything worked pretty well.
I have been using java-1.8.0-openjdk as part of CentOS 7 stack in all cases of needing a jvm. I have been using it with various setups of Elasticsearch, Hadoop, and also as the foundation for Eclipse (Luna). I have not seen any issues after months of use with these applications in the lab. It has performed flawlessly as far as I can tell.
I have been asked to write a java program on linux platform. According to system admin, the JRE on the linux system is GIJ, which is supposed to be compatible to JRE 1.4.2.
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20080704 (Red Hat 4.1.2-44)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Is gij stable enough for commercial use?
Should I ask them to install JRE 6.0 from Sun?
What problems should I expect if I target gij?
Currently I am using WinXP, JDK 6.0, and Eclipse for software development.
gij is very ancient, and while I don't have references I doubt it's reliable enough to support commercial applications. That, and Java 1.4 is a chore to program in.
If your systems administrator is willing to install and support a newer version of Java, it'd probably be best to have them do it.
If the proprietary nature of the Sun JRE concerns you, you should look at OpenJDK. Released under the GPL, it supplants the FSF's efforts with GCJ/GIJ . It's the default version of Java that comes with many open-source Linuxes, such as Debian, Ubuntu, and Fedora. Besides being free, it's also modern---OpenJRE 6 is fully compatible with Sun's JRE6.
gij does OK for Java 1.4 code, but if you're writing something from scratch, there's a good chance you want to use Java 5 and possibly Java 6 features. In particular, Java 5 offers generics, autoboxing/unboxing, and a slew of other helpful language and class library features. The Sun JRE is not onerous at all to install, so unless you're developing a very small app where the Java 5 language features wouldn't help much, or you have some other reason for wanting to stick with 1.4, I would just bite the bullet and install the newest JRE from here.
gij hasn't passed the Sun compatability test, and should be considered a separate platform for building, testing etc.
If you don't want to go there, then install either the Sun JVM (it is just a matter of typing "apt-get install sun-java6-jdk" and accept the license) or OpenJDK (which has a more liberal license, but is not at rigidly tested).
gij is the GNU Interpreter for Java, not the Compiler - that's gcj. gcj can compile Java to JVM bytecode (which is interpreted by gij or by any normal Java Virtual Machine) or to native code like a regular compiled language. gij is just the bytecode interpreter, and should probably be equivalent to any other JVM, though I may always be wrong.
GCJ is not equivalent to Sun's JDK or JRE, so you may find that certain things you need aren't included in the API. You also need to compile your code for the GIJ on the server using the GCJ on your development machine. Look in the GCJ libjava directory to see which classes are there. If a class you need isn't there, you can't just copy it over from the Sun JDK; you'll actually need to get them to install the JRE on the server.
I know when Leopard came out everybody (well, everybody that was a Java developer and cared enough to do development on a Mac) was pissed that there was no Java 6 SDK support. I know somebody provided some kind of hack way a few months after Leopard was released, but I could have sworn that I read sometime later that Apple and/or Sun finally put out an official version of the Java 6 SDK.
So now a year and a half later I am finally interested in doing some Java dev on the Mac (thank Google App Kit for that). But when I go to Apple's Java site... all I see is stuff about Java 5.
So, can I do Java 6 on a Mac?
See also: Installing Java 6 on Mac OS
Yes, JDK6 is available, and it is quite nice, for example it supports DTrace, which otherwise you only get on Solaris.
The main drawback is that Apple is very aggressive in deprecating older hardware (and OS versions). Java6 will never be released for Mac versions before 10.5, and only works on 64bit Intel. That also kills native 32 bit libraries, such as SWT/Carbon, which is what Eclipse uses (they need to move to Cocoa now).
Update: Snow Leopard apparently has Java6 for 32bit Intel, too (in addition to 64bit).
http://developer.apple.com/java/ (which is only for 64-bit Macs)
http://landonf.bikemonkey.org/static/soylatte/ (SoyLatte, a separate Java 6 port).
Yes, JDK6 is available.
However, some versions of Eclipse do not support it. There is a new one (based on Cocoa) that should but it is not officially available.
You can but you have to be very wary of Apple on this one. Sun released JDK 6 in December 2006. Apple released Java 6 for MacOS X a year later.
Why the delay? It seems that integrating the new Look and Feel was the answer but we don't have an official reason.
Now if Java 6 was important to you at the time this would've been (and was) a big deal.
As other answers mention, support for certain hardware and libraries can also be problematic.
windows and Linux are (imho) still the preferred Java development platforms. If it ever becomes critical you can always do Java development on a Mac in a VM however.
Partly. Apple released its version of Java SDK 6 a few months back. But there are still some functions which are not available on Apple's SDK 6 which exist in Sun's Java SDK 6. I don't know why this is so.
For e.g., after Unisys's patent on GIF format expired, Java included the capability to write image files in GIF format in SDK6. Yet, you still can't write GIF files on Apple's SDK.
http://developer.apple.com/java/
Looks like you can.