Sunday, August 27, 2006

Java vs C#/.NET in Investment Banks

Although there are definite pockets of .NET development in most investment banks on Wall Street, the majority of the development efforts are still in Java, especially on the server side. This is nowhere more apparent than in the investment bank that I am currently working for.

I am becoming more and more impressed with the Open Software that has been developed for the Java community, and the I have been similarly impressed with the sense of comradery that the Java community has. Most of the interesting .NET tools have origins in the Java world (NUnit, Spring, Hibernate, etc).

One of my tasks in my current position is to look at what our company has in terms of client-side frameworks and to come up with a proposal for a company-wide framework. This means looking at the toolkits that various groups are using or currently developing, looking at what I have done in the past, and making some recommendations by taking the best-of-breed of the various efforts. In addition to looking at .NET frameworks, I have been asked to look at some of the Java frameworks. And, I have been impressed by some of the Java efforts.

Some people have even asked me to look at things like Eclipse RCP and the NetBeans RCP. Several of my colleagues have blogged in the past about the viability of Eclpise RCP as a client-side framework. I feel that I need to take a serious look at it.

You all know that I have been a staunch advocate of .NET in the past. However, I am finding it more difficult to beat back the Java supporters. Some of the arguments that I have used against Java in the past (slowness, not as nice a UI, etc) have been colored by my past experiences with AWT, Swing, and JFC. But, Java GUI development has definitely evolved.

I would love to hear from my blog readers as to why I should continue to push .NET over Java.

Some reasons that I can think of for preferring .NET over Java:

1) I feel C# is a stronger language, and will continue to evolve into an even more powerful entity.

2) Closeness of .NET to the O/S, especially when Vista comes out.

3) Support for .NET inside of SQL Server 2005.

4) Possible business reasons are Microsoft non-support of a JVM and the precarious nature of Sun's balance sheet.

5) Better integrations with the standards in desktop tools (Excel, Word, etc)

©2006 Marc Adler - All Rights Reserved


Matt said...

"majority of the development efforts are still in Java" is a little strong. Certain investment banks have a high number of .NET server applications. The investment banks that prefer the Java/C++ road still have pockets of .NET server applications. The main driver in not using .NET server side is the view that Windows isn't scalable - this is often a failure of 3rd party drivers rather than Windows itself. I've written .NET server applications running on 16 CPU Windows hardware with no issues and excellent performance

Anonymous said...

Eclipse RCP is used at a number of investment banks

aman said...

on your points

1) C# being a stronger lang. This s where we enter languae wars, but I agree C# is 'stronger' in that it has better facilities and features. But, fundamentally, there is nothing 'killer' in it, IMHO. We are talking the difference here between two cars and not a car and a bicycle!

2) You wrote "Closeness of .NET to the O/S, especially when Vista comes out." A couple of points here, from a gui perspective, I agree. But OS integration is not the be all and end all, in fact it can overly constrain you. Some places are envisioning a Vista rollout in enterprises over 5 years!

3) "Support for .NET inside of SQL Server 2005." Java is supported in Oracle DB. But why is this so important (again it is good to have, don't get me wrong).

4) "Possible business reasons are Microsoft non-support of a JVM and the precarious nature of Sun's balance sheet." A non-issue in my view. Java is moving open source which will mitigate against many of these aspects. And java on windows performs very, very well.

5) "Better integrations with the standards in desktop tools (Excel, Word, etc)". I can take objection to "standards" as it has more to do with ubiquity than a standard. However, you are right, but with such strong support for web services and XML nteroperability even this is becoming less of an issue.

On matt's point: I agree. And Windows server 2003 is *really* good.

chris said...

I also put forth an effort to do some work with the eclipse RCP (and with just eclipse framework itself). The drive to be cross platform is strong. Also - regarding the eclipse project in general - I can say that studying out its general design has influenced areas of my own client framework designs. It is a well written UI framework that provides some useful metaphors that have (for the past year at least) made their way into some of my design decisions. (UI Extension Points, etc - you may remember)

While I think Windows is still largely perceived as a 'gui' or 'desktop' OS, it CAN (as matt says) run scaleable server apps. I have also run farms of ~15 collaborating windows machines crunching some #s with great performance and farms of many more web machines servicing tens of thousands of concurrent users.

Qt is another possibility, but I think that it will just be harder to find developers that will do that work well.

In the Java UI side - you do not have an Infragistics, SyncFusion, ComponentOne, etc, etc community. I looked and looked at the java providers in that space. It is unfortunate - but you will have to work harder to get more polish in a java UI framework.

Maverick - the next major java release - they are supposedly working hard on a real UI framework... We shall see...

PS - I also agree - the Java community is great. I have worked with both people from the java and .net communities and the 'java way' is more open, collaborative etc. One of the things I do not really about the .net developer community is the general 'microsoft-ness' of lots of the development. The Microsoft design mandates come down and are sort of followed writ-large. The java community is certainly innovative.

--Enough blabber :)