@ pron
I just read an interview with Joshua Bloch where he specifically mentions Java’s concurrency handling as a big positive, given the growing use of multicore processing:
[quote]It’s funny because it seems very popular to talk about Java being dead now. I see it as histrionics, basically. But I think that right now the best existing multithreaded building blocks are in Java. I think Java is poised for a little resurgence. I’m not saying it is where we’ll be headed for the next 20 years; that it is the best way to take care of these multicores. But I think of what’s available today, it’s head and shoulders above the competition.
[/quote]
The interview is in this book: “Coders at Work–Reflections on the Craft of Programming” edited by Peter Seibel (2009).
I’m pretty sure it doesn’t need admin rights to upgrade.
One of the problems is that there are whole exosystems around existing languages for Triple A game development; libraries, programmers, engines, support, etc. Walk into a games store and most of the top 10 games for PC and consoles will be built with only a handful of engines and libraries. Microsoft has started building similar for C#; deployment to XBox, XNA framework, various communities, indie gamers channel and more. However for Java none of it really exists. There are some Java game forum sections dotted around the internet, some home made libraries and that’s about it!
I’ve seen these numbers being pushed for years, but they are rather misleading because J2ME is practically dead now. Hardly any one is building apps for it and none of the new phones ship with it, it has no future.
On Android many apps are going native and with Oracles recent moves who knows whether Java will remain the main platform on Android in the future.
Java’s not the top dog anymore as it once was in the mobile world.
If Java isn’t top dog then what will >2.2 billion phones run if it isn’t J2ME/J2SE/Android?
J2ME is only dead for a big market store, but most phones have J2ME or Android. Even WebOS has J2ME internally and WP7 has it pre-installed.
If Java is dead then who purchased 2 billion IPhones? Where are they? I sure don’t see them.
My ABGDK uses J2ME for a reason. J2ME is on the most phones. If IOs had the most phones then I would have written it in Objective-C. If Symbian had the most phones it would be in C/C++. And so on…
I do see HTML5 overtaking J2ME and Android, but not until about 2020. As such don’t be surprised if you see my games having an HTML5 build in a few years.
The interview is in this book: “Coders at Work–Reflections on the Craft of Programming” edited by Peter Seibel (2009).
[/quote]
Yes, that’s what I was saying. It’s those other technologies that have a problem with concurrency. Look how beautifully Java-world languages and frameworks make use of concurrency: look at Lift, Akka, Clojure, Cassandra, Hadoop. If you want to make a serious, high-performance, complex, server-side program to support all those mobile devices, you must make it concurrent, which leaves you with only two choices - Java (the environment, not the language) and Erlang. And how many Erlang programmers are out there?
Actually, I think that few serious online games will NOT be written in the Java ecosystem in the next several years. Yeah, the client is really important, too, especially to capture the hearts and minds of young programmers, and Oracle should put more emphasis on that, but I think Java’s position in the gaming industry will only grow stronger, and, in fact, it already is growing.
I’ve yet to see a single thing written in J2ME, running on any phone, that I would even stoop to being forced to use more than one painful time, let alone pay for. J2ME is simply irrelevant for where phones are going. It may be out there now but it’ll be dead as a dodo in 2 years.
Well I have seen lots of cool J2ME stuff. Heck my little MiniSpaceWars game has several copies sold on J2ME last month and it is just a simple space game. It can get 120+ fps on the new Blackberry phones.
pjt33, what are you suggesting? Java TV, Java Card, CDC, and whatever else are the same shit to me.
To me it’s all the same stuff between J2ME/Android/J2SE. Sure they have some custom classes and even some system class differences, but those changes have little to do with my main code.
There are places where J2ME is still popular, but this is mainly as 1) cheap ad-hoc games provided by phone providers just so they can say their phone ‘supports games’ and 2) in emerging markets where smart phones are too expensive and the networks cannot handle the required data bandwidth. Both of those are in decline.
The reality is that 99.9% of people with a J2ME enabled phone never play games on it.
Very interesting! I’d never noticed that feature. Assuming that it works reasonable well, then that’s the hardest part solved (or being solved) by someone else. So this is potentially a viable option for games that avoid the “problematic” classes from SE. I’m not motivated to check, but it would be very interesting to see if someone could get a basic LWJGL demo running in native via the AOT compiler.
@pron: I can’t see any reasonable reason to use Erlang for game programming. I guess one could argue that for MMO games you want a server with 99.999% uptime and that the bulk of the server time will be updating entities (actors). But so what? One can hit these requirements via other languages. I actually “like” erlang, I just don’t think its usage would be reasonable. On concurrency, you have to remember that the term is somewhat overloaded (Java vs. Erlang concurrency is two different animals). For modern hardware the optimal processing throughput it typically hit when the number of active threads (running in a given timeslice) is some small constant multiplier of the number of effective CPUs. Around “2” is a good guess for current hardware.
The new Battlestar Galactica MMO uses Erlang for the server, and I believe (although don’t quote me on this) that it uses Unity for the client. It can handle very high number of threads, it’s concurrency model is far simpler (and easier to use) then Java’s, it has in-built support for deploying across multiple servers, can hot-swap code and has support for coping with failing processes. IMHO there isn’t any reason not to use Erlang for server-side, especially if there is an emphasis on high-numbers of connections and scaling horizontally.
That’s not to say it’s a better choice then Java for the server, just that in some situations it’s at least as good.
That little blog post got a lot more popular that I thought it would :
HTML5 was indeed a bit too cutting edge for my taste - regardless of performance, just appeasing all the different browsers was a royal pain in the butt.