Just to add to what Luke said: The reason we had those Java 8-only modules was because some underlying tech (example: Gearpump) required Java 8. If an engine requires something then it is OK for a user who chooses the runner for that engine to also be subject to that requirement. Otherwise I would push back a bit on specialized modules.
Ismaël: Do we need to be thinking in terms of building artifacts? I think the important thing is if a user has a project and just pulls our jars from maven central that they can use JRE 11 to run it. I think what we need is a build matrix of user pipelines compiled and run w/ Java 8, 9, 10, 11 (or some subset). This can be obtained via the examples maven archetype, for example, having no relation at all to our own build tooling. I know Jenkins has a plugin for this, so we don't run into the "mega-Jenkins-job" problem. Kenn On Wed, Oct 17, 2018 at 2:03 PM Lukasz Cwik <lc...@google.com> wrote: > When we were supporting Java 7, there were Java 8 based modules in Maven. > We can follow a similar pattern where Java11 (or any other version) have > their own projects and as the base Java version moves up, we can merge > those modules back in to simplify the set of modules being developed. > > On Wed, Oct 17, 2018 at 8:14 AM Ismaël Mejía <ieme...@gmail.com> wrote: > >> I want to give more context on the previous work towards Java 11 support. >> The issue was not necessarily that gradle was not ok to support Java 11, >> but this is also a good point Lukasz. >> >> Months ago, we built a maven profile that basically set up Java to be >> strictly compatible with the ‘minimal’ java.base profile and used Java >> version (9/10) at the time. We found and fixed some missing dependencies >> (because Java 11 removed some of the Java EE stuff from the base profile), >> not sure if these changes were migrated to the gradle build. >> >> We also dealt with a good chunk of updates at the time of >> plugins/bytebuddy and other deps to guarantee that the execution was done >> strictly with the latest version of Java and its generated bytecode (the >> origin of the docker build images was to guarantee this isolation). At the >> time I run the tests of most IOs and most extensions with the existing >> (java 8 compiled) direct runner in JRE 10 with success but of course this >> was not the ultimate goal but a good way to evaluate the state of the code >> base (I remember some GCP tests were broken and the ApiSurfaceTests too). >> >> One important thing to remember is that the goal on this work was >> ‘limited’ to guarantee that a user that had ONLY Java 11 installed could >> build and generate Beam artifacts and run Beam programs in the direct >> runner. The limited scope was in part because of some issues of a full >> migration to Java 11: >> >> - Support for Java modules, this is a too much radical change and >> probably far from the scope of Beam at the moment. >> - Support for other runners, given that most execution systems do not >> support yet Java 11 this could imply a lot of extra work. In the meantime, >> this could be easier now due to the portability work, anyway, still not >> sure that Hadoop/Spark/Flink will be supporting Java 11 anytime soon. >> >> Let’s not forget that we still are and probably will be for a long time >> backwards compatible with Java 8 so we need to ensure that Java 11 only >> things don’t get into the code base. >> >> If you Lukasz or someone else is up to take this task, I think the >> immediate thing to do is to get back to the same state we were before the >> move to gradle, build the equivalent of the maven profile for the gradle >> build and tackle code generation and classpath issues, then try to fix >> missing parts and push this into the CI too (similar to the recent python 3 >> work) to guarantee that new changes don’t break Java 11 compatibility. I >> sadly lack of bandwidth to lead this task but I will gladly help with >> reviews, or feedback if someone else is up to the task. >> >> Not sure about more recent details, but probably worth evaluating at some >> moment is if we there is some interest on supporting multi-release jars >> with Java 11 classes or the dream scenario of having a AOT build of the >> direct runner. >> >> On Wed, Oct 17, 2018 at 12:06 PM Łukasz Gajowy <lukasz.gaj...@gmail.com> >> wrote: >> >>> FYI: If I'm correct, migrating to Java 11 may require Migrating to >>> Gradle 5, which to me is ok, but there are some issues on the way (such as >>> [1] or maybe more that I'm not aware of). >>> >>> I did some research and it seems that Groovy 2.4.15 (the default version >>> of Groovy for Gradle 4.10.2) is unable to work with Java 11 due to Nest >>> based access control problem [2]. The very same error happened when I tried >>> to compile "core" module with java11. This issue is solved in Groovy 2.5.3 >>> [3]. I was unable to run Gradle 4.10.2 with Groovy 2.5.3 >>> (NoClassDefError) and found out that the support for Groovy 2.5.3 will be >>> added in Gradle 5.0RC1 (milestone) [4]. >>> >>> Other than that I had some issues with spottless and findbugs (I turned >>> them off for the sake of my experiment). >>> >>> Łukasz >>> >>> [1] https://issues.apache.org/jira/browse/BEAM-4042 >>> [2] https://github.com/gradle/gradle/issues/5120#issuecomment-424610114 >>> [3] https://issues.apache.org/jira/browse/GROOVY-8727 >>> <https://www.google.com/url?q=https://issues.apache.org/jira/browse/GROOVY-8727&sa=D&ust=1539701479825000&usg=AFQjCNGwndnRaDx9NAr0cJ-isZpRWngcjw> >>> [4] https://github.com/gradle/gradle/pull/7376 >>> <https://www.google.com/url?q=https://github.com/gradle/gradle/pull/7376&sa=D&ust=1539701479825000&usg=AFQjCNE9DOokgVxojvsvjsaJ8_6KY2M92Q> >>> >>> >>> czw., 11 paź 2018 o 13:10 Łukasz Gajowy <lukasz.gaj...@gmail.com> >>> napisał(a): >>> >>>> FWIW, the issue regarding java 11 support to gradle might be helpful >>>> here [1]. Quoting: "there are only some minor corner cases that don't work. >>>> Overall Java 11 support is pretty solid already" but some users reported >>>> problems in comments with Checkstyle plugin and MacOS + Gradle4.10.2 (this >>>> might be important for us). >>>> >>>> Łukasz >>>> >>>> [1] https://github.com/gradle/gradle/issues/5120 >>>> >>>> czw., 11 paź 2018 o 02:06 Pablo Estrada <pabl...@google.com> >>>> napisał(a): >>>> >>>>> Hello all, >>>>> If I understand you correctly Ismael, a good amount of >>>>> 'beam-sdks-java-core' tests are already passing with Java 11, so the >>>>> amount >>>>> of work necessary on the core module should be relatively small. Is this >>>>> correct? Are there improvements that may be missing in terms of >>>>> modularization? >>>>> >>>>> There is also the work necessary to build/run tests with Gradle.... >>>>> >>>>> I am also curious... how much work do you estimate is necessary to >>>>> support Java 11 with some of the existing sources? I understand that we >>>>> have many, many sources, but perhaps some of the more popular ones (e.g. >>>>> TextIO)? >>>>> >>>>> Thanks! >>>>> -P. >>>>> >>>>> On Wed, Oct 10, 2018 at 12:59 AM Arif Kasim <arifka...@google.com> >>>>> wrote: >>>>> >>>>>> Thanks for the clarification Ismaël. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> * • **Arif Kasim* >>>>>> * • * Strategic Cloud Engineer >>>>>> * • *Google, Inc. >>>>>> • arifka...@google.com >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Wed, Oct 10, 2018 at 9:41 AM Ismaël Mejía <ieme...@gmail.com> >>>>>> wrote: >>>>>> >>>>>>> Just wanted to clarify, there is already a JIRA for ongoing work on >>>>>>> Java 11 support. >>>>>>> https://issues.apache.org/jira/browse/BEAM-2530 >>>>>>> >>>>>>> I led the initial work on supporting what at the time was Java 9/10, >>>>>>> so far the biggest blockers were around the ApiSurface tests (not at >>>>>>> all compatible with these versions) but at the time we were at 5 >>>>>>> tests >>>>>>> from getting sdks/core passing. Notice also that the scope of this >>>>>>> JIRA evolved to support only the LTS version (Java 11), and >>>>>>> specifically to support only sdks/core + direct runner. Supporting >>>>>>> all >>>>>>> IOs or runners really is more a question of the dependencies working >>>>>>> nicely with Java 11 so this will probably take long time. Also the >>>>>>> idea so far does NOT include supporting the Java module system at >>>>>>> all. >>>>>>> >>>>>>> I stopped working on this during the move to gradle because it was >>>>>>> too >>>>>>> hard to tackle both Java evolving and all the ongoing changes in the >>>>>>> build system. If somebody in the community wants to contribute in >>>>>>> this >>>>>>> area it will be greatly appreciated, notice that all the work we did >>>>>>> on the build system for this needs to be implemented now in gradle >>>>>>> too. >>>>>>> On Sat, Oct 6, 2018 at 5:55 PM Romain Manni-Bucau < >>>>>>> rmannibu...@gmail.com> wrote: >>>>>>> > >>>>>>> > @Reuven: bytebuddy by itself no but the way beam tries to inject >>>>>>> the proxy class is. There are other strategies you can use in bytebuddy >>>>>>> which work. >>>>>>> > >>>>>>> > Romain Manni-Bucau >>>>>>> > @rmannibucau | Blog | Old Blog | Github | LinkedIn | Book >>>>>>> > >>>>>>> > >>>>>>> > Le sam. 6 oct. 2018 à 17:51, Reuven Lax <re...@google.com> a >>>>>>> écrit : >>>>>>> >> >>>>>>> >> Romain, do you have any more details on the ByteBuddy >>>>>>> incompatibility? Is ByteBuddy incompatible with the Java 11 JRE, or just >>>>>>> with new language features? >>>>>>> >> >>>>>>> >> On Fri, Oct 5, 2018 at 10:20 AM Romain Manni-Bucau < >>>>>>> rmannibu...@gmail.com> wrote: >>>>>>> >>> >>>>>>> >>> Hi Arif, >>>>>>> >>> >>>>>>> >>> AFAIK bytebuddy code is not java 11 friendly otherwise it runs >>>>>>> (but it means your pipeline is very very simple since it does not have a >>>>>>> dofn ;)) if your engine supports it. Also note that the modules not >>>>>>> being >>>>>>> named you can have to use some weird import names or even unstable ones >>>>>>> if >>>>>>> you want to use modules (but there is no real reason to do that yet in >>>>>>> java). >>>>>>> >>> >>>>>>> >>> Romain Manni-Bucau >>>>>>> >>> @rmannibucau | Blog | Old Blog | Github | LinkedIn | Book >>>>>>> >>> >>>>>>> >>> >>>>>>> >>> Le ven. 5 oct. 2018 à 19:10, Arif Kasim <arifka...@google.com> >>>>>>> a écrit : >>>>>>> >>>> >>>>>>> >>>> Hello, >>>>>>> >>>> What's the status of java version > 8 support for beam? Thanks. >>>>>>> >>>> >>>>>>> >>>> -Arif. >>>>>>> >>>>>>