Why do Crystal Space/OGRE/Blender and other open source projects mostly use C++?

…and not Java?

Is C++ really that much faster than Java?

I know Java got a bad rap early on because it was used to make slow, crappy browser applets.

But is that reputation still deserved?

It seems cross platform development would be easier on Java, especially in Netbeans.

You could organize your project in modules and then create a stand alone app.

Also, why don’t these projects merge?!

We’ve got a few if not a dozen or so open source renderers and a few modelers as well.

Seems they would be better together. :confused:

I am the project manager of Crystal Space. Crystal Space was started 10 years ago and back then C++ was certainly a lot faster compared to Java. At this moment it might be possible to do the same in Java although C++ still remains somewhat faster. But it is not really worth the effort to port the project I think.

As to why the engines don’t merge? That’s simply not possible or realistic. The engines are too different. Merging would effectively mean throwing away all the engines except one. And obviously none of the engines wants to do that. The reason also that there are different engines is that there are different opinions on how things should be done.


Well, technically Ogre and Blender are supposed to merge eventually. maybe. I thought they were going to merge, anyway.

Java is still slower than C++, but there are still some really useful things you can do with java and 3D. There are web-based 3D apps and games being made that will probably have at least Quake 1 level graphics, maybe closer to Quake 2 levels, and they will be streamed. i know of one simple death-match style game that existed a couple years ago that was sort of a work-in-progress of that sort of technology. i think there’s a site that has a simple 3D viewer set up so you can browse 3D content sort of like Youtube, but for 3D models and stuff. i THINK they use java for that, it could just be some really complex Flash, tho…

uhm rune scape anyone??? thats made in java, but then again the shit i take prolly looks more like a human rather than those half made triangles. Even though it is an mmo made in java, the graphics arent worth the sacrifice.

The argument that “Java is slower than C or C++” isn’t really valid with newer releases of Java. It’s gotten waaay faster, and in some cases can beat out C in speed. Same goes for Swing; it’s gone through many improvements and now is quite fast.

Java gaming has gone a long way too; saying they have “Quake 2” graphics is true, but only to a point. Look at libraries like jMonkeyEngine. You find lots of good graphics, and Java is being used commercially for games too (CSI games, a few others, but I’m in a rush).

the CSI games ive played use flash(but java, indeed, is most probably included in there, too) :slight_smile:

but i dont see any point in porting blender/CS/OGRE into java, much rather those projects can use the time for new features, and so on… :slight_smile:

Its also a level of comfort thing. Some developers are just more comfortable knowing exactly what their programs are doing at every level, which C/C++ allows, while Java implements a small layer of abstraction above this from what I can recall (correct me if I’m wrong in this) (ok, ok, you could argue C/C++ abstracts assembly, which in turn abstracts something else all the way down to 1s and 0s, but we don’t need to go there do we?). On the same comfort thing, some developers are just trained in C/C++ so learning Java is kind of a moot point, since it would waste their time when they could be developing something else.

Cross platform development easier in Java? Yes, of course, the cross platform stuff is done for you intrinsically, but as long as you follow some standard coding practices and employ cross-platform libraries when writing code, C/C++ is not too much harder to develop cross-platform. Plus if you release open-source on a single platform and your code is good enough, somebody with the knowledge might come along and port it for you. ;):RocknRoll::yes:

I think the short answer to your question is: apathy.

Yes. By a factor of 10 in a lot of cases - fabricated benchmarks will say otherwise though. Maybe newer versions of Java are better but there will be some parts that run a lot slower and it’s not a case of Java being good enough for most of the time, the developers can’t take the risk of reaching a point where Java doesn’t do what they need. Also in the interests of backwards compatibility since only the latest versions will work well, supporting older systems is more difficult.

Again, this is a true-but-not-true thing too. I just searched some benchmarks, and yes, C++ did beat out Java in most cases (though it’s worth saying that was vs. Java 1.4.2) but Java is still getting a lot faster, and a lot more things are being developed in it (take the tree generator Arbaro for example).

Regardless, after I become better with Java, I’ll probably go back to learning C++. After that, I don’t know what I’ll do. Python perhaps?