F1 racing game?

Huh? I wasn’t attempting to make any contentious statements, guys, just trying to offer a potential explanation of why cas’s demo has had comparitively little wide recognition. Perhaps statements such as “playing devil’s advocate” were not obvious enough for you?

erikd:
“I disagree.
You are only making things vague (you have to support 3 platforms instead of one to call it java?).”

That’s what is happening RIGHT NOW with Java, though I’m sure Sun isn’t exactly overjoyed at having to be the main suppliers of a Windows-JVM and a Linux-JVM, with all the associated support costs of keeping them up-to-date.

I’m not making any decisions here - I’m just describing the way the world is. Of course SOMEONE has to support 3 platforms for Java. The theory of a BCE was that once one BCE existed for a platform, everyone else had to do zero support for that platform; this is the point of bytecode. If you are going to bypass a JVM e.g. by using JNI, then the “free” support you were getting on the various hardware platforms vanishes, and you need to provide it yourself.

In theory, as soon as a JVM existed for each main platform, Sun never had to develop for other platforms, they could just keep improving the Solaris JVM. It hasn’t quite worked out that way. I’m sure we all wish it HAD worked out as intended; perhaps if bytecode had been more extensible, we wouldn’t be in this mess :).

erikd:
“For me, java doesn’t have to be everything but native.”

Fine; many disagree with you. Partly, I expect, because if you throw away the bytecode-definition of Java, all you are left with is a variant of C++, which loses so much (STL, for instance) that on the whole it’s probably not an improvement. Bear in mind that Java is not even a fully OO language; without the bytecode, java is hugely weakened as a proposition.

erikd:
“Java is not only about platform independance.”

No-one said it is. But currently Java IS three things, and you cannot just arbitrarily decide to ignore any of the three - they are declared indivisible by Sun. You are attempting to re-define Java as being just 2/3 of what it actually is. Sun could solve this by defining the three concepts as three different names - perhaps “JavaCode, JavaLang, and JavaLib” - (this has been suggested before many times since the inception of Java).

erikd:
“Also, ‘a native dll scripted by java’ is just crap as I believe the DLL is only the ogl binding.”

OK, so to help me understand, please explain where all the pretty graphics are coming from…

