tags:

views:

139

answers:

5

I am the guy who writes java controllers (mvc), who does tests with junit, who writes jdbc, who uses maven ...

basically, how do I know when is this Java EE and when is not? I don't write servlets or jsps (which are part of Java EE) but I do use API and so ...

What am I? Java EE programmer? Java SE programmer? If you were Spring/Hibernate developer, what you are? Java EE or Java SE?

Maybe this is stupid question (if so then I am sorry), but what's the "thin line" between Java SE and Java EE?

+1  A: 

JDBC is part of the core Java SE spec.

It goes without saying that Java EE is built on top of Java SE. If you're Java EE, you're automatically Java SE as well.

Servlets and JSPs are part of Java EE, but some people don't consider you to be fully Java EE unless you're using EJBs and app server services like connection pooling, naming, queuing, etc.

Spring was a reaction against EJB 2.0 and its complexity. It's built on top of Java SE, usually deploys on Java EE app servers, and provides a lot of Java EE functionality (e.g., persistence, lifecycle, etc.) without resorting to the EJB machinery. It uses servlets, JSPs, persistence, naming, queuing, and other Java EE services to do its work. Spring is not a Java EE spec; it's the brainchild of Rod Johnson. It's now owned by VMWare.

duffymo
I write code which runs on application server but I am not the one who sets up the application server. I don't write EJBs. Can this answer be so simple or can it be not?
Collaborative
Sounds great. Just use that.
Thorbjørn Ravn Andersen
A: 

J2EE is a collection of APIs and Specifications for Enterprise Development, if you're not using any of those API's then, from my point of view you're a J2SE Developer, even when using Spring.

Of course, anyone who does J2EE development also has to do J2SE development by default, since all those J2EE API's are based and built over the Java language platform.

StudiousJoseph
Be up to date. *J2SE* and *J2EE* (1.2-1.4) have been upgraded to *Java SE* and *Java EE* (>=1.5/5.0) over 4 years ago.
BalusC
+4  A: 

More importantly, does it matter?

"What's in a name? That which we call a rose

By any other name would smell as sweet."

The only purpose for having these labels is as a shortcut for bundling technologies together. I share your view that these are exceptionally handwavy terms, and consequently no-one is going to use them for anything of consequence.

Sure, companies might advertise for a "J2EE developer". But they'll always mention in the description/interview that they mean e.g. JBoss and JPA, for instance, rather than simply saying "are you J2EE" and assuming you both know exactly what that means.

And outside of that specific example, I very rarely come across the terms used (because they're not very useful). Asking if you have experience with Java is useful, at a more precise level asking if you have experience with Tomcat or Hibernate is useful, but asking if someone has experience with J2EE is unlikely to yield a usable answer.

Is there some specific circumstance that's prompted you to ask this question?

Andrzej Doyle
Andrzej you got it :) It's companies job offers. I work as described and then I came to interview and was asked "Do you have experience with Java EE" ? Well ...
Collaborative
Then be honest and tell as you told us in the above question. At least do not be hesitating/unsure. Just tell what you know.
BalusC
A: 

Java EE is a huge API. You're using mainly the Java EE web profile. So, I'd say, you're a "Java EE web application developer". For the specific skills, just use the room you have in your CV and/or interviews.

BalusC
A: 

It is java EE when the code knows it is in a EE context. Classes or interfaces only presnt in a EE contxt and which doesn't make sense in a SE application.

For resumes just list "Java" with the technologies you've used.

Thorbjørn Ravn Andersen