Where is Java used in Real World?

If you are a beginner and just started learning Java, you might be thinking where exactly Java is used? You don't see many games written in Java except Minecraft, desktop tools like Adobe Acrobat, Microsoft Office are not written in Java, neither is your operating systems like Linux or Windows, so where exactly people use Java? Does it have any real-world application or not? Well, you are not alone, many programmers ask this question before starting with Java, or after picking Java is one of the programming language of choice at graduate level. By the way, you can get a clue of where Java is used by installing Java at your desktop, Oracle says more than 3 billion devices run Java, that's huge number, isn't it? Most major companies use Java in one way or other. Many server side applications are written in Java to process tens of millions of requests per day, high frequency trading applications are also written in Java e.g. LMAX trading applications, which is built over their path breaking inter-thread communication library, Disruptor. In this article, we will see more precisely, what kind of projects are done in Java, which domain or sector Java is dominating and where exactly Java is useful in real-world?


Real World Java Applications

There are many places where Java is used in real world, starting from commercial e-commerce website to android apps, from scientific application to financial applications like electronic trading systems, from games like Minecraft to desktop applications like Eclipse, Netbeans and IntelliJ, from open source library to J2ME apps etc. Let's see each of them in more detail.



1) Android Apps
If you want to see where Java is used, you are not too far away. Open your Android phone and any app, they are actually written in Java programming language, with Google's Android API, which is similar to JDK. Couple of years back Android has provided much needed boost and today many Java programmer are Android App developer. By the way android uses different JVM and different packaging, as we have seen in our previous article about how Android app works, but code is still written in Java.


2) Server Apps at Financial Services Industry
Java is very big in Financial Services. Lots of global Investment banks like Goldman Sachs, Citigroup, Barclays, Standard Charted and other banks use Java for writing front and back office electronic trading system, writing settlement and confirmation systems, data processing projects and several others. Java is mostly used to write server side application, mostly without any front end, which receives data form one server (upstream), process it and sends it other process (downstream). Java Swing was also popular for creating thick client GUIs for traders, but now C# is quickly gaining market share on that space and Swing is out of its breath.


3) Java Web applications
Java is also big on E commerce and web application space. You have a lot of  RESTfull services being created using Spring MVC, Struts 2.0 and similar frameworks. Even simple Servlet, JSP and Struts based web applications are quite popular on various government projects. Many of government, healthcare, insurance, education, defense and several other department have their web application built in Java.

Real world application of Java

4) Software Tools
Many useful software and development tools are written and developed in Java e.g. Eclipse, InetelliJ Idea and Netbans IDE. I think they are also most used desktop applications written in Java. Though there was time when Swing was very popular to write thick client, mostly in financial service sector and Investment banks. Now days, Java FX is gaining popularity but still it is not a replacement of Swing and C# has almost replaced Swing in Finance domain.


5) Trading Application
Third party trading application, which is also part of bigger financial services industry, also use Java. Popular trading application like Murex, which is used in many banks for front to bank connectivity, is also written in Java.


6) J2ME Apps
Though advent of iOS and Android almost killed J2ME market, but still there is large market of low end Nokia and Samsung handset which uses J2ME. There was time when almost all games, application, which is available in Android are written using MIDP and CLDC, part of J2ME platform. J2ME is still popular on products like Blu-ray, Cards, Set top boxes etc. One of the reason of WhatsApp being so popular is because it is also available in J2ME for all those Nokia handset which is still quite big.


7) Embedded Space
Java is also big in the embedded space. It shows how capable the platform is, you only need 130 KB to be able to use Java technology (on a smart card or sensor). Originally Java was designed for embedded devices. In fact, this is the one area, which was part of Java's initial campaign of "write once, run anywhere" and looks like it is paying up now.


8) Big Data technologies
Hadoop and other big data technologies are also using Java in one way or other e.g. Apache's Java-based HBase and Accumulo (open source), and  ElasticSearch as well. By the Java is not dominating this space, as there are technologies like MongoDB which is written in C++. Java has potential to get major share on this growing space if Hadoop or ElasticSearch goes big.


9) High Frequency Trading Space
Java platform has improved its performance characteristics a lot and with modern JITs, its capable of delivering performance at C++ level. Due to this reason, Java is also popular on writing high performance systems, because Though performance is little less compared to native language, but you can compromise safety, portability and maintainability for more speed and it only takes one inexperienced C++ programmer to make an application slow and unreliable.


10) Scientific Applications
Nowadays Java is often a default choice for scientific applications, including natural language processing. Main reason of this is because Java is more safe, portable, maintainable and comes with better high-level concurrency tools than C++ or any other language.


In 1990s Java was quite big on Internet due to Applet, but over the years, Applet's lost its popularity, mainly due to various security issues on Applet's sand boxing model. Today desktop Java and Applets is almost dead. Java is by default Software industries darling application development language, and given its heavy usage in financial services industry, Investment banks and E-commerce web application space, any one learning Java has bright future ahead of him. Java 8 has only reinforced the belief that Java will continuing dominating software development space for years to come.


