Discussion in 'Bukkit Discussion' started by gearsgod, Sep 30, 2012.
Plugins that are written by professionals exists as a very small subset of all plugins.
Python is slower then Java, there's no opinion about it. It's a fact.
Correct, actually Java is the third fastest programming language right behind C++. Python is second slowest only beaten by Perl. The reason Java seems so slow and had a reputation for being slow is that most of the time, Java is used dynamically (video games, timing, and moving objects). Dynamic use is a million times slower than static use. If you are storing data, you are dynamically using something.
Java is an very fast programming language, but it is too easy for the programmer to put all that speed down the drain and forget all about optimization in his code. That's why most applications resulting from Java have extreme performance issues, however a select few have absolutely perfect performance that can be compared with C or C++ applications. Entirely depends on the developer really.
Why dose java require memory to be set? why can't it just use whats on the system?
It runs on a Virtual Machine...
Comparing programming languages in terms of speed is flawed. Compare compilers and interpreters, not the language itself.
You forgot the indent near "You".
Don't forget about pypy!
Isn't the vanilla server backed or fronted (not sure anymor ) coded in C and Java? Long time ago (I think it was on MC 1.8.1) I saw a tweet were Jeb said that he finished the server, like: Fronted finished in C and backed in java! (not sure about this tweet anymore... cant find it..).
Or does this only count for Minecraft_Server.exe?
I think only for .exe, since it has a GUI.
Why do you think the .exe requires the C redistributable?
It doesn't require it but you can make it in C if you want. I have no idea what this tweet was about... I wish I could find it now
The Minecraft_Server.exe is just a wrapper around the minecraft_server.jar that makes it use java to launch the internal jar. You can actually rename the file Minecraft_Server.jar and use it just like the normal jar download, even. No part of minecraft is written in C on either the client or server.
CraftBukkit needs the Visual C++ 2008 Redistributable for our improved (command line) console but we didn't write any C or C++ code there either, a library we use did.
I found his tweet:
It must either be about something else or a total joke. Why the hell someone would use the Unity libraries for a simple GUI?
I have no idea...
I'm on my school on a really old browser (FF 3.0), where Twitter desn't work properly, try to find the conversation history of that tweet. Maybe you'll get a clue of the subject.
Anyways, they didn't code the GUI in C#.
It says this:
There is more than one game jeb is involved with. He is likely talking about Cobalt.
Yeah, seems like it.
One of the aspects of the JVM (and the CLR too, but slightly less so) that makes it undesirable for programming video games and other performance-emphasized applications and programs is that the Garbage Collector likes to butt in at random times and free memory, when it's often more efficient for the developer to do it manually.
Java is a poor language. It's verbose and has a mediocre implementation of OOP, but the JVM really shines.
PyPy is still ridiculously slow compared to compiled languages. You can't speed up a an interpreted langauge to the speed of a compiled language (implementations on the JVM and CLR get pretty close, but they're still slower than Java/C# and implementations of scripting languages on the CLR like IronPython run poorly on non-Windows OSes)
IronPython is an excellent and constantly updated implementation of Python, but Jython is less so. I wouldn't use Jython.
An example of the slowdown when using an interpreted language over a compiled language, even if it is a bytecode/JIT interpreter, is JRuby over Java. JRuby is an implementation of the Ruby interpreter (MRI/YARV) on the JVM. Even though it is on the JVM, JRuby is actually not that much faster than MRI (the interpreter used in Ruby1.8+), and it's on par with YARV (the interpreter used in Ruby1.9+). JRuby is still 19.5% slower than Java running on the JVM, and 16.9% slower than Scala running on the JVM.
As a matter of fact, one of the alternative implementations of Ruby is called Rubinius. Rubinius has a virtual machine written in C++, but most of the code in Rubinius is actually written in Ruby itself. Rubinius actually performs better than JRuby.
Java isn't a "3rd fastest" programming language. There are numerous programming languages faster than Java, I can list a few. C, C++, D, Fortran, C# (on windows), Ada, Assembly.
Go with the gcc backend is probably faster than Java, but there aren't any specific benchmarks out.
Your signature says "Bukkit Donator". Donator isn't a word.
pypy is actually just about fast enough to implement real-time video processing in pure Python, which is quite cool.
I'd hope that Go would be faster than Java, but the GC is still somewhat leaky, at least on 32-bit systems (which do still exist). The Go GC is nowhere near as good as Java, but is sufficient for most real-world cases (apart from the ones in which you'd just write your code in C anyway).
In the shootout, however, Go's is about 6.02x slower than baseline - Fortran - and 3.42x slower than Java 7. There have been discussions of this on the golang mailing list, mostly pointing out that the code which Go is compiling for the shootout is unoptimised and unloved.
We're also getting seriously off-topic here.
Well just so you all know, I got it to the point I could login, load up a flatland world of just stone, anything else caused a crash because I hadn't implemented it.
I am just going to give up and throw this away, this was massive task and I am sure I am doing just everything wrong >.<
Python is too slow anyway. I would consider writing it in a low level language or language that has servers in mind, like C or Go.
Python would be better used as a plugin's plugin language.
Na, Leave it at Java so a shit ton of dev's don't have to update all of their plugins... In a new language.....
You're very misinformed...
You can do so already using Jython.
Separate names with a comma.