I can’t wait for 21, but I’m not sure when we’ll switch. At least it will be trivial compared to leaving 8.
But, yes, namespaces are still mapped to paths, it's not like they rewrote the JVM to use blockchain or something
I don't think that's quite it when Ruby is also from the 90s and figured out not to tie namespace resolution to the directory tree
I like Golang a lot but the standardisation and verbosity in Java-land has some benefits after you get used to it enough to learn to ignore the boilerplate, it's pretty good to have some kind of consistency enforced by the VM when working in large codebases.
You literally ask it to move some class and then it does it. And it's very obvious what it's doing.
Abstractions exist for a reason. In Java, that abstraction is coding in classes and packages, not files of text.
If you run a bunch of different microservices with distinct allocation profiles, all with high allocation pressure and performance constraints, and you've accomplished this w/ the help of a very fine-tuned CMS setup, migrating that over to G1/ZGC is non-trivial
High allocation rate feels weird with micro services - I suppose that depends a lot on the coding style. G1GC is meant for generally large setups, with several cores at least. E.g. the default setup of 2048 areas on 2GB heap means, allocations over 1MB require special care.
Except… when we try to build it with Jenkins on a Kubernetes cluster, this happens: https://github.com/oracle/graal/issues/7182
Compound this with multiple dependencies that exhibit this issue. If you have a "legacy" application that does not require active development, there's zero business incentive to invest into the upgrade. Unless you could prove value in having the upgrade, it just doesn't get prioritized.