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-15
- 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 applications. By introducing a separate setting for system-wide java, we would avoid this problem. We propose specifying default Java runtime for RPM-managed applications in /etc/java/java.conf (this is already possible, but not currently used). Administrators would still be able to override the system default if they need to.
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:
- Adjust javapackages-tools to provide default Java setting in /etc/java/java.conf
- Other developers: N/A (not a System Wide Change)
- Release engineering: [1] (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: revert to using single alternatives provider
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? No
Documentation
N/A (not a System Wide Change)