On 4/24/24 11:14 AM, Aoife Moloney wrote:
Wiki - https://fedoraproject.org/wiki/Changes/Drop_Mandatory_Requires_on_JRE Announced - https://discussion.fedoraproject.org/t/f41-change-proposal-drop-mandatory-requires-on-jre-system-wide/114186
[snip]
Sort of... bytecodes do get introduced over time, right? While in practice I expect nobody will try and running, say, anything older than Java 7 (JSR 7 introduced invokedynamic), should there be a way to specify a generic minimum runtime version? I guess the tricky thing here is that different JDKs might not be packaged in a way where they all implement a common virtual provide that can be targeted=== Context === Java packages are compiled using `javac` into `.class` files and composed into `.jar` archives. Jar archives can be used as compile or runtime dependencies for other packages or can be directly executed with the java command provided by a JRE. Jar archives can be executed using the command: `java -jar ${FILE}`. This command executes the `main` method either specified via CLI or specified within the Jar manifest file. Java packages, which serve as libraries only, lack the `main` method and are not executable. Therefore, there is no requirement on any specific JRE imposed by the library implicitly.
$ fedrq pkgs -P java-headless java-21-openjdk-headless-1:21.0.2.0.13-3.fc41.x86_64 $ fedrq pkgs -P java-headless -F provides libjsvml.so()(64bit) libsyslookup.so()(64bit) libjvm.so()(64bit) libjvm.so(SUNWprivate_1.1)(64bit) lible.so()(64bit) libjava.so()(64bit) libjsig.so()(64bit) libverify.so()(64bit) java-21-openjdk-headless(x86-64) = 1:21.0.2.0.13-3.fc41 config(java-21-openjdk-headless) = 1:21.0.2.0.13-3.fc41 java-21-headless = 1:21.0.2.0.13-3.fc41 java-21-openjdk-headless = 1:21.0.2.0.13-3.fc41 java-headless = 1:21.0.2.0.13-3.fc41 java-openjdk-headless = 1:21.0.2.0.13-3.fc41 jre-21-headless = 1:21.0.2.0.13-3.fc41 jre-21-openjdk-headless = 1:21.0.2.0.13-3.fc41 jre-headless = 1:21.0.2.0.13-3.fc41 jre-openjdk-headless = 1:21.0.2.0.13-3.fc41
Would this be clearer if it says "the JRE from the system JDK"? Since the apps are not actually pulling in the full JDK itself.=== Different JDKs === This proposal is also related to the topic of different JDKs. Developers may want to use or build packages which use a JDK different than the one provided by the `java-<N>-openjdk` package. After this proposal was implemented, they would be able to depend on Java library packages with no introduction of the OpenJDK package. === Rationale === Java libraries are more similar to native libraries than to libraries written in dynamic scripting languages. They are compiled to a bytecode and are not executable. Java libraries can be used as dependencies for any Java application and there is no implicit dependency on the system default JDK. Java applications, on the other hand, are expected to be tested and to work with the system JDK and from the user's perspective: after installing an application they must be able to simply run the binary. Therefore the `Requires` on the system JDK is kept for Java applications.
Best regards, -- _o) Michel Lind _( ) identities: https://keyoxide.org/5dce2e7e9c3b1cffd335c1d78b229d2f7ccc04f2
Attachment:
OpenPGP_0x8B229D2F7CCC04F2.asc
Description: OpenPGP public key
Attachment:
OpenPGP_signature.asc
Description: OpenPGP digital signature
-- _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue