C++ is really terrible for cross-platform development. The core language is 90% full cross platform, but the instant you add networking or GUI or 3D or an installer or multi-threading, you generally use extremely platform dependent libraries. On top of this, the C++ dev environment on Linux is exceptionally tricky and difficult to work with.

Java seems to have a real opportunity here:

- it has excellent runtime support on Windows/Mac/Linux- you can easily bundle a JRE so that you don't expect your users to understand and maintain that themselves.- Runtime performance is excellent. It's generally only ~20% slower than C++. I know performance is *extremely* complicated and not so easily summarized, but that is a reasonable high level approximation.- The dev tools and experience is dramatically better in almost every way. The language is much nicer, it is more complete (stuff like networking and threading is built-in), IDEs are nicer, build tools are nicer (Gradle + SBT are far better than makefiles), debuggers and profilers are better. Debugging memory leaks, and array out of bound writes is orders of magnitudes better.- Scala. Scala is dramatically more elegant than the Java/C# breed of languages. This has practical benefits in terms of maintenance and higher level reasoning as well. Many more builder type programmers don't appreciate this type of high level stuff, but some do, and I suspect this will grow.

The negatives are:

- Java has a bad image. People don't like it for only semi-valid reasons. For example, people had some bad experience with the Java web plugin, which is valid, but are soured off on the whole Java ecosystem which really isn't valid. People also have bad experiences with "enterprise" Java or JavaEE or JPA or Spring or Struts, which I think is valid, but is turned off of everything else, which isn't valid.- There is no momentum behind Java. 95% of the game programming community is primarily C++ or JavaScript or Objective-C. Java is off the radar. People don't understand it and aren't excited about it and don't even learn it.- No game programming infrastructure for Java.- Java doesn't have a good route to iOS or consoles. Even C++ is better for these.

Anyway, I fell like the Java community should seize the opportunity while it is here.

Seize what opportunity? Everyone here (almost everyone) is already a game programmer, and if you look at the games in the showcase and WIP and featured sections a lot of them have executables/a .jar file for all the major platforms.

Quote

There is no momentum behind Java. 95% of the game programming community is primarily C++ or JavaScript or Objective-C. Java is off the radar. People don't understand it and aren't excited about it and don't even learn it.

How is Java off the radar? According to this http://langpop.com/ Java is in the top 3 for nearly all catergories. I have friends that have no idea what objective-C are but almost everyone knows what Java is. Not to mention that Java is considerably easier to learn than C++ and C (not easier than javascript, obviously).

Javascript may be easier to learn, but any small mistake results in the program silently failing, leaving you to try and work out whether you made a mistake in the design, or the code.

I hate that.

C/C++ is a mess. Coding is fine, but looking at someone else's (or your own) code to work out what somethig does is a nightmare, especially with C++. (I have never used C/C++, but there hae been times I tried to convert the code to Java.)

Don't really think java is missing its window with games because of they way the languages is it's self because its Easy to learn, easier to find solutions to your problems, Easy to show of your programs. So in my opinion people are finding their way to us with just finding someone with the same issues.

I've programmed a game in c++ and trying to get some help with something is a lot more difficult, which in my opinion that is going in the wrong direction things should be getting easier not harder. I know they are library's etc but they are still a lot more to when your just wanting to put something online or trying to find a fix for a problem you have been getting with the your code.

I also think it counts on developers showing off good quality programs that interest people and make people wondering how it was done.

95% of the game programming community is primarily C++ or JavaScript or Objective-C

I disagreethere is for starters a stupid amount still written in actionscript (for flash) and such, kongregate, armorgames, etc... are all hugely popular and many people have used actionscript to ios/android compileables

also you forgot C#, although a lot of tools are written in C#, I think with C#there are a whole lot more out there than you may realize.Especially with the growing popularity of Mono, Unity, and other cross compile platforms.

I'd say there is a lot more Actionscript then there is ObjC or Javascript for games anyways. And C# is up in that mix pretty good too.

Generally, agreed on all points, and sadly, all well known points for about a decade, in one form or another.

Chief among the problems is the lack of portability of Java. Ironic. It just isn't available everywhere, unlike all the other languages. I'd say that was more of a failing of the open source community for dropping GCJ development in favour of VM solutions in OpenJDK. AOT compilation is very useful for all the places VMs aren't going to be, such as iPhones and XBoxes and PlayStations. And yet it died on the vine. Odd.

As for lack of tools and infrastructure... well, they're never really going to arrive, if the issue of portability isn't solved.

Javascript may be easier to learn, but any small mistake results in the program silently failing, leaving you to try and work out whether you made a mistake in the design, or the code.

Sure, that's obvious. But programming language platforms are driven more by how well they let you access your user base rather than programmer level concerns. Programmers generally don't like JavaScript/ECMAScript because of the language syntax itself, but because of how easy it is to deploy and reach users.

