I want to be able to have access to my computer at very low level. I miss my old-trusted-super fast assembly quick-sort and other algorithms. I don't want JNI. It's awkward to use. It makes me want to move back to C/C++ immediately.

I want to use DirectInput, like I do in my OpenGL apps. What's wrong with that? Everyone (in professional PC gaming) is doing it, it's fast, it's reliable, it works!

I don't want JRE either. It makes my applications -be it games or enterprise apps- look amaturish (and I won't even talk about the whole speed issue). And let's face it: no one who creates professional software, relies on a language to create one(1) multiplatform program. They make different versions anyway. I've seen it in two different companies, where I worked at.

Finally I believe that somewhere in the way, Sun lost control of the situation. Java became bigger, beyond anyone's expectations. I think that Java should adapt to reality, if they want to stay in the game.

It's time for pure native code. Now, image that for a minute...

PS: I will only participate in a conversation with well structured arguments. Statements like: "Sun is good, everything else is evil", won't do. Also, please stay within Java gaming issues. The whole enterprise battle, will probably be disorienting.

I will make ONE exception and answer this one; after that you're on your own

Onyx, if your way to respond to a post like this, is to call the author a troll (how old are you 15?) I am deeply sorry for you.

Let me clarify something to all you Java crusaders out there. I mainly develop Java programs. I make money with Java. I feed my family with Java (how about you?). I love the API, it's great. @Onyx: I never said anything about DirectX, you obviously have no idea what DirectInput is. And comparing it with JRE means you know even less. You're the troll here buddy...

lwjgl is great, but with my suggestions, it'll become even greater.

@Mojomonkey: You're wrong, even those things I mention are fundamental at the core of Java, they won't affect the language if they changed. I'm saying those things not because I hate Java, but because these things are imho NECESSARY to change for Java to become a widely used gaming language.

Now, I don't know this forum very well, so if Onyx's opinion expresses the rest of you, and you feel that Java is PERFECT for gaming the way it is, please don't bother to respond. I am a programmer for almost 20 years now, and I don't need anyone's support to find the best path for my creations.

I just hope that a constructive talk, where people don't call each other names, could lead both us and Java, to a better future for game programming.

I was originally going to respond to this, but I figured I'd leave it alone and it would go away. Since it isn't, here's what my response would have been:

That's nice.

Yep, that's it. That's nice. There really isn't anything to say to this. You haven't raised any specific objections, just that you think Java is big, bloated and Sun doesn't care. That's your opinion, and you're welcome to it. But what do I say to that? "Please, please, please use Java"?

1) If you want native code, use one of the several java compilers to create some.

2) Troll is just an expression to describe a post that is intended to get negative response. I'd say that posting an article of this type on a site based around a Java community is a fair indication of "trolling"

DirectX is a big fat package... DDraw, D3D, DInput, DPlay, DSound and a lot of other stuff (funny that you hadn't know that - isn't it obvious with this "D" infront of DInput?). So if you want to use DInput you need DirectX - it's that simple.

Same with the JRE - if I want to use it's features (let's say Swing), I (and the user) need to download the complete package.

The JRE download doesn't hurt anyone. Every ~6 month a ~10MB package.

The detornator(43.00) is about 18MB, the catalist is about 7MB and DirectX(9.0) is about 35MB; most players have to update these stuff quite frequently and they doesnt complain.

>[...]Java is PERFECT for gaming[...]

We all know that it isnt true but we have a lot of fun to do that anyways

