aspose file tools*
The moose likes Tomcat and the fly likes Is tomcat an Application Server? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Products » Tomcat
Bookmark "Is tomcat an Application Server?" Watch "Is tomcat an Application Server?" New topic
Author

Is tomcat an Application Server?

Vaibhav Sharma
Greenhorn

Joined: Mar 28, 2008
Posts: 14
My very first question on this forum is to the moderator of the forum.

Can you please tell me why have you termed Apache/Tomcat as Application Server ? I feel that Apache Tomcat is not an Application Server.
[ June 09, 2008: Message edited by: Bear Bibeault ]

SCJP 1.4 <br />SCWCD 5.0
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61232
    
  66

As there is no set definition for application server, you can decide for yourself.

Here's a timely article posted today at Dzone on that very topic.


[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41899
    
  63
http://faq.javaranch.com/java/WebVsApplicationServer also talks about this.


Ping & DNS - my free Android networking tools app
Vaibhav Sharma
Greenhorn

Joined: Mar 28, 2008
Posts: 14
I am sorry but I dont agree with you at all. Reason for my argument is that you can call any product as Application Server(version x.x) if it implements all the specifications released for the version x.x. But here this is not the case. Although, the Tomcat provides implementations to most of the APIs and somehow we can also connect to other products, using which we can eventually get all the services which are part of the Application Server Specification, but in this manner you cannot call tomcat as Application Server, as it doesnt provide all the features on its own.
If you still feel that Tomcat is Application Server, then tomorrow I may come up with a product that is having features of Http Server and provides support or connectivity to all the other products which are in some or other ways implementing the specifications. In a sense , I can also claim my product as Application Server.


I hope you are getting my doubt.
Ben Souther
Sheriff

Joined: Dec 11, 2004
Posts: 13410

Originally posted by Vaibhav Sharma:
Although, the Tomcat provides implementations to most of the APIs and somehow we can also connect to other products, using which we can eventually get all the services which are part of the Application Server Specification, but in this manner you cannot call tomcat as Application Server, as it doesnt provide all the features on its own.


Can you provide a link to the "Application Server Specification"?

As the faq entry says, Tomcat doesn't implement the full JEE (formerly J2EE) specification but many applications that don't require the full specification run very well on Tomcat. In fact, I would dare say they run better, or, at least, more efficiently on Tomcat because services that aren't needed aren't being run.

If you're saying that Tomcat isn't a complete JEE application server, you're correct. It doesn't intend to be. But, to say that it isn't an application server would be less than correct. If it's not an application server at all, how are so many applications running on it?


Java API J2EE API Servlet Spec JSP Spec How to ask a question... Simple Servlet Examples jsonf
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41899
    
  63
There is no such thing as an "Application Server Specification". There is a "JEE Specification", and servers that fully implement it are generally considered to be application servers. But as pointed out above, there is no generally agreed-upon definition of "application server".

PS: Which, as I now see, is just about what Ben said.
[ June 21, 2008: Message edited by: Ulf Dittmer ]
Vaibhav Sharma
Greenhorn

Joined: Mar 28, 2008
Posts: 14
Originally posted by Ulf Dittmer:
There is no such thing as an "Application Server Specification". There is a "JEE Specification", and servers that fully implement it are generally considered to be application servers. But as pointed out above, there is no generally agreed-upon definition of "application server".


I totally agree with this statement. And I actually meant that only.Sorry for making implicitly loose statement.


Originally posted by Ben Souther:

As the faq entry says, Tomcat doesn't implement the full JEE (formerly J2EE) specification but many applications that don't require the full specification run very well on Tomcat. In fact, I would dare say they run better, or, at least, more efficiently on Tomcat because services that aren't needed aren't being run.

If you're saying that Tomcat isn't a complete JEE application server, you're correct. It doesn't intend to be. But, to say that it isn't an application server would be less than correct.


I understood the argument of the moderator, which i feel is not less than a loose statement again, in context of JEE. My belief that javaranch speak Java was just disbelief. Ok, so if you are talking in general terms then its alright.
But, I never expected Java people using such terminology to create more confusions.I strongly feel that when we are talking on a Java related site, we should understand the sensitivity of terms such as Application Server. Ofcourse no one is coming to you to ask for a microsoft application server Tomcat.If i am visiting JavaRanch, I mean only a JEE Application Server. I again emphasize on the fact that we should refer to tomcat as An Open Source JSP and Servlet Container from the Apache Foundation. , as referred to by the Apache Foundation itself. For your reference I am also providing you the link Apache Tomcat Homepage.

Now ,if you somehow agree to the fact that we are talking about the Application Servers, that too on the JavaRanch.com then I would request you to use the Application Server or so called JEE Application Server, only for the officially compliant or say full reference implementations.


JOnAS application server was the first open source application server to have achieved official compliance with the Java Enterprise Specification. BEA delivered the first Java EE 5 certified application server followed by Sun Microsystems' reference implementation GlassFish.


Again for your reference , JEE/J2EE Application Server

I strongly request Mr.Ben to understand the responsibility of being a Rancher and moderator.Please,try to bring uniformity to the Open source world by maintaining the correct terminology.I would be highly grateful to you if you use a more specific terminology like, Apache Tomcat Web Container


I am sorry, if i am bothering you too much on this fact.But, the reason behind this is being a Rancher and (R&D-cum-Training Institute) member, I always recommend the beginners to join Javaranch.But when they see this type of Terminology usage, they are demoralised to enter the open-source Java world.Please change the subtitle of the forum, which calls it as Application Server.


Thanks and Regards,
Vaibhav
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41899
    
  63
If i am visiting JavaRanch, I mean only a JEE Application Server.

There's the rub - you may understand "app server" to mean "JEE app server", but other people understand it to mean something else. This is generally understood, although it still gets asked about a lot (hence the FAQ page). JavaRanch doesn't take a position in that discussion.

But I can see how the description of the forum may make it seem as if we do. I have thus removed the word "application" from it.

As a matter of fact, I would advise to avoid the term "web container". As the FAQ states, "web server" and "servlet container" are terms that are better suited to indicate what a server can be used for. "web container" is not a widely used term, even if the good folks at Apache chose to label their server that way.
[ June 21, 2008: Message edited by: Ulf Dittmer ]
Ben Souther
Sheriff

Joined: Dec 11, 2004
Posts: 13410

I think it would be a mistake to say that Tomcat (or Resin, or Jetty) isn't an application server, even among the Java community. Too many applications, ranging from small learning exercises to large commercial applications are served up by it. Even the servlet spec refers to each context as a "web application". An Enterprise application is one that could use the full JEE stack; requiring a full JEE server.

Assigning the general term to something so specific leaves a gap in the language that requires a lot of explaining. It's better, in my opinion to add more specific language when you want to describe something more specific; not the other way around.

In any case, the reason I put "Tomcat Application Server" in the description of this forum was not to push my opinion of this issue. I did it because a lot of people have taken "Apache / Tomcat" to mean "all things Apache... and Tomcat" and placed questions about other Apache projects here, only to have them languish for a long time, unanswered. I'll change it to "The Tomcat Servlet Container" to clear up any confusion about this issue as well.

-Ben
Vaibhav Sharma
Greenhorn

Joined: Mar 28, 2008
Posts: 14
Dear Ben,

Thanks a lot for making the favor to Java community.Infact, i face these questions from 100s of aspirants opting their career in Java.I do understand the kind of justification provided by you and even i used to provide them the same.But when they are also studying (.Net) framework, they dont find things much confusing there. Resulting in a bad impression for java.
Anyways,we have to make things more clearer.I also think that yes we can call it an application server but then it would be a big injustice to the efforts put by Glassfish and other existing JEE Application Server, who are on the toes to serve better, by releasing nightly builds and Stable versions.
Otherwise, beginners may feel why Tomcat and Glassfish both are Application server with so much of differences.Why can't I do it all over Tomcat, which i can do easily over Glassfish? The reason is we use term Application Server interchangeably with JEE Application Server, in context of Java world.
Now coming to the terminology "Web Container".I preferred this name instead of Servlet Container, because Servlets and JSPs are both known as Web Components.We know very well that Tomcat supports both Servlets/JSPs and even Apache Organisation calls this product as Servlet/JSP container.We also know that Components work with containers, whether it be EJB component+EJB Container... Or in our case Web Component(Servlet/JSP)+Web Container(Tomcat/Resin).So to make it more readable and conventional, I mentioned it as Web Container.
I guess you would take note of this to understand the justification behind the naming convention used by me.
Thanks a lot for your prompt and sincere effort as a true moderator.Hats off to you.

Regards,
Vaibhav Sharma
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41899
    
  63
The reason is we use term Application Server interchangeably with JEE Application Server, in context of Java world.

You seem to be missing the point that this statement is patently false. As has been pointed out repeatedly by now, there is no commonly agreed-upon definition of "application server". In particular, many people understand it to mean something other that "JEE application server" (just like there are many people who understand those terms to mean the same thing). Hence the confusion over these terms.
[ June 22, 2008: Message edited by: Ulf Dittmer ]
Ben Souther
Sheriff

Joined: Dec 11, 2004
Posts: 13410

For the record, I don't think calling Tomcat, or Resin, or Jetty an application server does any injustice to those building full JEE servers.

A full JEE server is a more specific type of Java application server.

If anything, trying to usurp the name "application server" to mean only a full JEE server, even within the Java community, does an injustice to those of us working on lighter weight products which are fully capable of serving up Java applications on the web but don't attempt to support every feature in the JEE stack (and are BTW, open source). The attempt to own the label "application server" by those who mean "Full JEE Server" or "Enterprise Application Server" also creates problems for those of us who are in the business of selling or distributing Java web applications that would run better, faster, more securely, or more efficiently in a server that doesn't require the overhead required by those services that we don't need. Over the years, I've had several customers express concerns that our product was somewhat less than commercial quality because it didn't require a big server like Websphere, WebLogic, or JBoss.
I suspect that the agenda of those people was really to get proven experience with one of those products on their resume, but that's another discussion altogether.

In any case, the label "application server" in the description of this forum was not needed for me to achieve the goal of letting people know that this forum is for "Apache Tomcat", not for "Apache products including Tomcat" so I was happy to change it.

I'm looking forward to your continued participation in this and the other forums on JavaRanch.

-Ben
[ June 22, 2008: Message edited by: Ben Souther ]
Roger Chung-Wee
Ranch Hand

Joined: Sep 29, 2002
Posts: 1683
The JEE 5 specification has this to say about web applications.

Web applications are composed of web components and other data such as HTML pages. Web components execute in a web container. A web server includes
a web container and other protocol support, security support, and so on, as required by Java EE specifications.


So, both "web container" and "web server" can be regarded as official terms. I also have no problem with "application server" when the server is serving dynamic Java web applications.


SCJP 1.4, SCWCD 1.3, SCBCD 1.3
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61232
    
  66

And I believe that 33 angels can dance on the head of a pin. 34 if one goes on a diet.
Vaibhav Sharma
Greenhorn

Joined: Mar 28, 2008
Posts: 14
For Dittmer's comment i would just say that the same years long confusing terminologies exists (in case of Application Server).But thanks to the efforts of the Ben to happily change it, as he knows very well, that by doing this he was just doing things better and more specific, instead of using so called generic and arguably disputable terms such as Application Server.

To other comments i would just say that I have never hesitated in naming the Tomcat, the Application Server.But emphatically i always want myself and others to avoid this term as i can see that its not the appropriate and specific term(even as it is evident from the argument given by Ulf Dittmer).

I also very clearly understand that Tomcat runs Web Applications. But still it doesnt support the complete JEE stack.In case, if I want to change my application and wants to add EJB to it, then my tomcat "Web(Servlet/JSP)Container" would not help me in doing that. Even without other Apache products like Axis I cant even extend my application to use WebServices.

When I am talking about "Application Server" (which itself is a confusing term) in context of java I should mean that my so called Application Server should be able to support every thing that is part of JEE stack, why shall i need extra things for that?? Are those so much different or are those thought of being alienated to Java ? Whereas when I talk of the Application Server in terms of Microsoft .Net IIS Server provides complete support to any kind of application running over there, whether it be Web Service or anything else.And I strongly feel that this kind of loose behaviour and using Application Server(generic term) can be more confusing to a person who have no or little knowledge of Java.

This is the age of WebServices and we all want to go technology independent(to extract best of all technologies.. for eg JRuby and Jython have been introduced, Or say .Net supports J#).For that we need to make things more standardised which can be easily understood by all the technocrats using different technologies.


Why dont we simply make things much better and clearer(and more specific)?

I can see lots of such loose conventions in context of Java, which i would like to discuss in my next posts.

Lets make the Java world better...

Regards,
Vaibhav
Ben Souther
Sheriff

Joined: Dec 11, 2004
Posts: 13410

Originally posted by Vaibhav Sharma:
Why dont we simply make things much better and clearer(and more specific)?


That's my point, although I disagree with your premise that using the general term "Application Server" only for a specific type of server (one that can support every technology in the JEE stack) is clearer.

If you want more clarity, add more specific terms when you mean something more specific. They can all serve up applications so they should all be considered Java Application Servers. If you mean a Java Enterprise Application Server, then add 'Enterprise' so everyone knows that you mean something more specific.
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61232
    
  66

I vote that when we use the term "car" we mean a Dodge Caliber, 'cause that's what I drive, and I don't want anyone to be confused when we say "car". We can find another term for all the others.
Jimmy Clark
Ranch Hand

Joined: Apr 16, 2008
Posts: 2187
I vote that when we use the term "motor vehicle" we mean a Ford Taurus, 'cause that's what I drive, and I don't want anyone to be confused when we say "motor vehicle".

P.S. Tomcat is a Java web server.
[ June 23, 2008: Message edited by: James Clark ]
Vaibhav Sharma
Greenhorn

Joined: Mar 28, 2008
Posts: 14
Hahahaha... Clark..vey nice... Nice to hear so many comments..well... interesting to see that you people prefer comparing Java with Car and Motor Vehicle, instead of comparing it with other technologies like .Net or any others....fine..
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61232
    
  66

It's a cognitive process called an "analogy". Here's an explanation.

The point being, it doesn't make much sense to take a generic term and try to make it mean just one specific instance of an example of that term. If your aim is clarity, then trying to make "car" mean "Dodge Caliber" makes little sense, in the same way that trying to make "application server" mean a specific type of application server just muddles things up rather than adding any clarity.
Sidharth Pallai
Ranch Hand

Joined: Apr 21, 2008
Posts: 134

The argumentative explanations seems much popular.It seems subtly exploiting the exciting features of Java. One tends towards abstraction for general perspective,loosely coupling with non-specific concepts and other towards Inheritance for Cohesive & specific explanation.

Sorry folks if i did any fun of the post.I didn't mean it.


Thanks & Regards
Sidharth Pallai
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Is tomcat an Application Server?