views:

88

answers:

1

In wiki, it says:

Java Platform, Enterprise Edition [...] to deploy [...] distributed, multi-tier Java software, based largely on modular components running on an application server.

As far as i know, distributed means "multiple computers" which is equal to "multiple servers", so why it says in the end "running on an application server" (so only 1 server) ?

Does a JEE application have to be multi-tier ?

Are application based on a Service-oriented architecture also JEE applications ?

Applications using RMI and sockets, are they JEE applications (since the are calls between differents processes which can be on differents servers) ?

multi-tier and/or ditstributed do they have the same meaning ?

When we talk about layers in these apps, is it physical layers ( database, browser, web server,...) or logical layers (data access layer, business layer,...) ?

+2  A: 

What is meant is that JavaEE is a programming platform that provides many abstractions to build distributed, multi-tier systems.

You can also do that all by yourself without using the JavaEE abstractions and using RMI or sockets, etc. directly but then you can't consider your solution to be JavaEE.

That said, the term application server refers to a software that is use to host other applications. Think of it like Tomcat which is a web server that can be used to host multiple web app. The term middleware or container is also sometimes used to refer to such kind of software. The term server here must not be confused with the notion of server as a physical machine.

So what is meant, is that the each computer in the network runs an application server that is used to host the JavaEE application.

JavaEE application follow usually a layered architecture. A layer is a logical concept, a tier is a phyisical/deployment consideration. All layers can be in the same computer, in which case you won't speak of true multi-tier. You can also split the layers on different tiers. The trend is to simplify things, and most project I've seen were layered, but not split across physical tiers.

And finally, SOA is an architectural style to build large enterprise system. A JavaEE application can integrate in a SOA architecture. Again, JavaEE is a set of abstractions, you can use them in more or less creative ways to write web app or other applications, including things that would integrate in a SOA architecture, notably web services.

Hope it answers your questions.

ewernli
Why RMI or sockets aren't considered to be JavaEE ?
mohamida
AFAIK, they are considered part of the Java SE platform. Java EE is a bunch of API added on top of Java SE, such as EJB, JTA, JMS, JSP/Servlet, JSF, etc. The list of API is here http://download.oracle.com/javaee/5/api/. If you're not using one of these, you can not really say you do JavaEE. Which doesn't mean you're not doing enterprise-grade, top quality software. I've seen great backend software written using RMI and Java SE.
ewernli
So, the fact you're not using one of the JavaEE's api means that you're not using Java EE ? But with RMI and socket, you can develop multi-tier, diistributed applications ?
mohamida
@mohamida Exactly.
ewernli
multi-tier and/or ditstributed do they have the same meaning ?When we talk about layers in these apps, is it physical layers ( database, browser, web server,...) or logical layers (data access layer, business layer,...) ?
mohamida
@mohamida This last comment is kind of a question on its own, so I would suggest you spawn another one. My answer would be too lengthy for a comment :)
ewernli
you're right. Here's the new question: http://stackoverflow.com/questions/3542204/multi-tier-vs-distibuted
mohamida