Decouple system java setting from java command setting
Summary
Alternatives can be used to specify which Java installation should be the default for the system. Currently, changing the default java command causes not only a change to the /usr/bin/java symlink, but also affects the which runtime is used for system installed Java applications. We propose introduction of separate setting for system-wide java applications.
Owner
- Name: Michael Simacek
- Name: Mikolaj Izdebski
- Email: msimacek@redhat.com
- Email: mizdebsk@redhat.com
- Release notes owner:
Current status
- Targeted release: Fedora 27
- Last updated: 2017-06-05
- Tracker bug: <will be assigned by the Wrangler>
Detailed Description
Fedora allows parallel installation of multiple Java runtime environments and it uses alternatives mechanism to allow the user to switch between them. JDK packages provide a set of alternatives symlinks for it's executables. The java symlink is used to determine the java command (/usr/bin/java), but also determines which runtime environment is used to run system-wide Java applications installed from RPMs, such as maven or eclipse. While in theory different Java runtime environments are drop-in replacements for each other, in practice some of the applications may stop working properly. Users usually install alternative JDKs in order to run their own applications and don't expect that changing the java command will have effect on the system. By introducing a separate alternatives setting for system-wide java, we would avoid this problem. The current default JDK for Fedora (java-1.8.0-openjdk) would be adjusted to provide the alternatives and javapackages-tools (the provider of runtime support for RPM installed Java packages) would be adjusted to use them.
Benefit to Fedora
Users will be able to switch their default Java runtime without the risk of affecting system-wide Java applications (installed from RPMs).
Scope
- Proposal owners:
- Other developers: N/A (not a System Wide Change)
- Release engineering: #Releng issue number (a check of an impact with Release Engeneering is needed)
- List of deliverables: N/A (not a System Wide Change)
- Policies and guidelines: N/A (not a System Wide Change)
- Trademark approval: N/A (not needed for this Change)
Upgrade/compatibility impact
N/A (not a System Wide Change)
How To Test
N/A (not a System Wide Change)
User Experience
N/A (not a System Wide Change)
Dependencies
N/A (not a System Wide Change)
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change), Yes/No
- Blocks product? product
Documentation
N/A (not a System Wide Change)