[Development] Java Conquer Server

04/12/2014 17:22 CptSky#16
Please stay on-topic.

#Cleaned
04/15/2014 20:04 KraHen#17
Quote:
Originally Posted by Spirited View Post
No, he has a very valuable point. The point might be from the advice we gave him in his thread asking about programming languages and why we don't use Java, but it's still a good point. Java's socket layer is much slower than C#. There are uses for Java, and making a massive multiplayer server isn't one of them. Is it a useless project though? Well, the original programmer didn't know about NIO before posting here, and now he has something to research into and learn from. He learned Java in class and now he's going above and beyond what was taught by studying on his own, and I have no problem with that. Will the server be stable? Probably. Will the server be efficient? Probably not. Does that make the project useless? Not in my opinion.
Just so you know, there are commercial MMORPGs running their servers written in Java. Although I have to agree, the performance-critical parts are probably written with C and JNI. Still, Java is perfectly capable for this.
04/16/2014 02:21 Super Aids#18
Quote:
Originally Posted by KraHen View Post
Just so you know, there are commercial MMORPGs running their servers written in Java. Although I have to agree, the performance-critical parts are probably written with C and JNI. Still, Java is perfectly capable for this.
I am pretty sure Runescape ran on Java and most likely still does.
04/16/2014 05:13 Spirited#19
Quote:
Originally Posted by turk55 View Post
It shouldn't matter if the source is one of the greatest around or not, it is about the fact that he programming and learning new things which will increase his knowledge and experience. I am pretty sure your first C# source wasn't great either, what I am simply trying to say is: one will only learn by doing and experiencing.
I'm not saying Java is useless or this project is useless. In fact, I did my best to clarify that. I also wasn't commenting on his code - Java is inefficient, that's all I was commenting on. I didn't say mine was better, I didn't say any source was better. I didn't say he should stop working on his source, I didn't say he wouldn't learn anything valuable from the project.

Quote:
Originally Posted by Super Aids View Post
I am pretty sure Runescape ran on Java and most likely still does.
Runscape: 4 January 2001
C# .NET: 13 February 2002

Java was the only stable managed language back in the days. I don't judge them or anyone for making a server in Java. Would I use Java for a server? Probably not. That's just me though, and we have other options now.
04/16/2014 16:36 ganndlas#20
As with all Java posts in this forum we see a lot of discussion about wether or not Java is capable for this kind of load. We see a lot of preference for C#. Spirted has given use a slight substanstation for this: Java's socket layer is slow. However, Netty, a common used NIO library for Java, is said to handle even up to 1m connections. A common example of a game server programmed in Java is RS - as SuperAids already pointed out. We see Java usage in the RS pserv community as well. They do not take C# even in concideration, so I have a feeling that things are a bit biased for both communities.

So far I have not been able to find a real good comparison/benchmark for the socket layers of Java and C#. I would really like to see such an comparison (preferably with equal workload) and I would encourage to develop such a benchmark together. But even if the socket layer of Java has less throughput, I still think that it's only part of the deal.

Obviously code quality does matter, so you will need to think about the data structures, persistency latencies, handling of the packets. There are C# sources which have problems dealing only with a few clients. With only a few (mostly immature - as this thread) Java private servers going on, this is still a hard thing to measure.
04/17/2014 09:58 Super Aids#21
Quote:
Originally Posted by ganndlas View Post
As with all Java posts in this forum we see a lot of discussion about wether or not Java is capable for this kind of load. We see a lot of preference for C#. Spirted has given use a slight substanstation for this: Java's socket layer is slow. However, Netty, a common used NIO library for Java, is said to handle even up to 1m connections. A common example of a game server programmed in Java is RS - as SuperAids already pointed out. We see Java usage in the RS pserv community as well. They do not take C# even in concideration, so I have a feeling that things are a bit biased for both communities.

So far I have not been able to find a real good comparison/benchmark for the socket layers of Java and C#. I would really like to see such an comparison (preferably with equal workload) and I would engage to develop such a benchmark together. But even if the socket layer of Java has less throughput, I still think that it's only part of the deal.

Obviously code quality does matter, so you will need to think about the data structures, persistency latencies, handling of the packets. There are C# sources which have problems dealing only with a few clients. With only a few (mostly immature - as this thread) Java private servers going on, this is still a hard thing to measure.
Actually the RS Pserver community has kinda mixed languages between Java, C# and C++. Although Java is the most used one.

Also I don't think the size of a pserver would really get to the point of showing the difference between each language's socket performance.
04/17/2014 12:54 SteveRambo#22
Let's be honest, the only real reason not to use Java is probably the lack of unsigned integers and even that isn't really a big deal, but apparently Java 8 will have support for this, and there are still 3rd party libraries for unsigned support even if you use Java 7 or lower.
04/17/2014 17:12 KraHen#23
If that is the reason not to use Java, then there is no reason not to use Java. That`s the smallest concern.
04/17/2014 20:12 SteveRambo#24
Quote:
Originally Posted by KraHen View Post
If that is the reason not to use Java, then there is no reason not to use Java. That`s the smallest concern.
I still haven't seen any other good reasons not to use Java.
04/17/2014 20:50 Korvacs#25
I would say the reasons not to use Java are bad IDE's, being handcuffed by the JVM, poor sockets, lack of support for basic types.

I've said this in the past, just because a language is used for a specific task, doesn't mean its suited to it.
04/17/2014 21:07 Super Aids#26
Quote:
Originally Posted by SteveRambo View Post
I still haven't seen any other good reasons not to use Java.
[Only registered and activated users can see links. Click Here To Register...]
Comparison of C Sharp and Java - Wikipedia, the free encyclopedia

Although probably outdated it still gives a good view on it.
04/17/2014 21:55 SteveRambo#27
Quote:
Originally Posted by Korvacs View Post
I would say the reasons not to use Java are bad IDE's, being handcuffed by the JVM, poor sockets, lack of support for basic types.

I've said this in the past, just because a language is used for a specific task, doesn't mean its suited to it.
I'm sure there's at least one "high performance" 3rd party socket library for Java. I agree with the IDE part, although I never tried IntelliJ IDEA, NetBeans, or any of the other Java IDE alternatives, I just tried the horrible Eclipse IDE.
Quote:
Originally Posted by Super Aids View Post
[Only registered and activated users can see links. Click Here To Register...]
Comparison of C Sharp and Java - Wikipedia, the free encyclopedia

Although probably outdated it still gives a good view on it.
Those are just comparisons of different languages, it doesn't really say a lot about why you shouldn't use Java for CO pserver development.
06/15/2014 14:00 Y u k i#28
Qonquer ran pretty fine. Any updates on that proj?
06/15/2014 14:25 Korvacs#29
Quote:
Originally Posted by Y u k i View Post
Qonquer ran pretty fine. Any updates on that proj?
Qonquer had a fairly consistent freeze which I don't recall being fixed, certainly in the time I played.