Which Web Application Stack Is Best for Me?
The WISA StackMicrosoft did a fine job with the .NET Framework, especially version 3.5 and higher. It doesn't offer a choice of flavors or options, but there are an abundance of certified professionals who can set up and administer it for any shop's particular needs. For convenience and uniformity, becoming a "Microsoft Shop" has some appeal; The products come preconfigured for use with each other, so you don't need to do much more than run an install. However, it is expensive.
Windows Server 2008 comes with features that IT administrators beg for, but that ultimately aren't as useful to web applications. Internet Information Services (IIS) 7.0 is an important component, but only because it enables powerful capabilities for SQL Server and ASP.NET. When standalone and not very tightly integrated with those technologies, IIS is bulky as a server. SQL Server, along with most of the components in the stack, is a hardware hog. The benefits of WISA really seem targeted at enterprises looking for features such as clustering, failover, security, automated administration, and business intelligence.
Obviously, because .NET is intermediately compiled, source code is not visible to anyone. It is just-in-time (JIT) compiled instead of interpreted on the fly. This enables two things: code hiding and increased performance. So it is actually possible to create a saleable web application without selling the code. The performance benefit results from the .NET JIT architecture needing to compile only once.
The obvious hitch in the design is the lack of portability. Other than the Mono open source development platform, there are NO alternatives to deploying a WISA web application. You are allowed to choose another DBMS though!
Ultimately, WISA is overkill for anything other than an enterprise application or a SMB application that needs any of the WISA advanced features. The price for the software and for the professional services to maintain it doesn't really justify it for anything less. Of course, students or hobbyists hoping to get enterprise jobs probably should get themselves acquainted with this stack.
The Java Web StackRed Hat, Sun, and every other enterprise Java vendor in the world implement their own Java web stacks. Sun, for instance, advocates using Solaris/GlassFish/MySQL/JSP (JavaServer Pages), while Red Hat pushes a more mature Java web stack: Red Hat/Tomcat/MySQL or PostgreSQL/JSP. But Java is Java, no matter who implements it. While functionally that's true, performance and ease of development differ drastically.
Red Hat StackRed Hat is Linux, which, again, is great for server software. Tomcat is now in its sixth version and well architected. It's a pure Java server, which may have performance implications if used as a purely HTTP 1.1 server. A nice feature of Tomcat is that it is fully configurable using just XML configuration files, much like IIS in the WISA stack. Unlike the IIS/.NET architecture, Tomcat's HTTP connector (Coyote) is separate from its server-side processor (Catalina). This means, as the Java Servlet API specifies, slightly less access to the I/O stream. Because servlets are compiled into JARs, they offer information hiding and a performance benefit that purely scripted technologies don't.
MySQL works very well in a web application, but when using Java persistence or transaction management (JPA/JTA), it doesn't really matter what database you use because performance is bottlenecked at the application. As a post from TheServerSide.com point out, performance is better achieved writing custom stored procedures.Still, MySQL scales nicely (with help) for certain (i.e., read-only) web applications, but lacks true DBMS functionality (constraints, triggers, etc).
JBoss StackJBoss Web Server combines an EAR (enterprise application resource) server and a web server into one product. It uses the Tomcat server. While there is no specified database, HSQLDB and MySQL seem to be the most common. Typically, JBoss applications use the Hibernate persistence manager. It is a pure Java product, meaning that applications developed for it are write once, deploy anywhere.
Because JBoss is essentially just a Java application, performance is completely dependent on proper setup. While the setup can be hard to get right and hard to get high-performance from, it does come with load balancing already intact.
Developing for this stack also is fairly easy, thanks to Eclipse and NetBeans. Developers need only point to their downloaded copy of JBoss and they can start coding right away. Furthermore, the J2EE standard provides a lot of enterprise-level components such as transactions and pooling, much like its .NET counterpart.
Sun StackSun offers GlassFish as an alternative to other stacks such as JBoss. Really, JBoss and GlassFish are designed to be highly deployable web application containers; you deploy GlassFishwhich is highly portable from target to targetwith the web application itself. With GlassFish (although the current 2.x version is reportedly buggy), using a modified Tomcat server and including something called Grizzly is supposed to enable scalability. That would give Sun a line of components to implement their own complete stack.
To summarize, the Java web stack (depending on how it's defined) is good for any level of development. Its versatility is probably why so many stack variations exist. The Red Hat stack is probably more for SMB or enterprise developments. Red Hat has a reputation for being very good with support. Hobbyists and SMBs can easily set up their own Java web stack for free on top of their current OS, but setting up the OS is entirely up to them.
Page 2 of 3