Home > development, java, mission, opensource > Looking for a KISS webapp framework

Looking for a KISS webapp framework

The landscape of java frameworks for Web Applications is one of most various and controversial ever seen in any technical context.

If you look into the internet you will find a ton of frameworks, less or more known by the big community. And if you ask into newsgroups or mailing lists you will find a big variety of different opinions about them. There are also several philosophies: some frameworks (most of them, honestly) rely on the MVC pattern; some others mix application code with html/xml code. There are component based frameworks, action based ones; with declarative and iterative approach; ajax versus standard html and so on.

The life is not simple for the Java* KISS web programmer.

First of all here’s what I need. Or better, how in my opinion a KISS web application framework should be.

  1. HTML and Java. HTML must be true HTML (no tags, no scriptlets etc., or anything else can be troubling for your preferred web designer (also known, as in the Web 1.0 age, as HTMLlist, and in most cases also known as yourself :-P), and Java should be just my usual programming language. I must not be forced to write code in a different way; or even to think in a different way. I am the programmer, I want to drive my application. It’s not the framework which should drive me.
  2. No configurations, or minimal (of course at least web.xml has to be configured).
  3. Flexible. Really flexible: a new image added to the page MUST NOT require re-deploy. A full redesign of the page-layout must be possible without disturbing the great Java man from reading its new book (which is part of the save the world mission, of course :-))

I am currently investigating about two (in my opinion) promising frameworks: Wicket and ItsNat.I know Wicket because a lot of Ammentos users wrote me they’re using it in conjunction with my persistence layer. Being now an Apache project, Wicket’s popularity is increasing day by day. All documentation is available here.

I found instead ItsNat some days ago by googling.What sounds very interesting to me about this one is its innovative approach called TBITS (The Browser Is The Server). Quoted from the web site: “ItsNat simulates a Universal W3C Java Browser at the server, with ItsNat the server mimics the behavior of a web browser, containing a W3C DOM Level 2 node tree and receiving W3C DOM Events.”. In practice, the whole web application runs around the DOM of the pages, which is shared from the clients and the server and is observed by both of them, allowing real event-driven programming, in a web 2.0 way. A look to the online demo is very talkative.

I have not yet decided if ItsNat is KISS. By sure it sounds exciting to me. I’ll write more about it in the future.

* Notice that I am talking about Java. I know there are a lot of RAILS, SCALA etc. etc. enthusiastic people, but I am trying to find a solution for Java Web development. That does not mean I am not interested about these alternatives too, but that will be another story ๐Ÿ˜‰
  1. January 25, 2008 at 5:38 pm

    I’ve found your blog “googling”, I’m the father of ItsNat and want to “convince” about ItsNat = KISS … ๐Ÿ™‚

    What do you need to build a Web 2.0 fully AJAX centric application with ItsNat?

    Mostly W3C DOM Level 2 Core and W3C DOM Level 2 HTML, and W3C DOM Events, and a few of ItsNat interfaces (very few).

    See this very basic tutorial:

    ItsNat offers many more things (for instance Swing like components) but they are optional.

    Note: very nice your “about me”.

  2. ddpole
    January 26, 2008 at 11:12 am

    Hi Jose,
    very glad to have you here! ๐Ÿ™‚
    First of all many compliments for your great job.
    I really found your “TBITS” approach one of the smartest ideas I’ve seen in the web programming area in the last years.
    I agree with you about what a framework like yours MUST NOT be, as you explained int the section “What ItsNat is NOT, what is MISSING (deliberately)!” of ItsNat overview.
    Now, take in mind this is just my opinion. What I’d like from ItsNat to be PERFECT is:

    – a *packaged* installation. I love NetBeans and I will be able to follow your setup instructions, but what about if you release a new version? I think a fews jars to put into web-inf/lib and a default web.xml would be enough.

    – a little more “by convention” configuration. Why do I have to manually register my templates? Cannot they be automatically registered from the framework itself? path_template can be decided by you, and users would just need to know they have to put their templates there. Template Listeners could by default be looked up by their names: f.i. MyTemplateListener.java will be the listener of MyTemplate.html. Or better, you could use some kind of annotations like that:

    public class TemplateListener{


    These are just my (hopefully collaborative) 2 cents ๐Ÿ™‚

  3. February 1, 2008 at 9:59 am

    Thanks for your comments.

    About the “packaged” installation, I don’t understand your problem, ItsNat distribution is a special ItsNat web application (Feature Showcase) but it contains all you need to create a new web application inside the fw_dist folder. Basically you only need to add 5 jars (the most important is ItsNat.jar) and 4 js files to your new web application.

    When a new version is releases you only need to update those jars and js files.

    I invite you to read the tutorial: http://itsnat.sourceforge.net/index.php?_page=support.tutorial.core

    Or the following interview at Javalobby:


    It contains the same complete minimalist example, in ten minutes you will have a simple AJAX application (but very complex to do with any other AJAX framework).

    You don’t need NetBeans, any IDE with servlets support is ok.

    About โ€œby conventionโ€ configuration: ItsNat is focused to AJAX (you can do classical applications with ItsNat but is not the point). In an AJAX application you barely need **one main page**,
    **one only processor class**, what is the gain in this case? AJAX supports template fragments, pieces of markup to be inserted in the main page, these fragments don’t have an associated processor.

    Another problem of this kind of registry is it introduces the need of dynamically instantiation and the need of some kind of class registry… XML again? Introducing an IOC framework? Do you like to lose the bootstrap of your classes? I think Ioc must be optional, in fact this technology is designed as a glue, you can use the Ioc container you like more to register your template processors.

    Now there are two big Ioc frameworks competing, Spring and Guice, I don’t want to introduce so big dependencies in ItsNat, XML and annotation in Ioc *are* source code too, Ioc frameworks are heavily intrusive for me because the binding rules are source code too and may be very much code.

    And finally ItsNat is compiled with Java 1.4 to be compatible with millions of application servers bound to the JVM 1.4, I can’t use annotations. May be a future version based on Java 1.5 may do some use of annotations.

    A final question, can I cite your phrase on the ItsNat web?:

    “I really found your โ€œTBITSโ€ approach one of the smartest ideas Iโ€™ve seen in the web programming area in the last years.”

    Thanks again.

  4. ddpole
    February 1, 2008 at 11:36 am

    Hi Jose, thank you for your explanations. And of course, I’ll be honored to be cited in the ItsNat website ๐Ÿ™‚

  5. February 15, 2008 at 4:15 pm

    As I promised:


    Look for the green rectangle on the middle and right.


  6. ddpole
    February 18, 2008 at 4:24 pm

    wow ๐Ÿ™‚ Very glad!

  7. Nicola Viragine
    March 7, 2008 at 1:25 pm

    Hi ddpole,

    Have You heard about the Click web framework, I think it satisfy yor KISS requeriments.


    thanks and a good day.

  8. July 14, 2013 at 3:00 am

    Pretty! This has been a really wonderful article.
    Thank you for supplying this info.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: