Reposilite 1.x and 2.x were written in Java, but in 3.x the time has come for Kotlin.
The decision to move to Kotlin was caused by a several factors:
Sources consistency - Main sources, unit & integration tests and build script files are fully written in Kotlin.
We're glad we could finally get rid of Groovy.
, web framework already written in Kotlin.
It's relatively small library, so we often need to extend it with a bit of custom methods.
To avoid mess created by static utility methods, we're extending base objects with extension functions.
State of Java - Quite primitive generic types implementation, mutable collections, rotting std,
nullable black holes and lack of significant changes since JDK8
made the overall experience worse for standard web application speaking of representation of business logic.
Nullability - A possibility to replace Optionals with nullable types and overall better support on language level reduces complexity.
Functional programming - Suited to FP-like codebase on syntax & std level.
Stable - Finally, Gradle 7.x+ and Kotlin 1.4+ are pretty damn stable for our needs.
Relatively easy - There is no big difference between Kotlin and Java,
every open-minded Java developer should be able to write in Kotlin within an hour.
If you're Java developer that never had contact with Kotlin, check our