On Jan 18, 9:09 pm, Josh Berry <[email protected]> wrote: > I don't know what to tell you. Game developers by and large avoid > Java. I think if you honestly want a good answer as to why, ask them.
Thanks Josh. I think I figured this out. And I think I can articulate this better than most game developers could (I don't think game devs have thought as much about this issue or the JVM as I have): The most important missing feature is having easy to use, embeddable, micro-VMs. Microsoft .NET doesn't have this, but the Mono guys made their own implementation of the CLR with this as a primary concern. There are no legal or technical obstacles stopping this from happening on the JVM side, it's just no one has done it. Game developers want to target iOS, Android, and PlayStations. Those devices do not and will not run traditional system-level Java. Embeddable micro-VMs are the solution and they don't exist yet on the JVM side. I really wish I had gone to grad school for this type of stuff, because I think this is a hot project but it requires a specialized set of skills to do well. The second issue is the programming language. Ideally, you support multiple languages, but you still need a flagship language. Java, the language, is behind the times. C#, the language, has incrementally improved upon Java overall. However, there are other languages that deliver even further incremental improvements. I don't think the game development community is ready for the type theory, the deep abstractions, and the radical nature of Haskell or Clojure. I think the most promising candidate is the forthcoming Kotlin. It definitely one ups Java/C# and doesn't require paradigm shifts and I'm hoping it won't have the compilation speed penalty and runtime speed penalty that Scala seems to have. What else do we want from Java: the super IDEs and the build tools. As I explained earlier, the Java build tools are really at the leading edge of the industry. And almost every dev I know that has used it would pick IntelliJ any day over Visual Studio. But to resummarize an earlier point: I don't think runtime performance is a problem with the JVM. Even without "unsafe" casting and memcpy type tricks and the issues you raised, the JVM generally outperforms both Microsoft's CLR and Mono. The two of you in this thread that insist this is a problem are just not being reasonable. > Also, it isn't like anyone here dismisses the JVM. We just can't > offer any compelling reason why game developers should choose it over > alternatives. I can articulate some compelling reasons: - Kotlin is a better, more exciting, and more elegant language than C#. - Better IDEs and wider selection of IDEs. - Better runtime performance. - Better build tools and a wider choice (Maven, Gradle, SBT). - A deeply meritocratic culture rather than one that is forever in lock step behind a corporate despot. "Can you give an example of such code that would cease to work should Java add unsigned ints?" I can't, but I haven't thought about this issue deeply. You may know this issue better than I. "But yes, at least unsigned integer math is coming in Java 8, afaik." Where did you hear this? Do you have a link? I can't find this on google. FYI, I remember during this last year, famous game programming expert John Carmack posted on his Twitter about some unsigned integer corner case that caused problems and said something to the effect of maybe it wasn't a bad thing for Java to avoid them. I am unable to dig up the exact quote/link at the moment. -- 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.
