Jon Udell makes reference to LAMP platforms (Linux/Apache/MySQL/Perl|Python|PHP) in an article about his interview with MySQL's CEO Mårten Mickos. I've been thinking of using an architecture I'm calling JAMES when I teach my large-scale distributed systems class next fall.

JAMES stands for JSP, Apache, MySQL, EJBs, and SOAP. In my class, I'd like my students to see three different client-server architectures, a 2-tier architecture, an n-tier architecture, and a web services or service oriented architecture (SOA). Ideally, I'd have them use LAMP for the 2-tier architecture because its so popular. But they don't already know PHP|Python|Perl and that creates some overhead I'd rather do away with. So, I'll substitute JSP and have them use JAM for the first, JAME for the second and JAMES for the third. In fact, we'll probably have the entire installation done so that they work from the start with jBoss and Tomcat. I'll probably use Axis for the SOAP part.

In the past, they've done a series of homework assignments that installed and familiarized them with the components they'd use to complete a large final project. The problem is that it back-end loads the semester with a lot of work and adds considerable stress to the students lives as the semester draws to a close. (And you didn't think professors worried about those kinds of things, did you?) With the new set-up, I think I'll have three separate projects. One using a 2-tier JSP/Apache/MySQL platform, one the uses an n-tier architecture with jBoss thrown in, and a third that creates web services using Axis on top of their EJB project. The advantage is that there's one platform and one set of tools to learn. What's more, the third project would be the easiest, rather than the hardest.

I'm always looking for good ideas for projects. If you've got some ideas that would work on the 2-tier platform or the n-tier, I'd love to hear about them. One of the hardest things to get students to understand is why they'd ever want to use anything but a 2-tier architecture. At the scale they work on in the class, there's nothing you can't do with LAMP. Its tough to bring the realism of a multi-machine distributed n-tier architecture into a class with limited hardware budgets and too many students.