Dudes, I meant Java isn't faster than C++/C#/C under certain circumstances but there are extreme variations in speed mainly because of the algorithms used.
Like what you said Russ, you are right. When it comes to sound, video or software anti-aliasing/filter algorithms you use either:
Assembly or C. Java and/or C++ is not an option under most circumstances such as the ones you and I described.
IE:
http://www.hiend3d.com/hq4x.html
You run this HQ2x under an old version of WMP Zsnes which first introduced HQ2x, it is slow. Dead slow.
The recent WMP version of Zsnes has HQ3x and it runs perfect in terms of performance. Why? It was all done through assembly(or a bit of C and a lot of ASM, I forget) rather than C++.
In general for codecs and the like I do agree, assembly or C and under some circumstances C++ otherwise your performance will be :?. A combination of ASM and C is alright as well.
Yes, the garbage collector is being improved there are slight funnies that some people have with it. Some people tend to manually place garbage collector calls systematically to avoid pauses and the like.
IIRC the garbage collector removes dead variables at certain intervals. If you are crunching massive numbers and have cack loads of dead variables and the garbage collector kicks in during the number crunching, oh oh.
To avoid that, I systematically place GC calls after something big would occur. That keeps garbage to a minimum and the GC needn't be auto called as much and it wont be called during those number crunching moments.
It should be noted there are other garbage collectors as well which may be better suited.
In the end it all comes down to using the right tool for the job. What I don't like is when people treat their opinions as facts thus misleading others.
The "Java is slow" so don't bother with it attitude/argument is annoying and misleading.
I can simply argue, C is slow with *insert program algorithm here*, why bother using C when you can get double the performance using ASM with *insert program algorithm here*. In fact, Java takes advantage of SSE2 when doing float ops assuming your CPU supports it.
If you use the right tool for the job, you are then exerting common sense and you will get the job done right assuming the person is competent.
I've spent a lot of time reading and asking questions about how Java works. There are a lot of unfounded and incorrect rumours going on about Java, myself foolishly believing some of them. The Java community has really opened my eyes. There are a lot of very helpful people willing to answer questions.
One of Sun's employees for the Java games community has stated that Sun is targeting Java to become a game oriented language as well. They are expanding the market.