I understand where you're coming from about the absence of a VM on a new platform, but most platforms are probably going to incorporate it anyway. In any event, at present, most major platforms will run Java with the exception being iOS afaik.
Also, if you're developing anything in C++ which you intend to be portable, it almost certainly would take you longer and would require more work than writing it in Java - which, with its standard libraries - allows for easier porting.
Before you take this the wrong way, I'm not trying to contradict you in any way, I'm just throwing out the point that at present, Java is probably going to benefit someone more than C++ when it comes to portable applications.
|
You'll be portable to all the big desktop platforms and that's about it. You can't guarantee that the JVM ports will be maintained across any platforms, and you don't wan to have to maintain a port yourself because now you just took on a larger project. I like programming for low-power and mobile devices, as well as microcontrollers that sometimes don't even have C rigged up to them correctly.
I guess it's a matter of what you're really trying to do, but I like to:
A) Own my code from top to bottom, no dependencies that a user must install or dependencies that have licensing terms that I can't work with.
B) Be able to deploy to any platform I'd like to without any restrictions placed by runtime dependencies like JVM.
C) Have native code that runs fast.
If I'm building something that I need to get done quickly and requires heavy GUI elements, that isn't something that's easily to do in a portable fashion with something that's compiled to native code without abstracting. That's something I'd just Java for. But we're talking about games that require high framerates and a good user experience. They don't have heavy native GUI usage, if anything all your GUI will be ingame and completely portable. For games, native code is the way to go every time.