Main image of article Java Skills: What You Need to Succeed

Java is a programming language invented back in 1995, and it’s continually gained popularity over the past three decades. Originally, it was used for small apps running inside a web browser. But as it evolved, it grew into a general-purpose programming language that can be used to run full desktop and web applications.

Java also used to be the official language for developing Android apps; however, Google also recommends using Kotlin for Android development.

With all that in mind, let’s look at the skills needed for becoming a Java developer.

How do I learn Java?

In order to learn Java, you need to understand its components. These include:

  • The core language: Learn the entire language, including types, expressions, classes, methods, interfaces, namespaces, annotations, arrays and containers, lambdas, and asynchronous programming. A great place to start is the official tutorials via Oracle.
  • The Java API: The Java language includes a huge set of code that you can use in your Java apps so that you don’t have to “reinvent the wheel.” This collection of code is known as a library, and it’s been given the term “Application Programming Interface” (or API for short).
  • How the Java Virtual Machine (JVM) works: When you write Java code, that code needs to be converted into a special format that can be run inside a system called the Java Virtual Machine. In general, the JVM is almost invisible to both the developer and the user. That means you don’t need to learn much about it other than that it exists and what its purpose is.
  • How to install the Java Development Kit (JDK): Learn how to install and configure the Java Developer Kit (JDK). This contains the tools you’ll need. Any good developer can easily install the JDK on a new computer and get up and running quickly. With this you’ll want to understand the concept of a “class path” whereby the Java runtime can locate the different libraries and frameworks you’ll need.
  • Learn about the Tomcat Server: The JVM works side by side with various tools to help your application run. One of these tools, called Tomcat, allows your app to listen for incoming requests from the internet. (More on this when we get into web architecture, below.) Tomcat runs as a web server. There are other options besides Tomcat, but this is the most popular. Learn it before you learn other web servers.

Learning Java means learning about databases

In addition to learning the Java language itself, you’ll need to learn about databases. There are two main types to learn:

  • Relational databases: These databases use a concept called “relational data” whereby they store data in table format (like a spreadsheet with column headers) and use different ways to relate the data between tables. They use a language called SQL (which stands for Structured Query Language, and is usually pronounced like sequel). You’ll want to install one of the free/open source database servers to learn. The best for starting out is MySQL, as it’s owned by Oracle, who also owns Java. After that, familiarize yourself with the other big names: Postgres, Oracle Database, and Microsoft SQL Server.
  • Non-relational, or NoSQL databases: These use a different way of storing data compared to the table approach in relational databases. Each piece of data can have a different format. There are both pros and cons to this approach; one pro is the data can be much more flexible. However, that also makes managing the data much more complex. NoSQL databases have become quite popular, and the one used the most is called MongoDB.

Pro-tip: Start by learning a relational database such as MySQL and its tool called MySQL Workbench, which will help you learn SQL. Then after you’re comfortable with MySQL and the SQL language, start learning MongoDB.

You also need to learn Java frameworks

When you’re building a Java application, in theory all you need is Java and the Java API to create any application imaginable. However, that would become cumbersome; you would find yourself rewriting code that’s going to be common to most Java applications. Instead, there are several additional libraries (also called frameworks) that greatly simplify your development, providing such code common to most apps.

Java Spring is the most popular framework, and therefore the one you’ll want to learn. It’s huge; and as such, here are the most important parts you’ll want to learn first:

  • Java Beans. This is a concept that uses Object Oriented Programming approaches; it lays the groundwork for the rest of Spring.
  • Data frameworks: Spring includes several frameworks for accessing data stored in databases. The first to learn is the Java Persistence API (JPA), as it’s one of the newer approaches to accessing data. Then take a little time learning JDBC. JDBC is very old, over two decades old, but it is still used in some places. Just become familiar with it. Additionally, learn a bit of Hibernate, which is another technology for reading and writing data.
  • Web framework: In order to create web applications, you need code that will listen to incoming requests from the internet, and then run parts of your Java code in responses to those requests. By itself, this would be incredibly difficult to code; however, Spring has an entire web framework that greatly simplifies the whole process, allowing you to focus on what you want the app to do.
  • Spring Boot: While not technically part of the Spring framework, Spring Boot is a tool found on the Spring website that lets you choose features you want to include in a new app; then you simply click a button and you’ll download a zip file containing all the starter code for a full Java app.

After you’ve learned Spring, you can then take a brief look at Jakarta Enterprise Beans (formerly known as Enterprise Java Beans, EJB). This is a much older technology and generally harder to use than Spring. However, there are still plenty of organizations using it, and knowing it could put you ahead of the other applicants at such a company.

