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!
My first reply was a joke, my second was serious.
Java is an excellent and more-or-less efficient language. C# is just a bit more excellent in my opinion 🙂
But seriously, count all .NET jobs for real, take into account the fact that most businesses don’t go with the flow (some still use Cobol!!), and that it takes time for languages as new as C# to gain ground – you’ll realize that job counts do not qualify as a factor for language success.
” job counts do not qualify as a factor for language success”
Agreed. But surely that is rather obvious. If a brand new beautiful language came out tomorrow that everybody loved and wanted to write in, job counts would not qualify as a factor for language success for a very long time.
I take the the implication that your statement is about the future. What happens tomorrow is anyones guess. However, job counts very much qualify as a factor that a language has succeeded in the market.
Personally, I can’t see that .net has very much going for it over other solutions. Maybe I would be more interested if the source was available and I wasn’t locked into Windows (and don’t bother mentioning Mono, it will always have huge sections of functionality missing and/or out of date).
It’s funny. It’s as usual on neosmart.
There are some guys around who provide facts about Java vs .NET. And then there are MS fanboys who just don’t care about facts.
Give up the fight, if you want to have a reasonable discussion, go somewhere else, you won’t have it on this website 🙁
Kieron, I agree.
If Microsoft only released a redistributable (even if closed-source) framework for Linux and OS X, it would certainly become a much more productive venue.
“Java is an excellent and more-or-less efficient language. C# is just a bit more excellent in my opinion :)”
The main problem with Neosmart is that Java folks are attempting a serious debate, backed up with citations (e.g. the performance comparison cited above). Most of the C# folks here are basing assumption upon assumption, based on opinions.
The whole article that sparked this discussion appears to be based purely on the opinions of the author, which seems to be based MS press releases and marketing. There is no evidence whatsoever of any credible research. It’s not that the article is written badly, it’s actually quite readable, the problem is that it makes many false assumptions about Java. e.g. Java not being portable. Applications written with Java version 1.0 on Solaris (SPARC) in 1996 work without recompiling on a Windows or Linux system on x86 using Java 6.0 more than ten years later. I can only guess that the author has little interest in Java (his choice), and doesn’t really know much about it.
I was also referring to compability in my previous post, as this was mentioned in the article. Just in case somebody reads my previous post and jumps to the conclusion that I don’t know the difference between portability and compatibility 🙂
I’ve worked on both Java and .Net and have found both to be more or less similar in terms of my general productivity with a couple of notable exceptions:
.Net thick client development targeted at Windows is of course far more productive on .Net – not surprising.
Visual Studio is complete crap. Without the Resharper plugin, it’s next to useless especially in terms of refactoring and intention support when compared to Eclipse and InelliJ. Even with Resharper, it still doesn’t quite match the power that the others put at my fingertips.
ASP.Net is a really annoying way to do web apps for anything which deviates from the ‘normal’ web application. I once had to go through all those auto generated pages stripping out all the HTML and leaving only the ASP tags – then go and rewrite all the HTML and CSS around them by hand. That said, this was on a VS 2003 and I’ll be the first to admit that VS2005 may have improved things.
Microsoft also has no support for ORM which has been around for years now. You still have to use NHibernate. OSS. Hurray.
Ultimately, if your application follows the flow that the .Net development environment enforces, you’ve hit the sweet spot and will be productive. But if you need to deviate, god help you, because you simply can’t mix and match portions of the stack like you can in Java.
i saw a lot of java programs and they really look bad. the UI is dirty and not very enticing to use. I think the performance difference is not noticeable with the fast computers used by users nowadays.
i think what we should consider how much you can do with each language. i test myself and i have created a simple MDI photo-editing program using .net with brush/eraser/color selection/save tool for only 1 and 1/2 hours. is that possible in java?
I only wish that SUN could sue the pants off Microsoft for taking the idea and concept of using a VM. I’m glad that SUN open sourced Java. Doing so will only enhance it even more. Now, if only wish Mr Gates would give credit where credit’s due, because he sure as hell, didn’t come up with the idea.
No, he most certainly didn’t. Though you gotta admit, .NET implements a VM much more elegantly (and it feels native too!) than Java – but goddamn, they gotta focus on cross-platform a LOT more: http://neosmart.net/blog/2007/please-microsoft-stop-holding-net-back/
“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++)”
Ahahaha. This tells you how seriously you should take this post. I like Paint.net but it doesn’t even have soft paintbrushes.
Java and C# (the languages) are 90% the same. One is not massively more productive than the other. Java is slightly faster but not enough to worry about (plenty of people like ruby which is 10-30x slower)
The Java standard library is significantly better than the .NET one. Windows forms are a bit quicker than Swing but much less full featured as it is basically a thin wrapper on Win32. I don’t know how the Mono implementation is coming along but most Mono developers use gtk bindings instead. There is also the ever-present threat of legal action against Mono by MS.
90% of Open source libraries for .NET are ports of Java ones e.g. Nant, NUnit, Spring.NET.
JRuby is significantly better than the .NET Ruby implementations.
Really learn .NET and you?ll see what I mean.
I work with .NET and Java. If you really learn .NET and compare it with Java objectively, you’ll will see why .NET is a good framework to work with.
If ASP.NET is annoying, try using JSF. BTW, where does JSF get it’s ‘code behind’ concept from.
The main point is ‘Do not let Java or you hatred with MS affect your judgment.’
Just stumbled over this article this morning and I’m really amused that nothing has changed between the .net und the java community.
I work with .net in porfessional und at the university (part time study on software design, so I’ve still some years of proffessional expirience) we use java.
My personal preference is .net because i like the visual studio ide more than eclipse ide (but there are stille other ide’s for java so don’t hang up on this).
To take a look at the language features I think c# compared to java is nearly the same (both copy from both and both invent new features). With the next Visual Studio release Oracas und the .net 3.0 (and 3.5 that comes with Orcas) framework microsoft introduces a lot of new things but let time show whether this makes it more popular and even the more important thing to make it better. So for me there is no question that both platforms will be there in the future and both have their right to exist.
Maybe we should keep a bit more in mind that the platform should support us to get our job done und companys have to decide what’s best for their requirements. And yes of course both platforms are better on differnt requirements (what a suprise!). Nearly no one would use java to create windows client apps (no suprise too). On the other hand very broad band of server applications are written in java (for me no suprise too).
At least to bring in one fact of the populartiy of programming languages visist http://www.tiobe.com/tpci.htm. Here we see that java with 18% is the clear leader. But what i we also see in the long term trends is that java lost some of there market und “.net languages” gained some market shares. I hope that both plattforms would be the same popular. Competition is good for at least the end user and this in this case is us, the developers.
So folks it would be really nice to see a bit more harmony between the communities.
Ok, fine, as you guys sang priases that .NET was cool but it’s also true that J2ME is used in most of mobile sets available. Future is Mobile and SUN guys really knew about it.
JAVA