Java, is it worth learning today, especially with all the new emerging programming languages? I like to evaluate decisions like this by listing out the pros, and cons, comparing them.
People always ask me, what ID I use for Java and I use IntelliJ which is developed by Jet Brains and I love their products. Java, it's a high-level programming language developed in 1995 into one of the most popular languages in the world. It's open-source, it runs on pretty much every operating system that's used to build everything from Android apps to server networks to video games. So Needless to say, it's a very powerful and merciful language, so let's start with the pros.
Java embraces object-oriented programming. It was basically a rebuild of C. However, with C, they basically took C and slapped the ability to have classes on there. This made this syntax and just the overall feel of using classes. Plus, kind of awkward Java was built from the ground up with classes in mind. Everything is an object and it's just an overall cleaner implementation.
So why is this a good thing? Well, it allows developers to easily reuse objects and their programs. It helps just the overall maintenance of your code.
The second thing is its platform independence. There's a famous saying in Java writing. Once, run it anywhere. Java runs on top of a virtual machine which is called Java virtual machine or JVM. So as long as the JVM is installed on a machine, you can run Java code. So you can write and run your code on a windows machine take that same code, run it on Mac or Linux, and really technically you can just take the bytecode which is compiled Java code and run that on the JVM running on any machine so you don't even really need the original source code.
With Java, you also get automated memory management. Now if you're coming from a language like Python, you're going be like what's the big deal, but if you're like me. In your first language, was C++. This is an amazing feature.
So, what does this mean? Well, if your program is running, you might need extra memory in a language like C. Once you're done using that memory, you need to deallocate this pace back and forgetting to do this will cause memory leaks in your program.
In a language like Java, once a chunk of code is no longer referenced, there's something called a garbage collector that runs and will automatically deallocate that for you.
So, the automated memory management just adds an extra safety net and just let it upset you have to do it manually. Java has built in support for multi-threading. This means that you can have multiple threads running concurrently.
A thread is just a unit of a process that can perform an action and the fact that Java has this built into it and in my opinion built into it very well. It just gives it a huge advantage over other languages.
The last Pro is that it's a very mature language. Java has survived for a few decades now. It has a great community. It's backed by Oracle, and they've really kept it up to date with features of competing languages like C Sharp and Kotlin.
It seems like when one of these languages come out with a new feature and the next Java update, they've you know build something similar and the Oracle website has some of the best documentation I've seen for a language, frameworks and libraries have been very well tested, and it's a language that's just probably going to be around for a long time.
All right? So those are the pros of learning Java. Let's take a look at some of the cons.
The first con is that it's losing popularity now, although it is such a widely used language, I do believe that its popularity will start to decline slowly over the years.
Now it's not something that's going to happen overnight, but you know you still you have a lot of newer languages that are coming out. Like Go and rust that are getting popularity.
Then you think of Android with solely using Java and now they're moving away to start using Kotlin. Stackoverflow developer survey from 2017 and 2020 we see in 2017 it was the third most popular language 2020. It was went down to 5th now although it is slightly higher like half a percent.
The next con is that it's a very verbose language, meaning you have to write a lot of code to do a little for. Both languages are meant to be very like declarative, and it's supposed to be very clear what you're doing. But in my opinion, it makes the code a little bit cluttered and actually harder to read, and it may not seem like a big deal to you know. Because you're just typing a little bit more, but if you're writing Java code like all day, every day, it can get quite tedious and honestly, a little bit obnoxious, especially when you compare it to a language like Python.
Java is a slow language. Remember how I mentioned Java runs on a virtual machine? Well, this layer of abstraction slows things down. Virtual machines act as an operating system running on top of another operating system, so there's a lot of overhead there, but further away this software is from the hardware. The slower the performance, especially when you compare two languages like C which is very close to the hardware.
Anything where you need real-time operations like online gaming or like cars operating system. Java just isn't really going to be a good choice for that. We also mentioned the garbage collector well when that runs, your entire program suspends, then the garbage collector runs, and then the program resumes. Now, this is only a fraction of a second.
Users really aren't going to notice it, but again, if you're really looking for a speedy application take a slight performance hit.
So with that being said, is Java still worth learning today now you know? Obviously depends on what you're looking to get into. But in general, I still think it's a really good language. There's still a huge community behind it. Obviously, it's backed by a massive company like Oracle, and obviously, Oracle isn't going anywhere anytime soon. I think it's just a great language to pick up whether you're a beginner learning your first language or just more experienced developer looking to add to your toolbox.