Check out my iOS apps here
As an Amazon Associate I earn from qualifying purchases.

Why Java isn’t a widely used language for games development?

Java Is A Fast Programming Language, So Why Is It Not Used For Games Development?

Java is a very popular programming language, and it often dominates the most popular programming languages chart, or at least stays on the top of these charts. From a technical standpoint, Java doesn’t lack it when it comes to creating games. Despite all that, it’s not widely used for games development. This is a question I was curious about myself, since I do a lot of stuff with Java.

I talked about that briefly back when I compared Java VS C# VS Python. Since it’s an interesting topic, I decided to write a dedicated post for it, where I could talk about the main reasons why Java is not a widely used gaming development languages.

So, let’s get started~

Gaming Engines Support

For the most part, game engines don’t support Java as the programming language. Or more like, the gaming engines world is dominated by C++.

Here’s the list of some of the popular games engines, along with the primary programming languages they use:-

Game Engine Programming Language(s)
Unreal Engine C++
Unity C#
Godot C++
Marmalade SDK C++, Lua, Objective-C, HTML5
AppGameKit C++, BASIC
GameMaker Studio 2 GML (Game Maker Language)
Construct 2 C++
Phaser JavaScript
Amazon Lumberyard C++
CryEngine C++
Cocos2d-x C++, Python, Objective-C, JavaScript
MonoGame C#
ShiVa Engine C++
HeroEngine C++, C#
libGDX Java

The dominance of C++ is obvious here, and it’s something we will talk about later in this article. To understand the big picture better, here’s a list of Engines used in the most popular games of 2019 as a sample:-

Rank Game Engine/Framework Language
1 Slay the Spire libGDX Java
2 Katana Zero Gamemaker Studio 2 GML
3 Resident Evil 2 Custom
4 Risk of Rain 2 Unity C#
5 Hades Monogame C#
6 Baba Is You Clickteam Fusion
7 Muse Dash Unity C#
8 TABS Unity C#
9 Touhou Luna Nights Gamemaker Studio 2 GML
10 Bloodstained: Ritual of the Night Unreal 4 Blueprints/C++
11 My Friend Pedro Unity C#
12 Oxygen Not Included Unity C#
13 People Playground Unity C#
14 Beat Saber Unity C#
15 Unheard Unity C#
16 A Short Hike Unity C#
17 Kind Words Unity C#
18 Noita Custom C++
19 Spyro Reignited Trilogy Unreal 4 Blueprints/C++
20 Streets of Rogue Unity (prototyped in Construct 2) C#
21 Phoenix Wright: Ace Attorney Trilogy Unity C#
22 Supraland Unreal 4 Blueprints/C++
23 Devil May Cry 5 Custom C++
24 Nova Drift Gamemaker Studio 2 GML
25 Dungeon Munchies Unity(?) C#
26 Mindustry libGDX Java
27 A Plague Tale: Innocence Custom C++
28 Disco Elysium Unity C#
29 One Finger Death Punch 2 Unity C#
30 Exception Custom(?)
31 Sekiro Shadows Die Twice Custom (?) C++
32 Amid Evil Unreal 4 Blueprints/C++
33 GORN Unity C#
34 Hypnospace Outlaw Construct
35 Islanders Unity C#
36 Yakuza Kiwami 2 Custom
37 Five Nights at Freddy’s: Help Wanted Unreal 4 Blueprints/C++
38 Reventure Unity C#
39 Halo: The Master Chief Collection Custom
40 SpaceEngine Custom C++
41 Don’t Escape: 4 Days to Survive Unity C#
42 Forager Game Maker Studio 2 GML
43 STAR WARS Jedi: Fallen Order Unreal 4 Blueprints/C++
44 Tsukikage no Simulacre ???
45 Aokana ??? (Visual Novel)
46 Bug Fables Unity 5 C#
47 Smile For Me Unity C#
48 A Dance of Fire and Ice Unity C#
49 Sayonarra Wild Hearts Unity C#
50 Wildermyth libGDX Java

While the use of C++ is still apparent here, many of the games are also made using C#, because of the popularity of the Unity engine, very few games in the list were made with Java. It’s apparent how the popularity of the engines themselves and their numbers can greatly affect the use of any given language in game development. That’s where C#, a language that’s similar to Java, managed to be used much more.

