Why .NET over Java?

July 28th, 2005

I work primarily with web applications which means if I am to choose between .NET and Java I either choose ASP.NET or JSP/Servlets/JSF. The Java options are vast but also fragmenting. In the small group of developers I know personally who work with Java not more than 2 of them work on the same framework. A couple use Tapestry while another uses Struts. Those are both mature frameworks which have been essentially dated once JSF was introduced as the replacement for all Java web frameworks. That was more than 2 years ago and still it has not seen widespread adoption. Instead there is been a sort of mass exodus to Ruby on Rails. Just ask Dave Thomas, Bruce Tate or David Geary. Each is known to be well respected and seasoned Java developer and each is now digging into Ruby on Rails...

What is the result? Basically the energy which JSF requires to gain acceptance is being diverted away to Ruby on Rails. It seems to be a great platform, but most IT managers will choose between well-known enterprise platforms such as .NET and J2EE. Since the promise of JSF seems to be delayed, if not completely lost, the other option is ASP.NET.

At first reaction you may feel ASP.NET is a Microsoft technology and is bad due to vendor lock-in. I share those concerns. However, Microsoft has worked with ECMA to standardize the CLI and C# to allow for others to produce their own implementations without interference from Microsoft. The first standards for C# and the CLI were adopted in 2002 and since then the Mono Project has been producing an implementation with great support for all of the required features. It has not been shut down by Microsoft and does provide for a rich alternative to Java. The concerns about vendor lock-in are moot.

And yesterday the 3rd set of standards for C# and the CLI were adopted. The lead developer of the Mono Project, Miguel de Icaza, is pleased with the new adoption as he writes in his blog. And already before the standard is adopted he claims Mono has support for the required features, such as Generics and ASP.NET 2.0. It is not complete, but it is rapidly approaching that point.

On my own server running FreeBSD 5.3 I have Mono installed with Apache and the XSP server. In the test application you can see it runs fairly well. Some pages are failing, but that could be the FreeBSD port. Running it on Linux and MacOS X may show better results.

For me, that means I can work on .NET professionally while also writing code on my own time for my own purposes and publish it to a FreeBSD server without licensing Windows or other Microsoft products. And that is why I feel quite comfortable moving forward with .NET.

