Different histories
TLDR: Java came first. JavaScript, which was similar to but not technically affiliated with Java, then popped up to fill a different need. Java was developed over four years by James Gosling and a team of researchers at Sun Microsystems, starting in 1991 and releasing in 1995. They developed an object-oriented language that could run on multiple operating systems. It’s since been used on a wide range of devices, from phones to NASA rovers, and was also a multimedia web technology (like Flash was and JavaScript still is) via Java Applets up until 2016, when Java officially pulled support. JavaScript was also released in 1995 but was created over 10 days by Brendan Eich at Netscape as a way to make web pages interactive after the browser loaded them. It was initially called Mocha in May 1995 but shipped with Netscape Navigator as LiveScript in September and was changed to JavaScript by December of 1995. Given that the language was created to be similar to Java as a lightweight scripting counterpart to it, the name actually makes sense – and it was a pretty good marketing play as well. Since then, it’s grown to become one of the three major components of the modern Internet, alongside HTML and CSS.
Technical differences
Both Java and JavaScript are object-oriented programming languages, meaning that programmers can make things work by creating chunks of information and connecting them to other chunks of information. A “cat” object, for example, might include information about a cat’s name, color, and age, as well as a list of things the cat can do, like meow, eat, and sleep. The information in that object is then available to the programmer, who can print out information about the cat or make it do something. That’s the biggest similarity. The differences pile up from there, though.
1. Java is compiled, JavaScript is interpreted
Java has a “write once, run anywhere” system. It works like this: This means that whenever you want to change the program, you need to make the change in the Java code and translate the whole program into bytecode again. JavaScript, however, can be read by web browsers just as it’s written. The browser just checks each line and runs it. This makes it more flexible and easier to change, though it lags behind compiled code on performance, since it’s not running directly in machine-readable language.
2. Static typing (Java) vs. dynamic typing (JavaScript)
A big part of programming languages is storing values in variables. Java is statically-typed, meaning you have to say what kind of value every variable contains, and then it’s fixed. For example: “int” has to be a number and “char” has to be a letter. JavaScript, however, is dynamically-typed, so any variable can hold any data type, and they can change without a problem. The below code runs just fine: Java has a speed and debugging advantage here: declaring variable types makes finding problems faster and also lets the code run more quickly. JavaScript is faster for most developers to work with, however.
3. Concurrency
Java can run several different threads at the same time, meaning it can do several things at once. JavaScript uses an event loop instead, essentially working through a stack of things to do until it reaches the end. Again, Java has a performance advantage here.
4. Java has classes, JavaScript has prototypes
Remember, Java and JavaScript use objects to store information. They also both use “inheritance,” which allows objects to get their properties from somewhere else. In Java, they get properties from classes, which are essentially blueprints with instructions on how to build the object. In JavaScript, new objects are made using prototypes or objects that can be copied to create a new object. Basically, that means that any object in JavaScript can become a prototype, while Java requires you to create a class that can make the objects. To refer to an earlier example, Java provides instructions on how to build a cat, while JavaScript just clones it.
Which one do I need?
If the technical details were making your eyes glaze over, you can start paying attention again now! If you’re trying to decide between Java and JavaScript, it’s really not too difficult. You’ll generally want JavaScript for:
Websites, web apps, and other front-end interfacesSimple web servers/back-end tasks (with Node.js)Creating browser-based games and animationsApps/games/programs built on Electron or another cross-platform framework
However, you’ll probably want to use Java for:
Android appsDesktop applicationsServer-side applicationsWriting code for phones, IoT devices, and other hardware
If you’re looking to pick a language to learn, it depends on your goals. If you’re looking to build a programming career and get a solid grasp of programming fundamentals, or if you want to work on non-web applications, Java is considered the more technically rigorous language. It’s also the most widely used in the world. However, if you want to get into web development or are mostly planning to work on websites and web apps, JavaScript is probably a “must-have” skill. In the long run, it can’t hurt to learn both, as they both encompass concepts that can make you a better (and more marketable!) programmer. If you are looking to get into game development, these programming languages will be more suited to you. Image credits: Java Programming Language Logo, JavaScript-Logo, Java-jvm, Event Driven programming Simply Explained, OOP Classes