In Kotlin, when working with the JVM, it seems there is multiple choices for standard library, namely kotlin-stdlib
, kotlin-stdlib-jdk7
and kotlin-stdlib-jdk8
.
I cannot, however, find anything telling me the difference between these. The only visible difference I have found is that I cannot use com.fasterxml.jackson.databind.exc.MismatchedInputException
with kotlin-stdlib
, but I can with kotlin-stdlib-jdk8
.
Is there anywhere I can read about the advantages using one over the others, or can anyone explain this in layman terms?
Most of the stdlib is in the plain kotlin-stdlib
artifact.
kotlin-stdlib-jdk7
adds suppressed exceptions and a few extension methods.
kotlin-stdlib-jdk8
adds ThreadLocalRandom as well as a few other extension methods and retrieving groups by name in Regexes.
The code is there: https://github.com/JetBrains/kotlin/blob/55c8b35eee2ee8a93ccaffeaac6f9c3e4fd4ff18/libraries/stdlib/jvm/src/kotlin/internal/PlatformImplementations.kt#L27
EDIT: I got curious so wrote an article about this: https://medium.com/@mbonnin/the-different-kotlin-stdlibs-explained-83d7c6bf293. Bottom line: Android declares a weird JVM version so almost nothing from -jdk7
and -jdk8
is used.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With