You wrote a lot of words here, and I am not sure if I am fully understanding what you're saying, or if you don't understand how Java and its garbage collector works. Either way, there are definitely some massive exaggerations in here, and it seems like the only criterion you're using to claim that "Java is a terrible language" is performance. In that vein, we might as well trash all managed languages and all interpreted languages in favor of high-level native languages. Let's throw in some assembly as well; it will be fast!
Surely you must have heard of using the right language for the job. There are reasons why python/ruby is used for automation scripts, Java is used for backend development and applications, and C++ is used for game client development. Performance is not everything; actually, depending on what you are writing, performance is not even worth considering over other things.
For example, take League of Legends. Almost all of our backend services are in Java. The only software that is not in Java is our game client (C++), game server (C++), and our PVP.net client (adobe flex).
Some of our backend services are:
- The entire PVP.net Platform
- Our in-house storage libraries to interface with NoSQL engines
- Our in-house Rest server library
- Tournament code server
- Leagues
- Loyalty
- Loyaty 2.0
- Tribunal 2.0
If we had made the decision to write all of those in C++ for optimal performance, more than half of those features would not exist right now because our developers would be busy meticulously testing every component to ensure there are no leaks or problems. Instead of being able to slap a few hundred dollars for better hardware or for another box (since all of our systems scale horizontally), we would've lost a few hundred thousand dollars to developer time.
And by the way, our Java systems support over half a million concurrent users. The best part? Most of our production hardware is underutilized.
So a managed language that runs in a VM is going to perform worse than native code? Well, that's obvious. And actually, Java performance is not as terrible as it seems, because of JIT compilation (which actually compiles Java bytecode to native code). Nevertheless, you seem to solely discount Java's viability on its performance, which is extremely shallow and baseless.
Java is one of, if not the most popular languages in the world and has been used in countless companies and projects with massive traffic, from Google to Riot to companies like AT&T. You do not have to doubt its scalability.
At the end of the day, though, no one cares how well your C++ server performs. At Riot, almost all of our hardware is underutilized, and we serve hundreds of thousands of concurrent users. For a MapleStory server that very likely won't even serve a thousand players, it really doesn't matter what language your server is written in.
Actually, I have enough confidence to say that a modern Java base (which currently does not exist) can handle 1,000 players on the same (or similar) hardware as a Vana base -- sure, memory usage will be more, cpu usage will be more, but nothing that the box can't handle. At that point, nothing matters. Actually, the only thing that matters is that my Java source would've taken a year or less to develop, while yours has taken 5.