Java is Dead! Once More

Programming languages are ranked based on different criteria. For example, Stack Overflow lists programming languages based on the number of questions and answers; while it is a clear indication of the recent popularity of a language, already matured languages not necessarily require the developers to search for "how to write a loop". Similarly, the famous index Tiobe lists Java as the second most popular language next to C at the time of writing this article. Tiboe ranks programming languages based on the number of skilled engineers world-wide, courses, and third-party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube, and Baidu are used to calculate the ratings. It is important to note that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.


Coming to the point, recently I saw an index claiming Python took the first place pushing Java to the second place. Nothing to worry; good for Python! The programming language war is never-ending like the Linux distribution war. Fanboys always claim that their language is superior to any other language. This article analyzes if Java is dying and is Python replacing Java so that you can learn and live with Python only. I am comparing Python against Java because of the most recent claims I've seen over the internet but the core idea remains the same for any language out there.


 

Let's see why always people cry "Java is dead"? I think they are the descendants of those who announced "C is dead" or "C++ is dead". Of course, some languages die but a general-purpose language that is hugely successful and widely adapted live longer than most of the anticipation.

 

Java was a newcomer in 1995 and it had some strong advantages like "Write Once, Run Anywhere" and comparatively better security compared with other languages of that time. Today, several other languages are competing with Java in almost every aspect of its core principles. However, the long period of the Java-dominated world gave additional benefits to Java.


Here are some key factors contributing to the popularity of a programming language:

  • Scope of the language
    • General-purpose languages are widely adopted than languages solving a specific problem
  • Availability of libraries
  • Corporate and Open Source Support
    • Open-source languages with a tech giant's contribution flourish faster than purely open source or purely proprietary languages
  • IDE and other tools
    • Error correction
    • Debugging support
    • Build tools
    • Testing tools
  • Easy to learn and write programs
    • Simple and straight forward syntax
    • Availability of forums and tutorials
  • Backward compatibility
  • Large community

 

The first point is obvious; a general purpose language has more application than a domain specific language. Second, the availability of libraries. Nobody wants to reinvent the wheel unless you are a fresh graduate with an itch to write everything by yourself. If a language does not have enough libraries to solve day to day problems, nobody is going to use it. Java has millions of battle-proven libraries and most of them are backed by Apache foundation and tech industry.

Open source languages are welcomed by the community because of the freedom but purely open source projects relying on donations cannot find enough funding. If a profitable company is there to support the open source development, those projects generally become a huge success. C# is an example of a proprietary language that could not overcome Java though it was backed by Microsoft. On the other hand, Java has both open source and proprietary versions which made it the best choice from small to large scale businesses.

 

As a project grows large, we need tools to automate the development. Java is the only language I know so far that has the excellent IDE support. It can be IntelliJ Idea, Eclipse, or Netbeans. Before the arrival of Jetbrains PyCharm, Python didn't have a better IDE. Similarly a language needs better build tools and testing tools. Java offers all of them. Above of all these requirements, a language must be easy to learn and easy to write software using it. Automatic garbage collection and other security features make modern languages easy to write software with than low level languages. Python is easy to learn compared to Java but Java is easy to learn compared to C, C++, Scala, Kotlin, etc. Yes I said Java is easier than Scala and Kotlin which are supposed to be better Java. The reason is the limited but well designed features of Java. Modern languages provide some features which are supposed to be handled by a library. For example, Kotlin has a syntax sugar for lazy loading. Of course its nice to have and I appreciate it but it introduces overwhelming features to learn. Java offers only the bare bone features. If you need something like that, you can build it in Java or find an existing library but Java itself doesn't have all the bells and whistles you need. This makes Java easy to learn. I prefer a language that provides one solid and optimized way of doing things than thousand ways to do the same thing and confuses me on choosing the right one.

The last one: backward compatibility. For a fresh software engineer, Java is boring because it doesn't announce new features every day. One of the core value of Java is being backward compatible. I know some companies which are still running the Java code they wrote back in 1990s. Java rarely breaks old code. This is why Java does not introduce ground breaking changes and carry all those deprecated methods for years. Python for example introduced breaking changes in Python 3 so the code written in Python 2 had to be modified. The larger the project, the riskier the breaking changes are. That is another reason why the tech industry is reluctant to change and Java is a good choice for them.


As you can see, this is a self-boosting cycle. If a language is popular, it will attract more developers to write libraries, IDEs and articles about the language which in turn make the language even more popular. Java already has a matured community, a wide range of libraries, and powerful IDEs. A popular language is the first choice for industries because it's easy to find developers. As a language is hugely adopted by the industry, it creates more job opportunities and attracts more developers to learn the language. Take any popular language and you can observe this behavior. It can be Java, Python, C, C++, and the list continues.


However, this popularity can be simulated by some external factors. For example, Microsoft pushed C# to its best to replace Java. Though C# lacks behind Java because of its proprietary architecture (Microsoft realized the mistake and made it open-source, but it is too late to beat Java) the popularity of C# is heavily fed by the company behind it. Recently Kotlin got viral because Google adopted it for Android development. Apart from such unique favors, a language takes years to gain popularity and its place cannot be replaced by a new language overnight.


Coming to the Java vs Python battle, there is no doubt that Python is awesome. I use Python for all my open-source projects. The recent advancements in machine learning and the choice of Python for machine learning make it even more popular. The main advantage of Python for its wide adaptation is its simplicity. Python is easy to learn and you don't need a computer science degree to program in Python. Is it faster than Java? Definitely not. Then how come all machine learning projects are written in Python? It's because the machine learning frameworks like Tensorflow are actually written in C and Python is used as a programming API only. Considering the application of Python, I don't think Python takes over Java's place; actually it cannot. Python has its applications and definitely Python is a good candidate when it comes to machine learning. However, Java rules the Big Data world and anywhere performance is critical and C/C++ is not an option. Machine learning depends on big data solutions to process a large amount of data and almost every existing big data solution is written in Java or Scala a JVM-based language. Therefore, both Java and Python share the market and are not competing with each other to solve the same problem.


Here are some technologies built using Java/JVM-based languages:

  • Spring Framework - Web development framework
  • Apache Hadoop - Almost every big data solutions rely on this
  • Apache Spark - Written using Scala a JVM-based language
  • PrestoDB/PrestoSQL - A big data engine written on Java
  • Google, Amazon, Facebook, Alibaba, Uber, LinkedIn, Twitter, Netflix, ... - All using Java

If you are new to programming, you may be overwhelmed with the available languages and articles claiming one language is better than another. One language for all problems is not going to work anymore. C/C++ is the best choice to write performance critical applications which require faster startup. Java is the best choice to write performance critical applications that run longer and does not require faster startup as JVM takes time to start but once started it can provide near C/C++ performance. Python is good to write scripts and faster development of non performance critical applications. JavaScript rules the web development. Therefore, you need to choose the language based on your requirements. Of course, the first language to learn cannot be all of them.

 

I would recommend learning a low-level language like C/C++ or Java (if you find C/C++ hard to learn) to start with if you want to become a full-time backend engineer who understands how a language works. On the other hand, if you learn to program for fun and are not interested in becoming the best software engineer, choose Python or JavaScript as they are easy to learn and will not kill your curiosity.


Coming to the question: Is Java dead? NOPE! it is not gonna happen buddy.

 


 

Previous
Next Post »

Contact Form

Name

Email *

Message *