Strong opinions, weakly held

The tradeoff between expressiveness and readability

Languages, Verbosity, and Java

Dhanji Prasanna sums up the strengths of Java as capably as you’ll ever see.


  1. He’s absolutely right, but any such analysis of Java is incomplete without reference to Eclipse (or, I guess, other Java IDEs). I think it would be really difficult to write good Java code without help such as Eclipse provides.

  2. I agree. I strongly suspect that writing Java with Vim would be very unpleasant.

  3. That said, for a long time I used Eclipse with a few plugins for Java development and was pretty darn productive.

  4. I was just opining on this subject somewhere – every time I try to use another language after Java I’m reminded of what a pain in the ass it is that other languages don’t require that the directory structure match the package structure, or that types be defined in a file named the same thing, or that have more complex or less regular syntax. Java embodies so many excellent design decisions when it comes to discoverability, code organization, and maintainability. It is verbose, and common patterns (that I try to avoid) make it more so. But verbosity per se is not an impediment to high-quality, reliable, maintainable software. A piece of strange Java code is vastly easier to understand than a piece of strange Python code or C++.

    Now it has taken a long time for the language & libraries to get to the point where it’s not intensely painful to use. Guava is pretty vital and I’ve even come around on the subject of Guice (partially), as least-worst dependency-injection. But I find Java incredibly productive except for trivial programs, and vastly better than any other language I’ve used once programs become extremely complex.

    I worked in C# for a while and while it has its advantages, one of the drawbacks compared to Java is that it offers more choices about how to do things – structs vs. classes, having to think about stack vs. heap allocation, some odd and irregular syntactic constructs, the wreckage of several poorly-thought-out ideas left in the language. Coming back to Java was a relief, even if I have to type FooStore fooStore = FooStoreFactory.create() a billion times.

Leave a Reply

Your email address will not be published.


© 2024 rc3.org

Theme by Anders NorenUp ↑