C++ Legacy

C++ is the gaming industry standard. As we saw just now, it’s the most used languages used by many engines. Including internal engines like Frostbite (used by EA). In a world where getting the most performance out of the system, C++ has been very important for the industry.

To answer why Java isn’t popular in gaming development, it’s a good way to know why C++ is popular itself.

Game developers invested heavily in C & C++, which created some sort of a network effect. They tend to reuse some of that C++ codes from a previous project in their newer ones.

C++ is used widely to develop games engines, which are in turn used to develop the games. Either with C++ as the scraping language, or some language the developer has mad.

Portability of C++ makes it easier to develop for many system, it allows you to your game to many systems relatively easily. That includes all the following systems:-

    • Windows
    • Linux
    • Android
    • iOS
    • XBox
    • PS3
    • PS4
    • PS Vita
    • Wii U
    • 3DS
    • Nintendo Switch

And even more consoles than that. Giving how C++ makes it easy to communicate very close to the hardware itself.

In many ways, C# & Java don’t lack the technical capabilities to replace C++. It’s similar to how all sorts of software could be written and run on Linux, but the world is too tied to Windows for that to happen at a large scale (although you could personally still hop to Linux and do all sorts of things if you so desire, but you have to work for that to happen).

JVM Garbage Collection

Java’s performance isn’t that bad for creating games. Many people accuse garbage collection for causing severe frame drop every time it runs. That true to any language with garbage collecting, including C#. But if you coded your game in certain ways, where garbage collecting doesn’t need to happen all at once, you could totally avoid huge garbage collecting that could cause frame drops.

One way to achieve that is to allocate objects pool and keep reusing objects from there during the game execution. That way, the garbage collector doesn’t need to kick in, or at least it doesn’t have to run that much.

It’s worth noting that just like there are many implementations of garbage collectors for Java, and many are optimized for different things. One of them is the G1 implementation, which was optimized for concurrency, and can probably be used for games development. Specially giving how it allows you to set a certain pause time.

While the garbage collecting part of any language, Java or not, can affect its ability to implement games. I think the other factors mentioned in this article are more impactful to that. Unless you’re making AAA game, where performance is everything, you may not have to worry about garbage collecting at all. Indie developers have it much easier. ^^

Game Consoles & JVM

The major game consoles, like Xbox & Playstation don’t have Java Virtual Machine (JVM), so porting games written by Java isn’t that easy. Giving the importance of the consoles market, that makes java a less of a choice for universal gaming development. Even if you’re a small or individual developer, you have to make sure the engine or framework you use supports as many platforms you want. Many of the Java game development frameworks can be used to develop games for Windows, Mac OS, Linux, iOS & Android, which gives you a good reach of platforms.

Should I Use Java To Develop Games?

You totally can, and while I generally defended Java in this post. When it comes to games development, and software development in general, you have to use the best tool for the job, or to use the tools others are using to benefit from their contributions. If you plan to work in a game development studio in the future, then you have to learn C++ first & foremost, followed by C#.

You can totally use Java to develop smaller games, either for fun, or to see what you can achieve with it. Never develop games with Java because it’s the only language you know. If that’s the case for you, consider expanding your arsenal of programming languages, it will save you a lot of time in the med-term.

Things Are Different For Android Games Development

It’s worth noting that Java is the main language for developing all Android applications, including games. If you want to develop a game for Android only, and not any other platform, then Java is easily the language of choice, or one of your main options. The game can be ported to iOS later on if you so wanted. There’s also the option of developing games in a framework that makes it easier to develop games and port them to many platforms, but that’s outside the scope of this article.

Java Game Development Libraries

There are many frameworks for developing games in Java. Here are a short list of some of them:-

And Finally

Games development is one of these domains that’s dominated by certain languages, and unfortunately, Java is not one of them. While it’s totally possible to use it for that, if we are to treat programming languages as tools, then it may not be your best choice.

From technical perspective, Java doesn’t lack the capability to develop games, and it’s not really that different from C#, which is a good language to consider if you don’t want to use C++ for whatever reason.

I hope you found my article useful, that it answered your question on why Java isn’t used for games development, and see you again in another article.

See Also:-

Leave a Comment

Your email address will not be published. Required fields are marked *