Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Java][CI] Java Support Version Policy #33223

Open
4 tasks
asfimport opened this issue Oct 13, 2022 · 2 comments
Open
4 tasks

[Java][CI] Java Support Version Policy #33223

asfimport opened this issue Oct 13, 2022 · 2 comments

Comments

@asfimport
Copy link

asfimport commented Oct 13, 2022

Current status

  1. Apache Arrow Java is compiled and tested by JDK 8, 11, 17, 18 but packaged with source/target JDK8

Changes implemented by this PR https://github.com/apache/arrow/pull/13072

  1. Apache Arrow Java project are continuing compiled and tested by JDK 8, 11, 17, 18 but packaged with source/target JDK8
  2. If Apache Arrow Java project is building with JDK11+ validate the project are tested against the module-info.java definitions
  3. There are not CI implementation to deliver Jar library with JDK8 & JDK11+ (we need to define what will be our next step for JDK versions)
  4. We probably are breaking APIs because we are changing package name to ensure unique package names on the project required by module-info.java
  5. We are added a new project that contains Apache Arrow Netty custom implementation needed for
  6. There are remaining modules pending to implement modules with module-info.java files. This PR contains modules-info.java for: Format / Memory / Vector

Next steps

  1. Implement cross-compilation with JDK 11+ and packaging with release=8 (continue offering support for JDK8):
    That is not posible, if we compile with --release=8 we will have problems to access sun.misc.Unsafe that is not as exposed/public/documented API for N >= 9: -source N -target N --system .    (https://openjdk.org/jeps/247)
     
  2. We have these options for our next steps:
  • {}Option 1{}.- Maintain all as it is now, continue packaging with source/target JDK8

  • {}Option 2{}{}.-{} Change/Update/Modify use of sun.misc. classes dependencies to be able to support cross-compilation (-release 8) to packaging with JDK11+ and continue offering support for JDK8 also

    {code:java}
    jdeps --jdk-internals arrow-memory-unsafe-10.0.0-SNAPSHOT.jar
    arrow-memory-unsafe-10.0.0-SNAPSHOT.jar -> jdk.unsupported
       org.apache.arrow.memory.unsafe.UnsafeAllocationManager -> sun.misc.Unsafe                                    JDK internal API (jdk.unsupported)
    Warning: JDK internal APIs are unsupported and private to JDK implementation that are
    subject to be removed or changed incompatibly and could break your application.
    Please modify your code to eliminate dependence on any JDK internal APIs.
    For the most recent update on JDK internal API replacements, please check:
    https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
    JDK Internal API                         Suggested Replacement
    ----------------                         ---------------------
    sun.misc.Unsafe                          See http://openjdk.java.net/jeps/260 {code}

  • {}Option 3{}.- Drop support for JDK8 and starting offering support to packaging with JDK11+, this will be the right approach, but, this thread does not have an agreement about to drop JDK8 support ([JAVA] JDK Support Policy - https://lists.apache.org/thread/phpgpydtt3yrgnncdyv4qdq1gf02s0yj)

    If you decided to push some of this options please use that [ML|[https://lists.apache.org/thread/phpgpydtt3yrgnncdyv4qdq1gf02s0yj]] to move on next steps.

Reporter: David Dali Susanibar Arce / @davisusanibar

Subtasks:

Related issues:

Note: This issue was originally created as ARROW-18020. Please see the migration documentation for further details.

@asfimport
Copy link
Author

David Li / @lidavidm:
Unsafe is a hard requirement and I'm not aware of any way to replace it.

I thought we've discussed this on the ML and we cannot drop Java 8.

@asfimport
Copy link
Author

David Dali Susanibar Arce / @davisusanibar:
Oh, ok, well if that is the case to not drop JDK8, then we should continue using source/target 8 for our Java jar packaging

 

There are not option to packaging with release JDK11+ for not support of cross-compilation with our current dependencies. 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant