4 short years ago, Microsoft unveiled its new framework/engine for programming and running applications in a virtual environment, and the world was stunned. Microsoft had introduced a run-time environment that was for the first time a true “Write once, run everywhere” implementation, but that was far from being the end. With .NET 3.0 on the loom, NeoSmart Technologies takes a look at how far .NET has come and just how long it can keep going.
Besides being a true virtual machine implementation that really does work everywhere no matter how terrible your code is, .NET is paving the way for a revolution that’ll end with it either dead or the only language worth using.. and from what we see, it sure isn’t the first!
Update: Once you’re done reading, here’s a follow-up that should clear some things up.
Globability
In the past week, .NET has made several huge steps that bring it a lot closer to truly taking over the world. Following the July 27th release of RC1 for IronPython 1.0 at Microsoft’s CodePlex which allows for complete Python-powered applications to tap right into the .NET platform and it’s powerful resources with little to no code changes. IronPython is much more “just another language ported to .NET,” rather IronPython was the first domino to fall, a gateway to .NET globability.
Python is special. It’s a “hard-core” language that puts the programmer in the front-seat, but more importantly, it’s a dynamically typed language, and a preview of what’s to come. The old arguments that .NET would fail because of it’s insistence on strong static types and nominative structure just wouldn’t appeal to certain users was no longer valid – for IronPython is the very opposite of the “traditional” (C# or VB.NET) application.
So .NET can run on non-type-safe languages – but what does that mean? Besides the obvious “easier to code, less troublesome” applications, it means that .NET is now ready to go past the desktop. The .NET Framework was tied strictly to the desktop platform by its need for pre-compiled applications and static languages, but all that is about to change. Drastically.
Following the release of IronPython’s RC, just days ago, Queensland University made its own Ruby.NET compiler public, and with it, the age of the dynamic languages powered by .NET officially began. Ruby may be famous for it’s AJAX & Web 2.0 influence and its popularity with the in-crowd today, but as a .NET implementation, it means a lot more than that. Ruby is a dynamic language.
While Ruby.NET isn’t a pure dynamic language, it certainly is a step in the right direction – especially with Microsoft nearing the final 2.0 release of Phalanger (PHP.NET). Phlanger is complied PHP with complete access to the .NET Framework and it’s enormous resources and functions libraries.
Alright, .NET supports dynamic languages. Almost every major “big name” language has been ported to .NET, and many of those can be re-compiled as .NET CLRs without touching a line of code.. but if .NET isn’t perfect, who cares? Read on!
excellent article.
Yeah, but is it compatible, runtime and developmet, with Linux, MAC, and other platforms? If not, then it wont go very far. If it is, then good for Microsoft…
Joe
I’ve got some questions.
Since I also like to earn money be spewing out MS marketing FUD:
1. Where do I have to apply and how much money does MS pay?
2. Do you have to write the texts on your own or does MS offer a free version of it’s award winning “Microsoft Extreme Live .NET-Hype-O-Matic” software?
3. How much does MS pay for shill work?
[quote comment=”3699″]I’ve got some questions.
Since I also like to earn money be spewing out MS marketing FUD:
1. Where do I have to apply and how much money does MS pay?
2. Do you have to write the texts on your own or does MS offer a free version of it’s award winning “Microsoft Extreme Live .NET-Hype-O-Matic” software?
3. How much does MS pay for shill work?[/quote]
Obviously any article that says Microsoft isn’t a complete and total failure will get flamed – funny we didn’t think of that.
.NET is good. I coded in Java for years before I found .NET, and if you have a problem with something in particular, post about it instead of just generally griping about everything that doesn’t strike you the right way.
[quote comment=”3698″]Yeah, but is it compatible, runtime and developmet, with Linux, MAC, and other platforms? If not, then it wont go very far. If it is, then good for Microsoft…
Joe[/quote]
It is. Mono is an independantly-mantained .NET-for-linux initiative that runs on Linux and Mac, but is far from complete. However, Microsoft has started work on a partial .NET port for Mac, which promises to be good too.
Just one error:
You didn’t describe .NET in your post…. you described Java.
.Net changed my opinion on Virtual Machines. Seeing Java’s failure on the desktop, I had completely abandonned the idea of apps running on virtual machines for desktop usage.
Let’s face it, Microsoft has the best devs tools. And .Net shows that they haven’t lost their touch.
What’s not amazing is that the OSS fundies have already spammed the comment section of the article with their usual unfounded Microsoft hatred. -_-
Wise words, ronaldst.
It’s true. Java gave virtual machines and runtime environments a bad name with its bloat and incompatibility – but that’s not .NET, which most users can’t even distinguish from a Native app!
.NET is the best thing that ever happened to the Microsoft world. However, I don’t think .NET will take over the rest of the computing world anytime soon. It success will be limited to the Windows Platform, and mainly with desktop and front end applications. The server side is slowly becoming the realm of Linux. Yes!, Mono runs on Linux, but it will take Mono a long time before it reaches the maturity of the Java Virtual Machine. Plus, I don’t think Microsoft you let any of its product run in anything but Windows( maybe Macs.)
So… Congratulations .NET you are a great product. But you still have a long way to go to take over the computing world.
A true ?Write once, run everywhere”? Are you nuts?
I’m with ronaldst on this one. I developed in Java for years, and I like it as a language, but the performance just wasn’t there. Then Microsoft released .NET, and I tried out the framework using the J# language. Once I learned C#, I realized what a superior language it is compared to Java, and I haven’t looked back since. Besides having better multi-language support (thank you, CLI), I’ve found that the CLR performs much better than the Java VM for most tasks. Visual Studio 2005 is the best development environment I’ve ever used (even better than Eclipse IMO). I think there’s a lot of other Java guys out there that would really like .NET if they gave it a chance instead of shrugging it off just because it’s a Microsoft platform. I gave it a chance, and now I can’t fathom going back to Java development.
This is quiet possibly the most bullshit laden article I’ve ever had the misfortune to read.
Write once, run anywhere with .Net fat chance. There are several core APIs that are MS only and are not allowed to be ported to the Mono environment.
http://www.theregister.co.uk/2005/05/26/ndigo_mono_no_no/
The libraries are always more important than the language and runtime. Perl proved this decades ago with his huge collection of write once run anywhere libraries.
As for dynamic language support if I were to port Perl to .Net which libraries would you use. the .Net framework libraries or the CPAN ones. If you choose the .Net libraries then you’re not writing real Perl you’re just writing C# code with a Perl “skin”. This is exactly what annoyed the VB6 developers so much VB.Net wasn’t VB6 it was C# with a VB skin.
“The Engine Takes Care of Everything” I don’t know where to start with this. How you can truly believe that 2 runtimes provided by 2 different vendors will run with the identical behaviour is mind boggling. Even more how you can believe that 2 different class library implementations by 2 vendors will be identical.
In the aviation world triple redundant systems are created by different vendors on different platforms to take advantage of the fact that they will run differently and hope that between the 3 system the general consesus is in line with the spec.
You trust your life regularly on the fact that from independent vendors comes distinct behaviour.
In this respect Java has a distinct advantage 1 vendor (Sun) provides the same runtime across multiple platforms. Leaving the only real differences to be the real weird platform discrepencies that are unavoidable.
“Technology at the Fingertips”
Java has exactly the same late binding principles as .Net so how this can be used as a better than Java argument is an outright lie.
“Stable Coding Platform”
The Win32 API has been stable for what seems an eternity. Once Vista is released it’s API’s will HAVE to be stable also. This is a fact of life.
I can’t think of any mainstraim language that has the type of incompatibilities you’re talking about and this certainly doesn’t apply to Java. The Java API introduces new functionality at every release but rarely removes it.
.Net is no more stable than any other language I can think of.
“Backward Compatibility”
Java has the same cover of platforms as .Net. How can you use that as an argument.
“Performance”
I love your complete lack of numbers to back up your assertions. There is no significant difference between Java and .Net and C++
http://www.shudo.net/jit/perf/
“Garbage Collection”
I work on a CAD product with an embedded lisp interpreter with the worst garbage collector imaginable. Even then we spend so little time in garbage collection it’s not worth optimizing it. Garbage collectors haven’t been a performance issue for decades. If you actually manage to measure the difference between Java and .Net in this respect. I’d be impressed.
“Microsoft develops the platform”
If Microsoft are using secret APIs to imporve the .Net api I’m pretty sure that is an anti-trust issue using the OS monopoly to gain an advantage in other areas of business.
The amount of interfacing .Net actually does with the Win32 platform is trivial. a little bit of windowing and a little bit of UI the rest is or should be pure .Net code in which case the underlying OS has no relevance at all.
“No Backwards Compatibility ? Not Really”
I like it when you contradict yourself. Java has provate JRE installations for those cases where you want a very specific JRE, WebStart can select a JRE based on version number for you. It can even download and install the relevant JRE if you don’t have it.
“Vista .NET OS”
There are several research project to implement OS’s in Java e.g. jnode. It seems that this inferior technology is mature enough to implement an OS.
I think I’ll end with a quick remonder of how far MS has progressed the state of the art.
It’s 2006 and I’m still using ImageLists and setting an index to an image to display in a toolbar.
First of all, I should not be commenting on a pro-m$ article. It’s very clear, you are a pro-m$. How much money do they pay -to- you?
What’s the meaning of multiplatform?
Java is multiplatform BY DESIGN and the true ‘write once, run everywhere’.
.NET is basically a Java copy. What’s different? They added support for more languages, the CLR and other -not so killer- features, so it wouldn’t be exactly the same thing (their solution for Enterprise. Ten years later!!).
Shouldn’t m$ be working on something like Mono, not Novell?!
Ok you’re right, .NET is taking over the world… the m$ world.
“Shouldn?t m$ be working on something like Mono, not Novell?!”
It’s not for Microsoft to waste their time on Linux. Novell loves to waste their time with Linux, so let them do it.
“Ok you?re right, .NET is taking over the world? the m$ world.”
Well, at least you can get programs to work instead of trying to get just about anything to work right on a broken platform of incompatible software.
Ok, let’s be very clear on this topic… while I can see why some people are blasting this article, it all boils down to this:
1) .NET has provided a powerful development/runtime tool for Windows developers.
2) Yes, you can say it’s “write once, run anywhere”, but you have to add “anywhere that Microsoft has ported the CLR”, which in this case is Windows.
3) The Mono project done a wonderful job of making this available on Linux/Unix, but it’s not .NET… at least, not the way MS sees it.
4) MS developed C# because Sun wouldn’t let them change Java. You can argue about this all you want, but MS was definitely “polluting” (for better or worse) the Java language.
I’ve been heavily involved with both Java and Windows, and I still prefer Java (grudgingly). Java definitely runs on more platforms, but has added bloat from years of growth. MS’s technologies are good, but there is definite “lock-in” to MS, which I despise.
And for those people who complain about only Java running in the JVM, do some research. There are several other languages that run in the JVM, including some truly dynamic ones.
Finally, if .NET is so freaking wonderful, why doesn’t MS use it for their own Windows apps? They don’t, and that bugs me to death. Eat your own dog food, or throw it out. At least Sun uses Java for their own products.
if they hit the limitation of .NET, then probably everybody would go back to native compiler & assembler.
Wasn’t Vista supposed to be all .net. what happened?
does the new office2007 use .net?
oh, but they do have Paint.NET thats supposed to be a free Paint replacement. does that proove .net’s enterprise viability! what next? are we going to get a free Winzip replacement written in .net.
let .net take over MS first before settng its sight at rest of the world
[quote comment=”3723″]oh, but they do have Paint.NET thats supposed to be a free Paint replacement. does that proove .net’s enterprise viability! what next? are we going to get a free Winzip replacement written in .net.[/quote]
Why not?
And just for the record, Paint.NET is as powerful as Adobe Photoshop Elements but 4 times as fast… (of course Photoshop Elements is written in Native C++)
Who agrees that MS should have written at least Avalon in unmanaged code?
@anonymous: Well they did, didn’t they?
I must say, quite astinonishing biased article.
Not even the Dev Tools for .NET are written in .NET. Look at the Java world, it has proven that large applications can be written in Java.
.NET is no way backward compatible – i meen the api – look at system.enterpriseservices: It´s only partially implemented on some MS OS, depending on the underlying OS capabilities, That´s about the worst of design choices I can think off. My guess is, WinFX will be of the same kind.
Snd so on and so on – I totally agree with commentor “sp”.
How nice to read this comments… most posts by “black” (unregistered) people can be taken serious, whereas most of the stuff coming from the “blue” (registered) people is just crap or senseless FUD. Best example are sp, very senseful article (why do you not respond to _that_ one?) and on the other side “Docwiz” with statements like this:
“Well, at least you can get programs to work instead of trying to get just about anything to work right on a broken platform of incompatible software.”
Well, the sad truth for you is, I didn’t had to particulary try, but insted just found out that our J2EE apps using many additional (and btw all open source == free) frameworks, like Hibernate, Velocity, … just ran on multiple platforms without any additional work to do, deploying on a Tomcat server, also open source (You have to pay for IIS, you know?).
So I ask myself, what is your point, really? I can get programs to work with .NET? Lol, this is nothing new for me, what an outstanding feature?! Right, your point was: “The other shit doesn’t work anyway”.. That’s just the usual bullshit of every person which just don’t know _nothing_ else than it’s own shit. I don’t know it, so it has to be broken, it has to be incompatible.
If you want to discuss seriously with other developers, better not show off your incompetence so fast.
[quote comment=”3732″]How nice to read this comments… most posts by “black” (unregistered) people can be taken serious, whereas most of the stuff coming from the “blue” (registered) people is just crap or senseless FUD.[/quote]
That has nothing to do with it. Black names simply means that the commenter has elected not to specify a URI in the “Website” field of the comment form (like you).
Blue means they have specified a link to a blog or a personal site. Nothing more, nothing less.
Registered members can be of either color, so your attempt at saying registered members of NST spread BS and FUD (if that’s what you meant) is a complete failure… and just for the record, I’m not a member, but I have a blue URI! How’s that for FUD?
[quote comment=”3733″]…[/quote]
You’re right on that. I just identified some of the folks.
Consider my posting as a reply to DocWiz’s ridiculous comment then.
Thank you.
No harm done my friend 🙂
(Douglas Adams is the best!!)
I didn’t have a chance to reply to sp’s comment earlier, we’re busy readying for the move, but here’s the way I see it.
1) There are no “core APIs that can’t be used” because APIs can’t be patented and that is against one of Microsoft’s many anti-trust settlements. All APIs must be accessible on all platforms, so scratch that idea. Never trust The Register or The Inquirer, especially when it comes to technology.
2) .NET IDE and Framework make both the language’s native libraries (such as Perl and Ruby’s) as well as the CLI libraries that .NET is famous for available to the devs. No one expects you to give up the functions and libraries already available, .NET simply gives you more power to work with. VB, IronPython, Phalanger, Ruby, or Perl, the old libraries are still there.
3) “How you can truly believe that 2 runtimes provided by 2 different vendors will run with the identical behaviour is mind boggling.”
Simple: one is for Microsoft, and the other is for Linux. The Linux one copies straight off the behavior of the Microsoft implementation. Have you had a look at ReactOS? It does just that with the WINE engine, except on a bigger scale porting the entire Windows architecture to a new kernel, and you can still expect them both to run exactly identical (as soon as the WINE project finishes that is..).
4) No one said anything about Java being terrible or not having late-binding, in fact we made it clear that these are the same arguments used for any virtual machine/run-time environment.. Just because they apply to Java doesn’t mean that Microsoft can’t benefit from them too.
5) Yes, the API is stable within a build, but do you actually believe that the Windows API hasn’t changed since Windows 3.11? If so, you are sadly mistaken. But .NET runs on everything from Windows 98 to Windows Vista without a hitch. Stable.
6) Again, no one is accusing Java of not being backwards compatible; but while .NET uses its form of backwards compatibility to minimize bloat, Java is arguably the most bloated platform out there. Re-read that section, .NET 2.0 breaks backwards compatiblity, and that’s a good thing… in a way. Read it.
7) Our team did indeed measure the difference between Java and .NET garabage cleanup, and the difference is enormous, not negligible. Try this: create an empty .NET form in C# or whatever language you choose, and run it. Open taskman and look at the memory consumption, then minimize the application and check again. Big difference.
8) We made that much clear: We don’t know why Vista isn’t a .NET OS, but we also know that .NET isn’t yet mature enough as it is to power an OS. Read that section again too… you realize we’re saying Microsoft could have made it more powerful.. They just didn’t and we have no idea why – they didn’t consult us first.
9) “It’s 2006 and I’m still using ImageLists and setting an index to an image to display in a toolbar.”
Well no wonder these were the arguments you brought up.. Just Google for some custom .NET toolbar controls/classes and you’ll see a whole new world. That toolstrip/toolbar control is just a template, a sample of the power .NET brings if you will. Really learn .NET and you’ll see what I mean.
Hope that clears things up 🙂
How could .NET be a ‘true’ write once run anywhere when .NET only works on Windows???! Only Java fits the write once, run anywhere description ATM!
Don’t you think it’s a bit lame to post an opinion piece with such a title on an MS fanboy site?
Short answer to the title question: No, it’s .NOT
(and that’s for good)
fanboy
[quote comment=”3698″]Yeah, but is it compatible, runtime and developmet, with Linux, MAC, and other platforms? If not, then it wont go very far. If it is, then good for Microsoft…
Joe[/quote]
You partly miss the point.
First, it is THE way to develop for Windows – at least for now and going foward. For Vista, all the cool new features are part of .NET 3.0. If you are a developer and are developing for the Windows platform then you really should be into .NET.
With respect to Linux, Mac, etc – well these are platforms that for obvious reasons Microsoft are not targetting. For Linux/Unix, there is Mono – a .Net clone. This provides a degree of source code compatibility.Mono sadly lags well behind Microsoft in terms of functinality.
May I just ask how do I run F-spot under Windows? Seems every effort is being put in making .NET available to Linux, but if I understood it well, this .NET thing is about running an application in any platform with a virtual machine on it. Well, I have my .NET 2.0 framework installed. I’ve dowloaded F-spot and I haven’t got a clue on where to click on to see it running in my Windows.
Well, Java guys,
I guess I need to point out the last sentence of what “Computer Guru” said, you obviously miss that point:
“Really learn .NET and you?ll see what I mean.”
I have entensive experience in both .NET and Java platforms, in big projects. I personally find myself much more productive when I’m using .NET.
@ComputerGuru
1) Your confusing the notion of an API and the fact that implementation of an API may necessarily infringe patents. The interface must be public, but it’s not much good if you have to infringe patents to implement it.
2) As far as using non-native libraries, the point of that is syntax. If you’re looking to build a cross-platform solution, you stick to the native language libraries. (Same goes true for Jython, JRuby, etc., on the JVM).
3) If you’re trying to suggest that Mono is .Net, don’t. Not even Miguel de Icaza would say that. Mono’s point is to bring the CLR and C# to Linux, while making as much of the .Net APIs available as possible to reduce porting risk. It is NOT .Net.
8) Microsoft learned the same thing Sun learned when it tried to create an all-Java OS. Neither the .Net nor Java virtualization capabilities are close enough to native performance to make a VM-based OS plausible. They need to learn lessons IBM learned a long time ago before they can make that happen (z/OS and i5/OS are virtual machine-based OS’s and they rock on performance).
Generally speaking, the problem with the .Net-fanboy syndrome is not so much the facts (many of which are true), but the hyperbole. Many people have a BS detector, and the article sets it off from the first mention of “Write Once, Run Anywhere” (which, I’m sorry, .Net isn’t even close to).
Stick to the truth rather than the exaggerated version, and you’ll do a lot better.
Hamed (and others),
It is all really comparing apples and oranges here, which leads to actually nowhere. I must say I don’t have any experience with .NET, but I know, without actually using it, that I will be more productive using Java, because of the fact that I want to support a lot of platforms and I really cannot be bothered (anymore) to rewrite stuff for every platform (There is more out there than Linux and Windows)
(this was actually the reason I started using Java in 1999, instead of using MS/Windows only progamming tools)
So I guess it just boils down to the question “What problems are you actually solving with the language and for what platforms ?”.
Mvgr,
Martin
I represent a company which previously has a CTO that have proposed, developed and failed in implementing a .NET solution.
Now the budget has been expanded and the people responsible has been terminated, the company is in its worst year.
With a limited budget that is only enough for hardware upgrades throughout the group of companies, can you tell me how I can turn the company around by developing, implementing and deploying .NET without paying a single cent to Microsoft at all?
Alternatively, I can use the limited budget I have to buy new hardware servers, implement using Tomcat, J2EE, MySQL that is good enough to take out any .NET system cos I don’t have to pay Microsoft anything.
After reading your article, I really feel inspired by the way technology is seen from the ground level and the effectiveness of marketing hype that has been sold again and again at every MSDN seminars.
Honestly, a lot of companies out there simply cannot afford to continue using any Microsoft technologies and to listen to anymore people like you selling all this .NET crap.
Bottom line is – If Microsoft has an open source version of .NET implementation that can be used at enterprise level, I believe that would make a difference.
By the way, stop wasting your time on all these .NET crap. Do something good. Help someone. Rather than ranting about how .NET is great. .NET is not going to save the world you know. It is just another Microsoft technology that cost money like Windows.
Docwiz:
Please, stop posting stupid comments.
Are you sure big enterprise is wasting time/resources with linux?
They’re not. Novell knows that.
If linux is a broken platform, why is m$ using it in its own servers?
http://toolbar.netcraft.com/site_report?url=http://search.microsoft.com
http://toolbar.netcraft.com/site_report?url=download.microsoft.com
http://toolbar.netcraft.com/site_report?url=http://video.msn.com
… this is a large list. m$ is using windows too, but linux is appears several times.
Just google for “microsoft uses linux” and you’ll find the answer, like this:
http://www.theinquirer.net/default.aspx?article=10413
These are just examples, now do you still think Linux is a broken platform?!
What’s the meaning of multiplatform? I asked before. Only one operating system doesn’t mean multiplatform, does it? Java runs on linux , windows, mac, and more. If that isn’t multiplatform, how should it be named?
I think you should read a little before posting non-sense comments.
NeoSmart seems to be using Linux, TOO!
http://toolbar.netcraft.com/site_report?url=http://neosmart.net
[quote comment=”3775″]NeoSmart seems to be using Linux, TOO!
http://toolbar.netcraft.com/site_report?url=http://neosmart.net%5B/quote%5D
[quote comment=”3741″]Don’t you think it’s a bit lame to post an opinion piece with such a title on an MS fanboy site?[/quote]
http://neosmart.net/blog/index.php?s=Mac
http://neosmart.net/blog/index.php?s=Linux
http://neosmart.net/blog/index.php?s=ReactOS
http://neosmart.net/blog/index.php?s=FireFox
http://neosmart.net/blog/index.php?s=Opera
Not fanboys as far as I can see…
Props to NeoSmart for another great article.
It read the article.. but only it made it part way thru the comments. I certainly don’t expect my opionion to matter to anyone, but here it is anyway.
.Net and the MS dev tools are really all that keep me hanging onto windows at this point. I love using Linux and the amazing tools & applications availabel for it. However, I am a programmer and I can’t find anything that compares to the MS tool; and I say that with regret. BTW, Eclipse is awesome just not everything I need.
[quote comment=”3716″]”Shouldn?t m$ be working on something like Mono, not Novell?!”
It’s not for Microsoft to waste their time on Linux. Novell loves to waste their time with Linux, so let them do it.
“Ok you?re right, .NET is taking over the world? the m$ world.”
Well, at least you can get programs to work instead of trying to get just about anything to work right on a broken platform of incompatible software.[/quote]
At least Linux is NOT a broken platform (…of incompatible software blah blah blah), as Docwiz said.
At least Novell is NOT wasting their time on Linux. They are making money with it. 🙂
you know, i’m going to let the flame war go on without commenting on the validity of any of the arguments.
however, i would like to point out that “on the loom” appears to be a made-up phrase, unless you were referring to weaving. i think perhaps you meant “looming” (as in “looming on the horizon”).
globability? not a real word there.
also: please, learn the difference between plural and possessive.
“7) Our team did indeed measure the difference between Java and .NET garabage cleanup, and the difference is enormous, not negligible. Try this: create an empty .NET form in C# or whatever language you choose, and run it. Open taskman and look at the memory consumption, then minimize the application and check again. Big difference.”
This is a bogus comparison, and it shows is that you misunderstand (quite reasonably, its a complicated subject) how the JVM works. As I understand how the CLR works (and I may be wrong here), is that it allocates memory to its virtual machine, and releases it back to the operating system when it is garbage collected. Garbage collection on the JVM on the other hand is more intelligent than that, and it may not depending on whether it thinks it is worth the cost. What is shown in the task manager certainly does not reflect how good the Java garbage collection is!!
If you want to test the performance of the JVM garbage collection, you will have to measure it using Java code.
The task manager doesn’t even relect how much memory a Java particular JVM is actually using very well. Lets also take the situation where you have multiple Java VM’s running, the actual memory used is like that shown in the task manager, it counts up everything for that process, but because of clever use of DLL sharing, the actual memory used is much less. This is not the fault of the task manager, it was simply not designed to cope with these complicated issues.
However, put both of these things together and it does put something like .NET in a positive light that it has not exactly earned. What you get is a receipe for mis-understandings and mis-information. This is unfortunately not something that will be resolved any time soon.
When Microsoft first released the .NET 1.0 Framework, it was Java with a different name, slightly better performance
Talk about jumping to conclusions…. have a look at.
http://www.shudo.net/jit/perf/
In my own tests JDK 6 outperforms .NET by a factor of 4.
I don’t give much credibility to anything published on neosmart.net, it seems to be a bunch of kids posting outrageous pro-.NET articles, completely ignorant of the latest Java tech or anything else resembling reality!
All the articles i have read on neosmart.net read like they are written by excited teenagers.
It is an easily provable FACT that Java implementations are faster than the latest .NET implementations. Even JDK1.4.2 (of 2003 vintage) with -server switch is capable of beating the latest CLR.
A simple google reveals some interesting results:
http://blogs.sun.com/dagastine/entry/sun_java_is_faster_than1 (java faster)
http://gregluck.com/blog/archives/2005/01/index.html (java faster)
Good job linking to articles written by Sun themselves – really objective!
Java JVM also supports dynamic languages (groovy,jruby).
is .NET first time a true ?Write once, run everywhere? implementation ???
It simply isn’t true. Java was before .NET. And even now I don’t know any people running .net on Linux servers. But I do know a lot of people running Java, because they dont need to spend a penny on licenses.
Yes, I have been Java developer for more than five years, but I also have worked with .net. I still use it sometimes if I need to write some utility for windows. But c# is nothing special, it’s just a java clone. And I enjoy to work with Java IDEs (let’s say , Intellij) much more than with VS.
“Good job linking to articleS written by Sun themselves – really objective!”
I provided three links in my two posts. Shudo.net is not from sun, neither is gregluck.com. Both clearly indicate superior performance of Java over C#.
The only reason I cited the SciMark results on Sun.com is that I have run SciMark on C# and Java myself, and also found Java to be faster. I didn’t feel like looking for my own results (which I have saved).
Since you insist i have run the tests myself. Here are my SciMark results (Higher is better):
Composite score:
Java 6 with -server switch: 359.24
Java 5 with -server switch: 298.009
Java jdk 1.4.2 (from 2003!) with -server switch: 301.308
C# on MS CLR 2.0 (release configuration build using VS2005): 202.36
Java jdk 1.2.2 (from 1999!): 199.02
All test run on a AMD Athlon 3200+ 1GB RAM Win XP pro SP 2
If you still don’t trust my numbers, run the benchmark for yourself.
The Java version can be found here: http://math.nist.gov/scimark2/
The C# source is here: http://rotor.cs.cornell.edu/SciMark/
I have also tested the sorting performance using List.sort() for C# and Collections.sort() for Java. I’m sure you can also test this by writing a simple benchmark. Just be sure to use the same data set for both – strings loaded from a common file is the easiest.
Results as follows (same config as above):
(lower is better)
Java 6 -server : 1986 milliseconds
C# on MS CLR 2.0 release configuration build (using VS 2005): 6193 milliseconds
Run the SciMark tests for yourself to check, and post your results back here in the interests of a fair comparison.
Another example of an independent benchmark (from 2005):
http://www.csd.uwo.ca/~watt/pub/reprints/2005-synasc-scigmark.pdf
Its from the “Ontario Research Centre for Computer Algebra” That should be objective enough.
Take a good look a the results (Table 1 on page 6):
Composite scores (higher is better):
Java v.1.5: generic score: 57 specialized score: 441
C# v2.0: generic score: 24 specialized score: 320
And as for your claims about the “failure” of Java:
http://java.sys-con.com/read/307112.htm (Java most popular language amongst north american developers, usage of VB.NET dropping.
And the job market for Java VS C#:
http://mshiltonj.com/sm/categories/languages_a-o/
Java jobs: 15194
C# jobs: 5608
Lol.. maybe it’s because you need 20 Java developers to be as efficient as a single C# developer….
Or maybe it’s because C# isn’t .NET alone.
C# + VB.NET + J# + ASP.NET = 95% of .NET
You’re only accounting for C#, which is rather unfair.
“Lol.. maybe it?s because you need 20 Java developers to be as efficient as a single C# developer?.”
Usually people post citations and sources when they make an assertion like that, otherwise it is just fanboy-ism.
I’m not sure why I am bothering to answer that, but I can’t possibly see it can be true for the general case. Am I right in saying that Java has a far more fully-features library set than C#? I think I am. Therefore, Java must at least match if not exceed developer productivity over C#.
Unless you have some well reseached information on the matter, I wouldn’t bother posting stuff like that. It just makes C# people look bad.