"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.
