...would be *ideally* suited for developing a game like Minecraft, bearing in mind these important considerations:
1. Developer time (for a 1 or 2 person development team)
2. Code maintenance, alteration & extensibility
3. Platform agnosticism (optional?*)
4. Performance!
...or did Notch pick the exactly perfect platform?
Please only weigh in if you have extensive experience with Java, or another platform you feel is better suited to the task.
*Obviously a game like Minecraft really blows up in popularity running on so many platforms. Your opinion: is this too large a compromise, favoring exposure and sales over platform suitability?
Again, hypothetically, no disrespect intended toward Notch or any other Java developers who are obviously using their current skill sets to great effect! I'm just looking to get alternative viewpoints.
Maybe C, C++, Visual? That's what a lot of current games are made from(talking about C++), if I'm not mistaken. But I'm less than new to programming languages, so that's just a shot in the dark.
But Java is an OO program so as of the alpha and beta stages, I would imagine that that would be a good starting program for small Indie games like MC.
For developer management, Java is great. Performance-wise, of course not. Java is a virtual machine. Running a game natively is always better. If Minecraft was in C++, most of the lag complaints you see would be gone. The only advantage of Java for "performance" is cross-platform support, AKA Notch only has to do about three things (or none at all, not sure) for it to work on Mac or Linux.
For developer management, Java is great. Performance-wise, of course not. Java is a virtual machine. Running a game natively is always better. If Minecraft was in C++, most of the lag complaints you see would be gone. The only advantage of Java for "performance" is cross-platform support, AKA Notch only has to do about three things (or none at all, not sure) for it to work on Mac or Linux.
So what might be a realistic compromise for both developer management and performance? Or is Java the best choice? Again, assuming a new, similar project...not recoding Minecraft from scratch.
The answer to your question, Topic Creator, is essentially... well... opinion.
Almost everything you can do with one language, you can probably do with another in some way or form. The only exception I can think of is platform compatibility, which may require 'porting' the code to another language.
As for Developer time, tweaking code, performance and etc. That is all really dependent on what language you enjoy and know the best, as well as your own coding skills, and a little bit dependent on your focus platforms.
If you want to have an easy way to create cross-platform compatible software, Java is a good choice.
If you don't care so much about platform compatibility, C/C++ might give you better performance, although, not everyone is apt at that language and the language itself is not always suited to the developer's plans.
For creating games, there are a wide range of very useful languages these days. From C, C++, Java, C#, Visual Basic, or even Python. Depending on what your needs as a developer, what your specific intentions are, how you program, and simply your preference on syntax, it all lends to what language would be most useful to you.
In Notch's case, he knew and enjoyed Java more. In result, Minecraft has gotten to where it is today and available on practically every PC system, as well as playable inside internet browsers themselves. And yeah, it may have sacrificed a tiny bit of speed as opposed to a less compatible language like C++... However, there is nothing to promise Notch would have had success in programming in C or C++, and nothing to say Minecraft would have ever gotten popular.
But if you want to know what language would have the best performance overall? x86 Assembly.
I can't promise you that'd be a fun language, though... I can almost promise you that you'd go out of your mind trying to program a game in that.
And if that aint fast enough for ya... you could always try coding in pure Binary. :wink.gif:
In Notch's case, he knew and enjoyed Java more. In result, Minecraft has gotten to where it is today and available on practically every PC system, as well as playable inside internet browsers themselves. And yeah, it may have sacrificed a tiny bit of speed as opposed to a less compatible language like C++... However, there is nothing to promise Notch would have had success in programming in C or C++, and nothing to say Minecraft would have ever gotten popular.
Actually, C++ and Java aren't that hard to transition to from each other. Like I said, the main reason he chose Java was browser support and cross-platform capability. And, no, it isn't a "tiny" bit of speed that he would have got from running on C/C++. It would have been a HUGE difference in performance.
Pretty much whatever language you are most comfortable using.
Java is nice for minecraft because of the browser functionality and ease of use cross-system. Performance-wise it's not as great as some of the other languages, but it works fine enough
However, this does seem to be in the wrong section
Actually, C++ and Java aren't that hard to transition to from each other.
I'm sorry, but that's simply just not true... If you have any significant amount of code, like a working game might have, then it's going to be an arduous task porting any language to another.
The only exceptions may be things like Java to C#, where C# was based off of Java and have quite many similarities, but even then it would take a little work to do.
Quote from Grammernatzi »
Like I said, the main reason he chose Java was browser support and cross-platform capability.
I'm not arguing that, in fact, I basically said the same thing.
Quote from Grammernatzi »
And, no, it isn't a "tiny" bit of speed that he would have got from running on C/C++. It would have been a HUGE difference in performance.
... And this one is very easily arguable.
There's no evidence to support this idea. The speed of a software product is more dependent on programming techniques and etc. of the developer than the actual language used.
As simple evidence of the ability to argue either side, I can provide this article: http://scribblethink.org/Computer/javaCbenchmark.html
I don't log on much, but I thought this needed to be corrected.
Quote from CosmicSpore »
Quote from Grammernatzi »
And, no, it isn't a "tiny" bit of speed that he would have got from running on C/C++. It would have been a HUGE difference in performance.
... And this one is very easily arguable.
There's no evidence to support this idea. The speed of a software product is more dependent on programming techniques and etc. of the developer than the actual language used.
As simple evidence of the ability to argue either side, I can provide this article: http://scribblethink.org/Computer/javaCbenchmark.html
No, it really cannot be argued that Java is slower than C++ with modern Java JVMs. If you look at this link (Ignore the "client" JVM, it isn't used anymore.) then you can see that Java is faster than C++ in most areas, slower in a couple, and practically the same speed in some.
For developer management, Java is great. Performance-wise, of course not. Java is a virtual machine. Running a game natively is always better. If Minecraft was in C++, most of the lag complaints you see would be gone. The only advantage of Java for "performance" is cross-platform support, AKA Notch only has to do about three things (or none at all, not sure) for it to work on Mac or Linux.
He should rewrite it in C++ for Windows. Thats would be dope.
For developer management, Java is great. Performance-wise, of course not. Java is a virtual machine. Running a game natively is always better. If Minecraft was in C++, most of the lag complaints you see would be gone. The only advantage of Java for "performance" is cross-platform support, AKA Notch only has to do about three things (or none at all, not sure) for it to work on Mac or Linux.
He should rewrite it in C++ for Windows. Thats would be dope.
What would the advantage be? A year of no development is a bad thing in my opinion, not to mention less stability, and lower likelihood of continued compatibility.
I don't log on much, but I thought this needed to be corrected.
No, it really cannot be argued that Java is slower than C++ with modern Java JVMs. If you look at this link (Ignore the "client" JVM, it isn't used anymore.) then you can see that Java is faster than C++ in most areas, slower in a couple, and practically the same speed in some.
lol.... Wow.
1. You obviously didn't even bother to click my link. You just assumed it said C++ is faster, for some reason. Even though I was trying to provide evidence to support the opposite because someone else was arguing that.
Nothing I said needed to be corrected.
2. Yes, it can (and easily) be argued that C++ is faster than Java. It can be argued both ways, and has been for a while now.
The link you provided is just some benchmarks. It uses some algorithms to test speeds. However, it does not and could not indicate the speed comparisons between full software programs.
You also have to take into account the individualization of PCs and computer hardware and software in general. Making comparison practically impossible for 1:1 purposes.
I could provide another link, explaining how C++ is faster overall, but I have a feeling it would be pointless and go unread. (BUT! I'm not implying C++ or Java IS faster. Again, I'm only explaining how it can be argued both ways.)
3. Like I said before, the speed and performance of full software programs depends more on the developer and their programming and techniques than on the language or compiler used.
Programmers shouldn't see a large performance influence based on their chosen language
4. As far as I'm aware, Java still uses both a client and server VM, so I'm not sure why you said it doesn't use the client VM anymore. And you can still decide to run in -client or -server, so this kind of supports my idea that they both still exist...
Isn't there a better place for this topic? It's not exactly about 'Modding', really...
-snip-
lol.... Wow.
1. You obviously didn't even bother to click my link. You just assumed it said C++ is faster, for some reason. Even though I was trying to provide evidence to support the opposite because someone else was arguing that.
Nothing I said needed to be corrected.
2. Yes, it can (and easily) be argued that C++ is faster than Java. It can be argued both ways, and has been for a while now.
The link you provided is just some benchmarks. It uses some algorithms to test speeds. However, it does not and could not indicate the speed comparisons between full software programs.
You also have to take into account the individualization of PCs and computer hardware and software in general. Making comparison practically impossible for 1:1 purposes.
I could provide another link, explaining how C++ is faster overall, but I have a feeling it would be pointless and go unread. (BUT! I'm not implying C++ or Java IS faster. Again, I'm only explaining how it can be argued both ways.)
3. Like I said before, the speed and performance of full software programs depends more on the developer and their programming and techniques than on the language or compiler used.
Programmers shouldn't see a large performance influence based on their chosen language
4. As far as I'm aware, Java still uses both a client and server VM, so I'm not sure why you said it doesn't use the client VM anymore. And you can still decide to run in -client or -server, so this kind of supports my idea that they both still exist...
Isn't there a better place for this topic? It's not exactly about 'Modding', really...
1. You tell me that the link didn't argue C++ being faster than Java, and then you say it argued both ways? So, one way is: Java is faster than C++. And the other is... what?
2. The processor of a computer would hardly make a difference in the Java v. C++ speed benching. And also, that benchmark is a often used, and usually accepted method to test the variety of situations that may occur in a large scale software program. Sure, some programs might be slower with Java, but with the majority of leads being with Java, those woudl be rare.
3. Yeah, Java and C++ are practically the same, and the speed of a program is mostly dependent on the programmer. But I thought we were ignoring this, as the topic of this is to compare C++ and Java, not coding ability.
4. Huh, that's odd. One time I tried running a Java program with the server JVM, and it didn't work. I saw a few places online that said the client JVM was no longer used. I guess that info might be old, or I may have been misinformed.
1. You tell me that the link didn't argue C++ being faster than Java, and then you say it argued both ways? So, one way is: Java is faster than C++. And the other is... what?
The link does NOT argue C/C++ being faster than Java. If you'd read it, it explicitly states this:
Java is now nearly equal to (or faster than) C++ on low-level and numeric benchmarks.
As well as many other things.
I, ME, the person you're talking to... said it can be argued both ways.... because it can. And it has been for a few years now. No one can accurately determine which is faster, how and when.
I was basically just arguing that there's no reason to say C++ is faster. And Vice versa, as well.
Quote from Eavan »
2. The processor of a computer would hardly make a difference in the Java v. C++ speed benching. And also, that benchmark is a often used, and usually accepted method to test the variety of situations that may occur in a large scale software program. Sure, some programs might be slower with Java, but with the majority of leads being with Java, those woudl be rare.
If you look up any legitimate article, you'll probably see them state that benchmarks are not really a true indication of a full software program. Like the article I linked to earlier.
As well, you'll see that benchmarks range depending on how the tests are performed and on what systems.
The system, as well as the algorithms, definitely make a difference.
Quote from Eavan »
3. Yeah, Java and C++ are practically the same, and the speed of a program is mostly dependent on the programmer. But I thought we were ignoring this, as the topic of this is to compare C++ and Java, not coding ability.
Quite the opposite actually. I was not ignoring it, I was actually saying it is the most important aspect in programs.
I don't think this point should ever be ignored, ESPECIALLY when discussing differences between programming languages.
Quote from Eavan »
4. Huh, that's odd. One time I tried running a Java program with the server JVM, and it didn't work. I saw a few places online that said the client JVM was no longer used. I guess that info might be old, or I may have been misinformed.
1. You tell me that the link didn't argue C++ being faster than Java, and then you say it argued both ways? So, one way is: Java is faster than C++. And the other is... what?
The link does NOT argue C/C++ being faster than Java. If you'd read it, it explicitly states this:
Java is now nearly equal to (or faster than) C++ on low-level and numeric benchmarks.
As well as many other things.
I, ME, the person you're talking to... said it can be argued both ways.... because it can. And it has been for a few years now. No one can accurately determine which is faster, how and when.
I was basically just arguing that there's no reason to say C++ is faster. And Vice versa, as well.
Well, if you claim that it can be argued (I assume you mean validly argued) either way, why don't you show me some evidence of a valid claim for C++ supremacy?
Quote from CosmicSpore »
Quote from Eavan »
2. The processor of a computer would hardly make a difference in the Java v. C++ speed benching. And also, that benchmark is a often used, and usually accepted method to test the variety of situations that may occur in a large scale software program. Sure, some programs might be slower with Java, but with the majority of leads being with Java, those woudl be rare.
If you look up any legitimate article, you'll probably see them state that benchmarks are not really a true indication of a full software program. Like the article I linked to earlier.
As well, you'll see that benchmarks range depending on how the tests are performed and on what systems.
The system, as well as the algorithms, definitely make a difference.
Yes, benchmarks are clearly not some sort of perfect prediction method for the speed of a language, but they give a big clue as to what is likely.
And those tests chosen for the benchmark were chosen for their variety in the challenges they impose on the compiler/runtime.
Quote from CosmicSpore »
Quote from Eavan »
3. Yeah, Java and C++ are practically the same, and the speed of a program is mostly dependent on the programmer. But I thought we were ignoring this, as the topic of this is to compare C++ and Java, not coding ability.
Quite the opposite actually. I was not ignoring it, I was actually saying it is the most important aspect in programs.
I don't think this point should ever be ignored, ESPECIALLY when discussing differences between programming languages.
I never said that you were ignoring it. I was saying this information has almost no relevance to the topic, as we aren't discussing manual optimization. We're discussing the speed of the language in equally optimized code.
Quote from CosmicSpore »
Quote from Eavan »
4. Huh, that's odd. One time I tried running a Java program with the server JVM, and it didn't work. I saw a few places online that said the client JVM was no longer used. I guess that info might be old, or I may have been misinformed.
... Which makes me wonder what Minecraft is compiled with?... Hmm...
Hmm, that FAQ was written in 7/16/10, and I checked only a couple months ago. Still, I believe your argument for the continued use of client, I believe that was a misunderstanding on my part.
Quote from duke2112 »
Well my CG course developed a small OpenGL engine for practice.
Our Java version ended up being slightly faster then the c++ version.
And certainly not because of shoddy programming on the c++ part.
I've experienced similar speedups when programming applets with LWJGL vs programs in C++ using raw OpenGL.
1. Developer time (for a 1 or 2 person development team)
2. Code maintenance, alteration & extensibility
3. Platform agnosticism (optional?*)
4. Performance!
...or did Notch pick the exactly perfect platform?
Please only weigh in if you have extensive experience with Java, or another platform you feel is better suited to the task.
*Obviously a game like Minecraft really blows up in popularity running on so many platforms. Your opinion: is this too large a compromise, favoring exposure and sales over platform suitability?
Again, hypothetically, no disrespect intended toward Notch or any other Java developers who are obviously using their current skill sets to great effect! I'm just looking to get alternative viewpoints.
But Java is an OO program so as of the alpha and beta stages, I would imagine that that would be a good starting program for small Indie games like MC.
So what might be a realistic compromise for both developer management and performance? Or is Java the best choice? Again, assuming a new, similar project...not recoding Minecraft from scratch.
Almost everything you can do with one language, you can probably do with another in some way or form. The only exception I can think of is platform compatibility, which may require 'porting' the code to another language.
As for Developer time, tweaking code, performance and etc. That is all really dependent on what language you enjoy and know the best, as well as your own coding skills, and a little bit dependent on your focus platforms.
If you want to have an easy way to create cross-platform compatible software, Java is a good choice.
If you don't care so much about platform compatibility, C/C++ might give you better performance, although, not everyone is apt at that language and the language itself is not always suited to the developer's plans.
For creating games, there are a wide range of very useful languages these days. From C, C++, Java, C#, Visual Basic, or even Python. Depending on what your needs as a developer, what your specific intentions are, how you program, and simply your preference on syntax, it all lends to what language would be most useful to you.
In Notch's case, he knew and enjoyed Java more. In result, Minecraft has gotten to where it is today and available on practically every PC system, as well as playable inside internet browsers themselves. And yeah, it may have sacrificed a tiny bit of speed as opposed to a less compatible language like C++... However, there is nothing to promise Notch would have had success in programming in C or C++, and nothing to say Minecraft would have ever gotten popular.
But if you want to know what language would have the best performance overall? x86 Assembly.
I can't promise you that'd be a fun language, though... I can almost promise you that you'd go out of your mind trying to program a game in that.
And if that aint fast enough for ya... you could always try coding in pure Binary. :wink.gif:
Java is nice for minecraft because of the browser functionality and ease of use cross-system. Performance-wise it's not as great as some of the other languages, but it works fine enough
However, this does seem to be in the wrong section
I'm sorry, but that's simply just not true... If you have any significant amount of code, like a working game might have, then it's going to be an arduous task porting any language to another.
The only exceptions may be things like Java to C#, where C# was based off of Java and have quite many similarities, but even then it would take a little work to do.
I'm not arguing that, in fact, I basically said the same thing.
... And this one is very easily arguable.
There's no evidence to support this idea. The speed of a software product is more dependent on programming techniques and etc. of the developer than the actual language used.
As simple evidence of the ability to argue either side, I can provide this article:
http://scribblethink.org/Computer/javaCbenchmark.html
No, it really cannot be argued that Java is slower than C++ with modern Java JVMs. If you look at this link (Ignore the "client" JVM, it isn't used anymore.) then you can see that Java is faster than C++ in most areas, slower in a couple, and practically the same speed in some.
He should rewrite it in C++ for Windows. Thats would be dope.
What would the advantage be? A year of no development is a bad thing in my opinion, not to mention less stability, and lower likelihood of continued compatibility.
lol.... Wow.
1. You obviously didn't even bother to click my link. You just assumed it said C++ is faster, for some reason. Even though I was trying to provide evidence to support the opposite because someone else was arguing that.
Nothing I said needed to be corrected.
2. Yes, it can (and easily) be argued that C++ is faster than Java. It can be argued both ways, and has been for a while now.
The link you provided is just some benchmarks. It uses some algorithms to test speeds. However, it does not and could not indicate the speed comparisons between full software programs.
You also have to take into account the individualization of PCs and computer hardware and software in general. Making comparison practically impossible for 1:1 purposes.
I could provide another link, explaining how C++ is faster overall, but I have a feeling it would be pointless and go unread. (BUT! I'm not implying C++ or Java IS faster. Again, I'm only explaining how it can be argued both ways.)
3. Like I said before, the speed and performance of full software programs depends more on the developer and their programming and techniques than on the language or compiler used.
Programmers shouldn't see a large performance influence based on their chosen language
4. As far as I'm aware, Java still uses both a client and server VM, so I'm not sure why you said it doesn't use the client VM anymore. And you can still decide to run in -client or -server, so this kind of supports my idea that they both still exist...
Isn't there a better place for this topic? It's not exactly about 'Modding', really...
1. You tell me that the link didn't argue C++ being faster than Java, and then you say it argued both ways? So, one way is: Java is faster than C++. And the other is... what?
2. The processor of a computer would hardly make a difference in the Java v. C++ speed benching. And also, that benchmark is a often used, and usually accepted method to test the variety of situations that may occur in a large scale software program. Sure, some programs might be slower with Java, but with the majority of leads being with Java, those woudl be rare.
3. Yeah, Java and C++ are practically the same, and the speed of a program is mostly dependent on the programmer. But I thought we were ignoring this, as the topic of this is to compare C++ and Java, not coding ability.
4. Huh, that's odd. One time I tried running a Java program with the server JVM, and it didn't work. I saw a few places online that said the client JVM was no longer used. I guess that info might be old, or I may have been misinformed.
The link does NOT argue C/C++ being faster than Java. If you'd read it, it explicitly states this:
As well as many other things.
I, ME, the person you're talking to... said it can be argued both ways.... because it can. And it has been for a few years now. No one can accurately determine which is faster, how and when.
I was basically just arguing that there's no reason to say C++ is faster. And Vice versa, as well.
If you look up any legitimate article, you'll probably see them state that benchmarks are not really a true indication of a full software program. Like the article I linked to earlier.
As well, you'll see that benchmarks range depending on how the tests are performed and on what systems.
The system, as well as the algorithms, definitely make a difference.
Quite the opposite actually. I was not ignoring it, I was actually saying it is the most important aspect in programs.
I don't think this point should ever be ignored, ESPECIALLY when discussing differences between programming languages.
I wasn't sure, but I found this:
http://www.oracle.com/technetwork/java/ ... iler_types
Which still mentions both -server and -client compilers.
... Which makes me wonder what Minecraft is compiled with?... Hmm...
Well, if you claim that it can be argued (I assume you mean validly argued) either way, why don't you show me some evidence of a valid claim for C++ supremacy?
Yes, benchmarks are clearly not some sort of perfect prediction method for the speed of a language, but they give a big clue as to what is likely.
And those tests chosen for the benchmark were chosen for their variety in the challenges they impose on the compiler/runtime.
I never said that you were ignoring it. I was saying this information has almost no relevance to the topic, as we aren't discussing manual optimization. We're discussing the speed of the language in equally optimized code.
Hmm, that FAQ was written in 7/16/10, and I checked only a couple months ago. Still, I believe your argument for the continued use of client, I believe that was a misunderstanding on my part.
I've experienced similar speedups when programming applets with LWJGL vs programs in C++ using raw OpenGL.