Struts, Spring, Tapestry, oh my!

Jonathan Ellis jonathan at carnageblender.com
Thu Aug 11 11:11:24 MDT 2005


On Thu, 11 Aug 2005 09:51:27 -0600, "Erich Pletsch" <erich at uvnet.net>
said:
>    What's your idea of simple?

This is about all I could make out in your bizzarly de-paragraphed
text.  But I think it's your main point, so I'll run with it.

"My idea of simple" boils down to the unix philosophy of "small is
beautiful."

Some elaboration:

* Don't repeat yourself
  - if you can't introspect my database at runtime you
    are wasting my time; this is 2005
  - almost anything involving XML in the J2EE world fails this, not just
  ORM
* Code that does one thing shouldn't be spread across multiple files
  - e.g., JSP custom tags -- minimum 2 files to add a tag IIANM
* "My IDE handles it" is not a substitute for good design
  - because eventually you WILL run into a bug that requires
    understanding what is going on under the covers
  - the ide itself is a learning curve
* the easy case should be easy
  - related: common cases should be easy
  - does avoiding the word "simple" help here?
  - easy: one line of code.  two tops.

To illustrate this last, consider calling a method on an object
by reflection.  Assume that "instance" is your object reference,
and "method" is a variable containing the method name.

Python--
    instance.getattr(method)(5, 'six')

Java--
import java.lang.reflect.*;
// ...
    // Object instance, String method
    Class c = instance.getClass();
    Method m = c.getMethod(method, new Class[] {Integer, String});
    m.invoke(instance, new Object[] {new Integer(5), "six"});

Back to the flames:

>  So far you've bashed Java and the J2EE
>    architecture as overly complex, but I haven't seen you suggest a
>    viable, enterprise class alternative.

I've already suggested Spyce, but I think that was in response to
the original poster back when this was actually on topic so you may
have missed it.

If we avoid the trap of equating "enterprise class" with J2EE, then
yes, Spyce is enterprise-class.  I'm sure I could design a site to
serve a million db-backed pages per day from a single server (http +
db) in Spyce, because I've already built one in another interpreted
language (TCL) that is somewhat more feeble (and marginally slower) 
than Python.  Is that enterprise-class enough?

(For comparison purposes, slashdot serves about 3M/day, but they have
multiple servers IIANVM.  My site was also very update-intensive,
unusually so for web applications; it's quite possible I could serve 3M
or more from the existing server if the database load were more
typical.)

Rails would also qualify as "simple" in my book.  I just happen to like
Python more than Ruby.

-Jonathan



More information about the PLUG mailing list