Java is a sleek, beautiful, emaciated Python with a checkered past. You should still learn it today.

Christopher Caswell
6 min readJan 21, 2022

Let’s be honest, you’ve been upset by the idea that you haven’t learned Java yet. It’s been in the mill for eons and you just haven’t touched it. Everyone you know seems to have these bold ideas for how good or bad it is. I’ll posit that the intensity (or lack thereof) in those remarks sometimes has you thinking you’d be better off avoiding it.

You’re right to be hesitant. There’s a good portion of the world who would believe that Java is dying or dead. But c’mon, you should definitely be doing stuff just to do it these days. There are way too many resources in the world to deny yourself the joy of creativity.

As more languages based on emojis are released, the support and research into Java diminishes. (Not related, just a timeline based in something I find incredible (the bad version of incredible)). Nonetheless, learning the language is still valid for the similarity to other beloved object-oriented languages and the history of translatability that Java has provided.

If you read my last blog, you have a generic understanding of Python. Despite looking a lot like Python, Java was designed to be similar to C or C++. It’s a high level, object-oriented, general purpose language designed to have as few dependencies as possible. In this, Java competes almost directly with Python as its compiled language equivalent. Java is capable of being as robust as you’d want or as small as you need. The write once, read anywhere expectation made Java an instant reliable best bud for cross-platform developers in the burgeoning world of competing operating systems and mobile phones.

The language itself made a lot of bold promises on its way into the modern scene.

First and foremost, Java promised universal support. The language claimed to be “write once, run everywhere” as long as the machine had Java support. Java also offered performance akin to C/C++ (where it could run as efficiently as the author); the language claimed to be easier to pick up and learn than C++. Truly a boon.

The tenets of the language are as follows:

be simple, object, and familiar

be robust and secure

be portable and architecture-neutral

have a high performance execution

be interpreted, threaded, and dynamic

In a time where every language had to be individually wrapped into the operating system in some way because every operating system was compelling proprietary environments to protect their “secrets”, Java allowed developers a modicum of freedom to push their product into new environments without having to rewrite the structure of the code. This mostly involved making a virtual machine that allows the machine to read compiled code like it was C.

How can Java still be useful, given today’s user permitted massive space consumption? It’s a key pillar in the functioning of

Even though Android is built largely on the Linux kernel and uses a lot of C for the base structure, the Android SDK uses Java as the basis for most applications though optimized for devices with shorter memory. While Android doesn’t provide the full Java SE standard library, the SDK does have a limited recreation with large portions of it.

Unfortunately, the use of Java in the Android SDK was not suggested or supported by the current owner Oracle (a recent purchase at the time) when Google implemented it. Since that resulted in a legal dispute, Google hasn’t had the best relationship with Java and they aren’t pushing the language in any way like they had. The court case ended with a ruling in Google’s favor, half-heartedly declaring that Java’s APIs are fair use and “not necessarily copyrightable.”

Java is an effective tool in the programming of applications and functions of mobile devices. Even without immense support from Google, you can expect that mobile environments will continue to use the Android SDK and Java for some time to come. Meta has picked up and run with the Android SDK for their implementations of Oculus environments, for example.

So. . . Java or Python?

Part of what makes Java sleek is that it is a compiled language. The largest separating factor between it and Python that truly sets them apart is that you can tell a Python program to run and it will certainly try its best with full gusto from top to bottom. The Java program has to be assembled first by a compiler and translated into Java bytecode, then read back by a Java Virtual Machine installed on the architecture as a package.

Java Bytecode is a compiled “language” that the Java platform makes available to run on a JVM. Because of this JVM requirement on any architecture, Java does run a little bit slower than native processes. But it’s still going to resolve in a more efficient way than languages like Python, since the code base is already directly translated into a machine language.

This can also lead to a lot of time debugging, rescripting, and recompiling. Whereas a Python project is a lot more capable of being debugged in the moment. The need to compile also keeps Java from being able to handle a lot of outside resources in quite the same way. While it is entirely possible for Java to take new external input from other code bases, Python is mutable in such a way that its code structure might not need to be fully recreated to do so.

With that, it’s difficult to suggest Python for a mobile environment at all. Java has been running inside a packaged unit for years and is built for the very intention of running machine readable code in every environment.

So what makes Java unappealing?

Java lost the browser war. Javascript beat Java out early on and never let it back in the ring. If there is a reason to do anything in a browser with Java, there is a reason to now learn a better way.

Apple has actively discouraged the use of Java in its OS. It’s now not even worth imagining Java in an Apple environment. Apple users continue to be a large enough portion of the market to justify development.

We no longer live in a world dominated by a small number of operating systems against whom we have to hedge our bets. Even .Net is becoming more cross-platform friendly by the day.

Kotlin, for an alternative example, takes elements of Java and Javascript and makes a somewhat less efficient and simultaneously more efficient version of both. It’s seeing more use in mobile development primarily due to Google saying they prefer the language over older alternatives.

Java still eats RAM in order to run its virtual machine and read the code written to it.

Java’s only primary opponents have staunch die-hard support.

No matter what the losses, however, Java continues to be one of the most widely used background languages to date. It’s a formidable language with solid performance and transferability that allows a user to pick up and go with relative ease.

The Android operating system of tomorrow may be based in some newfangled language that looks like Lisp on the low level and reads like a party on the high level. But for now, it’s still a good idea to learn and produce a little bit of Java. Especially if you are into Python. Learning to manage your runtime processing speed is a valid skill for any programmer anyway.

Give Java a go.

/**

* Standard

* open

*/

Public class Main

{

public static void main (String[] args)

{

System.out.printIn(“Hello Java!”);

}

}

--

--

Christopher Caswell

software developer, agile enthusiast, digital entomologist