This is a collection of python scripts which serve the purpose of mechanically repackaging and modularizing Guava
reset.py
will set each of the submodules to their most recentmain
upgrade.py
will do a find+replace of a version string in the required files for each submoduleforeach.py
will run a command for each submodulecompile.py
will attempt to runmvn compile
for each submodulegenerate.py
will update the code of all of the submodules to the given commit hash of guavacommit.py
will push changes to remote repos
Consult the repos for the subprojects for the latest releases and dependency information.
- dev.mccue.guava
- dev.mccue.guava.base
- dev.mccue.guava.primitives
- dev.mccue.guava.escape
- dev.mccue.guava.math
- dev.mccue.guava.collect
- dev.mccue.guava.xml
- dev.mccue.guava.html
- dev.mccue.guava.graph
- dev.mccue.guava.hash
- dev.mccue.guava.io
- dev.mccue.guava.net
- dev.mccue.guava.reflect
- dev.mccue.guava.concurrent
- Everything is shaded under
dev.mccue.guava
com.google.common.util.concurrent
is turned intodev.mccue.guava.concurrent
, dropping theutil
- All usages of
sun.misc.Unsafe
are removed- The unsafe implementation is removed, leaving a safe fallback in
LittleEndianByteArray
,AbstractFuture
, andUnsignedBytes
- The unsafe implementation in is replaced with a new one based on
VarHandle
s inStriped64
- The unsafe implementation is removed, leaving a safe fallback in
- All usages of
sun.misc.JavaLangAccess
are removed- Replaced with
Throwable.getStackTrace
inThrowables
- Replaced with
- All usages of
finalize()
are removedFileBackedOutputStream
has a constructor which takes a boolean to indicate that resources should be freed on finalization. This was made private and the logic was removed.
- All usages of the Security Manager are removed
Types
catches anAccessControlException
and that could safely be replaced with catching anException
- Explicit uses of the security manager in
LittleEndianByteArray
,AbstractFuture
,UnsignedBytes
, andStriped64
were removed along with the code to loadsun.misc.Unsafe
.
- All usages of
java.util.logging.Logger
were replaced withjava.lang.System.Logger
- With this change, the only JDK module depended on is
java.base
.
- With this change, the only JDK module depended on is
- All usages of
javax.annotation.*
classes fromcom.google.code.findbugs/jsr305
are replaced with equivalent classes fromdev.mccue/jsr305
FinalizableReferenceQueue
and associated classes were removed- They were rarely used, probably do a job better done by a
Cleaner
, and I wasn't able to validate that they would behave correctly in a module
- They were rarely used, probably do a job better done by a
- Annotation modules are used via
requires static
and are not carried over to dependents. - All annotation usages from
com.google.common.annotations
andcom.google.j2objc.annotations
have been removed - Split into multiple submodules, each with their own
module-info.java
- Drops explicit support for GWT, j2objc, j2cl, etc.
- Drops explicit support for android (equivalent to the
-jre
build) - Does not include
com.google.common.eventbus
(Guava docs explicitly recommends against its use)com.google.common.cache
(Caffiene covers that use.)com.google.common.annotations
(Only@Beta
and@VisibleForTesting
would be relevant without GWT+etc. testing, and you can make your own pretty easily.)
- Compiled for Java 9+, not Java 8