[ 
https://issues.apache.org/jira/browse/GEODE-10494?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jinwoo Hwang updated GEODE-10494:
---------------------------------
    Fix Version/s: 2.1.0

> Removal of --add-exports JVM arguments  for Java compatibility and 
> future-proofing
> ----------------------------------------------------------------------------------
>
>                 Key: GEODE-10494
>                 URL: https://issues.apache.org/jira/browse/GEODE-10494
>             Project: Geode
>          Issue Type: Improvement
>            Reporter: Jinwoo Hwang
>            Assignee: Jinwoo Hwang
>            Priority: Major
>             Fix For: 2.1.0
>
>
> *Summary*
> Remove all `--add-exports` JVM arguments from Geode build configuration to 
> improve compatibility with future Java versions and follow best practices for 
> module system usage. 
> *Description*
> Geode currently uses multiple `--add-exports` JVM arguments to access 
> internal JDK APIs. While this works for current Java versions, it creates 
> several issues:
> 1. {*}Future Java Compatibility{*}: Internal APIs exposed via `--add-exports` 
> may be removed or changed in future Java versions
> 2. {*}Security Concerns{*}: Bypassing module encapsulation reduces security 
> guarantees
> 3. {*}Maintenance Overhead{*}: Requires ongoing maintenance as Java evolves
> 4. {*}Build Warnings{*}: Generates deprecation warnings in newer Java versions
> *Current Usage*
> The following `--add-exports` are currently used across the codebase:
>  - `--add-exports java.base/sun.nio.ch=ALL-UNNAMED`
>  - `--add-exports java.management/sun.management=ALL-UNNAMED`
>  - `--add-exports java.base/jdk.internal.ref=ALL-UNNAMED`
>  - `--add-exports java.base/sun.security.util=ALL-UNNAMED`
>  - Additional exports in test configurations
> *Acceptance Criteria*
>  - Identify all locations using `--add-exports` in build.gradle files
>  - Research public API alternatives for each internal API usage
>  - Replace internal API calls with public alternatives where possible
>  - Remove unnecessary `--add-exports` arguments
>  - Document any remaining usage with justification
>  - Ensure all tests pass without `--add-exports`
>  - Verify compatibility with Java 8, 11, 17, and 21
> *Technical Approach*
> 1. {*}Audit Phase{*}: Catalog all `--add-exports` usage and corresponding code
> 2. {*}Research Phase{*}: Find public API replacements for each internal API
> 3. {*}Implementation Phase{*}:
>   -Replace internal API usage with public alternatives
>   -Use reflection with proper exception handling where needed
>   -Implement feature detection for Java version-specific behavior
> 4. {*}Testing Phase{*}: Comprehensive testing across supported Java versions
> Benefits
>  - {*}Future-proof{*}: Reduces risk of breakage in future Java versions
>  - {*}Standards Compliance{*}: Follows Java module system best practices
>  - {*}Cleaner Build{*}: Eliminates build warnings and reduces complexity
>  - {*}Better Security{*}: Maintains module encapsulation boundaries
> Risk Assessment
>  - {*}Medium Risk{*}: Some internal APIs may not have direct public 
> replacements
>  - {*}Mitigation{*}: Implement gradual migration with fallback mechanisms
>  - {*}Testing{*}: Extensive testing across all supported Java versions 
> required
> Related Work
>  - Consider this work alongside any Java version upgrade initiatives
>  - Coordinate with performance team if internal APIs are used for optimization
>  - Review Apache Geode community guidelines for Java compatibility
> Definition of Done
>  - All `--add-exports` arguments removed or documented with clear 
> justification
>  - Public API alternatives implemented for all internal API usage
>  - Full test suite passes on Java 17
>  - Documentation updated with any compatibility notes
>  - Code review completed by Java platform experts



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to