Guava 27.0 released

707 views
Skip to first unread message

Colin Decker

unread,
Oct 18, 2018, 3:10:24 PM10/18/18
to guava-discuss
Guava 27.0 was released October 18, 2018.

See the release notes for more information.

Important: ListenableFuture is now available as a separate artifact (com.google.guava:listenablefuture:1.0) from the rest of Guava. As part of that change, Guava now has a real (needed at runtime) dependency on com.google.guava:failureaccess:1.0. For more details, see this announcement.

Stephen Colebourne

unread,
Oct 24, 2018, 12:14:36 PM10/24/18
to guava-discuss
I just pulled in the new version of Guava and got the two additional dependencies (yuck. Guava shouldn't have any mandatory dependencies).

More significant is that our build failed:

[WARNING] Rule 1: org.apache.maven.plugins.enforcer.BanDuplicateClasses failed with message:
Duplicate classes found:
Found in:
com.google.guava:failureaccess:jar:1.0:compile
com.google.guava:guava:jar:27.0-jre:compile
Duplicate classes:
com/google/common/util/concurrent/internal/InternalFutureFailureAccess.class
com/google/common/util/concurrent/internal/InternalFutures.class

Why are these two classes in both Guava and the failureaccess dependency? I can't see how that makes sense at all.

More generally, since you have a split between the -jre and -android builds, why can't the -jre builds have none of these weird/confusing/yucky dependencies?

Stephen
 

lars.gem...@gmail.com

unread,
Oct 24, 2018, 1:54:10 PM10/24/18
to guava-discuss
This (from the release notes) may help to understand, why there are the now depencies (even if they are may not well packaged)

https://github.com/google/guava/commit/b62d52926b904a8def90fd427acad53d79fa0e9f
https://groups.google.com/d/topic/guava-announce/Km82fZG68Sw
Design discussion: https://docs.google.com/document/d/1_RVTtztq5pqrhs0srvJWHMI7PT1tA71--iaauV2l5UA/edit

I could not read the design discussion, because this document is access checked (and I have no permissions :-()
@cgdecker or @cpovirk - Is it possible to shared the content of this document with "the outside world" or is it confidential or top secret? :-)

Michiel Haisma

unread,
Oct 25, 2018, 9:00:42 AM10/25/18
to guava-discuss
Plans (however unfortunate they may be) were discussed on this mailing list under the topic: 

Plans for a separate artifact containing only ListenableFuture

Any internal communication that could be made public would be appreciated, but I'm not counting on it.

Bests,

Michiel Haisma
Oracle Labs

Op woensdag 24 oktober 2018 19:54:10 UTC+2 schreef lars.gem...@gmail.com:

Stephen Colebourne

unread,
Nov 1, 2018, 5:35:37 PM11/1/18
to guava-discuss
Just following up on this. AFAICT, no justification has been posted for the duplicate classes issue I raised in my first post. We really need someone from the Guava project to comment.

Adding dependencies to Guava may seem trivial to some, but for us every dependency jar file really counts. I'm currently refusing to update to 27, and still considering what options I have. The "solution" adopted in 27 is just dire. As I said above, the -jre and -android versions are completely separate and can have different pom,xml files - I see no technical reason why the -jre one should have dependencies, and doing so would not affect the needs of Android.

Stephen

Joachim Durchholz

unread,
Nov 2, 2018, 4:07:43 AM11/2/18
to guava-...@googlegroups.com
Am 01.11.18 um 22:35 schrieb Stephen Colebourne:
> Adding dependencies to Guava may seem trivial to some, but for us every
> dependency jar file really counts.

What's the reasoning behind that?

To me, the number of classes counts, their complexity, bug density,
learning curve, and whether it's low enough to be a fair price for the
goodies I get out of the class.
Distributing the same classes across multiple packages does not change
that metric for me.

Regards,
Jo

lars.gem...@gmail.com

unread,
Nov 2, 2018, 4:33:08 PM11/2/18
to guava-discuss
Reply all
Reply to author
Forward
0 new messages