Java or .Net for a new dev team?
January 28, 2011 8:08 AM   Subscribe

I work for an established technical company moving into the web space and we need to decide whether we're going to use Java or .Net for an emerging web platform. Where can I find non-frothing arguments from reputable sources?

We hope to build an in-house development team in the next few months. I honestly believe Java is a better fit for what we're trying to do, but our CTO isn't sold. Where can I find arguments from reputable, non-crazy sources to support my positions? Remember that I'm pitching to a CTO, not to developers.

Thanks, Internet!
posted by CHABOXERS to Computers & Internet (10 answers total) 2 users marked this as a favorite
Picking technology is about best fit for your needs. Your needs include not only the actual development space, but also integration with any other databases, user apps, etc., not to mention the platform(s) for your users and the needs of your GUI. There's also a cost factor of course.
Just to say that there is no absolute right or wrong platform, only ones that are more or less suited to the most critical needs of your project overall. look at the important pieces of your project, see what each platform has to offer as a solution in each case, and don't forget to look at the whole pie, not just your slice.
posted by L'Estrange Fruit at 8:20 AM on January 28, 2011

In addition to what L'Estrange Fruit lays out, what skills does your development team have? In general, either technology can do a great job with this but if your dev staff is more comfortable with one technology vs. another then that drives a good portion of the decision.
posted by mmascolino at 8:55 AM on January 28, 2011

