J2EE v. .NET

ameoba

Supreme [H]ardness
Joined
Jan 9, 2001
Messages
6,412
I'm out of work and noticing that most of the jobs out there are for .NET and J2EE developers under Windows. I'm more of a Unix/Open-source guy (with more Oracle experience than I ever wanted to have).

I'm not really a big fan of "learn this to get a job" but, unfortunately, a the majority of recruiters out there seem to think that, unless you can check off every box on their list, you're not worth talking to. Since I'm a big fan of "able to pay the bills", it looks like I should start learning one or the other. They're in about equal demand, based on a quick look at the local job market (Portland, OR), so does anyone have any suggestions/opinions on which one is better to pick up?

Based on my quick, superficial view, here's what I'm seeing:

J2EE
Pros : Open, multi-platform, not MSFT
Cons : it's a confused jumble of separate standards & APIs.

.NET
Pros : seems to have a consistent direction
Cons : MSFT only
 
I'm out of work and noticing that most of the jobs out there are for .NET and J2EE developers under Windows. I'm more of a Unix/Open-source guy (with more Oracle experience than I ever wanted to have).

I'm not really a big fan of "learn this to get a job" but, unfortunately, a the majority of recruiters out there seem to think that, unless you can check off every box on their list, you're not worth talking to. Since I'm a big fan of "able to pay the bills", it looks like I should start learning one or the other. They're in about equal demand, based on a quick look at the local job market (Portland, OR), so does anyone have any suggestions/opinions on which one is better to pick up?

Based on my quick, superficial view, here's what I'm seeing:

J2EE
Pros : Open, multi-platform, not MSFT
Cons : it's a confused jumble of separate standards & APIs.

.NET
Pros : seems to have a consistent direction
Cons : MSFT only

I would swing the .NET way.. from there you can access VB.NET, C#.NET, J#.NET, ADO.NET, and ASP.NET fairly easily (syntax differences mostly). It has the more bang for your buck I would say.
 
Personally, I say go Java - but not J2EE. J2EE is just an application framework, and it's one of the oldest....meaning it's an over-engineered, bloated codebase which requires you to jump through hoops just to get the basics done. J2EE is a jumbled mass of confusing APIs, you're right - but Java isn't. Sure, there are many alternatives for each job, but that just means you get to pick one that suits you rather than be told how you must do something by the guys who wrote the language.

With regard to jobs, when they say "J2EE", 90% of the time they just mean "we run a web app coded in Java", or "our web app runs on a J2EE-compliant container".

I'd suggest that just because learning .NET lets you use VB, C#, J#...that doesn't give you any good reason to use it. They're all just variants of the same thing (by the same token, I'd say you could use Groovy, jRuby etc on the JVM, but that's no more reason to learn Java). ADO.NET is just the .NET equivalent of JDBC (you'll usually use a persistence framework instead anyway), and ASP.NET is far less functional and flexible than any of the web-based application and templating frameworks available for Java.