Perhaps you don’t understand what “scripted” means? It means that the java is controlling other code, in a different language to the other code. Where is all the “hard” work of drawing those graphics coming from? Is it java code? (my assumption was no - perhaps I am wrong) Is it OpenGL hardware? (my assumption was yes - in which case, the Java code is just scripting layered upon system-level code (i.e. a C++/ASM DLL that is actually doing system-level tasks, such as interfacing to hardware).

Similarly, like many programmers (I had thought all, until now - you clearly don’t look at things the same way), I would never look at an OpenGL demo coded in C++ and go “Wow! C++ can do such cool stuff!” - because in that case C++ is the scripting language, and it is still an OpenGL demo that you’re looking at.

I’ve certainly never met anyone in the games industry who didn’t differentiate between C++ and OpenGL. I can almost guarantee that if you show the demo to a mainstream studio or publisher, they won’t go “Oh wow, java really CAN do great stuff” - they’ll go “that’s just OpenGL…so what can Java do?”.

Or, to put it yet ANOTHER way, I expect you could probably do that demo in Perl (I know you could do it in Python). This does not make Perl look good - it just shows that you can access other compiled libraries from within perl.

[quote]Well, I look at it more as an observation that for me as a developer, the Terrain.zip is an excellent technology demo for what can be done with Java.
[/quote]
But it doesn’t DO anything with Java other than to delegate to OpenGL and hardware. To a developer, it indeed shows that “you can use OpenGL hardware from a java app, using JNI”. But to a user, it’s just-another-OpenGL-app - which says nothing new about Java.

[quote]As a user of an application, it’s irrelevant that it’s in Java if it will only ever execute on Windows. Users don’t care about the language an app is written in.
[/quote]
I don’t understand this; this is blatantly not true - and you have evidence in my post where I mentioned that I can run normal java apps on any of my machines, but I can’t do that with this terrain demo. Your statement’s only true if everything you ever want to run is available as a pre-compiled binary for your platform (and THAT is easier said than done; most developers cannot test and maintain their apps on multiple architectures, unless the effort-per-additional-arch is very low - to anyone who ever had to use NT for Alpha, there is the familiar story of “binaries available for intel-NT and alpha-NT, but the alpha version is 1 year behind and might not work”; many people point out that java is not truly write-once-run-anywhere - but those with long experience of the hellish days of cross-platform coding before java don’t really care, because the platform-dependencies in java are so trivial compared with the sh*t we used to put up with).

If all a user ever uses is Windows, and everything they ever want to run is a windows app, then it may well seem to you that they don’t care. But if Doom3 were released 6 months early on linux, you’d find they did care pretty quick (contrived example) - if it were written in java, they’d be able to play it. If not, they have to wait 6 months.

Who’s debating? I’m not; I merely pointed out that:

  1. it’s poorly defined
  2. therefore, one man’s “java demo” is another’s “windows demo” - and that MAY be a big contributor to why some Java-supporters haven’t been promoting the terrain demo so widely.

[quote]Perhaps you don’t understand what “scripted” means? It means that the java is controlling other code, in a different language to the other code. Where is all the “hard” work of drawing those graphics coming from? Is it java code? (my assumption was no - perhaps I am wrong) Is it OpenGL hardware? (my assumption was yes - in which case, the Java code is just scripting layered upon system-level code (i.e. a C++/ASM DLL that is actually doing system-level tasks, such as interfacing to hardware).
[/quote]
I think you are missing the whole concept of what Java does. You might as well say that any C++ code that uses openGL is delegating all the ‘hard’ bits to the OpenGL libraries, drivers, and hardware.

Is it then “dirty” C++? Not to be called pure C++ because part of the result is done by a powerful graphics chip, and some of the drivers are written in assembly? That’s just crap.

Java is ALWAYS bound to a native subsystem. Binding it to the OS code that draws graphics in ANY way would make in ‘unpure’ by your definition. So Java2D wouldn’t even count.

As I understand it, in the terrain demo, NONE of the main logic is implemented in native code. It only makes OpenGL calls - exactly like any C++ demo would. OpenGL device drivers should not be expected to be written in Java!

I’m obviously doing something strange here, because everyone is misunderstanding me, and it seems like most aren’t even reading to the end of what I’ve written!

The “concept of java” is three things; that’s the source of the problem - because people often think of it as one or two of those three, and conveniently forget a third. Why do people tell me I’m talking “crap” or carping on about a " “pure” java", when all I’m doing is repeating out loud what Java actually is? I don’t like the present arrangement AT ALL; but for some reason, instead of complaining to someone who controls the definition (e.g. Sun’s marketing dept), you insist on denouncing what you allege to be my “pure” definition of java.

PLEASE READ the three things - Java is MORE than a syntax for a programming language - it is MORE than C++. This is NOT MY FAULT, I am merely pointing out the status quo. Sheesh. Why do you all seem to think I have some kind of concern about “purity” or “cleanness”? I couldn’t care less - but the word “java” means those three things, and who am I to argue with fact?

I said exactly that about Java2D myself! And please dispense with this “pure” moniker - this is NOT my definition, it is the one that Sun has given to the world. Don’t shoot the messenger!

Yes. But the impressive part of the demo (which presumably is what matters, since the whole conversation started with Cas remakring that despite it being impressive, it got little recognition) is NOT the main logic - logic-wise, it’s a crappy terrain-viewer; doesn’t even have 6 DOF.

An OpenGL demo written in C++, where the C++ isn’t really doing much, will typically be called an OpenGL demo, because it’s mainly showing features of OpenGL - not C++.

Give me a demo which does something funky with templates, and I’ll call it a C++ demo, showcasing C++ features.

Guys, if you can’t accept what Java is, and means, fine. Don’t tell me about it. I’ve researched programming languages going back 30 years, and know more than I’d like to about what a programming language “is”, and I hate Sun’s crummy avoidance of the murky issue of “What is Java?”. So I cannot argue for their definition of Java (which you seem to want me to).

Next time someone ponders something, like Cas did, I shan’t bother offering an explanation; clearly the result is that everyone assumes it was my idea in the first place, it’s all my fault, and that by telling me “it’s crap” (and why its crap) they can pretend it was just a personal opinion, rather than an uncomfortable truth.

Boy that went south in a hurry. ::slight_smile: Come on guys, can’t we all just get along? ;D

[quote]erikd:
“Java is not only about platform independance.”

No-one said it is. But currently Java IS three things, and you cannot just arbitrarily decide to ignore any of the three - they are declared indivisible by Sun. You are attempting to re-define Java as being just 2/3 of what it actually is.
[/quote]
I’m not ignoring platform independance or trying to redefine things at all. In fact I think platform independance is a very strong point for java.
My point is that there is no point in ignoring platform specific features in the name of ‘pure java’. Especially where games programming is concerned.
There’s still huge advantages in developing the game in java even when it’s ‘not pure’.
And portability is still one of them, even if a little DLL is involved.

[quote]Perhaps you don’t understand what “scripted” means?
[/quote]
You’re not going to make us believe that q3 is openGL scripted by C++, are you? ;D

Sorry about “pure”.

To me Java is 2 things. A language and a runtime environment.
edit throw bytecode in there if you want, it doesn’t change the rest of the argument. edit

Both are evolving. The runtime environment is expanding. It is modular in the sense that there are ‘standard extensions’ and ‘endorsed standards’. These extensions have the option of binding new native code and OS features into the runtime. If OpenGL is added as an extension it is simply a binding to a 3D API. As it says above… is Quake 3 a scripted OpenGL example? Not many would say so.

Is the terrain demo using openGL - yes. But if all of the open GL calls are simply passed on directly from Java. Then the demo is written in Java to the OpenGL API. To me it is a Java program… with help from a runtime extension. The key is that the extension is not a terrain generator… it is basically a 3d rasterizer. Not many people write those from scratch anymore… it is up to OS modules and graphics drivers.

If you were to write the same demo in ANY language you would not first port the insides of OpenGL to that language… you would link to the openGL system that was already available. That’s not cheating, it’s just good sense.

[quote]Perhaps you don’t understand what “scripted” means? It means that the java is controlling other code…
[/quote]
Whatever… that could describe ANY program running on ANY operating system, as unless it is a device driver, you have no display, input or output of any kind without calling the operating system… That’s just your program calling other code.

That’s what programs do. Do it C++ do it in Java, I don’t care. But whatever language you choose to do it with, that is the language you are writing it in. Whatever runtime you run it in that is the runtime you are running it under, etc. If you can find a compatible runtime on Linux or Mac and your code runs there as well, great. I think you are arguing more about porting the OpenGL bindings used in the demo, than is this “java” or not.

The issue is clouded with what is considered part of Java and what is not. Obviously some native binds are part of java, they have to be. It shouldn’t be a stretch to say that other native bindings can be added to Java. Java3D did it, Java 1.4 added fullscreen and hardware acceleration things and did it. Is it only because Sun did those things that it is still “java”… Sun allows for extensions… small layers of native code can be included in them.

This is all just not worth arguing about. The terrain demo is a OpenGL demo done in Java. As far as I know none of the ‘hard’ bits were coded with anything but Java. Only a small wrapper. Do some of the ‘hard’ bit run outside of the JRE. Not in any non-java way. They are pulled in to the Java environment by the native bindings. But the coder of the demo still didn’t have to write them himself.

[quote]Boy that went south in a hurry.
[/quote]
Due South was a great show. Whatever happened to it? ::slight_smile:

[quote]Why do people tell me I’m talking “crap” or carping on about a " “pure” java", when all I’m doing is repeating out loud what Java actually is? I don’t like the present arrangement AT ALL; but for some reason, instead of complaining to someone who controls the definition (e.g. Sun’s marketing dept), you insist on denouncing what you allege to be my “pure” definition of java.
[/quote]
I don’t really feel the need to start complaining at Sun’s marketing dept because they distinguish between ‘pure’ and ‘unpure’.
I think I can make up my own mind about what java does for me and what it doesn’t.
I am also not complaining to you, I’m just argueing. Maybe I shouldn’t have used the word ‘crap’, but ‘I strongly disagree’ or something cos I have the feeling the word went …err… ;Dsouth ;D and offended you. If it did, then I’m sorry. Once again, I was just argueing.
Argueing about you saying the terrain demo is not a java demo because Sun may or may not have a different view about java. And because it’s a crappy openGL demo scripted by java.
I just don’t think that way and let’s just leave it at that.