Java programming is strange
I didn’t realize that in 2013, in order to do programming in the most advanced language out there (AKA Java) you have to set proper environment variables, in a magic way which nobody really documents. Not only that, but you have to already know that, you’re stupid if you don’t know them yet.
Java is the language with the least respect for the platform it runs on. Apparently, stuff work because there’s tons of glue and tape that programmers use to patch things up. Out of the box? You’re joking. The box is a zip file, because we’re too cool to do distribution packages that respect the platform you’re working on.
And, of course, in order to make your Java software run you have to set special environment variables. What? You didn’t know you have to set JAVA_HOME environment variable? Set it to where your javac is located! Oh, you added bin/ to the path? Your application will work, but not as you would expect. Please, let me invent a path where I don’t find some things you didn’t know existed for you! Why, thank you, ANT, that would be lovely, I love a challenge.
There are no project files in Java world. You can’t really have several projects in different instances of Eclipse unless you have the ugliest popup at start-up. Or, the true solution of a real Java programmer!
A different copy of Eclipse for every project you work on. Because what is more important than copying and configuring a different copy of Eclipse for every Hello World you want to write? This is why Netbeans install its own copy of GlassFish and Apache Tomcat.
I’m a fan of having control and doing stuff by hand. But if that’s the only option, I honestly don’t like it. I respect, understand and use the power of out-of-the-box. I respect configurability in the UIs, and UIs in general.
Out of the box, ANT requires a batch file of 200 lines to run properly. Why? It really does nothing special, but it checks and sets a series of environment variables. Could this be abstracted in the Java environment? Of course. They are? Probably. Are they used in a consistent manner? Definitely doesn’t look like it.
There are too many things that one must KNOW before they take on Java programming. Not knowing them, not really understanding them can be painful. The setup phase of any Java programming project is a real pain.
If you want to do web programming you will probably want to install Apache Tomcat. Yes? NO! (you didn’t pay enough attention, did you?) No, you have to use the copy that comes with your IDE. Where is it? How is it integrated? Who knows? It’s difficult to say.
This is why for any library you want to use and it’s written in Java, you have to have instructions for each IDE you want to use; there is no intuitive way to do this. Each has its quirks, each has its tricks. And when you ask: why do I get this error? The answer from community makes you feel really stupid: “Oh, you didn’t know you had to copy THAT in the lib folder? Which lib folder? The magic lib folder that you should’ve created in the first place.
Java feels like stone age. Did I tell you about the Android Studio experience? Which experience, to be more precise? I had to set some (again) magic environment variables to start it; but by the time I found out which of these environment variables I should set I totally lost my interest.
Probably, the superior option would be to fire a basic editor (notepad++ is a really good one) and create your projects. By hand. At least you have the satisfaction of working with the stone age tools that Java offers like they did it in the stone age.
And don’t get me wrong. Eclipse is a very sofisticated tool. So is Netbeans. IntelliJ IDEA? Sure, it’s a nice tool. But the thing that binds them: Stone age thinking. Just so you can understand: the project setup for using libGDX includes a video that 22 minutes long. 22 minutes, ok?
Yes, I like toying with Java.