(I do a lot of C#/.NET stuff)

If you're looking at it from a capabilities standpoint, it's mostly a toss-up unless you've got a very-specific need. Most of the major libraries have been ported one way or another at this point (for example, we use NHibernate pretty extensively).

I'd consider these things, if you haven't already:

- Server platforms, obviously, and the capital + support costs of each. FWIW, we've been looking pretty hard at Mono, which has been surprisingly capable of compiling and running our .NET code with minimal modifications, so even the platform issue is increasingly blurry.

- Java has, IMO, increasingly suffered from a lack of a strong shepherding hand at the top. It seems like every step of the development process requires having to decide between multiple libraries/frameworks to do the same task.

- I went from a total skeptic to a complete Kool-Aid drinking Linq lover last year. It really saves you a lot of extraneous code.

L'Estrange Fruit: "not to mention the platform(s) for your users and the needs of your GUI"

Honestly, I don't think either of those matter in this case unless we're talking about something like Silverlight.
posted by mkultra at 9:04 AM on January 28, 2011

I've been involved in a lot of web-based stuff in the last few years, and decisions about the browser-based GUI needs (in our case many sophisticated whistles ans bells) had definitely, in our case, been an influence on overall platform. But that may not be the case for everyone, fair enough.
posted by L'Estrange Fruit at 9:10 AM on January 28, 2011

Having moved from a .NET shop to a Java shop about a year ago, I think I can speak to this.

They have their strengths in different places.

.NET is better. Visual Studio is better. Microsoft is better at supporting their developers than Sun (now Oracle). .NET is newer, better-designed, and has less accumulated cruft. Most of your really important essential stuff comes from one company, with regular release cycles, and comes bundled together in one package. Visual Studio has a friendly look and feel, and doesn't come off as something that was "designed by programmers."

Java has a better community. It has an enormous community. Massive. Anything that can be done in Java has already been done in Java. If you ask a question on Stack Overflow about Java, it will be answered in less than an hour. There is example code for everything. There is a library for everything. Java is the lingua franca of our industry.

Moving between the two isn't much of a problem conceptually. Most of the pain was in dealing with Java's accumulated cruft (like a Date object that should not, under any circumstances be used to represent dates. And don't even get me started on classpath hell). Also, Eclipse is not a friendly environment, even if its refactoring tools are light years better. (VS may have improved on this -- I tuned out around 2008 or so)

Sadly, if you develop in .NET, and you're doing anything even remotely interesting, you'll probably be doing a lot of things for the first time; the community just isn't there. And it probably never will be there, because even though .NET and VS is better, it still carries the stink of Microsoft, and there are enough people (especially on the West Coast) who refuse to believe that MS ever moved on from the Bad Old Days of the 90s and is actually the most developer-friendly company out there now.

For these reasons, if I were to start a new shop, it would probably be a Java shop, for reasons of productivity alone. But I'd probably miss .NET.

I miss it now.
posted by Afroblanco at 11:30 AM on January 28, 2011

Response by poster: Thanks for the feedback, everybody! I really appreciate the points, but I'm really hoping for links to other people saying these things (which I realize is silly, but sometimes the name of the "convince your boss" game). If there were, say, a trade study or something, that would be right up my alley. All of the ones I found are several years old, though. Is there a good summary piece that any of you know of?
posted by CHABOXERS at 1:20 PM on January 28, 2011

Are Java and .Net the only choices? Seems oddly limiting if what you're doing is explicitly about the web. Boss-ready examples of defending platforms like Ruby and Python are also very numerous.
posted by anildash at 3:08 PM on January 28, 2011

The Java/.Net decision is heavily influenced by the server platform your sys admin team already supports. Don't forget about the operations folks.
posted by kenliu at 5:23 PM on January 28, 2011 [1 favorite]

For me it comes down to one question and one question only: do you wish to support (the current) Microsoft and only (the current) Microsoft platforms, and do you guarantee this is true forever (even if Microsoft releases a newer product and deprecates the older one)? If so, go ahead and use a Microsoft "solution" but don't believe for a second it will insulate you from any inconsistencies which may or may not exist in Microsoft's products. If not, go with Java. You can run it on a Microsoft OS, against Microsoft databases, with no problems. But you don't have to.

Now this is only if it's a choice between only those 2. If it's a true dichotomy, fine. But if not, I'd look at other languages and platforms before discarding them. Some even run on the JVM or CLR.

Finally remember that if it's server side development you're doing, you really only have to consider your server platform, since you can access from any client you like. If, that is, you stick to standards-based output and not helpfully accept the Silverlight (or whatever) widget that C# (or whatever) helpfully makes available in its stdlib and by the way restricts what clients you can target.

My advice holds for any single-vendor solution.
posted by vsync at 6:07 PM on January 28, 2011

I run a shop that develops and supports apps in both Java and .NET. While you can find lots of articles singing the praises of either platform, you aren't going to find a concise argument supporting your position because, as other commenters have pointed out, either one can get you where you need to go. So let me start out by n'thing the comments from: L'Estrange Fruit, mmascolino, mkultra, and Afroblanco. Their comments are consistent with my experience.

If I was making a Java vs. .NET decision to create a new dev shop, my overall considerations would be to keep my operational complexity to a minimum (e.g. try not to introduce a new operating system or a new database) and staff growth to a minimum (related to operational complexity: if I don't have any SQL Server in the environment now, am I going to have to spend dollars on training or hiring to bridge the gap if I bring it in?). I would look at existing legacy systems I might have to integrate with. I would look a software licensing costs. I would look at likely COTS software acquisitions (if any). At the end of the day, the decision would mostly boil down to money. Not knowing anything about what drives your company/industry, I would expect money is still a big consideration in your environment, too. Things like time to market are important, but much harder to quantify.

To bring all of these considerations into the decision in a quantitative way -- and to convince the CTO -- I'd build a simple Excel spreadsheet to price out each scenario: my build out cost and my run rate for a Java shop, and my build out cost and run rate for a .NET shop. I'd include hardware, software, developer salaries, and operations salaries (if any) -- total cost of ownership. Either way, you'll eventually need a budget to go forward, so it isn't like the work in developing a cost model will be wasted. If you are truly starting from a green field, it won't be that illuminating. But since you are embedded in an "established technical company", I expect your company has already made some bets on technology that, through reuse, is going to make the correct answer (or at least, the correct financial answer) pretty obvious.

Finally, a couple of random observations:

- I have a detailed cost model and track P&L. My developer salaries are about half of my run rate. I have no idea if that is industry average, but my point here is that in my case, because we run a large number of servers, things like software licensing costs have a big financial impact because of the multiplier effect.

- If you build a financial model, you may discover that running your own dev shop is an expensive proposition, which may push you to consider outsourcing the development

- Likewise, if you determine that it is a financial wash to do Java vs. .NET, that is probably an indicator that you could also consider anildash's suggestion to look at an alternative like Rails or Django. I wouldn't look at those alternatives until I had first looked at Java and .NET.

If you want to drop me a me-mail, I would be happy to get into more specifics.
posted by kovacs at 8:22 PM on January 28, 2011

« Older Can we make our landlord repaint our steps?   |   Where is two way mirror glass sold in San Diego? Newer »
This thread is closed to new comments.