The language you pick, the quality of code you write, the comments and documentation, are all products (gifts) targeting your future self, future peers, and employer when it comes time to make changes to the software.
I'm not sure this applies as strongly in Minecraft's case specifically, because of the critical importance of its modding community to its wild success. Normally it wouldn't matter what language you pick in terms of how popular the game is going to become, except it just so happened that by choosing the JVM they gave the ability to the community to decompile the game and add the content they want. Maybe this wasn't intended and Notch chose Java because it was what he happened to know, but it's my belief that if Minecraft had been written in C++ instead then Mojang would not have the brand recognition it does today. Anecdotally one of my friends tried the RTX version of the game which was rewritten in C++, and his reaction amounted to "it's fine, but there's no mods, so it's irrelevant." And that's in spite of the fact that modded Minecraft is a minefield of incompatibilities between years old versions and can easily consume 10 gigabytes of RAM and millions of extraneous CPU cycles. Nobody cares, because at the end of the day modded Minecraft is the only way they can get the specific experience they want out of a video game, and the only reason this is possible at all, even if it will never be performant, is the JVM.
But that's only because Minecraft is one of the most popular video games in history, and not the kind of thing that a developers for a game nowhere near as successful would worry about before gaining a sizeable audience. What good is a modding system if not many people want to use it? And depending on the game a mod system might not be as warranted, so in those cases the choice of language doesn't matter as much.
That wasn't their intention; Minecraft code was originally obfuscated specifically in order to combat reverse engineering and modification.
https://www.reddit.com/r/Minecraft/comments/mpslv/why_are_mi...
And now it seems that Twitch and other "official" entities have conceded to the fact that modding was really the only reason so many people play Minecraft at all and they integrated installing mods into their official launcher. Server hosting for Minecraft is a legitimate business since you'd need enough RAM and single-core performance for mods also, so they advertise "mod-capable" hosting plans.
On top of that the entire decompiled and deobfuscated source of Minecraft 1.22 is sitting on GitHub to search through.
The sheer extent of modding capability that Java enabled caused this weird conflict between the interests of the parties wanting to retain the intellectual property of the game through obfuscation while at the same time admitting that people undoing it and using the source themselves for modding is never going to go away, and trying to forcefully get rid of it for the sake of this legitimacy anyways brings no benefit and would only anger and drive away the audience who already comes to expect mods. And then some group would probably just hack together some unsanctioned server/client package from the JARs that are already widespread and keep playing the old versions forever, since they'd still want to play modded Minecraft anyways, and there's no reason the whims of a few corporations ought to invalidate the past several years of modded Minecraft experience they've lived through already. At least it's a better case for modding than purely competitive games since a lot of Minecraft is about construction.
Sometimes I think that the only games that will truly last for the ages where new things are still being created and discovered regularly are the ones whose source code is in the control of the players, and they aren't actively poached for "stealing" in an attempt to extract a few more dollars per person. That, and the playerbase being motivated enough to keep developing content for them. It seems Minecraft is one of those few games as of present.
This by far is the most important thing. You could have a beautiful open source game but if no one knows about it or wants to play it, it's less than useful.
Some of the biggest modding communities I am aware of came from closed-source games; the Sims has always had strong, years-long modding lifetimes, and SimCity 4 and Cities Skylines after it had total overhaul mods that changed entire game systems, as well as thriving communities of less ambitious mods.
Incidentally C++ also had to fight against Assembly, C and Pascal for adoption among game developers, and the Playstation SDK was one of the contributors to change this.
* citation needed
The most popular game by player count is CrossFire [1]. All I see is that Minecraft has the highest unit sales for a video game across all platforms, but Minecraft for consoles and mobile (which make up a majority of sales [2]) are written in C++.
I would argue that Java would have been a limiting factor for Minecraft reaching its current levels of success given the fact that the PC gaming market is relatively small compared to the console and mobile gaming markets, and it would've been nearly impossible to port the Java edition to so many different platforms.
[1] https://en.wikipedia.org/wiki/List_of_most-played_video_game...
(Though Java versions certainly exist, too.)
It's also worth noting that Minecraft was originally implemented in Java, but, in order to get it running on consoles and mobile, they had to port it to C++. Which doesn't discount how much Java contributed to its early success. (Most importantly, I'm guessing, by making it even feasible in the first place for a single person to implement it in so little time.) But still, the big picture version of the Minecraft story does more to support than challenge the main reason why C++ is considered the language of choice for games development. Because, yes, Java got it off the ground, but it was only a couple years later that they had to port it to C++ in order to access a mass market.
Or did it need the full Java source code to re-mod the program?
https://github.com/emacs-mirror/emacs/tree/master/src
Quite a bit of the actual GNU Emacs application is using libraries written in C. See for example the font code.
https://github.com/emacs-mirror/emacs/blob/master/src/font.c
This is different from some other Lisp systems, where only the base language runtime contains some C and/or assembler, and the actual application is mostly written in Lisp using an FFI (foreign function interface) for library calls. For example the GUI of Clozure CL is written in Lisp using an Objective C bridge, and not directly in Objective C and then called from Lisp.
Thus Emacs Lisp is also somewhere in a continuum of implementation and extension language - using C not only for the Emacs Lisp language runtime, but also for basic application implementation...
(At least, this was how it was pre-Microsoft. I haven't followed it since then.)
Are you serious? Wake us up when somebody implements something as complex and performant as UE4 in Java. Or even UE3 for that matter.
- Java is not suitable for enterprise software (yes! Some people here actually believe that).
- Java is not a good general purpose language (but Minecraft was written in Java. Or even better, the list of very varied apps from this article shows it's indeed a good general purpose language).
What these people actually mean is "I don't like Java". Because Java hasn't been "hip" for years, this makes people claim all sorts of absurd things about it. Things that directly contradict known history.
But known history tells us that there is very little correlation between a language's success and how well-designed it is. Outside of software, too - I think the archetype for this phenomenon is probably VHS and Betamax.
And which general purpose language isn't?
Such as?
The built-in http client library is borderline horrible.
[1] https://cr.openjdk.java.net/~briangoetz/valhalla/erasure.htm...
Minecraft was not popular because of Java, Minecraft was popular despite Java.
And the rest of the apps from the article? Are they also successful "despite Java"? At which point are you willing to admit that maybe Java was suitable for general purpose programming? Which amount of evidence would convince you?
About your other question: I only mentioned Minecraft.
Not that it was.
If anything my argument for Java would be that it tries to be good at -everything-, and because that attempt started from day one (versus, say, C# starting primarily on desktop, then Web, and worrying about smaller targets and big servers later).
And I think it's pretty good at all of that from a 'capability' standpoint.
But because it tries to be all things for all people, it's pretty easy to wind up down rabbit holes of large frameworks. And that leads to the warts Java has from a usability standpoint.
Overall I'd prefer to use just about anything else in pretty much any domain where Java would be a consideration. It may not be an inherent problem with the language itself, but its ecosystem in my experience leaves it as one of the worst general purpose languages in terms of productivity while not offering a sufficient advantage to make up for that.
All that being said, Java is still good enough most of the time.
For any fancy new language/framework, you must show you understand its performance issues, pitfalls, metrics and monitoring tools, etc. Few languages beat Java at this for serious work.
Using classes to represent points and vertices instead of arrays, and allocating in hot paths, really?