1
votes

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 Java EE application have to be multi-tier ?

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

Applications using RMI and sockets, are they Java EE applications (since there are calls between different processes which can be on different 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,...) ?

1

1 Answers

2
votes

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.