| Here is what we use and I'd recommend to others. The most common:
- Kotlin for most of the backend code, but Java for shared libs. We still use Java 8 for some libs which may be used in Android, that's an unfortunate reality - Gradle for build config - Spring for application architecture And few things that may significantly improve your dev process, but are not so common: - Spring Reactor (and Webflux) for processing data and requests. Takes a time to learn, but it worth it - Thymeleaf for UI - Spock for testing. Highly recommended for designing tests - Testcontainers for integration tests - Micrometer to see what's going on with your app. I.e., to export all internal metrics to use with Prometheus/Grafana/etc For the environment - SDKMan to manager the environment - Gradle Application plugin or Google's Jib to pacakge your app. First prepares a Zip with all binaries, second a Docker container - IntelliJ IDEA - Github Actions - turns out to be the most usable CI. Though the Jetbrains TeamCity may be better for a large team |
Considering Kotlin is a supported, first-class language on Android, why not write your shared libs in Kotlin as well?