| Yes - best decision we made. Running a new startup now and choose modern Java (JDK 21+) with Spring Boot and it's been fantastic. Have previously built startups using both Haskell and Python/Django in the past. Ignore the folks talking about it not being cool, heavy, boring or whatever - modern Java is just super nice and quick to work with. Some positives we noted, - "good-enough" integrated type system & language features, e.g. immutable records, type inference, generics, sum and product types with exhaustive pattern matching, lambdas, streams (along with the new stream-gatherers). We feel the gain isn't enough to switch to Kotlin anymore. - Fantastic tooling, from IDEs, build systems, cloud integrations, remote debugging, settings configuration etc. - Massive ecosystem - there are libraries for everything, and all major vendors, including cloud providers and most startups, have a Java SDK - Spring Boot is a great framework, especially for API backends coming from Django - setting up things likes OAuth and OIDC was super easy. Spring AI is developing rapidly, for instance it got
MCP support within a week or two of it being released - Verbosity can be tamed with annotations processors, and Lombok if you desire (we do but understand some don't like it). JSpecify helps with null-checking. - Performance is great, you just don't have to think about it at a startup scale, and Loom / Virtual Threads makes it even easier to build performant web services without the mental overhead of building `async` systems I could go on, and like all things there are of course negatives, but we took the plunge and have been really happy with it. |