views:

58

answers:

2

I'm a CS student and has rare experience from the enterprise software industry. When I'm reading about enterprise software platforms, I mostly read about these two:

By "enterprise software platforms" I mean frameworks and application servers with support for the same characteristics as J2EE and WCF has:

[JavaEE] provide functionality to deploy fault-tolerant, distributed, multi-tier Java software, based largely on modular components running on an application server.

WCF is designed in accordance with service oriented architecture principles to support distributed computing where services are consumed by consumers. Clients can consume multiple services and services can be consumed by multiple clients. Services are loosely coupled to each other.

  • Is there any alternatives to these two "enterprise software platforms"?
  • Isn't any other programming languages used in a bigger rate for this problem area?
  • Why isn't there any popular application servers for C++/Qt?

Note: By "Application Server" I mean a server mainly for GUI-software and not a Webserver/Web Framework. See what is the difference between web servers and application servers?

+1  A: 

Spring.py is available for Python.

duffymo
+3  A: 

Well, you can pretty much consider the high end IBM mainframe machines "application servers", they're pretty popular.

TUXEDO is a transaction manager that empowers a lot of high end applications, written in many things, like C++.

Microsoft had MTS (Microsoft Transaction Server) back in the day. It talked to C, C++, VB, etc.

Application Server is a nice, vague term. Tomcat is an application server, for example. Arguably ZOPE can be considered an application server.

But the thing, in my mind, that really distinguishes an Application Server from "just code" is the transaction manager. I don't consider a raw Tomcat an Application Server, for example, it's basically a really cool web server.

Most folks rely on the database for transactions, but a transaction manager works at a higher level where a database is simply a participant. And transaction managers are where a lot of the heavy lifting in terms of services and middleware offered by Application Servers happens. Transactions are really important in business processes.

JEE has transaction managers. I don't know of any other "free" system that offers a transaction manager capable of distributed transactions. As I mentioned, most folks rely on the DB and stop there.

There are several transaction managers that support Java JTA (JEE servers are JTA compliant internally), that's what Spring plugs in to in order to offer transaction services. (Spring is just a framework, it's not a server itself.)

When you add a TM to an OS, the entire machine can become an Application Server. That's what MTS does for Windows.

Java JEE app servers stand out because they make much of these services first class (thread pools, object allocation, database pooling, transactions, etc.). Many OSes offer all of these services, at least at the process level. But folks didn't care much to dedicate an entire machine to a task, and having to tune the OS to service that single application. But, all that capability is there.

Add in modern VM systems, and dedicated, "single task" OS instances make more sense. "This Linux VM handles my DNS", "This Linux VM handles my email", etc. So, perhaps the OS will be returning to being a dedicated Application Server.

Will Hartung
+1 Very informative
Jonas
Too bad this doesn't answer the question at all. Besides the citation of IBM mainframes, there's not another offering of an app server for another language besides Java and C#. And Tomcat "just a really cool web server"? It was a reference implementation for a servlet/JSP engine last time I checked. An app server is more than a transaction manager. It's distributed components and their lifecycle management, threading, naming, queuing, and other services in addition to. Citing only TM oversimplifies it, in my opinion.
duffymo
@duffymo - very little of which Tomcat provides. Microsoft Windows makes a fine app server for C++, VB, or most any language that can leverage .NET or COM+. VMS may very well provide these services (my VMS lore is 30 years out of date). Unix is a fine foundation, but out of the box it's not there. You need to add something like CORBA, TIBCO, and TUXEDO to round it out. Today no one bothers and runs Java JEE instead, since it does offer all of those, for free.
Will Hartung
Tomcat provides naming, lifecycle management for servlets, threading, and HTTP remoting. It's possible to add connection pooling and queuing using DBCP and a JMS implementation from Apache. I know that's cheating, but it can be done. "VMS lore" - mine is woefully out of date as well. Since no one runs DEC equipment anymore, I don't see why it would even come up. I thought the OP was asking about modern languages like C++, Python, Ruby, etc.
duffymo
@duffymo - Oh, you don't think he was interested in BLISS, FOCAL, and BASIC-PLUS2? And, yes, of course Tomcat can be "turned in to" an app server, which is why I qualified my statement as "raw Tomcat". Mix Tomcat and something like Spring and such, and you have an excellent app server. Tomcat is like Unix is that sense -- good platform to build off of, but not there out of the box.
Will Hartung
@Will - my guess is "no", but maybe I've been too hasty. My point is that Tomcat can do a lot even without Spring. The services that I cited aren't insignificant. You can go a very long way indeed with JSPs written using JSTL, servlets, and JDBC.
duffymo