ActionScript: Yes, this is really popular too. I forgot this one.

C#: I definitely didn't forget this. For games, C# is definitely more popular than Java, but less than C++. However, C# and Xamarin/Mono are associated with a certain type of Microsoft-militancy that I'm not comfortable with. I give the Xamarin guys huge credit for making viable C# inroads with things like PlayStation Suite and Google NaCl and I'd love to see Java related companies and players more active in that.

How is Java off the radar? According to this http://langpop.com/ Java is in the top 3 for nearly all catergories.

Java is extremely popular in certain communities. Game development is just not one of them. The entire big data community is largely centered around Java. Much of the cutting edge search community is Java-centric. The alt-language community is extremely exciting and very JVM centric. There are also a ton of boring crusty legacy Enterprise IT jobs using Java.

If I was more passionate about this, I would focus on one of two areas:

- Work on custom Java VM's to run on iOS or PlayStation or google NaCl- Work on a Scala-centric 3D game engine, that shows extremely high performance, latest OpenGL features, full Mac/Windows/Linux/Android support, and a high level of programming elegance that C++/C#/Java developers are not used to.

@Nate: that nicely shows how people using tools to get a job done are more productive than people creating tools on the job.

ATM just getting libGDX with "my libs" working, after saying: "I just spent about 3 weeks trying to write something like an engine... *day passed* Oh what a great game on android? I want to do that too. But I need to get my engine done first...*downloads libGDX*"

GCJ was a steaming pile of garbage that only gave java a bad name on platforms that used it. It doesn't even run as fast as modern VMs, though it does at least start up faster. For casual games it's not necessary, and for AAA games it would never have been adequate.

GCJ was a steaming pile of garbage that only gave java a bad name on platforms that used it. It doesn't even run as fast as modern VMs, though it does at least start up faster. For casual games it's not necessary, and for AAA games it would never have been adequate.

It just needed work. Admittedly a lot of work, but nothing entirely insurmountable.

Excelsior could make a metric ton of money with an AOT VM for arm ala Mono. Oracle could also extend it's influence by doing something similar. Instead they have this crap now, and JavaFX on Rasberry PI.

It's really sad that WORA is no longer the mantra in the JVM world. I couldn't care less about Java, but the JVM is a piece of technology that's worth getting to run everywhere.

There's no real difference from our perspective whether WORA means "write once, compile once, deploy everywhere" or "write once, compile to each target" - the differences between the platforms themselves make it nontrivial in the first place. I just simply prefer to use one language, with one set of libraries (more or less), that works the same way whether it's AOT or JIT. So far I have to be honest and say that JIT is still not living up to the hype and AOT still has a considerable edge and always has, in most real-world situations.

Dmitry did mention that they might be looking at ARM in the not-too-distant future I think, but they need to get expertise in ARM architectures first.

There's no real difference from our perspective whether WORA means "write once, compile once, deploy everywhere" or "write once, compile to each target" - the differences between the platforms themselves make it nontrivial in the first place. I just simply prefer to use one language, with one set of libraries (more or less), that works the same way whether it's AOT or JIT. So far I have to be honest and say that JIT is still not living up to the hype and AOT still has a considerable edge and always has, in most real-world situations.

Yeah, i'd be down with compiling to each target, no issue with that. I guess Jigsaw kinda goes into that direction to some degree. Whether something's JIT or AOT compiled doesn't make a big difference in the grant scheme of things to me as a developer, as long as performance is reasonable.

Dmitry did mention that they might be looking at ARM in the not-too-distant future I think, but they need to get expertise in ARM architectures first.

I remember you quoting him saying something like "give us a sum with a couple of zeros and we'll look into that". To bad they didn't look into it earlier, i think that would have been a real oportunity. Might still be, but it's no small effort. If Xamarin can pull it off, they should be able to pull it off as well.

All of these mickey mouse techs all lead down the same path - incompatibility, hair pulling, and above all... shite performance. There's only one bad boy in town and it's the Oracle embedded JVM for ARM hardfloat, and that's just around the corner. I'm sure I could make a 2D game with Zero and OpenJDK... if I didn't mind it running at 15fps. Which I do. A lot.

The real downside for Java to me is the lack of support for accelerated graphics on the Mac platform. Apple has a terrible JVM, and even though it mostly works, you won't be doing anything silky smooth if you stay native to Java (no JNI). I went ahead and wrote a bunch of C++ wrappers for all of the Java objects I use just to future proof.

My friend who does graphics and design on our project uses a Mac, and while the editors and engine works, it works like shit. Until we have really great JVMs on all platforms, we're f**ked. Sorry, but it's true. At least with something that compiles to machine code, you're solid.

I see Java as a development platform, but these days, with as many platforms as there are, any language you write in might as well be pseudo code. I plan on releasing in the Lingua Franca for any given platform, which is probably some variant of C.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org