Why I dislike the Java Ecosystem
I am a programming polyglot. While I work by day in C#, I have wandered far and wide in my own time. Each language and surrounding ecosystem I’ve tried has a different strengths and weaknesses*, but one stands out as disappointing to work with overall: Java.
Java, the language, is a little bit on the verbose side, and a little split-brained in how it treats primitives vs classes, but it’s very far north of tolerable, especially as generics and such have been added over the years. Java, the ecosystem, on the other hand, is a case study in making things more complicated and painful than it needs to be, especially on Windows.
The first experience that students at FGCU go through when learning to work with Java is setting up and installing one of the two well known IDEs for the language: Eclipse or NetBeans. It seems that of the two, Eclipse is by far the better known and often used, but Eclipse has many little issues that come up. Setting up Eclipse for the first time is a drawn-out, arcane (especially for new programmers) experience.
First, you have to install the JDK. Thankfully it has a Windows installer that is kept up to date, but you’d better remember where it put the
Then, you have to download Eclipse as a
.zip, extract it, and remember where you put it! Here’s one of my biggest complaints about Eclipse: It doesn’t come with a Windows installer. While it does have Windows downloads, without offering a Windows Installer, it’s immediately that much less pleasant to work with.
Let me be clear, I have no problem with providing a portable download for users to put where they see fit, and if a program is a single, self contained binary it doesn’t likely need an installer. But let us be clear: IDEs are some of the most complicated user-facing software in existence! The least that could be provided is a nice means of getting from 0 to an editor.
Now, if it was just Eclipse, that would be one with. The Visual Studio installer often takes 2-5 hours do get itself setup, but it at least covers all the bases needed. But the Java ecosystem has other tools that are needlessly difficult to work with. Apache Spark is one that stands out as being decently difficult for very similar reasons.
Spark, like Eclipse, doesn’t come with a Windows Installer and can be very fiddly to get working. I’m using it for a bit of research (as needed by my professor), out of 3 people trying to get it to work on Windows, we all have ended up installing it on Virtual Machines so we could move on with our research and life.
This isn’t to say that Java can’t be used to make elegant tools (like IntelliJ), but much of the culture around Java discourages elegance in favor of bureaucracy, all while not providing decent support to the OS that provides the majority of it’s users.