From Fedora Project Wiki

< Changes

Revision as of 16:59, 29 October 2013 by Sochotni (talk | contribs) (Created page with "<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name. This keeps all change proposals in the same namespace --> = ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Headless Java

Summary

Server installations of Fedora should usually not pull in packages related to X system or sound subsystem. For this reason part of OpenJDK package has been split into headless subpackage which has smaller dependency chain. Fedora packages should be migrated to require java-headlesss instead of full java package when appropriate.

Owner

Current status

  • Targeted release: Fedora 21
  • Last updated: (DATE)
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

OpenJDK package in Fedora has been traditionally monolithic, pulling in a lot of dependencies including (but not limited to)

  • libXrender
  • libXi
  • libXtst
  • pulseaudio

This is obviously not optimal for minimal server installations where OpenJDK is used for web application development and deployment.

Designed after Debian packaging, Fedora OpenJDK package has been split into packages providing java and java-headless. This makes it possible for packages to use "Requires: java-headless". For most libraries and generic packages this is sufficient. End-user applications should keep "Requires: java" to pull in full OpenJDK package.

This change aims to convert most Java packages to have "Requires: java-headless" when appropriate. BuildRequires are unaffected.

Benefit to Fedora

  • Significantly smaller installation size on servers
  • Faster installation and startup of virtual machines/cloud images


Scope

  • Proposal owners:
    • Modify javapackages-tools package to automatically generate "java-headless" autorequires (simple change)
    • Identify and file bugs for affected packages (repoquery and bugzilla bug creation)
    • (optional) Mass-change spec files that have "Requires: java" to "Requires: java-headless"
  • Other developers: (not a System Wide Change)
  • Modify spec files to have "Requires: java-headless" instead of "Requires: java"
  • Release engineering: N/A (not a System Wide Change)
    • mass rebuild is not necessary but it would simplify things
  • Policies and guidelines: N/A (not a System Wide Change)
    • [Packaging:Java] needs to be modified to account for java-headless package existence

Upgrade/compatibility impact

Server systems with older Fedora versions that have "java-X.Y.Z-openjdk" package installed will possibly have unneeded packages installed after upgrade.

How To Test

Several Java packages in Fedora can be used to test java-headless change. After the change is implemented installation of following packages on top of minimal installation should not pull in pulseaudio and several X related packages:

  • ant
  • maven
  • wildfly
  • tomcat

Above packages should still work as designed even without "java-X.Y.Z-openjdk" package being installed.

User Experience

Smaller installation size and dependency chain when installing Java applications that do not require X system or audio capabilities.


Dependencies

No outside dependencies, Fedora has full control over all elements of this change.

Contingency Plan

  • Contingency mechanism:
    • Nothing needs to be done. If not all packages are converted, part of dependency chains might still pull in "java" package with full X and pulseaudio (i.e. no change from end-user perspective)
  • Contingency deadline:
    • None needed
  • Blocks release? No

Documentation

https://lists.fedoraproject.org/pipermail/java-devel/2013-October/004975.html

Release Notes