pouët.net

Where did Java demos go?

category: general [glöplog]
 
I remember back in 1995 when Java was introduced. I thought the virtual machine would be the new challange for the scene. When the PC platform was getting more and more diverse (GPUs, soundcards, MMX, 3DNow! etc) I saw Java as an opportunity to have a joint scene platform. Then I left the scene in 1997 and came back last year---no Java demos! :-)

OK, now the PC scene's joint platform is an API which is good but when we experimented with DirectX back in 1997 I could not forsee this. Did Java demos die because of the crappy Java3D API? Or just performance of virtual machines?
added on the 2005-06-22 18:25:10 by ManJIT ManJIT
i guess the major reason is that java-demos as a separate compo isn't popular enough. besides, as the java-platform don't bring anything new to the table, it should imo be merged with the host-platforms democompos.
added on the 2005-06-22 18:35:12 by kusma kusma
"where did java demos go?"

to phones where they belong.

java sucks as a realtime platform -_-
added on the 2005-06-22 18:35:21 by psenough psenough
I miss it since I love coding in Java (in general). So many annoying things in C++ ... :-P

But nowadays C# might have solved that. Is anyone coding DirectX stuff in C# btw? Problems in migrating with engine/codebase in C/C++?
added on the 2005-06-22 18:52:22 by ManJIT ManJIT
garbage collector <- says it all ^^
added on the 2005-06-22 18:54:56 by apricot apricot
Mind you, a friend of mine got his PhD in doing real-time garbage collection in Java. But that's research, not commercial production systems.

Anyway, it seems people like Java and the robustness of programs written in Java so much that they are seriously trying to move into the real-time sector.

But technical obstacles have never stopped sceners, have they?
added on the 2005-06-22 19:02:20 by ManJIT ManJIT
ManJIT: Java did sound promising long ago but most demomakers probably had enough with the lame sound & graphics capabilities (quality & runtime speed)

Most users had a Java 1.1 Virtual Machine, which meant 8kHz mono output. That was just not acceptable.
Moreover, you could not even access the audio buffer in realtime, you had to hack Sun audio classes somehow to make it possible. (a few JVMs did not accept this hack by the way, IBM's did not at some point as far as I can remember).

Java 2 (1.2) brought a few improvements but only the version 1.3 really reached a certain maturity imho. Add to that the fact that a lot of people still had a Java 1.1 virtual machine anyway and you get the picture.

Microsoft on the other hand provided a few proprietary classes but of course it lead to something that was not 100% java compatible anymore and only ran with IE.
Savior and Jmagic (Complex) used those classes, hence the better audio quality in their java demos (through muhmu audio)


Now for the graphics, it's basically the same story. What could be called a framebuffer access with java 1.1 was awfully slow compared to native stuff.

The other option, Java3D, has always been a piece of crap somehow and required yet another installation (on top of the basic JRE if my memory does not fail me) .
Official OpenGL-Java bindings were delayed many times it seems, although SGI and Sun made an announcement quite some time ago.

I don't even mention the other annoying things such as the crappy granularity of the early "timers" (usually 10 ms but also depended on the OS it ran on) and things like that...

As for my part, I tried a few things with Java 1.1 but I quickly had enough. Java is interesting and has its pros, but it's definitely not the best demo platform imho :)
added on the 2005-06-22 19:04:35 by keops keops
I learned java (forced) at university, and apart from the syntax (which is very nice, you'll have to agree), it doesn't really do more than extend c++ and making it run on a virtual machine with its benefits and disadvantages.

When you're making demos and games, you are always looking for core speed, no matter what type of demos you make, may it be 2D or 3D or polypushing or design, you always want that extra FPS, especially if you don't "have to do" anything to get it, which you'll get if you work with C++

Java's standard library is very good, and the streams works real well and reading zip files etc is no pain at all, but when you're making your demo, a) you like to do everything by yourself anyway (even if that includes using a library) and b) you don't need 99% of the fuzz.

Write once, debug everywhere is a motto I've heard somewhere which suits Java real well, it describees itself as multi platform by default, but is as portable as javascript.

I'll just stay with C++, because it's enough for demo and game making if you just learn to use it right. Java makes the progress for newbies easier, but C++ is for men.

Just my 0.02
thec^otb
added on the 2005-06-22 19:13:25 by thec thec
thanks keops, it cleared the sky quite a bit. I had a look at Java3D last fall and it was not maintained/developed since ages and as you say, the user has to install the Java3D re.

