[Question]C# Mono vs. Java Performance
I have been looking at writing some code for multiple platforms, nothing fancy but I have a choice of going with Java or C# Mono.
Thus I was wondering about performance of C# Mono vs Java.
I found some test in google but those are from 2008. Found only one or two up to date C# Mono vs Java reviews but they don't have any benchmark tests.
So if you have worked with both recently please let me know which one you liked more and which performed better for you.
Re: [Question]C# Mono vs. Java Performance
Microsoft owns C# and Sun owns Java.. No contest, learn Java ;)
C# won't become any more open in later releases, if anything more closed source and windows-dependant in the future. Java sued Microsoft twice in order to stay multi-compatible.
Efficiency depends on one's hardware and JDK.. Mono isn't even fully C#... This is no contest, efficiency has little to do with this... Java can certainly hang in terms of efficiency in the programming world, if that's what you're wondering.
Re: [Question]C# Mono vs. Java Performance
Quote:
Originally Posted by
s-p-n
Microsoft owns C# and Sun owns Java.. No contest, learn Java ;)
Oracle owns Java now, sues everything under the sun (no pun intended) and doesn't seem to see a need for communication with their community anymore (which sadly seems to apply to a number of former SUN products). Learn C#. ;)
Quote:
Originally Posted by
s-p-n
C# won't become any more open in later releases, if anything more closed source and windows-dependant in the future.
Actually, Microsoft opens up more and more parts of the .net Framework, made it's community promise and is a regular contributor to side-kick projects like Moonlight.
If you're unsure about the patent-situation, you can also use a Microsoft-approved Mono build from Novell that contains a lot of the proprietary technologies like ASP.net, Windows Forms or ADO.net. See the ECMA standard specification for the .net components to get a picture of what's proprietary and what's free.
You also see a lot of third party companies contributing code and keeping the free implementations alive (Unity3D comes to mind). Mono is also working on iOS and Android devices and formerly mentioned Unity3D engine powers a lot of the games you play there. No Java, but C#.
Quote:
Originally Posted by
s-p-n
Java sued Microsoft twice in order to stay multi-compatible.
Wasn't that like 10 years ago and about the JRE bundled in Windows/Internet Explorer?
Quote:
Originally Posted by
s-p-n
Efficiency depends on one's hardware and JDK.. Mono isn't even fully C#... This is no contest, efficiency has little to do with this... Java can certainly hang in terms of efficiency in the programming world, if that's what you're wondering.
I'd say efficiency for bytecode systems like Java or .net depends on runtime optimizations. Both Java and .net have both JIT and AOT features available, so the effective speed of an application depends on what you're doing and how repetitive the task is. To my knowledge the JIT compiler in Mono/.net works more effectively than Java's solution these days but I can't provide any solid source for this statement - so enjoy it with healthy skepticism. :)
The "Mono is not .net" argument is only partially true. As long as you specifically tailor your applications to be platform-independant by using features like Gtk# over WPF and don't make native API calls your application will usually work on all platforms without problems.
You should play around with both worlds for a bit and choose whatever suits you better. Ideally you construct a simple method that simulates your task and judge for yourself. Since both Java and C# are similar in syntax and method-names, you should be able to port your test case without too much trouble.
Re: [Question]C# Mono vs. Java Performance
Well if you want to get technical about it, Sun sued Microsoft and oracle hasn't yet.
Yes it was about Internet Explorer's Plug ins- and for good reason. Microsoft put a fair amount (40 or so) of changes to Java which made some Java Applets relying on these changes dependent on Windows Operating Systems with Internet Explorer.
That's a deformation of Java's Multi-platform compliant character.
After being sued for that, Microsoft was supposed to ship Java as it's supposed to be with no changes. They interpreted that as keeping an old version of java unchangeable which meant no updates for 3 or 4 years. That's an example of how Microsoft handles "open source" software.
For that they were sued again...
See a trend here? Microsoft has been trying to kill off Open Source for years, and somehow they've been winning..... for years.
Microsoft's "Community Promise"... Pff.. Don't make me laugh..
Microsoft Community Promise
All they're basically saying.. in a nut-shell, is this: "We promise not to sue you unless you try to patent our ideas."
That promise applies to all software on that list, and that's it.
There's no promise that all future C# versions will be bundled with this "CP" (Community Promise).
Quote:
Q: Does this CP apply to all versions of the specification, including future revisions?
A: The Community Promise applies to all existing versions of the specifications designated on the public list posted at /interop/cp/, unless otherwise noted with respect to a particular specification.
It's not Open Source, by any means. They're still attempting to monopolize the world, don't use anything they put out, please..
It's like pouring crude oil on a forest fire, or trying to blow away a tornado.. Just, don't.
Let me put it this way: Imagine a world where Microsoft owns the W3 Web Standards Specifications? That's what they're trying to do here with programming languages like C#. They own the patents for the languages, they own the hard-ware companies, they own the desktops these languages run on, there's no promise things will work on other Operating Systems as well as Windows. It says NOTHING like that- AT ALL. If anything it assures the opposite.
As I quotes from Microsoft's "CP; Q&A", future releases are not protected. This is just a marketing campaign towards the Open Source community, don't buy into it like every fucking dumb-ass buys into Windows 7. Like Windows 7, it's not worth it....
If they win this battle, open source is dead... Just saying. So don't you argue with me about Open Source.
If you want a language that works on all platforms, choose an Open Source language, not C#.
IMHO you should Choose Python. Oracle is too powerful, too... But at least some monstrous company is paying big bucks for truly Open Source promises.
If you want to throw punches at efficiency, I'll stomp on your motherboard. Microsoft languages are more efficient because of proprietary hardware and software patents with DirectX and other similar technologies.
Use OpenGL, use Java, use C++, use Python. Don't use DirectX or else, Microsoft will CONTINUE this loop of monopolization.
Get a fucking clue people.... This MS bullshit is... BULLSHIT.
Re: [Question]C# Mono vs. Java Performance
:laugh: it's like Canon fan vs Nikon fan
No offense meant tho.
I liked C# a lot and still do but I don't get anywhere far in C# (graphics, directx, xna). Can't say much about java but a bit of reading (since the day I posted thread) got me pretty much all I knew in C#. If opengl works out for me in java then I might dump C#'s XNA.
But for now I will stick with Java, s-p-n :thumbup1:
P.S. I am trying latest java which is version 7 because of their new nio.2 and some other stuff. Even tho it's still in beta (i assume), can it be used in production?
Re: [Question]C# Mono vs. Java Performance
If you are still open to ideas, i.e. not just Java or Mono C#, then I would suggest C++ and the Qt framework. See:
Qt - Cross-platform application and UI framework — Qt - A cross-platform application and UI framework
It is a great cross platform framework for C++, and is quite powerful, especially in the GUI department.
If you are limiting yourself to what you have initially stated, then, although throughout my years of programming I have used C# more than Java, I would highly suggest Java over Mono.
Re: [Question]C# Mono vs. Java Performance
I guess none of you have taken the time to analyse Java bytecode. The way Java code gets compiled is absolutely ridiculous, and definitely not efficient, hence why C# outperforms Java in most areas. I'm not so sure about Mono, though, so you may want to perform some benchmarks, yourself.
@s-p-n: Microsoft have been dealing with many open-source projects as of late (eg. IronRuby). They are slowly opening their arms to OS; They even released source for a large portion of the .Net Framework library, so your negative views towards Microsoft and OS-ness are highly unjust. Maybe your attitude would have made sense half a decade ago, but not anymore.
P.S. Windows 7 is a brilliant piece of software.
P.P.S inb4 "windows fanboy trololol" I <3 linux
Re: [Question]C# Mono vs. Java Performance
One of my main grievances with Mono, especially when compared with Java, is that next to no one has Mono installed on their OS -before- they find your application, and very few people would be willing to install such a piece of software specifically for your application.
Java, whilst somewhat similar - in the fact that it needs external means to run - is widely accepted and very few people using a Java-supported OS don't have Java on that computer. If they don't, then they are usually more than willing to install it, as it is somewhat widely used.
On the other hand, one of my main grievances with Java is that, at the very least through embedding in to websites, it is quite slow to load up, especially compared to many other programming languages - C# included.
In my opinion, it really is about the purpose of use. Embedding (powerful) applications in to websites - Java. Windows applications - Perhaps C#. Cross platform full blown applications - I personally would not use either.
Re: [Question]C# Mono vs. Java Performance
C++ with Qt is good.
My view on Microsoft is justified by the last few decades. Just because they're marketing towards the open industries doesn't mean they're better, it means they're expanding their horizons. probably because everyone like me was pissed at them and utterly refuses to rely on them.
Java may not be default on Windows, but what about Solaris? What makes you think .Net dependent software will work on Solaris by default, or at all.. Really you're all thinking, "Who cares, nobodoy uses Solaris.." I don't blame anyone for that, I just have wishful thinking...
What about .NET on Linux, Mac, and the BSD family? You have to get Mono first. Just like with Java when you get the JDK etc.
Every language needs some kind of compiler or interpreter, just because .NET comes with windows people assume just use that since everyone has it.. and windows.
C++ will run on windows, linux, BSD, AND solaris out of the box. C# will run on windows out of the box.. Python runs on most linux systems out the box, I imagine Java for solaris and dunno about BSD.. probably some computer science language like Pascal who knows.
My point on C# and windows is, that you're not going to get the same effect on other OS as you get on windows.. And Windows will turn around and say "Windows is better for C#" and when c# blows up everyone will still have windows.. They aren't stupid, their audience is.
Anyway, when Python and Java or even Pascal's funky ass is on windows, it really tries hard to make that Windows kernel run the language just as well as other OS- using the same code. And I don't mean to come off as "anti-windows" on this last point, but the Windows kernel isn't all that great, and certainly isn't superior.. The Unix Kernel, Linux Kernel, Mac's Kernel, the BSD Kernel, the Minix Kernel- all stand strong (sometimes strong-er) standing next to Mr. Windows Kernel. They're just done a little differently. Funny though, how all of those are Unix-like if not unix to the core, and how easy it is to migrate source code amongst all of them. Windows is completely different from the rest of the tech world.