Skip to content

aio-lib-java build: enforce Java 8 language rules #204

@pulguptaAdobe

Description

@pulguptaAdobe

Expected Behaviour

SDK should not use any Java 11 API to maintain compatibility with Java 8 (why Java 8 ? see GH-104)
The sdk (its generated classes as well its the public API) should be compiled following the rules of the programming language of the specified 8 release.
The build should detect and generate an error when using APIs that don't exist in previous releases of Java SE.

Actual Behaviour

Earlier we were using JDK 8 to build sdk but with recent changes and introduction of mockito-core-5.4.0.jar, SDK build is now not compatible with JDK 8.
Simply downgrading the mockito-core version will not solve the issue as many tests are dependent on the same.
For this we are now using JDK 11 but this can result in usage of Java 11 API in code which can go unnoticed as the code will compile correctly but will fail at runtime while using the SDK with Java 8.

Reproduce Scenario (including but not limited to)

Add line List<String> myList = List.of("some", "new", "java", "code");
Do mvn clean package
Compilation will work correctly
Ideally compilation should fail as we are using Java 11 API List.of which will not work on Java 8

Platform and Version

Java 8

Sample Code that illustrates the problem

List<String> myList = List.of("some", "new", "java", "code");

Logs taken while reproducing problem

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions