Most current "Java is too slow" comments are memetic circlejerking leftovers from a bygone era. Java via LibJDX is actually a very good way to make games nowadays, especially if you're trying to target multiple platforms.
I'm just going to say that Java is one of the least expressive popular language in my opinion. Every damned thing about it is meant to make it easy to compile. That's fine, but I don't like not having nice operator overloading or the general garnishes that C++ provides.
I think it's architecture is not as good as the current generation of .Net stuff. The compilation tools are horrible to work with. The language is incredibly pedantic, and the boxing/unboxing problems which show up for things like lists when you just have an integer is stupid.
Sure they
could solve it in java 10. I don't think they will though, that'd break way too much code that relies upon the fact that java doesn't handle generics properly. Of course, there's the most common way to use generics, to make code faster(which it doesn't in java) and to ensure compile time checking(which is terribly neutered in java in comparison to C++ anyway).
I don't think they will ever get around to it. So java will always have shitty performance related to it's generics.
Also, the JVM is in general, a terrible virtual machine in my opinion. Sure, it compiles code to the fastest version which they could prove runs the same natively, but it doesn't stop the object system from ruining that glorious performance, nor does it help that the JVM has a limited memory by default, which breaks things suddenly without meticulous configuration on sudden demand increase, the fact that the GC is stop the world(as in everything on all the thread stops so the GC can catch it's breath). There's no underlying access to any of the machine architecture, generally not even in a hacky way, which is a sign that the system can't handle the extensions that could improve it immeasurably.
Sure there are java garbage collectors out there that don't stop the execution, but they are all proprietary for the most part or otherwise unsuitable for most people's uses. I think there's a free one that can do it, but it doubles the memory usage because it uses a particular algorithm which requires the entire memory set be duplicated.
The fact that swing can't be themed correctly after fifteen years of thumb twiddling on the matter; the fact that java hasn't really improved majorly in five years; the looming license crisis that will pass if Oracle wins the lawsuit against Google.
The Flyweight pattern was popularized in response to the shortcomings of the JVM, and I don't like it either. It's basically just throwing a bunch of your shit into global variables which are managed in a single place. That's not a solution to any of the things that java was originally purported to help solve.I hate java. That should be clear here. I don't like the JVM, or even the dinky expressive languages like Scala, which still suffers from being bound to the java object model, which is somewhat powerful, if not completely unsuitable for high performance work.
If I continue talking about it I'm going to say things that are neither helpful or true, because that's where this rant is heading.
Dammit, it's supposed to be compatible with Python 3. Why must everything be so inconvenient.
welcome to my goddamn summer and autumn
you know you're in deep when you open up the source files and edit them to make them work with python 3, praying that there's nothing left that's still syntactically valid but has changed semantics catastrophically
Just run 2to3 on it. It'll probably work given that most of the issues are probably due to syntax.
That migration tool is great.
The python interpreter hasn't changed all that much, so there isn't much that should be an issue with the migration.
I definitely wouldn't try game stuff in Java. My day job stuff has me doing some Java lately. Hopefully, we'll get Mono integrated into our workflow so I can go back to C#, but for the time being, I'm stuck.
Stuck with Java in particular, or just with the JVM? In the latter case, there are a few nicer options available.
In the short term, stuck with Java itself. Putting another language into play isn't out of the question (our stuff is all microservices, so we've got a lot of freedom with regard to languages, but right now the path of least resistance is to just use Java. One of the other developers and I are working on getting Mono up and on the platform, but we haven't finished that yet.
I already feel vindicated and I haven't posted yet.
Try erlang. It has a better VM, lots of nice syntactic support for compilation checking, a very lightweight threading and actor system etc, concurrent GC(doesn't pause all the threads), and absolutely nothing in common with java other than the fact that it has a virtual machine.