According to most calculations, Java is currently the most popular programming language for all sorts of purposes, which means there’s a huge variety of job choices and interesting money-making opportunities for engineers who specialize in it.

When considering what you can do with Java, many developers think of building:

Application servers

Web applications

Unit tests

Mobile applications

Desktop applications

Enterprise applications

That’s a good list, but it doesn’t begin to cover the incredible range of things you can do with Java. For example, many developers use Java to create games and tutorials. And Java often figures into cross-language development with products such as JNBridge, which means that your Java experience can come in handy even if you’re not writing pure Java applications.

Just look around a bit—there’s a good chance Java developers can find work that actually makes it fun to go to work in the morning. If you need inspiration, check out these 10 surprisingly cool ways to earn a living with Java:

1. Working in the cloud

As they do with many languages, software developers use Java to build cloud-based application services, web APIs, client applications, and so on. It’s not just that Java is useful for creating new applications in the cloud or moving existing applications to the cloud. But Java’s proven ability to work anywhere fits perfectly into the modern mix of cloud, mobile, and desktop applications designed to function the same way no matter where they happen to be running. There is also no lack of AV/VR apps out there (many of which are mobile apps) that all rely on cloud-based resources.

Companies such as Belatrix specialize in cloud-development outsourcing, and Heroku provides Java-specific cloud services. Or imagine creating an app that will help users see on their phone, tablet, or other device what their hair will look like when restyled. According to ITFirms, many top Java development companies are involved in cloud-based work with a broad range of high-profile clients (think organizations like Nestlé, the United Nations, Universal Studios, Jaguar, and others).

Especially important for cloud development is unit testing using simulations in a process called “mocking,” in which software objects are used to simulate real-world objects and determine whether unit tests pass or fail. One of the most useful and commonly used packages for mocking is Mokito, which is Java-based. You can leverage combined Mokito and Java skills to perform unit testing of all sorts of applications and devices—imagine unit testing robots, satellites, or IoT devices that rely on cloud resources to work.

2. Exploring space at NASA

The National Aeronautics and Space Administration (NASA) uses Java for a number of interesting applications. A personal favorite is World Wind, a software development kit (SDK) that lets you zoom in from outer space and examine any location on earth. The data source is a combination of Landsat satellite imagery and Shuttle Radar Topography Mission data. An amazing 90 example applications show how to use this SDK—wouldn’t it be awesome to work on the code that makes it all possible? And in a blog post on developing NASA’s mission software with Java, four top NASA engineers detail the role Java played in various space missions.

NASA is always creating interesting new products, so keep an eye on Ames Research Center news. You can find a list of job openings for NASA at a number of sites, such as Indeed.

3. Working with the Internet of Things

You probably hear a lot about the Internet of Things (IoT) these days. The IoT is everywhere, from sensors in massive industrial machinery to smart-house devices like security cameras. In fact, did you know that the popular Nest thermostat relies on an interesting mix of Java and AI? Some smart vending machines are Java based, using software to track inventory, temperature, humidity, and location. In addition, many wearable technology applications are built in Java.

Want to find out more about using Java to create IoT functionality? Check out Jaxenter for info on why Java is the best language to use for IoT, and Customer Think to learn more about all the skills and resources needed to make IoT happen.

4. Developing self-driving cars

One of the more interesting and demanding uses of technology today is the self-driving car. Sure, you have to create robotics that can steer the vehicle and place the right assortment of sensors to help the car avoid collisions, but some of the most interesting work uses technology to perform tasks that humans consider more or less mundane. Still, to put self-driving cars on public roads, developers need to combine all of these elements in a package that guarantees extreme reliability—or face public outcry.

These online tutorials and simulations can help you understand how Java plays a key role in high-performance applications like self-driving cars.

5. Helping doctors make virtual house calls with chatbots

Once upon a time, doctors made actual house calls, visiting patients in their homes. This may not always have been efficient for the doctors, but it sure was convenient for the patients. Now, there is a booming medical approach designed to let the doctor stay in the office but still visit patients in their homes. One such project is Doctor Online, which relies on Java in its application modules. Though not new, the system includes a full suite of modules designed to make doctor and patient interactions convenient and fast.

