FreakNigh {l Wrote}:int a = 1 + 1; would set aside 4 bytes in the program memory and have an assembly command to push a 2 into it, unless Java is doing exactly the same I don't how it is doing that faster.
Your understanding of what is efficient and fast is superficial, yet you use it as a basis for making higher level judgements.
A wise man knows what he does not know. You are not very wise.
C++ is great for commercial 3D games, because in a situation where throughput on an individual machine/processor is key, the low level context of C/C++ is sublime. However in MMORPG servers and other scalable architectures in general, scalability is not about how much data you can crunch on one machine, but how well you can architect a network-aware, mutli-threaded application to
robustly and
evenly work with its demand. C++ is awful for these situations. Here the difference between 4bytes and 32bytes is nearly irrelevant. It is the difference between 4 and 32 CPUs and 4 and 32 nodes on a network. The ability to work with the volume of objects and complexity of memory at this level is beyond what mortals can implement in C++, which is why C++-based scalable servers simply don't exist* at enterprise level - including MMORPG game servers.
* They do exist, but out of perseverance as opposed to natural growth, and almost all modern architectures are in Java, .NET, or a scripting language, where things such as memory management are down to smart use of objects and almost totally conceptual. They are a dying breed.
Python is awful when considering performance. Why is EVE-online using Python for servers? Simply put, developing the same in C++ would have simply cost too much and been too problematic. Many
would argue Python itself is not a good choice.
Java has similar power to C++, with a bit of inefficiency (which is negligible in most situations except for pure low level throughput on a single machine). Java is
great for number crunching, and at that level performs on a par with C++. Interfacing with 3D cards and memory, Java's VM and high level constructs are overhead, which is where C/C++ comes into its own with game programming.
You may have considered me to be troll baiting. I consider you to be troll baiting. You posted totally uninformed (which you have since admitted) statements as if they are fact rather than opinion. You should have said, "In my opinion, although I don't know much about Java, I hear is is slow..." To claim Java is crap is ignorant, and to be upset that I called you on that is disingenuous. You have to be able to back up your statements, and it's obvious that backing your opinions is whimsical beliefs that you have probably gotten from reading too much Slashdot.
Java is not all singing and all dancing, but it is solid, and with the productivity tools like Eclipse (best-in-breed, btw) and the plethora of tools for build management, testing etc as well as many very good libraries. Programming significant projects in Java is as easy to
get right than it is with any other language for almost any purpose. Fundamentally a tool is only as good as the person using it [and their knowledge of the language], but Java is a much more refined tool than C++, and a much more solid tool than any scripting language. C#/.NET is catching it (or has caught it? Not used it in a few years) but lacks cross platform prowess. This solidity, coupled with the increasingly good 2D/3D engines for Java, makes it a great language for the indie game developer - casting away the difficulties of C/C++ and not tempting the dicey nature (and subsequent complexity of managing larger code bases) of scripting languages.