I'm generally in favor of dropping JDK 8 support and moving to JDK 21. The one blocker that is currently preventing us from doing that is Hive.
What about deprecating the Hive stuff e.g. with 1.6.0 and dropping it with 1.7.0 and moving to the newer JDK in 1.7.0? Iceberg 1.6.0 would then be the last version supporting JDK8 and users requiring it can always use that version. On Wed, Jul 10, 2024 at 9:30 AM Renjie Liu <liurenjie2...@gmail.com> wrote: > I guess it depends on the generated class file version. > > On Wed, Jul 10, 2024 at 2:53 PM Manu Zhang <owenzhang1...@gmail.com> > wrote: > >> I suppose Iceberg built with Java 11/17/21 (at least one of them) can run >> with Spark/Hadoop built with Java 8? >> >> On Wed, Jul 10, 2024 at 11:59 AM Steven Wu <stevenz...@gmail.com> wrote: >> >>> +1 for dropping Java 8 as it is really old (3 versions behind >>> latest Java LTS version - 11, 17, 21). >>> >>> Here was the thread from over a year ago on dropping JDK 8 support. >>> https://lists.apache.org/thread/gq08prw7tv8q6h71lfc9bjlj074ckccv >>> >>> Hive's lack of Java 11 support was identified as a blocker. There >>> doesn't seem to be much progress according to the jira issue. >>> https://issues.apache.org/jira/browse/HIVE-22415 >>> >>> Should we drop the hive3 connector? assuming we have no problem with >>> moving the hive-metastore module to JDK 11. >>> >>> >>> >>> On Tue, Jul 9, 2024 at 3:18 PM Pucheng Yang <py...@pinterest.com.invalid> >>> wrote: >>> >>>> Piotr, thanks for the details. I am not sure about the community usage >>>> of Java 8. I was mostly asking for my company which is still on Java 8 as >>>> of today. >>>> >>>> On Tue, Jul 9, 2024 at 2:40 PM Piotr Findeisen < >>>> piotr.findei...@gmail.com> wrote: >>>> >>>>> Hi >>>>> >>>>> Thanks Russel, Ryan, Pucheng for your input! >>>>> >>>>> >>>>> As an alternative I think it would be fine if we disable the formatter >>>>>> when using Java 21 and just make sure we always have tests run with Java >>>>>> 8 >>>>>> and the formatter checks in our CI. If we go this route I think we stay >>>>>> with Java 8 for formatting and save the reformat for when Java 8 is >>>>>> dropped >>>>>> officially. >>>>> >>>>> >>>>> Yes, that's my preferred approach (unless we can just drop Java 8 >>>>> "today"). >>>>> >>>>> >>>>> Thanks Ryan for supporting drop of Java 8. Let's continue discussion >>>>> here for now, but I guess I could have started with drop Java 8 first >>>>> (optimistically). >>>>> >>>>> Pucheng, i think it means they will need to move off Java 8 to get new >>>>> Iceberg versions. >>>>> I do believe it's inevitable though. >>>>> Even if Iceberg somehow decides to never benefit from new Java >>>>> language features, it needs to support newer Java versions. >>>>> And as this thread shows, supporting old Java versions and new Java >>>>> versions at the same time becomes challenging. >>>>> Do you maybe know how big of the impact on community would dropping >>>>> Java 8 have? Some estimate on percentage of install base? >>>>> >>>>> Best, >>>>> Piotr >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Tue, 9 Jul 2024 at 18:32, Pucheng Yang <py...@pinterest.com.invalid> >>>>> wrote: >>>>> >>>>>> What does dropping Java 8 support mean to companies that are still >>>>>> using Java 8 for Iceberg in production? >>>>>> >>>>>> On Tue, Jul 9, 2024 at 9:26 AM Ryan Blue <b...@databricks.com.invalid> >>>>>> wrote: >>>>>> >>>>>>> +1 for removing Java 8 support. >>>>>>> >>>>>>> On Tue, Jul 9, 2024 at 9:24 AM Russell Spitzer < >>>>>>> russell.spit...@gmail.com> wrote: >>>>>>> >>>>>>>> The different formatting preferences sounds annoying enough that I >>>>>>>> would think we should just drop the Java8 support. Do we have anyone >>>>>>>> who >>>>>>>> strongly prefers keeping Java 8 support? >>>>>>>> >>>>>>>> As an alternative I think it would be fine if we disable the >>>>>>>> formatter when using Java 21 and just make sure we always have tests >>>>>>>> run >>>>>>>> with Java 8 and the formatter checks in our CI. If we go this route I >>>>>>>> think >>>>>>>> we stay with Java 8 for formatting and save the reformat for when Java >>>>>>>> 8 is >>>>>>>> dropped officially. >>>>>>>> >>>>>>>> On Tue, Jul 9, 2024 at 7:32 AM Piotr Findeisen < >>>>>>>> piotr.findei...@gmail.com> wrote: >>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> Java 21 is the latest "LTS version" released GA in September 2023. >>>>>>>>> Some Iceberg users already run with Java 21 on production (and >>>>>>>>> FWIW Trino runs with 22 already) >>>>>>>>> I thought it would be nice to add support for building and testing >>>>>>>>> Iceberg with Java 21. >>>>>>>>> >>>>>>>>> Conceptually this is simple (see PR >>>>>>>>> <https://github.com/apache/iceberg/pull/10474>), but there is a >>>>>>>>> caveat worth discussing: >>>>>>>>> There seems to be no version of Google Java Format library that >>>>>>>>> can run under JDK 8 and JDK 21. >>>>>>>>> Choosing Google Java Format version dynamically is not an option, >>>>>>>>> because different versions have slightly different formatting >>>>>>>>> preferences, >>>>>>>>> so updating formatter version requires updating the code in a handful >>>>>>>>> of >>>>>>>>> places. >>>>>>>>> >>>>>>>>> Question: >>>>>>>>> do we want to add support for building and testing with Java 21? >>>>>>>>> Ability to test with Java 21 would match what some of Iceberg >>>>>>>>> users are doing. >>>>>>>>> If we choose so, we would simply disable spotless formatter when >>>>>>>>> build runs on Java 21 (or 8 if this is preferred instead) >>>>>>>>> >>>>>>>>> or we prefer to wait until we can drop Java 8 support >>>>>>>>> <https://github.com/apache/iceberg/pull/10518> first, and only >>>>>>>>> then add Java 21 support? >>>>>>>>> >>>>>>>>> Pre-existing context: >>>>>>>>> the topic has been discussed on the PR here: >>>>>>>>> https://github.com/apache/iceberg/pull/10474#discussion_r1658513019 >>>>>>>>> and it was proposed there to bring this to Dev group attention. >>>>>>>>> >>>>>>>>> Best, >>>>>>>>> PF >>>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Ryan Blue >>>>>>> Databricks >>>>>>> >>>>>>