Beyond telemedicine, more and more sites, including e-commerce sites, rely on chatbots to provide a personalized touch for everything from choosing the right outfit to tracking lost packages.

Eventually, we could see robotic medical devices that reside in the homes of those who need them. Remote doctors, via the robot, could perform simple tasks like checking a patient’s temperature, listening to their heartbeat, or checking their blood pressure—all without leaving their office. In fact, someday doctor may even be able to perform more advanced tasks, such as administering basic care or performing an EKG.

Java developers will be on the front lines in creating this technology. As the medical profession looks for less expensive ways to address patient needs, look for an ever-expanding role for software engineers in creating the required software.

6. Performing big data analysis

Today, big data analysis is at the center of some of the most interesting uses of technology. Scientists in a number of key industries are using advanced data analysis techniques to discover new patterns in large quantities of data and to better understand complex processes.

Although many engineers believe Python or R is better suited to these kinds of applications, Java is also used for many data analytics tasks, especially in ETL (Extract/Transform/Load) processes. Java is often used to work with Hadoop implementations. Fortunately, a wide variety of tools are available to perform data analysis using Java, including libraries and frameworks like Weka, Rapid Miner, Massive Online Analysis (MOA), Apache SAMOA, JSAT , Java Machine Learning Library — Java-ML, Retina Library, Java Data Mining Package — JDMP, and many others.

It doesn’t hurt that highly compensated big data jobs are popping up in a wide variety of companies and data analysis applications. For example, these skills could be invaluable to help social networks such as Facebook, Twitter, and LinkedIn deal with their issues managing everything from hate speech to terrorist recruiting. Java-based data analysis might one day help stop a terrorist attack or uncover large-scale voter manipulation.

Want to learn more? Check out the Udemy course on Basic Data Analysis with Java or read Java Data Analysis by John R. Hubbard.

7. Getting your name on the big screen

Special effects firms like Industrial Light and Magic (ILM) rely on Java for all sorts of software-based wonders. In fact, you can often find jobs at ILM for just about any development skill. Currently, ILM uses a combination of Java and Python to handle tasks like sequencing animation scenes.

8. Making games

A lot of popular video games today—such as RuneScape, for example—run on Java. Basically, Java games are just about everywhere because Java works just about everywhere.

The Open JavaFX (OpenJFX) graphics package eases the burden of working with the kinds of images that makes gamers go crazy. In fact, there are gaming development sites, such as Java-Gaming.org, that are totally dedicated to the needs and interests of Java game developers. You can also find specialized libraries for gaming development, such as Lightweight Java Game Library (LWJGL), designed to make creating games in Java much easier.

Android makes extensive use of Java for apps of all sorts, including games. Check out the Mybridge list of 38 top apps written in Java—you may be amazed by the wealth and variety of apps that depend on Java-development skills.

9. Becoming a mad scientist

There has always been an association in popular culture between number crunching and mad scientists. (After all, how many people do you know who label numbers as evil?) Many modern developers don’t think of Java as the best language for numeric processing and scientific needs, and reviewers tend to cite its lack of math libraries as a serious problem. That may be why Python is more widely associated with these kinds of programming tasks.

However, Java can in fact be a better solution for math-oriented applications when you need to combine heavy numeric or scientific processing with smooth 2D or 3D graphics output. If you’re a mad scientist in training and want to use Java, you need a library such as JScience or JSci. Sites such as Glassdoor provide listings of interesting jobs working with science and Java.

10. Going back to school

A large number of schools and educational institutions (both K-through-12 and higher education) rely on custom Java applications. Until recently, Java was the language of choice for learning programming skills in schools (it has recently been overshadowed by Python) and it is still widely used in educational settings.

Creating educational and other applications for schools tends to involve writing a wide variety of smaller applications, compared to fewer but bigger projects in enterprise environments. In the educational world, you could be coding an application to track student statistics one day and working on a modeling process for a lab another day. Freelancer provides listings of jobs in this category.

Java is everywhere

These 10 lesser known things you can do with Java merely scratch the surface of how to turn Java skills into a rewarding career, a lucrative sideline, or even a way to unlock the hidden potential in your current position. Java is so popular and widespread that there’s no shortage of ways to find fun and fascinating work with the language. With a little bit of digging and a dash of creativity, Java expertise can be your ticket to a fascinating career in almost any field.