28 Responses to “Why .NET over Java?”

  1. Ben C Says:

    oooohhh...that "mass exodus" of THREE whole developers to RoR is scaring me... Puhleeze!

    The reasons JSF hasn't gained acceptance are many, but among them are: it's difficult, it's not really finished, and it's not much better than other frameworks. If you feel you need to go to .net because you don't know of any other options then that just sucks for you. Spring MVC and Tapestry are great frameworks and much better than Struts. They would perform just as well as a .net solution and on the whole be cheaper. I'm not knocking .net though, because it's a good platform, but just to switch to it because JSF sucks doesn't seem to be a good idea to me.

  2. Brennan Stehling Says:

    I am doing more with .NET simply because the work I have been doing for clients the past 2 years has been heavily in .NET. As for the "mass exodus", those 3 people are very important. You have to consider who they are. The opinions Bruce Tate (Lightweight Java) and Dave Thomas (Everyone loves Dave) carry a lot of weight in the Java community. And Dave Thomas has just completed a book on Ruby on Rails and is now traveling the country and training people on the topic. It appears many of his fans in Java world are following him to the world of RoR.

    As for David Geary, he has been a lead developer in the JSF/Shale world and the more time he spends with RoR the less time he spends on completing JSF. That means people will just avoid JSF and continue using Struts, Tapestry and other non-Sun standards. At least with ASP.NET I know where it is heading and know I will not have to throw away piles of code (like JSF did to JSTL) just because the new direction Sun thinks up does not support their legacy.

  3. Ben C Says:

    My guess as for why those influential "java" people are learning RoR isn't because Java just doesn't do it for them anymore. Rather they're bright and smart people who like to code, no matter what the language is. And actually with ASP.net Microsoft is free to change direction at any time, just like Sun. Sun also does have the JCP to which you can give feedback to.

  4. Michael Brown Says:

    First off, I watched the whole ten minute intro to Ruby on Rails and was quite impressed. Unfortunately it would take a miracle for Ruby to gain mainstream penetration in the corporate world.

    Second, I don't think you quite understand what Brennan is saying, Ben. Yes there are other alternatives to JSF in the Java world. And that is the problem. There are too many.

    Think of it: the servlet spec has been around since what...98? And here it is 2005 and JSF STILL hasn't been stabilized. Can you name a Java IDE that supports JSF out of the box?

    Quite frankly I prefer the Microsoft solution because as a consultant I don't have to guess which framework my next client will use for web development. I don't have to tinker with 25 different configuration files to get my web app to work, and I definitely don't have to hand code my UI.

    Let's not even get on the topic of how the most pervasive web framework in Java (Struts) is being trashed all together by Apache.

    What if I want to do webservices? Well there's another framework I have to add and master. Believe me Axis takes a lot of trial and error to learn properly. Then there's the fact that Websphere comes with its own webservices implementation that is part of its core library. If you haven't administered Websphere 5.0 before, you'll be scratching your head trying to figure out how to get Axis 1.2 to work on websphere (basically when you deploy your Web service app make sure to set the classloader mode to parent_last).

    Oh what, you want to to get access to the bean objects generated by Axis? Better learn how to integrate Castor with Axis.

    Or you could use .Net and all of the aforementioned features are supported by the .Net framework.

    If you want a more robust MVC framework a la struts, Microsoft provides the UI Process Application Block. Except this works with desktop applications as well as web applications. And the code is released with a license that's even less restrictive than most open source licenses. (I.E. you don't have to recontribute any changes you make back to the project).

    I guess Microsoft blew away the "theory" that Open Source is inherently better than corporate development. When you have a multibillion dollar bank account, you can pay people to develop good projects.

    I guess I've ranted enough. Although you'd think I hate Java development from this post, I actually don't. I've developed in Java since 1.1 and love the new features of tiger (namely generics, enums, and attribute based programming). Of course it'll be about three years before the big corps adopt it, but hey at least it's finally there.

    But I'm also a realist. The Java community is splintered. Probably irretrievably so. If you name a development task in Java, you can probably name about 3-5 "de-facto standards" for performing that task. All with varying levels of support in Java IDEs. And that is why one would choose .Net over Java. True standardization

  5. Rob Abbe Says:

    .Net still locks you into Windows. In the long run, MS doesn't stand much of a chance in the server space because of license cost. Eventually low cost alternatives will make the vicious circle of MS updates a thing of the past.

    As for the so called experts, they make money writing books. When you run out of things to write about you have to try and find the next big thing and portray yourself as an expert.

  6. Randy Loffelmacher Says:

    Now compare the two major IDEs for Java and for .Net. While Eclipse is great, MS has had a great IDE since VB5 and though they hit a stumbling block with Visual Studio 6, VS.Net is superior to Eclipse. When Eclipse Web Tools Project finally is somplete I might change my evaluation.

  7. Sean McCormack Says:

    I'm in agreement with Michael. I used to do Java, but I switched to .NET and never looked back.

    The biggest issue I had with Java was how freakin long it took just to get setup with a project. First you had the framework. Then you had to get Eclipse. Then you had to download Struts, and Xerxes, and the Jakarta Taglibs, and Tomcat, and OJB or Hibernate and JUnit and HttpUnit and...the list goes on. It was too splintered and you had to master way to many projects. You also quickly ran into versioning problems across multiple open-source projects.

    The second main issue was the complexity of Java. EJB and Struts are worlds apart. Throw in JMX and SWT and J2ME it's quickly a very complicated world that requires specialization in each. With .NET, it doesn't take much to move from messaging to web services to GUI development to enterprise transactions to mobile apps - it's all rolled into one framework with one unified API.

    Then, of course - as was mentioned before - there's the IDE. VS.NET rocks...Eclipse is a great tool, but still has a ways to go to match VS.NET.

    I also had major issues with Swing. The performance was horrible and few IDEs provided a simple way to create them. I really like SWT, but at the time I was playing with it, the documentation sucked.

    What it boils down to in the end is speed of delivery. I can give a junior programmer VS.NET and have them spit out a simple, functional app in a matter of hours. If I did the same in Java, it would take 3-4 times that long. But the end capabilities are the same. So, one unified framework with quick delivery, reduced complexity and an excellent IDE...makes sense to me!

  8. Michael Brown Says:

    "Net still locks you into Windows. In the long run, MS doesn't stand much of a chance in the server space because of license cost. Eventually low cost alternatives will make the vicious circle of MS updates a thing of the past."

    Rob, I have to disagree with you on that point. Microsoft one-upped Sun when they open sourced the CLI and made C# and ISO standard. If you haven't heard of the Mono Project, you should take a look at it (http://www.go-mono.org). Basically .Net can run on Linux...and mono became stable and mature much quicker than the original port of Java to Linux. So even the (faulty) argument of Java's "decreased TCO" is taken away.

    People talk about Microsoft's use of FUD, but the myth that Linux inherently provides a lower TCO is the biggest amount of FUD I've ever seen (well outside of MS putting code in Windows 3.0 that checked if you were running DrDOS and wouldn't start).

    Because of Window's market penetration, it costs less to hire people who are knowledgeable in Windows administration. (Simple supply and demand). You're already saving in terms of salary. Administration of a Windows network is easier. MS took a cue from the best at the time. Active Directory is a blatant ripoff of Novell's NDS (when Win2k first arrived, Netware still had the market for network OSes but loss due to the simple fact that a network built on Win2k and Active Directory were easier to get up and running out of the box. And I'm speaking from experience here, not just articles I've read or what have you.

    So if you want to run a network full of Linux boxes and pay from 25% to 50% more for your support staff because Linux is cheaper, go right ahead. Me, I'll use that savings to build better products and advance my company.

  9. Mads Thiessen Says:

    A few comments:

    I understand the point that Java is complex and provides many (and sometimes confusing) techniques of getting things done. However, in all other aspects of life, we humanoids enjoy having different options to fullfill our specific and individual needs. Why would this be different? Any one, who has tried to develop and maintain larger mission-critical server applications, knows that things are or rather gets more complex as you go. And for that you want to have as many options as possible.

    A comment on the IDE. If you have the idea, that VS itself is great, then you are going to be baffled when Idea releases their plugin='IntelliJ port' to .NET/VS (dont know the name yet). It plugs in and takes over VS functionality. We in the Java community have had the pleasure of using this incredible IDE for a couple of years now (IntelliJ that is) and soon the .NET community will know what Rapid Application Development really means. One word: Refactoring. Sure, it's commercial so you have to pay for it, but then again, you guys are used to that :-) .

    The principal difference between the two platforms (.NET and J2EE) is that in .NET, Windows is basically the application-server whereas in java you choose between several (JBoss, Weblogic, WebSphere etc). That could be just fine, but how will you know if an update in windows won't affect your application? Before working fulltime as a developer I worked for four years with system administration on the windows platform and in real life the windows updates/patches can make life really hard on your applications. In java, this is highly unlikely to happen, even if you should be so bold as to actually run your apps on Windows :-) .

    With regard to JSF, I think the Java community works like this: If something that has been hyped like JSF for so long, still isn't widely adopted, it is because there are other things that work better.

    .NET will probably earn its justification and some would say it already has. But having more options that are free of restricting licenses is technically as well as business wise a solid argument to favour Java as your main platform.

  10. Aaron Trevena Says:

    Coming from an impartial (perl) background to this I see .Net having a clear advantage in terms of simplicity to get it running and not having to download, install and learn a dozen apache projects in order to get a job done.

    Unfortunately .Net is patent encumbered already and likely to get more so. Microsoft has a history of playing dirty and will continue to do so, this will result in some fragmentation.

    Also the microsoft oriented part of the industry is still very oriented towards proprietary software development so you will end up getting the same situation (i.e. needing dozens of de facto standard products that are not included) as java but the projects will be proprietary and a lot less compatible than Apache's offerings - the kind of fragmentation you have seen with Java is equally likely in .Net.

    So many vendors want a piece of that pie, just look at any Dr Dobbs Journal to see how many vendors are fighting hard for .Net developer hearts and minds before the market matures.

    Bear in mind that you don't just have Ruby-on-Rails offering MVC in dynamic languages : Perl has Maypole and Catalyst (among others) that deliver fast reliable applications. Perl is already embedded in the enterprise - even if .Net and Java developers don't notice it - and will continue to steal the good ideas and deliver high quality software quicker.

    With regard to windows administration being cheaper : that is nonsense, a decent administrator costs money regardless of the platform and I would never hire an administrator that can't do a good job on both UNIX/Linux and Windows as the Internet runs on the former and most corporate LANs run on the latter. Also UNIX/Linux require less work to administer per server - I know this as I have to support dozens of servers on both platforms.

  11. Damon Payne Says:

    As another former Java developer I have to agree that the IDE is second to none: it had better be coming from a company that spends billions a year on usability etc.

    I will say that with the introduction of a large number of OpenSource .NET systems and the ApplicationBlocks from MSFT the .NET community is starting to feel a little like Java: Start a project, install IDE, then download log4net, then NUnit, then application blocks, etc.

    One thing I didn't see anyone mention as a factor is Vision. There is always a clear vision of where MSFT is going with the platform, and when we'll be there. I never got that feeling from Sun, I really feel like they could do a better job sharing the vision with the community. While I didn't always a agree with the direction from MSFT, seeing that vision there is a big deal for me.

  12. Rob Abbe Says:

    MS didn't open source C# or the CLR/CLI. They submitted the specs to the ECMA. Last I checked, Mono doesn't run .Net MISL and .Net doesn't run Mono IL. The concept of WORA with .Net is non-existant.

    Corporations will not invest in Mono out of fear of litigation. There are many patents that protect Microsofts investment in .Net.

    .Net is the result of a threat posed by Java. It doesn't even make sense to me that MS uses an itermediate language when the output only runs on Windows. In my opinion it should just be a direct compile to native code.

    In the long term there is simply no way corporations will continue to use expensive Windows only tools when competitors are able to get things done with far less invested in licenses.

    I still use VB6 in my day to day development and I'm constantly reminded of the lack of commitment that Microsoft has shown it's community. Even after VS 2005 is released with all it's bells and whistles, it's still not worth being locked in to a single vendor that can up and abandon the technology when they feel it's run it's course. I'll take Java and the JCP over a lone corporation any day.

  13. Michael Brown Says:

    "MS didn't open source C# or the CLR/CLI. They submitted the specs to the ECMA. Last I checked, Mono doesn't run .Net MISL and .Net doesn't run Mono IL. The concept of WORA with .Net is non-existant."

    Ummm Rob, you're categorically wrong. Microsoft did indeed open source the CLI and Mono does indeed generate and run MSIL.

    Novell invested in the Mono project. This is precisely what I mean when I say I'm tired of people bashing Microsoft just because it's en vogue to do so. You don't even know the facts and you're acting like you're the expert. On all things windows and java.

    And by the way, Java is a single platform controlled by a single vendor as well. If you've read any articles, you'd realize that a lot of vendors are fearful of the possibility of Sun doing something damaging to Java because they won't release their death-grip on it.

    By the way have you priced a websphere license lately? Or WSAD? This is in addition to the costs of licensing your OS. Oh that's right, Linux is free huh? Last I checked if you want to run Oracle on linux you have to shell out 1400+ to get RHAS or Oracle won't support your installation.

  14. Ben Chun Pong Chan Says:

    I had 3 yrs experience in Win32C++ programming and 1 yr experience in .Net with C#.But now, I shift from .Net to Java.Why? My first web project was a ASP.Net project with about 18-20k lines of code, using SQL2000 as DBMS, MS's SQL reporting service and notification service.

    I picked ASP.Net because VS.Net is too easy to use and the event driven model of ASP.Net is intuitive.Yeah, simply drag-n-drop a datagrid and bind the datasouce and you are done.But when you need to bind/update across multiple database table, sorry you have to create a custom insert/update/delete command for your DataAdapter by hand, no more "click->click=OK".

    The datagrid component is kinda great.However, the default UI flow (The datagrid first display at Readonly mode, you have to click the "Edit" button to change to the Edit mode).is unfriendly to my client. They request the datagrid should first display at Edit mode(like excel style).Woooo, I have to totally customize the datagrid using full set of template columns and wire up all the component event to my code-behind webform manually. Sorry, no drag-n-drop for this.

    The smart navigation of asp.net is cool!,It can retain the browser position after postback , but wait! It got a bug when working with the HTML modal dialog!
    http://www.kbalertz.com/kb_840592.aspx

    and here are the list of website that discussing the other problem of smart navigation
    http://blog.andrewcarlson.org/archive/2004/05/05/226.aspx
    http://weblogs.asp.net/pleloup/archive/2003/06/27/9378.aspx

    If that is not enough for you, try type Smart navigation problem in google. Youll get many companions. And here is the fix
    http://aspalliance.com/356

    Integrated authentication with ASP.Net is easy, just turn on in your web.config will be all right. However, it sometimes gives me page error when I first run my project. Rebuild it again will be fine.

    The VS.net is going handicap when you have more and more projects inside a solution, mine got 7.And the debugger will getting slow or even hang during the debugging process.

    Finally reach to the deployment stage, making a MSI installation package is easy. I got the asp.net app running without much problem. But such fine day wont last for long, my client reported some of the button in my ASP.net app generates no event!Just like what happened to this dude
    http://www.issociate.de/board/post/233984/Nothing_happens_when_I_click_a_button.html

    After a detail inspection of the event log, I found that the system admin did install the ASP.Net service pack 1, sighanother bug from MS
    http://support.microsoft.com/?kbid=889877

    Ok, got it fixed in my development machine, now I have patch up the production server and reinstall my application. Applying the fix means I have to re-register the ASP.net framework again, that means I have to stop the IIS and bother all the web app users.

    I thought I can go after reinstalling the package without moving the old one, and I quickly fire up the IE to see the new version..oops!!..another error!
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;323744

    What the f**k?, I did a clean install and the problem still persist!!!.Later I found I have to manually delete the shadow copy (located at
    C:\WINNT\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\MyApp)
    .phew~..finally it works fine.

    The last problem is the performance, the old production server was a P3-1G with 512MB.ASP.net needs a better machine, so we were forced to upgrade the server to 2.8GB Xeon with 2GB RAM.

    Yeah, unlike java,you dont need to separately install struts/apache common in order to get a ASP.net app works. Simply fire up the IDE and go. If you dont need to customize the built-in component and dont count those maintenance(MSDN knowledge search/apply fix) time as a total project time. Then ASP.net is production solution. However, you & me know from the 1st day software engineering lesson, Maintenance cost takes the major part of the whole project cost. I reckon you gain some development speed using ASP.net against Java+struts/spring/jsf AT FIRST. But I dare to say you have to pay double in your maintenance. I totally gave up MSs technology and tools after 3yrs VC++ and 1yr C# experience.I realized MS is a market oriented company rather than technical oriented.

    I have a fine day with java/struts.Yes, strutss learning curve is deeper compare to ASP.Net. But once you conquered it, it pays off. And the learning is just a one-time matter.

    Sometimes it is not the matter of simply comparing ASP.Net to JSP, but you have to consider the surrounding framework also. Im tired of endless coding similar CRUD operation to different database table using ADO.Nets DataAdapter and DataSet. I love O/R mapping using Hibernate, (Yes I know Hnibernate, but I think Hibernate is more mature, MSs enterprise library cant help much either).

    In addition, there is no mature AOP framework for .Net. AOP helps me to remove those duplicate try/catch/finally blocks. I can separate logging component from my business component. Can .Net do this? Easy to use doesnt mean it is easy to build a high quality and scalability software. A good tool can boost productively and this is true, but productively is the sum of development cost+ maintenance cost.

    I dont expect anyone will shift from .net to java just by reading what I said. Actually I don't care. Probably I'm lacking of skills to use MS's technology and tools. May be other ppl didn't ever encounter the problem I had. But from now on, I'll never go back to MS

  15. Brennan Stehling Says:

    I do not think lack of skills or knowledge is your problem with .NET. I am sure anyone would have problems with it if they try to do it the "Microsoft way" which is with datasets, datagrids and the rest. I personally try to avoid using features which seem too good to be true. They are like you describe. They work great to get you started but are a major liability when it comes to maintenance and adding features. It is the sugar in the kool-aid.

    But, that has all changed. If you try ASP.NET 2.0 you may really like how the DataView improves on the DataGrid and the database work has been greatly simplified. But I avoid using the DataView for most pages and use the Repeater Control instead. I also return collections of objects instead of DataSet references now. Like if I have a Catalog object I return a generics collection of Catalog objects. I basically only use GridView when displaying a report on the backend pages.

    As a part of avoiding the "too good to be true" solutions I have avoided Hibernate. I believe either you write complex SQL or complex Hibernate mappings. I would rather go with something which another developer with database experience will not have trouble maintaining.

    Thanks for the detailed comment.

  16. Phil Says:

    "I believe either you write complex SQL or complex Hibernate mappings."

    It's more like this:

    You either write a complex Hibernate mapping once or at least 4 complex SQL queries for every mapped object. Each of which has to be maintained in paralell with the object, btw.

  17. Rob Abbe Says:

    You'll have to point me to a link where I can download Microsoft's source code for the CLI and CLR.

    I know that MS had the short lived ROTOR project, for which you could gain access to the source, but nothing much has been done with it though.

    It does however look like you are right about .Net misl being capable of being compiled by Mono as long as no Win32 APIs are called. However, Microsoft makes not warranties about Mono IL running on .Net. None! Who wants to invest in that? Apparently no one.

    Java has many stakeholders involved in it's evolution. You need not use IBMs tools or fully invest in any one vendor. With MS it's MS or nothing. Multiple platforms forget about it. There is no testing being done to certify the .Net framework on multiple platforms.

    Novell while funding Mono, also has a steep investment in Java. With the .Net patents hanging over the head of Mono, it is doubtful it will ever be in serious contention. And it will ALWAYS lag behind .Net in terms of features and functionality.

  18. Brennan Stehling Says:

    MS did release Rotor as a reference implementation and if you comform to the CLI infrastructure the bytecode will run in the .NET environment. That is the whole point of the ECMA standardization. It is a specification and MS had to make many changes to allow the first round of specifications to pass. I never stated the .NET platform was open source. You are reading that into this somehow.

    And companies have invested in it.

    Ximian was contracted by SourceGear to port Mono to multiple platforms to run one of their .NET products. And once Ximian was a part of Novell they continued to fund it.

    http://www.novell.com/news/press/archive/2003/ximian_archive/pr060203.html

    Read more about the SourceGear contract in the Mono 0.28 release notes.

    http://www.go-mono.com/archive/mono-0.28.html

    And if you want Rotor, you can find it here.

    http://msdn.microsoft.com/msdnmag/issues/02/07/SharedSourceCLI/

    As far as lagging behind in features and functionality, I really do not care. Java 1.5 has been out a while and I know many projects still target 1.3 and 1.4 because most people do not rush to upgrade their platform immediately. And you will find that people will be slow to adopt .NET 2.0 and Windows Vista as well. Most installations are still running Windows 2000 over Windows 2003.

    http://www.theregister.co.uk/2005/06/15/windows2000_nicely/
    http://searchvb.techtarget.com/newsItem/0,289139,sid8_gci1097897,00.html

    If people feel they can lag behind then they should have no trouble using Mono which has good support for .NET 1.1 functionality with 2.0 features being filled in quickly.

  19. Rob Abbe Says:

    ROTOR is not open source. It's a microsoft reasearch project and is not under an open source license. Use it in a commercial setting and you break the license. You said MS released the CLI as open source and clearly this is not the case.

    Mono is not a product of Microsoft. Any investment in Mono will have the ligering threat of Microsoft's legal department. While open source Java implementations are possible via JCP 2.6.

    These are your words not mine.

    "Microsoft one-upped Sun when they open sourced the CLI and made C# and ISO standard"

    You were wrong and you should be big enough to admit it.

    So, MS has not "one upped" sun in any way. There are no specifications for any of the other APIs in .Net. Mono's libraries are more or less a best guess.

    If you want a clear set of documented standards for a platform you have to go here http://www.jcp.org. With Microsoft you get an ECMA language on top of a private libraries for which the source is not available.

    There really is no way to make it attractive.

  20. Brennan Stehling Says:

    Rob,

    In the attached blog entry I do not even mention open source. And Rotor is licensed as Share Source. It is not quite an Apache/BSD or GPL license, but it does provide source code which compiles and works. It provides a great foundation for students learning to produce cross-platform runtimes. I watched a great presentation on Rotor and the presenter actually added Generics to the base implementation right in front of our eyes.

    As for Mono and Microsoft, you should read directly from the Mono FAQ. You do not need my words.

    The FAQ clearly state the project has been following the ECMA specs and printed Microsoft publications to create the Mono implementation. There is a great deal of value for a cross-platform / mutli-language infrastucture for Linux and Gnome. Previously a developer had to use a binding tool to use a library created in another language, but now with Mono it is possible to use the Mono runtime to create powerful Gnome applications which do not rely on anything but the ECMA specs as a foundation. There are Gnome and Unix frameworks which go beyond the .NET implementation by Microsoft which address specific Linux/Gnome needs.

    And if you read on the relationship with Microsoft you will see some MS engineers have been helpful with clarifying details for the Mono engineers. And Mono engineers were invited to participate in meetings for the ECMA standards. The world is no longer good or evil. There are signs that Microsoft has a softer side, although they will still carefully guard their cash flow.

    Read the FAQ yourself before you post more FUD.

    http://www.go-mono.com/faq.html

    If you are jaded over Microsoft's past behavior you will need to get over it. The environment is changing and Microsoft's old ways are not being tolerated. And ignoring problems with Java and remaining blindly loyal does not help either. Confronting and working past the weaker points is where we should be focusing our efforts.

    I for one feel ensuring that any personal projects I produce will run inside Mono is a great way to keep Microsoft honest. I will use their platform professionally so long as the balance is favorable, but if I choose to leave Microsoft I know Mono will be a smooth way out. And when Novell produces Mono-based products I will be happy to purchase them to show my support.

  21. kb Says:

    Amazing.

    A partially complete open source version exists that in a "test application runs fairly well. Some pages are failing", and oh, "It has not been shut down by Microsoft" (an almost tangible "yet" follows that sentence...)

    Therefore vendor lock-in does not exist?

    Absolutely amazing.

    kb

  22. Brennan Stehling Says:

    I am so tired of people like you. You make these drive-by comments without providing information to back your opinion.

    I am running Mono on a FreeBSD server which only I recently got a working port of Mono. There is a history between FreeBSD and Mono, and the fact that it compiles and runs basic ASP.NET pages is great progress. It compiled and runs some things, but it may not run perfectly on FreeBSD. If I were running Linux, the native environment for Mono, it would likely run everything without error.

    So stop declaring every shortcoming in anything related to Microsoft a victory! It should be possible for reasonable people to review technologies objectively regardless of the associated company behind it. Just because you feel Bill Gates and Steve Ballmer are shady characters does not mean every person working for them is equally tainted.

    Many very talented and good people were hired to produce the .NET frameworks and their vision and focus to advance the platform is really going to show in .NET 2.0. Their achievements should not be devalued due to past business practices of Gates and Ballmer.

    If you need to vent your anger over Microsoft, do it elsewhere. I have no tolerance for it anymore.

  23. James Mwaniki Says:

    It is true what many have said in regard to both Java and .NET. However, I think at the end of the day what one looks at is who their target market is, how quickly the market requires products rolled out, and compatibility between technology preferred for product development and the market's. Many corporates run microsoft technologies. Microsoft have products spanning a wide area comprising DBs, OSes, IDEs etc. There's also alot of similarity in modus operandi for many of MSFT's products. This usually renders the learning curve shorter, hence making one deploy applications rather quickly. ( I can at least speak for myself)

    In my 10 years of programming, I enjoyed my C++/ASM days most. BASIC was loads of crap. The only reason I left the ASM/C/C++ was RAD or lack of it thereof.
    With the onset of ASP, I warmed up to MS, since it has been a great product. Reason? RAD was possible with ASP. 4.5 yrs ago I went the Java way due to the immense benefits promised therein, and shortest RAD time.Alas! Little did I know that Java RAD time was short if your learning curve was not expensive. There were like a thousand things you had to know to make the app work. Especially the earlier versions of Java. The version control became too tough for me, with their scrapping off/editing some language methodologies and appropriations while constantly 'improving' the existing ones. While 'improving' might sound like a good thing, Java fails to take into consideration the amount of time coders put in to learn, and time spent learning upgrades is better invested in actual coding work. This is not to say that MS have not had their fair share, but there is always consistency of sorts with MS which gives one the confidence that the LC will be shorter.

    Again, Java seems to have lost direction in that there are so many versions of frameworks and critically related apps' frameworks that always promise better offerings than previous/others, and I wonder, just who's going to have that time to sample every one of the juices promised in the frameworks/distributions without wasting time?

    I am now a .NET coder and frankly speaking, I have never had a reason to look back. I dont exactly like MS because cash reserves retention is their baseline policy and especially because of MSIE insecurity (not to mention Windows OSes) that makes me believe its like they go out of their way to put those holes in there but .NET is great, and to work with their web services is the easiest and most robust you can get on the planet.

    Until I see some sense/order in Java and related baggage release/integration/cohesion plan, I am not daring that way. I have had my fair share of woes. Meanwhile, .NET till then.

  24. Rob Says:

    Java is not going away anytime soon...neither is .Net. Both are viable platforms.

    Linux will not crush Microsoft in the server space....and Microsoft cannot make Linux go away. Both are viable platforms.

    Mono is not Microsoft's bitch and I am sure that Microsoft is reasonably happy that a bunch of Linux coders are conforming to their API (even though they would never admit it).

    Firefox will never replace IE but IE's dominance is ending and Microsoft will bend to the pressure and make IE better. Both are viable platforms.

    Everybody does better when there are good, solid, viable alternatives in the marketplace.

    Open Source and Closed Source are both viable ecosystems, each of them suck in their own ways. 8-)

    We live in a world of ever expanding options, pick your horse an rock on it. Nitpicking about the horse someone else has chosen is a waste of time.

    Personally, I picked my horse a back in 2000 and have never looked back. I spend maybe 10% of my time monitoring the entire ecosystem for new trends and the other 90% rockin' on the choices that I have made and my customers have rewarded me for it.

  25. Keith J. Farmer Says:

    Once upon a time -- maybe 1982 or so -- I was teaching myself BASIC. I also taught myself LOGO, PILOT, and a couple variants of BASIC on Atari, TI, C64, Apple, and IBM. Never once did I hear any sort of bashing that wasn't purely hardware-related, and even that was rare. People were more jazzed that the guy next to them had something really cool, and didn't have some self-righteous you-like-technology-X therefore you'll-burn-at-the-stake attitude.

    By 1994 I was using Linux. It was comfortable enough since I was using UNIX elsewhere. It wasn't amazing -- it just was. My roommate was working on the kernel at the time, and spent way too many hours trying to get it to work. But he did.. eventually. Still, you didn't hear any bashing going on. Apparently, the children hadn't been introduced to modems yet.

    So why is it that only a few years have to pass before people best described as weenies show up and regurgitate lies that originated years ago? The incessant viciousness of that group tells me only one thing: they're threatened. The threat: their world view of MS as the evil empire, of Sun as their personal savior from multiple source bases, and of a mythical increase in their sex lives is falling apart.

    Java was a good start. It definitely improved on C++. But Sun has refused to budge on its own licensing issues, and instead creates such loose specs that you *can't* just plug in a different Java platform and expect things to run.

    MS, for all its purported baby-killing, standardizes a fairly tight spec, has it accepted, and even *changes its own products to conforms to the adopted spec* (where do you think 1.1 came from, and why it was $25 to upgrade from 1.0?). Its project managers have been very helpful, and continuously ask for feedback and ways they can improve the product. They've been helpful to Ximian in creating Mono -- one of the only Open Source projects that has earned my respect (and enthusiasm). They've been willing to augment their engine to provide deep support for powerful techniques: take a good, long look at the differences between Java generics, C++ templates, and CLR generics. They've been willing to take the hit in delaying something until it's actually done right, and not just slapped on as an afterthought. That's what MSR is for.

    There's no vendor lock-in -- never was. That's been Sun's big lie, and much of the Javistas have bought into it. The only cure is to lock them to their desks in front of a Linux box and a Mac, each running Mono, and tell them to start writing real applications that actually *use* the features provided, instead of going out of their way to avoid any semblance of interest.

    Guess what -- they work. First time I ran Mono I pulled the assemblies from a MS-compiled project and they ran flawlessly. It took months to port a Java project from WebLogic to JBoss.

    (Me, I personally loathe working in Java, but that's a platform and project management issue.)

  26. Mark Dodwell Says:

    .NET facilitates far more rapid development. VS.NET is an incredible IDE, and I have been using it for the last two years now for web apps.

    However, I don't enjoy coding in ASP.NET - it feels clumsy. And it is slow. I develop small to medium sized web apps like CMS etc. and I need to be able to develop quickly rather produce perfect code.

    I'm looking at Rails at the moment, because I am spending so much time these days coding relatively simple apps in .NET. Admittedly I'm only 50% developer as I also have background in design, but I have a good deal of experience with other languages, and to be honest I don't think any of them are really good for RAD. I have high hopes for Rails.

    I want to focus on business logic and data - not the programming code to acheive and support it.

  27. Ivolution Says:

    Why .Net over Java?

    "Let's not even get on the topic of how the most pervasive web framework in Java (Struts) is being trashed all together by Apache."

  28. Ivolution Says:

    Made a switch?

    So it seems these past two months of .Net development has brought me back into to Microsoft flock. Honestly I can't say that I ever really left. I just got pidgeon-holed in the Java world. Now that I've had a...