If we just want to validate our produced artifacts work with Java11, I
believe it would be easy to start running some of our Jenkins jobs on Java
11. beam_PostRelease_NightlyCandidate [1] is a good candidate: it runs the
quickstart examples across all runners from the SNAPSHOT published maven
architype [2].

[1] https://builds.apache.org/job/beam_PostRelease_NightlySnapshot/
[2]
https://github.com/apache/beam/blob/master/release/src/main/groovy/QuickstartArchetype.groovy

On Thu, Oct 18, 2018 at 1:26 AM Ismaël Mejía <ieme...@gmail.com> wrote:

> Yes, Kenn I was talking about building artifacts (because this is the
> strictest way to validate the compatiblity of our code base and find issues
> with some of the classpath/code generation we use or with the
> dependencies). I agree 100% with you, the real deal is to validate that we
> can use Java 8 built jars with more recent Java versions without issues and
> examples could be a good target for this.
>
> Supporting all non LTS java versions seems like a lot of work for a small
> return: (1) most users will probably stay in LTS versions, (2) not any
> single execution system has talked about supporting intermediary versions
> (some not even LTS) (3) this will augment the combination of tests we
> should execute to validate a release. Of course if we do care only about
> direct runner this could make sense.
>
> On Thu, Oct 18, 2018 at 9:30 AM Robert Bradshaw <rober...@google.com>
> wrote:
>
>> On Thu, Oct 18, 2018 at 4:55 AM Kenneth Knowles <k...@apache.org> wrote:
>>
>>> 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.
>>>
>>
>> I, too, would avoid getting back into the situation where we have
>> different modules with different build/runtime requirements. (Java 8 was
>> special both because of Gearpump and because it introduced features such as
>> lambdas, type inference, and other functional libraries that were
>> particularly well suited to our programming model).
>>
>>
>>> 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.
>>>
>>
>> +1 for rephrasing it this way. In general one would expect our jars of
>> classfiles to work with later JREs. The magic we do with annotations and
>> bytecode generation may, however, require more support and testing.
>>
>>
>>> 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.
>>>>>>>>>>
>>>>>>>>>

-- 




Got feedback? tinyurl.com/swegner-feedback

Reply via email to