The problem with #Java isn't that it's trying to do too many things, not even remotely.

The problems started when they saw #Smalltalk's #ObjectSystem and thought "how can we keep only the bad parts of this and make something much worse?".

The memes about the completely absurd "enterprise Java" practically all flow from that initial flaw.

@lispi314

I think the design of Java is fine for large projects that have precisely defined needs that never change over the lifespan of the project. (Thinking of the classic "Waterfall" model.)

If you ever find such a project in reality, Java is just fine. 🤪

I'm a fan of Smalltalk, but I think that languages like that (and Lisp) are often "too powerful" for large projects. One can easily get sidetracked by redesigning core features.

@wikicliff I share your expectations regarding the existence of such projects.

I'd say that while one can get sidetracked in abstractions when trying to beautify it in CL, I've found that less common than getting mired in Java's patterns (which is practically unavoidable by design).

(At least I find it easier to stop at "nice/clean enough" than to work with something that never really had any chance to be nice at all.)

@lispi314

I'll agree that the distractions can be managed in powerful languages, if the people involved are psychologically healthy and willing to work together for the good of the project. (Not always the case, especially for "rock star" type programmers.)

I think Java's real worth is for large strictly hierarchical projects, with strict architecture levels ending with coders who implement an exact specification.

At least Java isn't C++. (Does *ANYONE* know all of C++ now? 😜 )

@wikicliff C++ has gotten pretty large, though if one includes all of the JDK specification Java's also pretty huge.