1. Integer/Double vs int/double. That alone should make anyone question the design of the language. There is no good reason for a language to have both.
2. Annotation processing is just silly. Python decorators did it right - the decorator is defined within the language spec. With Java annotation, often times that annotation processing code is actually writing code strings to a file to be compiled. Not to mention the whole Lombok thing, which is considered almost a standard library to use in all projects, but is extremely hacky in the way its implemented. And the reasons for using it are even more silly. Somehow it's bad to make the class fields public, so you should write getters and setters, but also its bad to write all the getters in setters in the first place so you just use the lombok annotation.
3. Having a main function be part of a class, and then resolving which main function gets called if you have multiple ones through an additional file that is packaged into the jar is pretty horrible design.
4. The whole log4j vulnerability issue highlights the fact that there are so many libraries that are used as part of standard codebases, where the developers of those libraries have zero understanding of the ecosystem, to where someone can write code that results in a network call from a log function and nobody sees anything wrong with that.
5. GC tuning is a thing in Java. Shouldn't be. Python seems to function fine without having to touch the GC.
6. While not necessarily a flaw, Java isn't fit for modern day. Compare what it takes to write a API backend in Java versus something like Python or Go. You have to do a lot more configuration and write more code.
The whole language of Kotlin (and before Groovy) was pretty much made to fix a good number of issues with Java, with Android dev switching hard into it.