"So, lets turn this around.  Why would you have picked a different
platform?  Why do you feel that the stuff Microsoft has created is a
bad choice?"

I'm not trying to convince others that they are making a bad choice or
evangelize my views. But personally, I feel that the JVM ecosystem
operates more as a meritocracy while the .NET/Mono landscapes function
more as monarchies.

In the .NET/Mono landscapes, when you are choosing an IDE, a database,
a web framework, a build system, or whatever: the prevailing attitude
is that every developer should use the dominant Microsoft technology,
Microsoft Best Practices are the ultimate gospel, and using any
alternative to any Microsoft product risks you being branded as a
Microsoft hater which is the ultimate heresy. There are lots of
exceptions; there are alternate .NET web frameworks, build systems,
and Mono itself is a completely alternate runtime. But the community
acceptance of alternatives is generally very low. And the driving
spirit behind Mono isn't to pioneer some new technology or deliver
improved variations of the standard Microsoft options, it's to crusade
the Microsoft gospel to foreign territory. Lots of people love this
stuff and are fueled by Microsoft spirit and pride, but I find this
ecosystem stifling and repressive.

In the JVM landscape, technologies live or die more on their own
merit. The community cares little about Sun/Oracle endorsement. JSF
was the official web framework from Sun, but it was horrible, and
almost everyone used independently developed alternatives. Several
generations of build systems (Ant, then Maven, and now Gradle or SBT
are fighting for the next gen) have risen and fallen in the Java
landscape and all of them (AFAIK) were developed by independent
developers and they took off not because of a corporate endorsement,
but rather because they were just really, really good, and word
spread. You can see the same thing with an amazing selection of IDEs
and now there is also an amazing selection of competing alt-languages
(Fantom, Scala, Clojure, Groovy, Kotlin, etc).

"I could be wrong, but JNI doesn't really act as a good unsafe
replacement."

I suspect that you may be right that Java doesn't have as good an FFI
story as C# or Lua. But it's used in things like JOGL, which is
extremely nice, since you can have a Java game where all the low level
OpenGL rendering happens with the native OpenGL libraries.

Just googling, I found what looks like a pretty meticulous and up to
date programming language benchmark site: http://shootout.alioth.debian.org.
C++/G++ is faster than Java which is faster than C#/Mono. And the gap
between Java and Mono is larger than the gap between Java and C++.
It's a Debian site so they don't have data for Microsoft's .NET
runtime which is Windows-only.

If I google "java C# benchmarks", the top link (http://
reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-
performance.html) posts results from another site called
http://www.csharp-architect.com. The results show from faster to
slower: C++, C#/Microsoft, Java, C#/Mono.

I understand having true unsigned integer primitives give you a small
boost when heavy unsigned integer math, like in the Git example where
they do high volume SHA-1 hashing. I also see the benefit of C#'s
unsafe mode. I also like several other C# features that Java doesn't
have. But, in most benchmarks, I see Java running *faster* than Mono,
even on a site called csharp-architect.com. And in the hundreds of
conversations I've had with C# developers, I've heard a lot of
criticisms of Java, but runtime performance is generally not one of
them.

Even Microsoft's internal game studios do their game engines in C/C++
rather than C# and use various higher level languages (Lua, etc) for
higher level game event scripting type of work. Microsoft has
presented C# as an easier option that lowers the barrier to
development entry, but not (yet) as the development platform for
premier games.

PlayStation uses C/C++ for their real dev kits for performance
reasons. For their hobbyist SDK, they are willing to take a
performance hit in exchange for improved accessibility.

Bottom line: there is no evidence that performance is a problem with
Java for this type of hobbyist SDK. If anything Java runs
significantly faster than Mono/C#.

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to