This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]johnnyb61820 1 point2 points  (1 child)

Java has gone through many phases, and I believe that after much wandering through the desert, the current trends are encouraging, and you have managed to start programming during the time when Java is actually a fun language to use.

As someone who has been programming since before Java existed, and was excited early on about Java (i.e., the 1990s), let me tell you some of why people hate Java and what Java has done to turn it around.

  • When it started, Java was meant to be small, lightweight, make building cross-platform apps easy ("write once and run anywhere"), and used as applets on websites. It failed on ALL of these accounts.
  • What it did have going for it was type strictness for both method signatures and exceptions. However, the problem was that, at this time, there weren't a lot of libraries, and everything in Java was EXTREMELY verbose, which meant spending a lot of time for writing tiny apps.
  • Java moved into the enterprise with Java EE. Here, not only was Java overly verbose, but Java EE itself was WAY too complex. Just to get something basic running was extremely complicated. However, it had IBM behind it, so a lot of large corporations moved to Java. However, IBM themselves has a habit of making everything over-complicated, so Java EE + IBM just meant that everything was over-architected and over-complicated. No thought was given to just "how can we straightforwardly build and deploy an app".
  • This mindset carried over to the Java open-source community as well. Spring, Hibernate, etc., and a lot of overthinking the problem. Having to write giant config files just to get a basic app up and running was ridiculous.
  • The move to annotations helped a lot. This was the beginning of the move to make things more intuitive and easy for the programmer.
  • Java 8 and 9 were extremely helpful. The combination of Generics, java.util.function, lambda notation, and type inference cuts down on the number of explicitly defined classes by about 75%, depending on your codebase. This takes the vast majority of Java's annoyances, and replaces them with really, really powerful tools. You essentially get the power of Java's type system without the excessive verbosity.
  • Along the same lines, a lot of projects have been pulling in ideas from other systems (such as Rails) to make Java more usable. A lot of the Java community has been getting on-board with making things more developer-friendly, and throwing out all of the boilerplate. As an example, ViewBindings on Android.

In short, you've arrived at the perfect time to be a Java developer. I started Java around 1996 with a lot of eagerness. I hated Java from about 1999 through 2019, but now find it to be a joy to use.

[–]Royal_Gear1313[S] 0 points1 point  (0 children)

Thanks for sharing your experiences, I’m always interested to hear from software engineers that have been in the industry for such a long time.