Well, well, as a programming language Java 1.4 and 1.5 are very nice. Together with Eclipse they make me smile and realize how much I love incremental compiling, refactoring and Java's class<-->file relation (instead of header files and ClassName::MethodName crap). Off topic? Nooo ...
added on the 2005-06-22 19:18:22 by ManJIT ManJIT
Javas strength resides in server-side application server development, its quite reliable; rather fast and keeps you safe from typical programming errors like double-free, memleaks and the like (which is important when you want to run a server 24/7 and only have limited time to develop your software). I'm a full time Java programmer and I'm always amused about the problems that arise when ppl absolutely don't care about the whereabouts of the objects they are allocating.
I'd never use Java for client side stuff (at least not If I'm free to choose) because sloppy Java client code can lead to average-size applications which take up 300+ MB of RAM. You *can* do fast client-side apps :) and even realtime apps (like ManJIT said) in Java (there is also a couple of different garbage-collectors with quite some parameters to choose from in a good Java runtime) but it is not any easier than doing this in C++ (or maybe a java-like script interface to C++ libraries ;);). PPL have realized this over the years and thats why there are very few java applets on the web today; Java has been replaced by e.g. Flash in this sector.
WTF am I writing here :)
added on the 2005-06-22 20:16:13 by xyz xyz
long live AmigaDE!!!1
added on the 2005-06-22 21:23:58 by kusma kusma
PC SUCKS!
Interesting subject. I wondered that myself too, esp. now that there is enough processing power for it and the VM also evolved a lot.

I was first interested in Java because of the applets. I am still not sure what a garbage collector is (even if someone has explained me that before) and the rest compiler jargon, other than the facts:

1) Some things are annoyning for people who are used into C programming (not so annoying for me, cause I am as new to C as to Java). As a newbie in modern programming, I don't have any idea about OOP, and I mostly remember the annoying fact that Java screams with data types.

2) The speed is quite much slower than C, but not that much (Hey, Freebasic is a bit faster! :). Modern effects can run fast enough in highres on a modern PC. But I don't notice that cause the routine that writes the buffer to the screen eats more speed, at least in something like 1024*768 :). Modern VM is more optimized and smooth enough demos possible.

3) You have to depend on the people who produce the virtual machine for some new features. I just hear these from a friend who wanted to play OGG in Applets but that needed a hack or something, or other bugs waiting to be fixed in the next versions..

But when there is nothing better for applets (Flash is not a language, I don't know about Alambik, haven't tried it and it's not quite popular) and this is enough for me (I have my frame buffer and 640 is enough for me ;), I can bother with the diferrences, I don't need to play OGGs rather coding nice effect applets, Java is fine for me.

Other than that, for some reasons half of the PCs I try can't run my applets ;P. Possibly they haven't installed the latest versions or something else is happening. This is one annoying thing I don't like but perhaps my code sucks ;P
added on the 2005-06-23 14:06:57 by Optimus Optimus
Other than that, I am more into Java because I have a friend who has a job of making Java applet games. He is more into it lately and he likes it. We are planning to work for a Java demo (he knew the demoscene before me, but never though of making a demo before, now with his job his dream reaches reality I guess :), we already had enough fun porting various demoeffects into his Java projects. So, expect one more to come..

However I am worried of the graphics rendering which is quite slower than TinyPTC for Java that I once used (At least not noticable in 640*480, but slow and flickery in 1024*768 ;P). Btw,. what's the diferrence of Java TinyPTC that makes it much faster than the regular rendering ways Sun proposes?
added on the 2005-06-23 14:11:22 by Optimus Optimus
nehe' demo
added on the 2005-06-29 11:05:14 by Ghost Ghost
Mr. Pixel is a fairly decent game compo entry from Assembly written in Java.

Other than that, I can't think of a single scene production written in Java, although I'm sure others exist.

As far as the tired subject of "Java/C# vs. C++", when I ask people why they say Java/C# is better than C++ it always comes down to people writing C code and compiling it with a C++ compiler. By that I mean that they are writing "C++" that doesn't use objects very much, if at all, doesn't use the standard C++ library for things like std::vector, std::list, std::string, etc. causing them to do low-level pointer manipulations C-style and having a problem with it. In other words, the things they say make for easy mistakes in C++ are C-style constructs that a professional C++ programmer doesn't write. What makes Java/C# better for these people is that it forces them to have some discipline by taking away the C constructs. They could have just as few errors in C++ if they actually wrote C++ style code and stopped writing C style code and compiling it with C++.

I haven't had a bogus pointer error in C++ for 6+ years because I learned how to use std::string, std::vector, etc., and I always wrap resource allocation inside a class with a matching c'tor and d'tor that manages the resource. Poof! Werid pointer errors are gone for good.
added on the 2005-06-29 18:00:05 by legalize legalize
java is crap.
added on the 2005-06-29 18:16:01 by nosfe nosfe
legalize, check out pouet's java category. For example komplex had couple of nice java demos.
added on the 2005-06-29 19:05:50 by blueflame blueflame
Quote:
Other than that, I can't think of a single scene production written in Java

that says something about you, not about java.
added on the 2005-06-29 20:11:51 by reed reed
Quote:
"where did java demos go?"

to phones where they belong.

java sucks as a realtime platform -_-


Excellent
added on the 2005-06-29 22:28:16 by orb orb
other than that, I cant think of a single scene production by legalize, although I'm sure others exist.
Hail Legalize, the std::guru! :)
added on the 2005-06-30 10:14:21 by ekoli ekoli
Dunno why i'm posting this but this java demo was quite cool when it came...yava2k http://mojs.tk/stuff.php?Compiler=1&Demo=1&subpage=Yava2k
added on the 2005-06-30 10:14:39 by zeppo zeppo

login