On 19/03/15 18:23, Stephen Allen wrote:
I've used the Guava cache before and I really like the design.

We obviously may have some issues with it being a dependency as was
discussed in the email thread you linked.  For my usage, I would have no
problem keeping my application up to date with the latest Guava (as long as
Jena keeps up to date).  But maybe we would need to shade it so other
people won't get conflicting versions.  Presumably when/if Jigsaw arrives
we won't have to worry about this problem any more.

If we do decide to make Guava a dependency, it would be nice (although a
big change) to take a pass through and eliminate utility methods/classes
that we have that are provided by Guava (I'm thinking of
org.apache.jena.atlas.iterator.Iter specifically).

-Stephen

Hi Stephen,

Guava seems the best I've come across so far. Shading seems like a good idea as an insurance policy. It's not hard (I just tried it out).

If we shade it, we can do that before or after the RDF code.

If "before", we add a new module to produce org.apache.jena.guava.** and code against that. This is the version I prefer.

If "after", we write code against com.google.guava.** and shade the output jars. Each jar has to be done so it's a bit tedious.

If "before" we can put org.apache.jena.atlasin that module, produce "jena-ourbasetuff.jar" as a very early step in the build. Any other non-RDF code canmigrate as people see fit.

Using ProGuard to shrink the jar is orthogonal IMO (though the guava jar is 2.3M so while non-trivial for Android, it's not that large for desktop/server use).

Re: Jigsaw. Maybe - I don't know whether the code has to migrate to java9 or whether exiting code can be wrapped. Even with org.apache.jena.guava but otherwise the same code, switching to raw use should be quite easy (famous last words!).

As to clean up - anyone is welcome to tidy anything up. If Jena3 is Java8, then maybe we can jump to Java8 streams , Optional, etc. Guava seems to have an goal of portability across Android, GWT and is currently Java 1.6.

        Andy

[1] https://code.google.com/p/guava-libraries/wiki/FunctionalExplained

Reply via email to