13 comments :

YourFriend said...

What is Java future for Desktop Applications?
Should we indulge ourselves in Java if we want to develop desktop applications? or there is no way possible other than C# ?

I am not a big fan of Visual Studio, just wanted to make sure if Java has any future for developing Desktop(particularly Windows) applications?

Thanks for writing such a nice article :)

Anonymous said...

There are barely any *Real World* examples in this post, beyond some passing references to LMAX, an some financial institutions.

The rest is just the vagueries of Trading/Banking/Finance, Mobile/Embedded, and Server.

Name some *Real World* examples; real componies, real products, real projects.

Anonymous said...

"Lots of global Investment banks like Goldman Sachs, Citigroup, Barclays, Standard Charted and other banks"

That's why they suck, they are not lean and they will fail the test of time. You can write a project in Java in 3 months with a team of developers, I can do the same project in whatever framework is most suitable in 1 week.

Javin Paul said...

@Anonymous 2nd, I think Eclipse is real, Minecraft is real, Murex is real, WhatsApp J2ME client is real and as you admitted LMAX is also real.

Anonymous said...

@YourFriend, future of Java desktop application is in hand of Java FX, it it take off like Swing did earlier, you will still see developement happening on that space. There is no point for a Java developer to learn C# as they are similar language but just for different technical stack, instead you should learn Python, Ruby or Perl. Scripting language are very good for small tasks.

Anonymous said...

Java is actually used EVERYWHERE, it's in your phone, it's in your cable's settop box, it's in your credit card, it's on the server which you are currently connected to, it's on the browser you are currently using it. Java is the most ubiquitous language ever created.

Klaas Bredenkamp said...

Before I share from my own experience, see this article from last year: http://www.wired.com/2013/09/the-second-coming-of-java/.

Some quotes:

'But over the past few years, Java has evolved into something very different. It has quietly become the primary foundation for most the net’s largest and most ambitious operations, including Google, LinkedIn, Tumblr, and Square, as well as Twitter. “It’s everywhere...'

‘Java is really the only choice when it comes to the requirements for a company like ours — extreme performance requirements and extreme scalability requirements. There is no viable alternative' Bob Lee (Square)

We can add Amazon Web Services to the list above (a few of my ex-colleagues work there). Note that these companies use Java (the language), as well as Java (the JVM platform) together with other JVM languages like Clojure and Scala.

From my own experience in the payments industry, I can conservatively say that whether you buy something in a bricks and mortar store or online, do online banking (from a PC or mobile device), get paid your salary, or send money to relatives in another country, a significant portion of the code handling a significant portion of that processing (across the world) is written in Java (the language). The same holds when it comes to the payments that are not visible to the man on the street (e.g. online banking by big businesses, merchant acquiring, etc., etc.). Java plays a significant role in money making the world go round.

Not to mention the product suites written by companies like Oracle in IBM, covering even more industries.

Another angle to approach this topic from is what the real-world demand for Java developers is. See this article from earlier this year: http://www.infoworld.com/article/2608294/java/employers-want-java-skills-more-than-anything-else.html. Also see Java's ranking on http://www.tiobe.com/index.php/content/paperinfo/tpci/index.htm and http://jobstractor.com/monthly-stats. Finally some keyword search results from indeed.com:

Java 75,018
Javascript 56,892
C++ 33,663
C# 33,298
Python 30,586
PHP 17,676
Ruby 15,271
C Programming language 8,943
Objective-C 4,435

Now, I know some of these rankings may be questionable, but when combined with data from the job market, there is a clear trend hear. Currently there is a strong real world need for Java.

Klaas Bredenkamp said...

I have also been pondering an anonymous comment that seems to imply that large companies are not lean and that their Java projects take a lot of time and resources to deliver. I do not know what the commenter's frame of reference is, but in general being lean (i.e. doing lean software development) does not have to do with the size of your company or the technology you use. Lean originated in the manufacturing industry and is about applying certain principles to how you build something. To provide one data point, I know someone who was recently invited to speak at a lean summit. He is the head of a department in a large software development company that applies lean principles. The software development component of their projects spans as little as a few days to a few weeks and is done in Java on a Java-based framework, typically involving only one Java developer.

Anonymous said...

Python is also quite good when it comes to Scientific Applications. Check IPython!

An Ng said...

Please, you sound very savvy, would you name a few a those framework and give us a little bit of light how a serious project got done in a week. Thank you.

Anonymous said...

The best way to implement the model view controller pattern is with Java.
Servlets,SQL,JDBC.
You can choose between Tomcat,JBOSS ,Oracle Application Server etc

Javin Paul said...

@An Ng, there are several MVC framework for Java developers e.g. Struts 2.0 and Spring MVC

D-man said...

You should check out JavaFX.
Here are a few links for real world apps.
https://jaxenter.com/20-javafx-real-world-applications-123653.html

https://m.reddit.com/r/java/comments/3t7gzi/what_are_some_examples_of_great_javafx/

Post a Comment