Learning Java means knowing web architecture

A large portion of Java apps today are web-based apps. That means you’ll need to learn as much about web architecture as you can, including:

  • The general way that browsers and servers communicate through URLs that include data going from the browser to the server, as well data coming back from the server.
  • REST API concepts. Here, “API” refers to a server on the internet that listens to requests from web browsers. These servers are considered the “back end” of your application.
  • JSON data: This is a format for passing data between computers on the Internet. It’s based on the JavaScript language, and stands for JavaScript Object Notation.

In addition to learning about web architecture, you will want to learn about a product called Tomcat, which is a server that can run Java applications.

Knowing front end development is essential

Java apps can take on several forms, including web-based apps and desktop apps. For web-based apps, the “front end” is the part running in the browser that connects to the back end running on a different computer somewhere on the internet. Desktop apps, on the other hand, run outside the browser as a regular Windows, Mac, or Linux application.

Desktop Front End: The first tool to learn is JavaFX. It greatly simplifies creating the front end for a desktop app. The next tool to learn is Swing (not to be confused with Spring!). Both have been around a long time, and while JavaFX is newer, both are still popular.

Pro tip: Desktop app development jobs aren’t nearly as common these days, but they still exist. Only learn about desktop app development if that’s an area that interests you. If instead you want to work on full-stack web-based apps, you probably don’t even need to bother learning desktop app development.

Web Front End: For building web-based front ends that run in the browser, there are two different technologies within the Java infrastructure:

  • Browser frameworks that use JavaScript.
  • Frameworks that create web pages on the server and send these pages to the browser. This approach is called “Model-View-Container” (MVC) and is an older approach. However, because a lot of large companies have been using Java for years, even decades, many of them use MVC even though it’s older. So don’t skip this.

For the browser frameworks using JavaScript, here’s what you’ll want to learn:

  • Coding REST APIs in Java for your back end using the Spring tools for web development mentioned above
  • Building front ends using either Angular, React, or Vue. (One cool thing about these tools is they can work with back end apps written in any language, not just Java). Of these, Angular is the easiest to learn and one of the most popular. However, if there are certain companies you want to try to get in with, you’ll want to find out which they use and focus on that one instead.
  • The JavaScript language. This is the language built into the web browsers. And contrary to the name, it is completely unrelated to Java. You’ll want to learn as much as you can about both JavaScript, and a similar language called TypeScript. TypeScript was created by Microsoft and it helps you write code with fewer bugs. The code you write in TypeScript gets converted (“transpiled”) to JavaScript before it can be run in the browser. React, Angular, and Vue are written in TypeScript and prefer that you use it for your front end development.

For MVC front ends, there are two paths you can go by:

  • JSP (Java Server Pages). This technology lets you put Java code inside your HTML pages that’s run before sending the pages to the browser. It’s a little older, however, compared to this next one.
  • ThymeLeaf: This is much newer, essentially a highly-evolved version of JSP. It’s much easier to use than JSP.

Pro tip: Learn both JSP and ThymeLeaf. Both are used heavily and when you learn one, it’s pretty easy to learn the other.

IDEs and Other Tools

In order to type in your Java code, you need an editor. But editors today go far beyond letting you just type in your code. They’re called IDEs (Integrated Development Environments) and they make coding a lot faster and easier. Here are some options to learn:

  • IntelliJ IDEA: Most Java developers prefer this one, as it was built from the ground up specifically for Java development.
  • Eclipse: This is a much older one, and it has great tools for Java. However, because of its age, it’s a bit of a dinosaur and can be sort of frustrating to use. But it is still used in a lot of software shops.

Pro tip: Learn IntelliJ first. Then spend some time becoming familiar with Eclipse.

Do you need a degree to become a Java developer?

In the case of Java, this is a particularly interesting question, because Java is currently the primary language taught in undergraduate computer science courses. If you choose to go through a bachelor’s degree program in computer science, you will come out knowing Java inside and out. If you take at least a couple web development courses, you’ll possibly be ready for a job. (You’ll want to make sure the university includes a course or unit on either Angular, React, or Vue. If not, you’ll want to learn that on your own.)

That said, these days many companies are no longer requiring degrees because they’re finding that students who self-teach or go through a bootcamp are typically just as skilled as recent college graduates. So long story short, you probably don’t need a degree to find suitable employment as a Java developer.

Conclusion

Although Java is a very old language, it’s also a popular and evolving one. It’s unlikely Java will go away anytime soon, which means you can’t go wrong learning it, especially if you intend to ever work with a platform like Android.