In short - it's up to you, but if you go down the .NET road then there's no realistic way to reconcile that with your Unix/Linux roots (Mono isn't really used in the business world, which is what you seem to be aiming for).

EDIT: Oh, and another thing; each time Microsoft updates the .NET CLR, it's incompatible with older versions (for any naysayers out there, try running an ASP.NET 1.1 site using the ASP.NET 2.0 framework) - that means that you have to relearn a metric crapload of minor syntax and framework differences just to stay relevant. With Java, new releases are broadly backward compatible, so there's no rewriting of code (or at least, extremely little in the fringe cases) just to keep it running with the latest updates.
 
What is your favorite type of work first.

If you like doing large enterprise type of applications that are public facing, I would go down the J2EE route.

If you like doing internal applications, with some mix of external, I'd go .Net (and technically, .Net is not MS only, as Mono is able to run a good portion of .Net apps). And within .Net I would specifically look towards C# if you are a backend type of guy, ASP.Net if you are a frontend type of guy, and throw in a little of VB.Net for good (mis)fortune.
 
EDIT: Oh, and another thing; each time Microsoft updates the .NET CLR, it's incompatible with older versions (for any naysayers out there, try running an ASP.NET 1.1 site using the ASP.NET 2.0 framework) -
I've run plenty of ASP.NET 1.1 web applications on 2.0. Some stuff does break, but it's very largely backwards compatible. There is plenty of other software that works with a minimum or higher .NET Framework version.

BTW, there is plenty of Java software that breaks between versions too. But I remember now that you're just very anti-.NET. I'll take your opinion for what it's worth. :p
 
I've run plenty of ASP.NET 1.1 web applications on 2.0. Some stuff does break, but it's very largely backwards compatible. There is plenty of other software that works with a minimum or higher .NET Framework version.

I've never managed it...you're clearly more blessed than I. I would say this, though - if this is genuinely the rule and not the exception, then why do Microsoft feel it necessary to maintain a switch in IIS 5 and 6 to choose which CLR version you want to run your application? Surely if it was truly backward-compatible, then just running everything with the latest version would be fine?

BTW, there is plenty of Java software that breaks between versions too. But I remember now that you're just very anti-.NET. I'll take your opinion for what it's worth. :p

Actually, you're dead wrong. I personally believe that .NET is fantastic for Windows-based applications. It's reasonably fast, and cuts down on huge amounts of development time for a lot of requirements. What it doesn't do, though, is web applications in a flexible and modern manner. The framework Microsoft shoe-horns you into is simply not up to snuff when compared with a lot of the more modern frameworks available for Java, Ruby, Groovy and PHP (I'm not familiar with any other languages, so I can't comment on them).

Basically, ASP.NET leaves far too little wiggle-room for my personal taste - and, just so you don't get confused, this is my personal view. I don't expect anyone else to subscribe to it (although I know there are a lot of people out there who do). Thing is, the OP didn't ask for an unbiased view from accredited members of the journalist trade; he asked for opinions and experience, which is precisely what I gave. If you don't think that's worth anything, then I submit that frequenting a forum on the web is probably only going to result in heartburn and ulcers for you ;)
 
Yeah, it must be some kind of blessing. Otherwise I would have to jump into each thread that mentions .NET and spew misinformation.
 
.net all the way.

Also, I find ASP.NET far better than PHP.

Stuff I have experience in:
VB6
Java
C#
VB.net
ASP.NET
AJAX
WinForms
ADO.NET
etc.

I prefer .net to java anyday. And that's my personal preference.

Also, I dont really know how the java industry is with pay, but, as a .net developer, I'm making over 6 figures right now...
 
Personally, I say go Java - but not J2EE. J2EE is just an application framework, and it's one of the oldest....meaning it's an over-engineered, bloated codebase which requires you to jump through hoops just to get the basics done. J2EE is a jumbled mass of confusing APIs, you're right - but Java isn't.

This is where I get lost - I know Java from back in college (1.3 or 1.4, I forget) but haven't really touched it since '02 - but then you have JSP, JSF, Servlets, Struts, Hibernate, and so on. It's just not obvious where you should really even start digging into it.
 
This is where I get lost - I know Java from back in college (1.3 or 1.4, I forget) but haven't really touched it since '02 - but then you have JSP, JSF, Servlets, Struts, Hibernate, and so on. It's just not obvious where you should really even start digging into it.

Well....I can see how you'd get confused, but it helps if you bear in mind what each of those technologies does:

JSP/JSF - Templating (ie generating the HTML to be sent to the browser)
Servlets - Running the actual server-side code and logic
Hibernate - A persistence engine, which effectively insulates you from writing SQL to get data from the database. It'll take your data and represent it as POJOs (Plain Old Java Objects) for use in your Servlets/logic; IBATIS is another good one.
Struts - Ties the servlets and templating technology (and whatever persistence framework you're using) together using the MVC pattern (Model-View-Controller), in order to better organise your code. There are better frameworks out there though, really - Spring is one of them, although it's horrendously complicated for the novice.

I'd suggest taking a JSP/Servlets tutorial first (plenty out there), then moving on to Spring if you like what you see.
 
Generally, I tend to favor the open-source solution. Java is an open-source language, .NET is not. Although, there are open-source implementations for .NET, such as the Mono project, Java is now more open than .NET.
 
I've never managed it...you're clearly more blessed than I. I would say this, though - if this is genuinely the rule and not the exception, then why do Microsoft feel it necessary to maintain a switch in IIS 5 and 6 to choose which CLR version you want to run your application? Surely if it was truly backward-compatible, then just running everything with the latest version would be fine?

...

Basically, ASP.NET leaves far too little wiggle-room for my personal taste - and, just so you don't get confused, this is my personal view. I don't expect anyone else to subscribe to it (although I know there are a lot of people out there who do). Thing is, the OP didn't ask for an unbiased view from accredited members of the journalist trade; he asked for opinions and experience, which is precisely what I gave. If you don't think that's worth anything, then I submit that frequenting a forum on the web is probably only going to result in heartburn and ulcers for you ;)


The CLR was completely different from version 1.1 to 2.0, which is why there is a switch in IIS 5/6 for which version to run. Microsoft DID receive a lot of flak for this, which is why the newest version of the framework, 3.5, is just additional libraries. The CLR compiler is the same one that is used with 2.0. In IIS you only have the options for 1.1 or 2.0; there is no 3.5 option. Now the naming conventions of the framework versions is a whole other story.

Also, Microsoft has been listening to people complaining about how there is no other alternatives to web application development besides web forms. Currently they are in development of the MVC framework (currently Beta 3), which is similar to Rails. I can only say I've used it once or twice, just fooling around, but it does seem powerful and gets rid of many of the problems with webforms (post back, viewstate, etc).

To respond to the post above mine, Microsoft just released the source code to numerous namespaces with the release of Visual Studio 2008. Granted it's a read-only license, but what possible reason would a developer have to modify a framework class in the first place?

Now to answer the OP's question, I personally enjoy programing with .NET. Like other people, it's my personal preference. Microsoft has been doing a lot of innovative things (LINQ, the dynamic language runtime, etc) that will make development much better in my opinion. Granted there will be a steeper learning curve, but the benefits are great.
 
Basically, ASP.NET leaves far too little wiggle-room for my personal taste - and, just so you don't get confused, this is my personal view. I don't expect anyone else to subscribe to it (although I know there are a lot of people out there who do). Thing is, the OP didn't ask for an unbiased view from accredited members of the journalist trade; he asked for opinions and experience, which is precisely what I gave. If you don't think that's worth anything, then I submit that frequenting a forum on the web is probably only going to result in heartburn and ulcers for you ;)

I'm studying ASP.NET. I'm quite novice at the moment. I'm genuinely curious why you say that ASP.NET is not very flexible. I noticed that ASP.NET is heavily run by their web server controls. Is this what you're talking about when you say that it's not flexible?
From my learning I will say that my readings can be summed up in these type of statements: "Here are the .NET classes, here is what you can do with them and how to use them" and "Here are our webserver controls, here is what you can do with them and how to use them."
However, you can create your own web server controls. Although I have no idea what kind of work that entails.
 
I'm studying ASP.NET. I'm quite novice at the moment. I'm genuinely curious why you say that ASP.NET is not very flexible. I noticed that ASP.NET is heavily run by their web server controls. Is this what you're talking about when you say that it's not flexible?
From my learning I will say that my readings can be summed up in these type of statements: "Here are the .NET classes, here is what you can do with them and how to use them" and "Here are our webserver controls, here is what you can do with them and how to use them."
However, you can create your own web server controls. Although I have no idea what kind of work that entails.

No, I'm not talking about individual controls - I'm talking about application architectures.

In Java, there are many, many different frameworks to suit almost every application design pattern - Struts, Spring, Stripes, etc (there are even a few which don't begin with "s"). Admittedly, my favourites are all based on the MVC (Model View Controller) pattern, but there's a lot of choice out there. However, the fact is that with ASP.NET you're pretty much stuck with the Front Controller pattern, based around components. IMO, trying to force WinForms-style development into a web-context was a big mistake because it's an inherently different context with different requirements, but there are at least enough people on here disagreeing with me to make it at least partially worthwhile.

I used to really like ASP.NET v2.0 - in the beta; the free dev tools really sold me on it. However, that changed when I started using it after the release; I mean, who on earth builds an object persistence framework and forgets to implement writing back to the database? It's the little things like that (and I found lots of them, back when I was doing my level best to give it a chance because it seemed like it would provide a lower annoyance level than Struts and its black holes) which just make it feel unfinished to me. I don't need to be constantly irritated when I'm writing code; users and customers do that enough for me. In the end, I gave up because I was having to add so much functionality to the existing server controls, and I realised that Java's custom tags did everything I needed out of the box.

For PXC's benefit, this is just my experience and opinion. Obviously there are a lot of people who have the opposite opinion, so feel free to listen to them instead of me ;)
 
I'm not going to recommend one over the other, just piping in that j2ee is slowly getting there - an example being able to use annotations to define your web service, as opposed to the old painful xml deployment descriptor style work.
 
Choosing a language to learn is largely irrelevent without having some idea about the jobs you will be applying for.

Unfortunately, it is true that recruiters often choose based on buzzwords and raw time spent in the industry. Your manager however, will mostly care about how your particular skills and specific experiences fit into THEIR business. You will inevitably have to learn a lot of new stuff anyway.
 
In Canada, North of the border, .NET is becoming more popular than JAVA. I say, go with the language everyone is asking for - .NET. When it comes to jobs sometimes it's better to pick the one that's hot right now.

I never really understood JAVA. I had always found it hard. .NET is easier to learn. You'll need to read up on all the sql express stuff, free development tools, AJAX. The microsoft site has videos for teaching you stuff. I haven't really looked at the videos in a while, though.
 
I tend to lean towards .NET nowadays. I started with Java, and have used it for a number of projects, but after a few projects using C#, it's hard to go back. Contrary to ameoba's earlier statement, it's not MSFT only, as the Mono project has all of .NET 1.1 and most of 2.0 implemented on an open source framework. Though, as mikeblas says... why does that matter (why not use the best platform)?
 
World according to heelix - you will see more .NET work building out thick client applications, where more server side work is done in Java. Obviously, there can be crossover. As a soulless code whore, the money is better on the Java side. Managers look at 'how easy' it is to whack out something in VB.NET and pay that rate. One of the unfortunate side effects of PHP being so 'easy'. Not to say you cannot be a dark master on any platform.. but the bar is low enough that there are many, many people on the Microsoft side who 1) can get something running and 2) have no business coding.

Most of my stuff tends to be JS* front end, Java on the mid tier, and hitting a database one way or another. Libraries and frameworks change every now and then... but the basic pattern for server side work is pretty constant.
 
I'm learning .NET right now, and I've got to say I am blown away with how seamless and easy it can be to do things with it...but I am very new to this even though I have done web development for years...very interesting thread thus far...
 
Back
Top