Well Suited: Perfect for hosting your own website. And, I don't mean just an individual with a port of MySpace. I mean an industrial strength, commercial grade replacement for Microsoft IIS. If you need a web server that provides a feature-rich environment with support for multiple sites (hosted in the same server), with such features as virtual hosting, and modular feature design, than Apache Web Server is right on the money. Less Well-Suited: Single page, small feature-set websites. Apache is a lot of trouble for developers to set up, just to send/receive JSON strings of a few bytes. You're really better off using something smaller and faster/simpler (lighttpd for example).
Tomcat is more than enough to deploy most of the mid-end web applications without any problem but for the high-end applications which require high scalability and high availability, which might need some tune-ups with the support of expertise in this regard. Otherwise, you may realize numerous performance issues, memory leaks, server crashes etc.
Apache is Open Source, governed well (the foundation) and probably the most stable computing platform ever.
Apache is probably one of the most customizable and configurable pieces of software that I have ever run across in more than 30 years of development.
If there is something that Apache can not do, then you need to ask yourself; should I be doing that? The point here is that it is a solid solution and seems to only integrate other technologies that are of the highest caliber.
Apache will live forever and you can not go wrong with it.
tomcat is just part of the J2EE specification implementation, majorly focusing on the servlet (front-end) part. If you requires the full J2ee stack, like EJB support, you need consider other containers like Weblogic
tomcat's cluster level support is very limited
tomcat's admin/configuration is not so intuitive, and default logging needs a lot of improvement
Tomcat has a very rich API set which allows us to implement our automation script to trigger the deployment, configure, stop and start Tomcat from the command line. In our projects, we embedded Tomcat in our Eclipse in all of the developer's machines so they could quickly verify their code with little effort, Azure Webapp has strong support for Tomcat so we could move our application to Azure cloud very easy. One drawback is Tomcat UI quite poorly features but we almost do not use it.
Tomcat doesn't have a built-in watchdog that ensures restart upon failure, so you have to provide it externally. A very good solution is java service wrapper. The community edition is able to restart Tomcat upon out of memories exceptions.
Tomcat support to customize memory used and allow us to define the Connection pool and thread pool to increase system performance and availability, Tomcat server itself consume very little memory and almost no footprint. We use Tomcat in our production environment which has up to thousands of concurrent users and it is stable and provides a quick response.
I give this rating because there is so much Apache documentation and information on the web that you can literally do anything. This has to do with the fact that there is a huge Open Source community that is beyond mature and perhaps one of the most helpful to be found. The only thing that should hold anyone back from anything is that they can not read. RTFM, my friend. And I must say that the manual is excellent.
The comparison with other products from IBM or Oracle is difficult. These are mostly software that has to be paid for. The only fair comparison at eye level is probably the NGINX web server: It is also free and offers even higher performance. In the meantime, there is also a paid Plus version of NGINX. This has extended support and special functions.
Commercial application servers are available that support enterprise application needs, but many times this is overkill for most web applications running in the cloud, particularly for independent software vendors. The capabilities and management tools provided with these applications are superior to Tomcat, but most times unnecessary for the vast majority of web applications developed in Java.
Apache web server helped us in building client applications without much investment in the underlying server configuration which gives us the ability to start on a new project quickly and upgrade its resources as and when needed.
Using software which is well-supported by a community of open source contributors makes tasks easy and affordable when need help since a couple of minutes on Google saves a couple of dollars every time and you don't need a specialized support person unless there is something significant needing to be changed.
It has simplified administration efforts, thus saving much time to focus on other projects and issues.
It saves us in costs, as there are no licensing requirements.
It gives us the ability to manage all of our java applets in one place, so as to be able to host both development and production systems on one server.