John Carmack QuakeCon 09 Keynote

Some ancient comments from Carmack:

CHAPTER 2. JOHN CARMACK - THE BOOT INTERVIEW John Carmack Archive 22 Interviews 2.6 Page 6

Alex St. John: When are you going to do a Java version of Quake?
John Carmack: Java has a lot of wonderful advantages as a program development language and I do plan, after we finish Quake 2, to go off and develop something significant in Java to feel-up the language. I haven’t done hands-on work with Java, but I think there’s really something there to be gained. We don’t have a lot of ties holding us back at id and we developed on this crazy NextStep platform for a long time and we’re willing to push OpenGL or maybe jump to Rhapsody. And if Java pans out the way I think it might, then we might write a lot of things in Java.

Alex St. John: Do you think Java is fast enough for games?
John Carmack: This is one thing that I don’t really understand about the whole Java marketplace and the way it’s being presented. It also ties to this bytecode portability stuff and there’s no damn good reason for that. Why don’t we just have Java and X86 compilers? I like the language–I don’t care about bytecode.

Alex St. John: The portability of Java isn’t a feature. It’s just a language, and it would be nice to have a better compiler.
John Carmack: Exactly. I think it’s a language that in many ways is better than C++ and I’d rather develop something in that, but it’s all tied-up in this non-proprietary, run-anywhere type of thing, which is not what I care about.

Alex St. John: The whole Java virtual machine thing doesn’t turn you on?
John Carmack: No, not at all. I like the language. In general, I’m willing to spend performance to make a better product. And that’s one thing that has taken me awhile to kind of mature to because all game programmers start off on ”I can do this in 10 cycles!” And games have gotten so complex where Quake is practically an operating system. It’s this architecture, with all these different things that plug-in different ways, and it’s not just this little thing that draws to the screen.

And, from another old Gamasutra article on the development of the Trinity project:

“John Carmack considered using Java in id’s games for quite some time, ever since he announced that the company was leaning towards client-downloadable code for the Trinity project.”

However, at the time, key platforms like Linux did not have the Java technology that is available to them today and was the main reason John did not choose Java. Had nothing to do with performance:

“Ironically, it was Java portability problems that led id to develop the Quake 3 custom VM. Sun’s promise of “write once, run anywhere” did not hold for the Invocation API on important server platforms, so Carmack decided to abandon the embedded JVM he had planned to use.”

He then goes on to state:

“Having made the decision to do my own interpreter, I feel much more at ease not having to rely on anyone else’s external code. When it comes around to the next development cycle, I will make the Java decision again.”

Having built their own VM, it was easier for John and company to continue their homebrew technology. Had Java technology, back then, been where it is today, we would not be having this discussion :slight_smile:

So, many reasons why John didn’t use Java. In my discussions with him, he believes that Java would be fine just what’s the point? They have their own tech and he likes to build such stuff. Remember, John doesn’t build games, he builds tech that id Software uses to make games.

I spoke about French researches around Megatexture, the report concerned by this is here:
http://www-evasion.imag.fr/Publications/2004/LDN04/

What’s causing your continuous claims to fame, Jullian? The freaking French are not superiour.
Who cares, it just as well might have been an Hungarian guy that came up with it.

Ontopic: We really need some extremely fast AOT x86 (free!) compiler, that throws SIMD into the mix, and what not. Just to change the perception of Java’s performance.

They could activate simd for the 64bit compiler right now as data in the 64bit jvm is always 16byte aligned. Unfortunately array objects in the 32bit jvm are difficult to re-align during garbage collection. After I finish my current project I’m going bang my head against that wall again.

WRT AOT compilation - I had thought that a cross-compiler from Java to, say, C++ wouldn’t really be so amazingly hard to accomplish; the harder bit is that bootstrap runtime it needs to live on that includes the garbage collector and allocator. I doubt it would massively affect perceived speed. If you’re properly interested, you want to simply buy Excelsior JET. It’s really not that expensive considering its rather specialist use and it’s extra bloody fast.

Cas :slight_smile:

It’s more that you can tell people that they can use an AOT compiler, regardless the performance, people will assume it will be faster – hence the percieved speed.

There is also GCJ (free), not sure if they’ve managed to fix/replace the really crappy garbage collector they were using (last I tried was about 2 years ago) but other than that it was working reasonably well.

edit: just had a look at svn history of GCJ, seems like its still pretty actively being worked on.

You hit the nail on the head. Perception is one of the single biggest issues with Java; primarily on the dev. side of the house. And that is the most difficult to change.

That’s why I scratched my head, when your ultimate clientside technology was called JavaFX. Epic FAIL? Fresh start would have been awesome.

I don’t mind the nationality. If these scientists were American, it would be the same for me. But I wanted to point out that Carmack did not design all the algorithms behind MegaTexture. Sorry if I was not clear. I’m not nationalist, I don’t think French are superior, I think that it is important to fund the fundamental researches, it has an impact on video games too.

There is the, uhh, embarrassing fact that Excelsior JET more or less blows any runtimes into the weeds. Perception-wise at least. I recall years and years ago compiling Alien Flux with JET - it started in the blink of an eye and ran smooth as silk. It would probably be extra cunning of Oracle to buy Exelsior at some point soon.

Cas :slight_smile: