featured

By Steve Geluso April 26, 2018

How to Choose a Stack, Part 5: Java

Java is powerful. It’s one of the most established, trusted programming languages in the software industry. Computer science programs teach it, and it helps companies big and small build secure, performant platforms.

We launched this blog series on how to choose a stack because we teach four programming languages and technologies at the the advanced Code 401 level: Java, Python, .NET, and JavaScript. So we get this question a lot: “How do I choose which Code 401 course to take?”

Let’s take a tour of what Java has to offer!

A Brief Explanation of Java

While Java is over 20 years old, it still remains one of the most popular programming languages around. That’s some impressive shelf life in this industry.

The programming language was created in 1995 by James Gosling and others at Sun Microsystems. The company (and thereby, the language) was acquired by Oracle in 2010. Today, you’ll find Java powering the infrastructure of many large companies. Amazon, Google, and Nordstrom here in Seattle all use Java extensively. (Did you know Nordstrom has a large technology department? They are doing some cutting edge stuff!)

Java is a great language to learn early on in your career, which is why many computer science degree programs use Java as an introductory language. It forces you to think about things that other languages hide under the hood, like “static typing” (more on this below) and specific data structures. Learning Java as one of your first languages provides you with a solid foundation of programming fundamentals. Learning and understanding other languages after Java becomes a breeze.

Java as a Statically Typed Language

Java being a statically-typed language means that instead of creating variables with the var keyword, like in JavaScript, Java requires you to define the data type of each variable.

JavaScript looks like this:

var x = 7;
var names = [“Pat”, “Terri”];

Whereas the same program in Java looks like this:

int x = 7;
String[] names = {“Pat”, “Terri”};

When you write a function in Java, you define the type of each input parameter, and the type of what the function returns. No more mysteries wondering what a function takes in and returns out!

public String whatsForDinner(int guests) {
  if (guests <= 1) {
    return “Microwave Macaroni and Cheese”;
  } else if (guests <= 5) {
    return “Hot Wings”;
  } else {
    return “Spaghetti”;
  }
}

Declaring the datatype of your variables and return values forces your programs to be more consistent, and allows Java to catch errors even before you run your program. It can warn you when you’re trying to do something impossible.

Java’s static type system is especially useful when you work with many people or work on large programs. It’s a popular language at large and complex companies for this reason (and others).

What You Can Build with Java

Java has retained its popularity in the tech industry because of the vast number of places and ways it can be used.

In fact, it is the most popular programming language today.

Source: TIOBE Index for April 2018

Mobile Apps

Google’s Android platform is all built on Java. If you want to build native phone apps for the world’s largest mobile operating system, then learning Java is a surefire investment. Google’s Firebase platform offers access to their Cloud with a realtime database, authentication, storage, and much more, all tightly bound and integrated with Java. A vibrant Android developer community creates many killer third-party tools like Butterknife, Retrofit, and RxAndroid. Keeping an eye on new popular frameworks makes writing building apps for Android a joy.

Desktop Apps

Desktop apps can be written in Java. Palantir is a huge modern information processing company and their entire product line is built in Java. Their products help people cross-reference multiple complex sources of information. People use Palantir to solve problems like finding where an E. coli outbreak came from, busting money-laundering schemes, or helping a city visualize city-service usage by a homeless population. Best yet, Palantir has an office hiring in Seattle!

Web Apps

You can find Java on the backend of many of your favorite websites. From chat systems that connect people from around the globe to games to data processing software, Java is powerful enough to create whatever type of web app fits your fancy (and your company’s goals).

Embedded Systems

Embedded computers systems are programs that run on a computer within a piece of hardware that’s stationary. This ranges from ATMs to toasters to thermostats or printers. These days, you can even buy cheap Raspberry Pi computers and build your own custom hardware solutions at home with Java.

Internal Tools

A lot of organizations outside of what we consider the “tech industry” have used Java programs to automate their behind-the-scenes business processes, like the electronic trading systems for banks. These tools aren’t necessarily accessible to a user, but handle a lot of backend processes that have been automated over the past few decades.

Jobs for Java Developers

Some common job titles for developers who build apps in Java are:

  • Software Engineer
  • Mobile Developer
  • Android Engineer
  • Developer
  • Java Developer
  • SDE
  • Backend Developer
  • Web Application Developer

Salaries of Java Developers

According to Indeed (as of this writing), the average salary for a Java developer in the United States is $102,361. It’s slightly higher in Seattle, averaging at $109,767.

Source: Indeed

Source: Indeed

How to Learn Java

Ready to dive in? Here are some resources to help you get started in Java.

Books

Online

Classes

At Code Fellows, we just launched our inaugural Code 401: Advanced Software Development in Java with SpringMVC & Android course to help experienced developers cross over into the world of Java development.

In this 10-week course, I’ll be teaching you and your classmates how to write advanced Java code, build servers using SpringMVC, and create your own mobile apps with Android.

Want more information on this course? Get in touch!


Looking for the full series on choosing the right programming stack? Start at Part 1 »