Jeff, thank you for raising this topic. + 1 to final move to java.time in Beam 3.0 I didn’t find a Jira about that, so I created a new one: https://issues.apache.org/jira/browse/BEAM-5530 <https://issues.apache.org/jira/browse/BEAM-5530>
> On 27 Sep 2018, at 15:37, Jeff Klukas <jklu...@mozilla.com> wrote: > > I agree that there's no path to removing joda-time as a dependency in 2.x. If > we can it a goal for 3.0 to use java.time consistently and remove joda-time > at that point, I'd be very happy. > > I have no context, though, on timeline for a 3.0 release. If that's sometime > in the next year, then there's likely too much cost and not enough benefit to > partially supporting java.time in 2.x. It would be better to leave joda-time > as the preferred time library. > > If Beam 3.0 is further out, then it may still be worth considering if we can > add at least partial java.time support. I expect more organizations in the > next few years will be trying to enforce use of java.time over joda-time. > > On Thu, Sep 27, 2018 at 7:59 AM Robert Bradshaw <rober...@google.com > <mailto:rober...@google.com>> wrote: > As long as joda stays anywhere in the public API (and removing it would be a > backwards incompatible change) we can't drop it as a dependency. > > While we could provide java.time overloads for time-accepting methods, > time-returning methods can't be as transparently interchangeable. I'm not > sure whether the duplication is worth it (until we move to 3.0, at which > point if it's mechanical enough (for us and our users) we could just switch > over). > > The situation I'd really rather end up in is where some methods take only > joda time, some methods take only java.time, and some take both. Similarly > with return values. Whatever we do we should be consistent. > > On Thu, Sep 27, 2018 at 12:00 PM Łukasz Gajowy <lukasz.gaj...@gmail.com > <mailto:lukasz.gaj...@gmail.com>> wrote: > +1 to removing joda. IMO from now on we should favor java.time in reviews > over joda.time in new features and feel free to replace joda when refactoring > is done in places where code stays backward-compatibile and doesn't get > duplicated (eg. some class internals, not exposed through class interface). > I'm not sure if adding methods with alternative signatures only because of > the time is the way to go (lots of duplication, low gain?). I think we should > wait with places like this until the 3.0 version. > > Łukasz > > śr., 26 wrz 2018, 20:16 użytkownik Jeff Klukas <jklu...@mozilla.com > <mailto:jklu...@mozilla.com>> napisał: > Looks like https://github.com/apache/beam/pull/4964 > <https://github.com/apache/beam/pull/4964> is somewhat different from what I > had in mind. As Reuven mentioned, I'm specifically interested in using the > Java 8 java.time API as a drop-in replacement for joda-time objects so that > we don't have to rely on an external library. PR 4964 is using joda-time > objects to replace older java.util and java.sql objects with richer joda-time > alternatives. > > Reuven mentioned a "list of things to do when we release Beam 3.0". Is there > a JIRA issue or other document that's tracking Beam 3.0 work? > > Reuven also mentioned that using java.time would introduce > backwards-incompatible changes to the Beam 2.x API, but in many cases (such > as FixedWindows) we could introduce alternative method signatures so that we > can support both joda and java.time. If there are methods that return > joda-time objects, it may be less feasible to support both. > > On Wed, Sep 26, 2018 at 1:51 PM Jean-Baptiste Onofré <j...@nanthrax.net > <mailto:j...@nanthrax.net>> wrote: > +1 > > It makes sense to me and it's also a plan to "split" the core in more grained > modules, and give a more API flavor to Beam 3. > > Regards > JB > Le 26 sept. 2018, à 13:49, Reuven Lax <re...@google.com > <mailto:re...@google.com>> a écrit: > We started with Joda because Java 7 time classes were insufficient for our > needs. Now that we're on Java 8 we could use Java 8's time libraries (which > are much better), but unfortunately that would create backwards-incompatible > changes to our APIs. We should add this to the list of things to do when we > release Beam 3.0. > > Reuven > > On Wed, Sep 26, 2018 at 10:43 AM Andrew Pilloud < apill...@google.com > <mailto:apill...@google.com>> wrote: > Last I heard we were actually moving the other way, replacing java.time with > joda-time. See the giant schema PR here: > https://github.com/apache/beam/pull/4964 > <https://github.com/apache/beam/pull/4964> I don't think this was ever > discussed on the list though. > > Andrew > > On Wed, Sep 26, 2018 at 9:21 AM Jeff Klukas < jklu...@mozilla.com > <mailto:jklu...@mozilla.com>> wrote: > It looks like there a few spots in the Beam Java API where users have to > provide joda-time objects, such as FixedWindows#of(org.joda.time.Duration). > > Are there any plans to support java.time objects in addition to joda objects? > Any plans to eventually remove joda-time? > > My personal interest is that my team would like to eventually standardize on > usage of java.time and remove all explicit usage of joda-time in our > codebases. Even if joda-time is still pulled in transitively by the beam java > SDK and used internally, it would be nice for users to be able to avoid > explicit interaction with joda-time. I'm imagining it would be possible to > provide additional methods like FixedWindows#of(java.time.Duration) and > potentially marking the joda-based variants as deprecated. > > Does this seem worthy of opening a JIRA issue? >