And I called you a troll (well not really, because I hadn't written "you are a troll" ), because such screaming-for-trouble posts are usually called "trolling". It's like going in a techno forum and writing stuff like "TEHCNO SI TEH SUCK!!1 ROCK N ROLL OHNZ JUH!!1".

If you like doing low level stuff please do so but don't try to convince us that we listen to the wrong music, believe in the wrong religion, eat the wrong pizza or drink the wrong beer :>

I@Mojomonkey: You're wrong, even those things I mention are fundamental at the core of Java, they won't affect the language if they changed. I'm saying those things not because I hate Java, but because these things are imho NECESSARY to change for Java to become a widely used gaming language.

What am I wrong about??? I asked you a question. Heheh. You have yet to answer it. Why are you using Java if you object to it? You say you use it for work, well, that's great... so?

A-ha! Tell that to me, who is just about to release the Win32 and Linux versions of his game without having had to do any work to make the Linux version happen! (LWJGL again - huge props to Elias). And if I could just send a virtual stick over to the States to poke Gregory I'd have my MacOS X version under wraps too. So what, you say!? Well, I have a feeling that over a third of my sales will come from Mac and Linux people. It's just a hunch, and I'm looking forward to telling everyone how it goes after a year.

Quote

I want to be able to have access to my computer at very low level. I miss my old-trusted-super fast assembly quick-sort and other algorithms. I don't want JNI. It's awkward to use. It makes me want to move back to C/C++ immediately

There's no need to. If you've been following software engineering in the last few years you'll have noticed that upon profiling a game you'll discover that you spend an incredibly small amount of time in such routines and an incredibly large amount of time waiting for rendering operations to finish.As for the time actually spent doing super-fast sorts - Java is easily fast enough; in fact, it's as fast as C++.

Quote

I want to use DirectInput, like I do in my OpenGL apps. What's wrong with that? Everyone (in professional PC gaming) is doing it, it's fast, it's reliable, it works!

Not on the Mac or Linux it doesn't. If you want to use DirectInput though, get JXInput, which is the Java-DInput wrapper of choice. Otherwise, LWJGL will again provide most of your needs. Failing that code your own in C. It's not hard at all.

Quote

I don't want JRE either. It makes my applications -be it games or enterprise apps- look amaturish (and I won't even talk about the whole speed issue)

There is only one speed issue (now floating point is being addressed in 1.4.2), and that's to do with memory bandwidth and bounds checking which could be solved by using Structs. The JRE is nothing more or nothing less than a huge .DLL, like DirectX. It's just a bit of software. There's nothing unprofessional about it.

Quote

And let's face it: no one who creates professional software, relies on a language to create one(1) multiplatform program. They make different versions anyway. I've seen it in two different companies, where I worked at.

Then they need to see that there are more cost-effective alternatives to the way they've been doing things for years and years. I'll just reiterate again: I have spent no effort whatsoever getting the Linux version of Alien Flux working. It just works. Getting just the tiniest bit of porting done normally requires manpower and a fair chunk of money. It hasn't cost me a bean.

Quote

Finally I believe that somewhere in the way, Sun lost control of the situation. Java became bigger, beyond anyone's expectations. I think that Java should adapt to reality, if they want to stay in the game.

We probably all agree with you. There are apparently plans afoot to address this concern. I'm not holding my breath but it'll be interesting to see what direction things take at JavaOne.

Quote

It's time for pure native code. Now, image that for a minute...

Well, I don't have to, because I JET compile my game for those that don't have a JRE or just want the convenience of a self-contained executable.

I'll just reiterate again: I have spent no effort whatsoever getting the Linux version of Alien Flux working. It just works. Getting just the tiniest bit of porting done normally requires manpower and a fair chunk of money. It hasn't cost me a bean.

Cas, isn't just that the neatest feature of Java? It's why I went that route also, though I didn't go the route of LWJGL just yet.

What our post starter may not realize is that when game companies put together software teams, very often there are TWO teams. TWO separately-staffed mini-organizations with specialties of their own.... and that's only to support Win and Mac. Who writes professional games for Linux?

Well, now, I do. And Cas does. And a whole host of others, WHO USE JAVA.

That's impressive. I don't know much about the innards of LWJGL. My own 2D library is just using standard drawing facilities of Java and some of my tests just today proved out that things will work the way I want them to. I'm just not ready to plunge another six months into learning OpenGL. Yet.

Not tying the graphics to any given system is going to be key for large and small game companies alike. Too many people are on variant systems and it's just no longer feasible to assume that a game can exist for one (dominant) platform. Also, you cannot assume that a company has the resources to hire the teams to write ports (which I have heard are either ground-up rewrites, or worse, very badly written).

I congratulate you on your accomplishment, Cas, and I think it's great that you are a vocal pioneer in the field of Java gaming. I hope to join you soon. *evil grin displaying shameless plug* And I do think that more people need to hear the stories we're generating about writing games in Java. You're absolutely right about what you've said: no need for platform specific (read: evil empire) libraries, multi-platform generation without multiple staff members, and a very powerful object-oriented language to boot.

