Java's weaknesses as a programming language are so massively compensated for by the amazing IDE tooling it has..
@liamoc the fundamental problem with programming languages: a sufficiently active community maintaining a vibrant ecosystem will compensate for any language deficiency at non-huge scales. By the point the scale of your program starts to expose the programming language deficiencies, it is too expensive to change the language without enormous resources.

@liamoc While I'm at it, the superficial problem with programming languages: a good set of toy examples can make even the worst design appear sleek. By the time your program is large enough to expose the farce, you've already committed to a monstrosity.

At that point, it's much more efficient to use the fundamental problem to your advantage: invest in tooling and ecosystem.

@liamoc Not to sure what to call this one, perhaps the bitter problem with programming languages: there are many quite mundane programming abstractions we don't really understand well, and so no language will get them right in the foreseeable future. So if you want your language to be used, it'd better have a compelling set of toy examples, a vibrant ecosystem, an active community, and good tooling. Scoff at any of them to your ruin.