Java is about:
- Communities: the Java Comunity Process to define the platform, but also Java User Groups
- Platforms (JVM, JRE ...) to run applications on PC, mobiles, embedded devices https://en.wikipedia.org/wiki/Java_(software_platform)
- Programming languages (Java is the most popular, but there are Scala, Groovy, Clojure ...) https://en.wikipedia.org/wiki/Java_(programming_language)
What do you want to do:
- If you came here because an application ask for Java (or JRE, JVM) to be installed, then simply install
- If it still does not work:
- If you want to develop, code, on the Java Platform: See Java/Development.
JRE JDK JVM JSE ...
Some vocabulary, if you are lost:
- JRE Java Runtime Environment. Required to run Java code and applications. Install
- JVM Java Virtual Machine. Main component of the JRE.
- JDK Java Development Kit. Required only for development, coding.
- SDK Software Development Kit. idem JDK
- JavaWS Java Web Start is a framework to start application from the Internet
- JavaFX JavaFX is a plateform to create and deliver desktop and Rich Internet Apps.
- OpenJFX is the JavaFX Open Source implementation
- OpenJDK Open Source project behind the Java Platform http://openjdk.java.net/.
- IcedTea is a support project for OpenJDK (concern only developers) http://icedtea.classpath.org/
- IcedTea-Web is the Java Web Start package (It contains only JavaWS, No Applets anymore.) Install to run JNPL files.
- Applets Obsolete techno. Not implemented in any recent package.
- JSE, J2SE, JEE ... obsolete acronyms for Java Standard & Enterprise Edition. JavaSE is like JRE.
What is in Java OpenJDK package
For most users, it is just another system library. It is not an application with a GUI, but it is required by some other applications to run. You might see a OpenJDK Policy tool desktop application that comes with the package, but you should not have to use it.
Beware that JavaFX and JavaWS are packaged separately!
The Java Community Process defines the specifications of the platform that many implements (IBM J9, Jikes, Zing, Zulu Dalvik ...). We will only focus on Oracle here.
Multiple implementations can be installed side-by-side without interfering:
- The alternatives system allows to switch from one to another.
- An application can directly reference a specific Java installation
- Some applications include a java platform, it is then transparent for the user. (But the package is bigger.)
Some applications still ask for Oracle's implementation. It is mostly based on the OpenJDK Open Source project, but there is proprietary code and Fedora does not package non-free software.
Installing Oracle Java is fine. Just beware not to use Oracle RPM, as it will kill OpenJDK default packages!
Oracle provides a tarball: https://java.com/en/download/help/linux_x64_install.xml
We recommend to simply unpack the archives (tarball) to your home folder and set to path if necessary.
If you installed multiple Java implementations or version, you can configure your system to use one or another.
Developers: beware that javac has its own independent alternative. i.e. to change the JDK, use alternatives ... javac!
Switching is done using the alternatives system (also used to change some other subsystems). Java's subsystem name is surprisingly java and typical commands include:
# alternatives --display java
# alternatives --config java
See alternative's own documentation for more information for usage and parts involved.
Should be noted that JRE implementations installed outside Fedora distribution, may not support alternatives and thus not be visible there. Then the symbolic links under directory /etc/alternatives must be manually fixed.
Java packages in Fedora
There are many aliases for OpenJDK package, see http://pkgs.fedoraproject.org/cgit/rpms/java-1.8.0-openjdk.git/tree/java-1.8.0-openjdk.spec or do "dnf repoquery --provides java-1.8.0-openjdk".
You can use any of the following names:
dnf install java-1.8.0-openjdkmight be the most safe (until 1.8 is EOL.)
Note that Java Web Start (JavaWS) and JavaFX are packaged separately 'icedtea-web' and 'javafx' respectively.
Typically, without JavaFX, you may have error like:
java -jar scram.jar Error: Could not find or load main class com.frequal.scram.designer.jfx.Main
dnf install icedtea-web javafx