Here's a thought for you: I'm working on an MMORPG based off a card game that I *KNOW* (because I'm really good friends with not only the creator/artist, but also many of the people who play it) is played by college students. Know what machines THEY have at campus? I can reasonably say it won't be Intel machines on many of them. Solaris, or HP-UX, or SGI, in some cases. Guess what? I don't have to worry about covering that market segment, because JVMs exist for those computers as well. So with virtually no work to port (besides the obvious "make sure it runs") I have guaranteed that I haven't eliminated that market segment for myself.

trylio, I think you should consider writing in C++ (see the OTHER thread about that in this forum).

Okay, if you want a real trolling post: I LIKE USING OBJECT HIERARCHIES FOR GAME OBJECTS

Sun is good, everything else is evil. (Sorry, I can never resist those.)But seriously, what kind of idiots do you take us for? Nobody believes that and I'm sure this goes even for Sun themselves.

Quote

I believe that the whole multiplatform thing is holding us back.

Platform independance probably is one of the greatest reasons to use Java for gaming. But OTOH you're also right in a way. Platform independance makes things extremely complicated for the JVM creators to make things both compatible and fast. Sure java is not the fastest language around, but I'd say it's easily fast enough for most things.

Sure you might be able to squeeze more performance out of your PC using some C or assembly, but by the time you're finished doing that and when you're done solving the most obvious memory management bugs, you could have written the game twice in java and the speed difference would not be all that great. And version you could have written in java would instantly have a slightly bigger market too *because* of platform independance. Platform independance might complicate some things, but think it's easily worth it.

Well, to be honest this argement doesn't hold for *all* kinds of games yet, especially if you use a ready made game engine, physics engine and such. There's just many more gaming libs available for the C/C++ world. But take Cas' Alien Flux as an example of what kind of games would best be done in java at this moment if you're a small scale indie games developer.The typical quake-like FPS can be done too I'm sure, but we might have to create our own gaming engine to do it instead of just using some quake/unreal/whatever engine.Sure we are not quite there yet, but I believe we are slowly but steadily getting there.

Quote

lwjgl is great, but with my suggestions, it'll become even greater.

I'm confused. What suggestions were those exactly?I think Cas explained why LWJGL might be greater than you seem to think it is.

When you said:"I want to be able to have access to my computer at very low level.""I want to use DirectInput""Real d00ds use Assembly.""If you want native code, use one of the several java compilers to create some."

I was thinking:"Make a Java-PC or J-Station (game consolle) that understands Java bytecode as it's native machine code"

Make a Java-PC or J-Station (game consolle) that understands Java bytecode as it's native machine code

...and deliver a WVM (Windows Virtual Machine) with it? Still a good idea, though. Especially a J-Station would be cool. I was thinking like a brand that any manufacturer may license. You know, like the MSX brand in the eighties.

Oooooh, we haven't had one of these threads for aaaaages!A-ha! Tell that to me, who is just about to release the Win32 and Linux versions of his game without having had to do any work to make the Linux version happen!

Ditto. I have to switch OS's periodically whilst develooping anyway (e.g. there are NO good paint programs for linux, but windows 2k has an awful lot of bugs...including one that means MS Word won't print over the network - EVER).

So, multi-platform development makes MY life easier. However, I too am enthralled by knowing that EVERYONE can play my games, irrespective of their OS. This is especially important when you're selling mass-market games.

Quake is a game that only sells to hardcore gamers (gross generalization, but largely true according to sales statistics for FPSs). Bejewelled is a game that sells to EVERYONE (also a generalization, but allegedly and apparently born out by the usage demographics).

It's really hard to sell to everyone when you have to support 9 platforms (although java only supports 6 of these at the moment):

If you think that the first 4 are all the same, then you really haven't got much experience of game programming; it's not as hard as four completely unrelated platforms, but in some places it is very close to that much effort (especially networking for instance). I'm not even going to get started on hardware-specific issues (which tend to be exacerbated when you're coding separately for multiple platforms, simply because each particular version of the high-level drivers get's less usage than if it is all going through a single common API).

Strange no one has mentioned GCJ, as it's very much what the OP wants, he have to write the DX wrapping (unless MS/someone else does one? ).

GCJ won't solve the OP's issues with JNI or having to use GL wrappers and such. It'll only solve his problem with having a JRE installed.However real those problems are, BTW. I mean, running to C/C++ because *JNI* is awkward?! Really... :-/...but that's just my humble opinion...... oh, and MS writing a DX wrapper for java? I wouldn't hold my breath

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org