[
https://issues.apache.org/jira/browse/FINERACT-2842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18126297#comment-18126297
]
Aman Mittal commented on FINERACT-2842:
---------------------------------------
[~adamsaghy] Relevant PR is already merged is anything still pending in this?
> Move away from JDK8 in avro and fineract-client
> -----------------------------------------------
>
> Key: FINERACT-2842
> URL: https://issues.apache.org/jira/browse/FINERACT-2842
> Project: Apache Fineract
> Issue Type: Improvement
> Affects Versions: 1.15.0
> Reporter: Adam Saghy
> Assignee: Adam Saghy
> Priority: Major
> Fix For: 1.16.0
>
>
> For legacy reasons in 2020 it was decided `fineract-client` should remain and
> generate JDK8 artifacts, but that one is not needed anymore.
> h3. Why drop Java 8 rather than work around it
> The pin dates to 0897f172ee (Oct 2020), citing FINERACT-1214 — which is
> actually a bug about the Swagger client returning RxJava {{{}Observable{}}}s.
> Android appears there only in a wish-list of SDK variants that was never
> built. Three things make the baseline obsolete:
> * *For {{fineract-avro-schemas}} it was already broken.* Avro 1.12.1 is Java
> 11 bytecode (major 55) and every generated class extends
> {{{}SpecificRecordBase{}}}, so a Java 8 JVM would fail with
> {{{}UnsupportedClassVersionError{}}}. Gradle never caught this because Avro
> publishes POM-only metadata, carrying no {{org.gradle.jvm.version}} attribute.
> * *Android no longer needs Java 8 bytecode.* Android 14 ships OpenJDK 17
> core libraries, and D8 desugars for lower {{{}minSdk{}}}.
> * *Nothing is being consumed.* No artifacts exist under
> {{org.apache.fineract}} on Maven Central; the only publish anywhere is one
> ASF snapshot, {{{}fineract-client 1.6.1-…-SNAPSHOT{}}}, dated May 2022.
> h3. Changes
> ||Module||Before||After||
> |{{fineract-client}}|Java 8 (major 52)|*Java 17* (major 61)|
> |{{fineract-avro-schemas}}|Java 8 (major 52)|*toolchain, Java 25* (major 69)|
> {{fineract-client}} is set to 17 rather than the toolchain's 25 deliberately:
> Android 14 provides Java 17 core libraries and AGP still requires/targets JDK
> 17, so Java 21+ bytecode is not consumable by D8/R8. Letting it inherit the
> toolchain would emit major 69 and silently break Android consumers.
> {{fineract-avro-schemas}} has no such story — it is consumed only by
> server-side modules, all on toolchain 25.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)