How To Pick the Right Web Framework

Discussions

News: How To Pick the Right Web Framework

  1. How To Pick the Right Web Framework (51 messages)

    Jose Maria Arranz, the author of ItsNat, threw a link to a presentation he put together on "How to Pick the Right Web Framework" up on TheServerSide's news thread.

    Now, being the author of ItsNat, it's not any surprise as to which web based framework is going to come out on top in Jose's discussion of the topic. Obviously, Jose is going to make the case for ItsNat. However, the presentation is actually pretty interesting before the ItsNat self-promotion finds its way into the slide deck.

    Almost every major Java based framework is covered, including a few non-Java based frameworks, and the shortcomings of those frameworks are exposed. In fact, the presentation might be better named "Why Every Framework but ItsNat Stinks." But still, it does provide some food for thought, and even if you're not thinking about ItsNat, and are simply interested in knowing the shorcomings of various frameworks, it's actually a pretty thorough discussion of the topic.

    I take some exceptions to a few of the arguments against some of the more prevalent frameworks out there today, especially the arguments against Groovy and JRuby; but everyone's experience differs.

    If you're starting out on a search for your next web development framework, this isn't a bad place to start, not just to get an idea of all of the different frameworks out there, but also to get familiar with some of the FUD that surrounds them. 

    "How to Pick the Right Web Framework" 

    ItsNat: Natural Ajax

    Threaded Messages (51)

  2. Sorry for the dark background, SlideShare has not converted correctly the source file and cannot update the slides in SlideShare (yeah something is wrong with the updating service).

    You can also see it HERE (PDF).

    "why every other web development framework sucks."

    Is a Cameron's phrase, IS NOT MINE

    Please Cameron change to something more polite :)

     

  3. Changed It![ Go to top ]

    It's been changed to something more polite. :)

  4. Changed It![ Go to top ]

    It's been changed to something more polite. :)

    In spite of I'm Spaniard, "Stinks" doesn't smell very well for me, anyway you are the TSS's editor :)

     

  5. Ugh, bad PDF link (some spaces in the end)

    http://itsnat.sourceforge.net/php/support/docs/itsnat_choose_framework.pdf

     

  6. Question[ Go to top ]

    I'm a little upset because it was't until the later slides (98 slides!) of the presentation that I realized that this article is just a propaganda. It seems that this silly comparison is here just to justify the fancy title.

     

    Just a question:

    "In ItsNat components are NOT needed because any HTML element is a component" (slide 88)

     

    The framework doesn't provide an OO component model, just as GWT or Vaadin does?

     

  7. Question[ Go to top ]

    Just a question:

    "In ItsNat components are NOT needed because any HTML element is a component" (slide 88)

    The framework doesn't provide an OO component model, just as GWT or Vaadin does?

    It does based on Swing data and selection models.

     

     

  8. How To Pick the Right Web Framework[ Go to top ]

    How to convince people to use your framework.

    1) Pick a bunch of features from your framework.

    2) Dismiss other frameworks because they don't have the same features as yours (if they do, don't worry, just say they don't).

    Nice work.

  9. How To Pick the Right Web Framework[ Go to top ]

    How to convince people to use your framework.

    1) Pick a bunch of features from your framework.

    2) Dismiss other frameworks because they don't have the same features as yours (if they do, don't worry, just say they don't).

    Nice work.

    You can also defend your framework by noting that new feature of framework Y is irrelevant and not really needed, until of course, you implement that feature then proclaim how great the feature is... ;)

  10. RE:How To Pick the Right Web Framework[ Go to top ]

    I really appreciate this wonderful article. From there i get something very useful. Thanks for the info.

  11. Enjoyed the read. BUT[ Go to top ]

    Jose. I really enjoyed your document, very colorful and fun. But. I have to disagree with your Flex takes. I have been using Flex for a little over two years, and found the experience to be a lot of fun. Contrary to your take on HTML/CSS/JS is more flexible and open than Flash/Flex. ActionScript 3 has a complete set of OO strutures, and paradigms. Creating custom components are a piece of cake. Just subclass an existing MXML or ActionScript class  either using MXML or pure actionscript, or a combination of both. With repect to the “baroque” ness of data applications, I'm really not sure what you're referring to. The Web Apps that I have developed, are pure eye candy, with innovative and creative ways to present that data. Integrating J2EE into a Flex web application takes all of what amounts to three or four lines of MXML code, combined with ActionScript to use returned data from the J2EE components (JMS,EJB3). Besides that. Manipulation of visual objects can be accomplished in ActionScript in a way that I have not seen in any other Web framework.

     

    Anyways. I still enjoyed your presentation.

     

    Thanks.

  12. Enjoyed the read. BUT[ Go to top ]

    Flex is powerful and has all of the benefits of a single source technology provider.

    In spite of this, Flex is for me too much client centric (of course a good option for client centric people), you can read in my slides about the cons of client-centric (focused on GWT).

    I hardly can see the web full of Flex and I think is too late with HTML 5 around the corner.

    Thanks for your compliments

  13. Tapestry?[ Go to top ]

    Seems like a nice comparison, but just wondered why you wasted space and effort by even considering Tapestry. Tapestry, that one-man project by Mr. Ship, is long dead. Check their mailing list and you would only see interns or others using it for only hobby projects. For many years I haven't seen any company seriously using Tapestry or even considering it for a project. It's the most over-engineerd framework that does nothing of worth that I've ever seen.

    Have to also mention that Jesse Kuhnert, the second man to Mr. Ship on the Tapestry project, has long left Tapestry. Mr. Ship has also gone on payroll with another company and has left many people in the cold. That's sad though.

    Jan

  14. Butthurt detected[ Go to top ]

    LOL, so much butthurt. What do the Tapestry did, raped your kitty or what?

  15. Butthurt detected[ Go to top ]

    LOL, so much butthurt. What do the Tapestry did, raped your kitty or what?

    Tapestry or Mr. Ship has done nothing to me. I'm only spreading the gospel truth about what is going on in the Tapestry arena. I'm only a messenger. Don't persecute the messenger.

    Jan

  16. Nice article[ Go to top ]

    Good article. Good creativity. But surely I won't use this to pick my web framework.

  17. I'm sorry, I do not agree with the author on eliminating Zk from the ideal web frameworks:

    Zk is **not** like JSF!

    Zk implements a "lego-oriented" web programming: every component can be nested in another web component : this way of work will enable you to build complicated pages (SPI) without any effort.

    Thus, we have not "opaque" components (like JSF) but powerful component that can be combined each other how we want.

    - It is server orient (or client oriented, or both, depend on you),

    - it is easy to understand/mantain/write/test.

    On the other side, itsNat appears:

    - Template files: are not easy to manage: it is a regular HTML file!!! it is not easy (zk template is very very easy to undestand and write than plain HTML files); It does not hide nor forms!!!!

    - Java file: for the button example I read a class with more than 15 lines, extends FeatureTreeNode and implements EventListener! WOW! All this only for a "stupid" button?

    On the other hand, with Zk you can write no java file!

    For a "stupid" button, a zk template of 2/3 lines is enough!

    The presentation was very depth, and I agree for the 80 % of what the author said.

    In particular the comments on Flash, PHP, Ruby, JSF technologies.

    Bye

    Michele

     

  18. On the other side, itsNat appears:

    - Template files: are not easy to manage: it is a regular HTML file!!! it is not easy (zk template is very very easy to undestand and write than plain HTML files); It does not hide nor forms!!!!

    Some problem with HTML code? It is just markup for visualization.

    Anyway I agree with you with no knowledge of HTML/CSS ItsNat is not for you because ItsNat is not plenty of already made components with imposed look and feel and behavior. Another option is cloning the HTML code of others.

     What about custom components beyond composition?

    - Java file: for the button example I read a class with more than 15 lines, extends FeatureTreeNode and implements EventListener! WOW! All this only for a "stupid" button?

    First of all, this example is included into a concrete SPI application "The Feature Showcase", the FeatureTreeNode class is not an ItsNat class, is a place holder for the panels of examples of this application demo.

    In ItsNat, <button>Hey I'm a Button</button> is a button, and <input type="button" value="Hey I'm a Button"> is also a button, furthermore, <div>Hey I'm a Button</div> is a button, because ANY element can listen event listeners. 

    "Normal button" components are not actually needed in ItsNat, they are just defined for easier port of Swing applications.

    On the other hand, with Zk you can write no java file!

    For a "stupid" button, a zk template of 2/3 lines is enough!

    Do the following, try to do the same of this basic SPI example with ZK, then comment your experience. Running onlinecomplete source code (the "Launcher" template is not needed).

    Note: remove if you want this code, it will work the same.

    1.         ItsNatEvent itsNatEvt = (ItsNatEvent)evt;  
    2.         ItsNatServletRequest itsNatReq = itsNatEvt.getItsNatServletRequest();  
    3.         ItsNatDocument itsNatDoc = itsNatReq.getItsNatDocument();


    The presentation was very depth, and I agree for the 80 % of what the author said.

    In particular the comments on Flash, PHP, Ruby, JSF technologies.

    Bye

    Michele

     

  19.  

    Some problem with HTML code? It is just markup for visualization.

     

    Anyway I agree with you with no knowledge of HTML/CSS ItsNat is not for you because ItsNat is not plenty of already made components with imposed look and feel and behavior. Another option is cloning the HTML code of others.

    This is a limitation: many of the web frameworks have the goal to simplify and enrich the html language!

    More over: why don't hide the form tag?

     

     What about custom components beyond composition?

     

     

    First of all, this example is included into a concrete SPI application "The Feature Showcase", the FeatureTreeNode class is not an ItsNat class, is a place holder for the panels of examples of this application demo.

     

    "Normal button" components are not actually needed in ItsNat, they are just defined for easier port of Swing applications. 

     

     

    I'm not an expert of itsNat, but I see that I must use a sort of proprietary servlet class to extends...

    I dislike it: I think for a web site I would like to use a programming model more similar to Swing model (Actions/Event)

     

     

    Do the following, try to do the same of this basic SPI example with ZK, then comment your experience. Running onlinecomplete source code (the "Launcher" template is not needed).

    I took a look at the SPI example, a sort of facelets template, but facelets are easier and cleener.

    And on Zk that beahviour is tirival (I used Zk very deeply...).

    Moreover my first two choices are: Zk and Vaadin, IMHO are the best Java Web Frameworks, and I think that itsNat must do a very long road to reach their flexibility and easy of use.

    Bye.

    Michele

     

  20. This is a limitation: many of the web frameworks have the goal to simplify and enrich the html language!

    In page based web applications you can use the typical custom tags for pre-made components and when you need free design you ever have the option of free HTML code. In most of AJAX intensive frameworks there is no such option, free HTML design and management (that is custom components beyond composition) is very very hard. In ItsNat all are custom components because all is free design.

    More over: why don't hide the form tag?

    I don't understand you, ItsNat does not use forms.

    I'm not an expert of itsNat, but I see that I must use a sort of proprietary servlet class to extends...

    Proprietary? Are you kidding? Take a look to the tutorial again, the source code of HttpServletWrapper is there. Do you really think this class is PROPRIETARY? :)

    In a world where ALMOST ALL web frameworks impose already made closed servlets (with no option of extension) how can you say that servlet development in ItsNat is "proprietary"? In ItsNat there is no "default" servlet.

    I dislike it: I think for a web site I would like to use a programming model more similar to Swing model (Actions/Event)

    Like that? or dislike? I suppose you like (ZK background). Any event based framework follows the "Swing approach", furthermore, ItsNat love's Swing take a look to ItsNat components reusing Swing data/selection models, for instance the Tree component.

    I took a look at the SPI example, a sort of facelets template, but facelets are easier and cleener.

    Facelets? Where are the custom tags? I just can see plain HTML :)

    Learning tons of custom tags is easier than plain HTML? Really?

    And on Zk that beahviour is tirival (I used Zk very deeply...).

    I would like to see it.

    Moreover my first two choices are: Zk and Vaadin, IMHO are the best Java Web Frameworks, and I think that itsNat must do a very long road to reach their flexibility and easy of use.

    ItsNat has a very long road related to "pre-made components", regarding "flexibility and easy of use" there is NO competition.

     

  21. Learning tons of custom tags is easier than plain HTML? Really?

    Wasn't plain HTML just meant for Hyper Text documents?

    For web applications I'd rather use higher level components, thank you!

     

  22. I don't think so[ Go to top ]

    Some problem with HTML code? It is just markup for visualization.

    Anyway I agree with you with no knowledge of HTML/CSS ItsNat is not for you because ItsNat is not plenty of already made components with imposed look and feel and behavior. Another option is cloning the HTML code of others.

     What about custom components beyond composition?

    I don't agree with your: "It is just Markup for visualization", think about browser incompatibility happened in a complex HTML structure.

    It's the most painful part in current Web App Dev, the more you expose your client to the pure HTML the more they suffered if the web-site is like a Desktop App.

    And I think you should use the term "imposed" more carefully, don't forget HTML elements are designed for Content publishing not for interactive UI design.

     Without Macromedia's great work in late 90 to 2004, without Mozilla XUL and many other Web UI feature provider's fancy work(such as EXT-js). Will there be those rich component set concept that developer can imagin and mimic? you think general developer has such ability to recreate these stuff?

    A good framework is not to let user can only build components their own and say it's self "highly customizable", but to provide a good quality + attractive component set without blocking developer's way to use their own favorite. MIPS Design Principle 3 told us: "make common case fast", and a good component set is a set of good common UI cases.

     

    First of all, this example is included into a concrete SPI application "The Feature Showcase", the FeatureTreeNode class is not an ItsNat class, is a place holder for the panels of examples of this application demo.

    In ItsNat, Hey I'm a Button is a button, and is also a button, furthermore, Hey I'm a Button is a button, because ANY element can listen event listeners. 

    "Normal button" components are not actually needed in ItsNat, they are just defined for easier port of Swing applications.

    On the other hand, with Zk you can write no java file!

    For a "stupid" button, a zk template of 2/3 lines is enough!

    Do the following, try to do the same of this basic SPI example with ZK, then comment your experience. Running onlinecomplete source code (the "Launcher" template is not needed).

    Copy paste the code bellow to zkdemo(zksandbox), and it works.



    <br />    String[] arr = {"Click Me!", "Cannot be Clicked"};<br />
        
        
        
    //@DECLARATION<br />    org.zkoss.zk.ui.event.EventListener evtListener = new org.zkoss.zk.ui.event.EventListener(){<br />        public void onEvent(Event evt){<br />                evt.getTarget().removeEventListener("onClick", evtListener);<br />                evt.getTarget().setValue(arr[1]);<br />                if(evt.getTarget().equals(lb1)){<br />                    lb2.addEventListener("onClick", evtListener);<br />                    lb2.setValue(arr[0]);<br />                }else{<br />                    lb1.addEventListener("onClick", evtListener);<br />                    lb1.setValue(arr[0]);<br />                }<br />                new Label(evt.getTarget().getId()+" clicked").setParent(vbox);<br />        }};<br /><br />    lb1.addEventListener("onClick", evtListener);<br />

    If I didn't misunderstood the spec of the case in your website...

    Sorry, it seems not that hard in ZK.

  23. I can't post code here, so I post it to ZK Forum:
    link

  24. I can't post code here, so I post it to ZK Forum:
    link

    Missing color changes :)

    Anyway try to do the same with the other links (I'm joking)

  25. Done for you :)


                    if(evt.getTarget().equals(lb1)){
                        lb2.addEventListener("onClick", evtListener);
                        lb2.setValue(arr[0]);
                        lb2.setStyle("color:red");
                        lb1.setStyle("color:black");
                    }else{
                        lb1.addEventListener("onClick", evtListener);
                        lb1.setValue(arr[0]);
                        lb1.setStyle("color:red");
                        lb2.setStyle("color:black");
                    }
                    new Label(evt.getTarget().getId()+" clicked").setParent(vbox);
            }};

    ...


        lb1.addEventListener("onClick", evtListener);
        lb1.setStyle("color:red");
        lb2.setStyle("color:black");

    And the winner is.... NONE!!  (regarding to amount of code)

     

     

     

  26. I don't think so[ Go to top ]

    Copy paste the code bellow to zkdemo(zksandbox), and it works.



    <![CDATA<br />    String[ arr = {"Click Me!", "Cannot be Clicked"};<br />]]>
        
        
        
    <![CDATA[//@DECLARATION<br />    org.zkoss.zk.ui.event.EventListener evtListener = new org.zkoss.zk.ui.event.EventListener(){<br />        public void onEvent(Event evt){<br />                evt.getTarget().removeEventListener("onClick", evtListener);<br />                evt.getTarget().setValue(arr[1]);<br />                if(evt.getTarget().equals(lb1)){<br />                    lb2.addEventListener("onClick", evtListener);<br />                    lb2.setValue(arr[0]);<br />                }else{<br />                    lb1.addEventListener("onClick", evtListener);<br />                    lb1.setValue(arr><![CDATA>

    If I didn't misunderstood the spec of the case in your website...

    Sorry, it seems not that hard in ZK.

    As you can see your code is broken (missing the HTML part), please write again here if you can or put it in an external site, and I miss the "logging part" (message list in the end).

    Anyway I doubt you can do something like this or this with ZK, that is, cloning any web site.

     

  27. Again, Not that Hard[ Go to top ]

    In ZK, except iframe(too trivial to mention) there are at least 4 ways to do this:

    1. Use a ZK cmoponent named "html", and put your HTML in it's CDATA area, if you just want to present some rich content in Tabpanel, this is it.

    2. Use "native" name space, a good candidate solution for mixing static HTML with ZK Components in one zul file, link is below:
    http://books.zkoss.org/wiki/Work_with_HTML_Tags

    3. Use ZK JSP tag Library, if your web site is more content based, you should choose this approach in your interective part.

    4. Use XHTML component set, if you want to use HTML as a Component set in ZK, it's havy but you'll gain every Event type support and server Model manipulation ability through this approach.

    5.  Acctually you can output any XML content to client side by using ZK, it seems ZK start to support this since 2007:

    ZK XML output

     

    As what I said, a good framework is a framework which speed most common cases and won't get in your way when it's time for some real tough cases.

     

  28. How To Pick the Right Web Framework[ Go to top ]

     

    Thus, we have not "opaque" components (like JSF) but powerful component that can be combined each other how we want.

    I don agree with this. JSF's composite components are completely transparant and can very easily be combined to create bigger components. Even Java based components (which you don't need to write often) can be very easy and transparant, as it's often just a Java class with a simple method for rendering some stuff.

  29. ItsNat and Wicket[ Go to top ]

    He got something wrong with wicket.

    - You can build it the SPI-way, if you want, but you must not.
    - Wicket uses Component, so they are black Boxes if you like it this way. But this is a good thing, isnt it?

    IMHO it has to much "special modes" to get things done (Fast Mode, ServerSide DOM ...). You can use Wicket if you like, an i am sure, that you will get your stuff done with it. But thats my opinion. 

  30. Component set[ Go to top ]

    I actually liked alot of the arguments that were made. And I see the benefit in being able to use HTML vs. some proprietary markup language.

    However the learning curve for something like ZK's markup is not terrible. Plus - a big consideration has to be the availability of ready-to-use components.  Some of these frameworks have a far richer set of components(ZK's for example: http://www.zkoss.org/zkdemo/grid/) and that can't be discounted so easily. I'm not say it's the deciding factor but it is an important consideration.

  31. ItsNat and Wicket[ Go to top ]

    He got something wrong with wicket.

    - You can build it the SPI-way, if you want, but you must not.

    No, Wicket is not SPI, SPI is more than having AJAX components.


    - Wicket uses Component, so they are black Boxes if you like it this way. But this is a good thing, isnt it?

    Not ever, in web development people (users and developers) are used to freedom of web design. I hardly can imaging FaceBook looking the same as Twitter (both SPI based), this the reason why custom JavaScript DOM code and/or JS frameworks are SO popular, because they can provide low level management of markup, ItsNat can provide THE SAME low level management of markup with the easy management of Java code and the benefits of coding in server (data and view together, security, hundreds of archives...).

     

  32. black box[ Go to top ]

    - No, Wicket is not SPI, SPI is more than having AJAX components.

    Since you seem to be the main proponent of SPI, I guess only you can judge.  But wicket provides what I would consider to be SPI by allowing you to swap components (maybe swapping the main part of the screen with new content in response to a left hand menu click).

    - Not ever, in web development people (users and developers) are used to freedom of web design.

    You are right, some of the html (the bit that defines a tree, rather than the things in it), that means I can just drop in the java page and expect it to work without having to add the html.  Can you point me to an example of a similar tree component in itsNat?

     

     

  33. ItsNat and Wicket[ Go to top ]

    No, Wicket is not SPI, SPI is more than having AJAX components.

    You can do everything in one page, using any component.  You simply add ajax behaviors to them.

    Not ever, in web development people (users and developers) are used to freedom of web design. I hardly can imaging FaceBook looking the same as Twitter (both SPI based), this the reason why custom JavaScript DOM code and/or JS frameworks are SO popular, because they can provide low level management of markup, ItsNat can provide THE SAME low level management of markup with the easy management of Java code and the benefits of coding in server (data and view together, security, hundreds of archives...).

     

    Ditto with Wicket.  All well-designed components allow the designer to completely modify them via pure CSS.  Wicket gives full control to the web developer;  if you stick to core components then the designer could do everything in Dreamweaver while the model/session glue is done with Wicket.  There are some components that impose their own design (pallete comes to mind), but they are the exception.  Also, the "backend" developer still has full access to the HTML/JavaScript at render time -- but that should also be an exception to the rule because it breaks the MVC pattern.

  34. Particulary useful...[ Go to top ]

    You did a good job in giving a summary of web frameworks and possible goals. But the conclusion for me is different, because I have different goals on some points. For me the best-of-breeds is Vaadin, because it gives me fairly the same component model for the web as for any "normal" gui system like Swing or SWT. And your given downside of not having a template system - well it depends on the developers view. I want to do Swing and Web GUIs the same way - so where is my template system for Swing? I personally like it to programmatically compose my views, like any other composites. But if you like graphical editors, ok: Vaadin brings a WYSIWYG-editor for visually editing your composites - still experimental, but it's coming...

  35. You did a good job in giving a summary of web frameworks and possible goals. But the conclusion for me is different, because I have different goals on some points. For me the best-of-breeds is Vaadin, because it gives me fairly the same component model for the web as for any "normal" gui system like Swing or SWT. And your given downside of not having a template system - well it depends on the developers view. I want to do Swing and Web GUIs the same way - so where is my template system for Swing? I personally like it to programmatically compose my views, like any other composites. But if you like graphical editors, ok: Vaadin brings a WYSIWYG-editor for visually editing your composites - still experimental, but it's coming...

    Today, I HAVE A DREAM! That one day Bill Gates will invade the Java land with his Indian army (as you may know, the majority of Redmond employees are Indians) and strip us of our freedom of choice by imposing ONE and only ONE Web framework on us, like he has done with his .NET framework. As this too much of freedom of choice in the Java land is getting out of hand. And that the framework he shall impose on us shall be called .WET, a Wicket clone. I HAVE A DREAM.

    Jan

  36. Vaadin? Yet another one? I have a dream ...[ Go to top ]

    And that the framework he shall impose on us shall be called .WET, a Wicket clone. I HAVE A DREAM.

    I would propose this framework to be JSF. It's already a standard, close to .NET and very powerful and nice really.

  37. Particulary useful...[ Go to top ]

    Best of Breeds? You'd better to try other frameworks too.

  38. In my personal opinion, the best framework ever exist for the web is servlet, JSP, JSTL, EL. Keep stick with that and it will be very friutfull. Go and look into servlet 3.0 and JSP 2.2 and you will be amazed how easy and powerfule it is to create web application using the core Java. I can also see a use case of struts and stripes, both of them never hides any thing from the developers, and follow the action based philosphy web is meant to be.

  39. Licensing[ Go to top ]

    One aspect totally ignored in the comparison but quite important IMHO - is the licensing (open source / type).

    For example if I remember correctly, ZK is Commercial / GPL-derived, and ItsNat is AGPL.  Oracle ADF is commercial.  Most of the rest are Apache 2 or equivalent I think (maybe with the exception of Flash / Flex).

  40. Licensing[ Go to top ]

    One aspect totally ignored in the comparison but quite important IMHO - is the licensing (open source / type).

    For example if I remember correctly, ZK is Commercial / GPL-derived, and ItsNat is AGPL.  Oracle ADF is commercial.  Most of the rest are Apache 2 or equivalent I think (maybe with the exception of Flash / Flex).

    ItsNat is AGPL/Commercial

     

  41. How To Pick the Right Web Framework[ Go to top ]

    The title is (to put it nice) misleading. It should be "how i created a list of criterias for webframework comparison so that my framework will come out number one".

    I especially like your argument that a good framework should run inside a JVM and a programming language should be compiled to be any good....

    There is no silver bullet. 

     

     

     

  42. Hi Cameron,

    This has been choking me for a long time but today I want to let go: your forum software sucks big time! Today I wrote a reply to a post and realized later that the original post has been merged with my response you could hardly tell which is the response. And can you do something about the bright white background on the pages? That color keeps maltreating my precious eye balls?

    Jan

  43. Jobs?[ Go to top ]

    Why are there zero jobs today asking for ItsNat as a skill? I know the framework has been around for a bit, so I would of expected at least some (from searching on jobserve)

    It doesn't matter how good a framework is, unless there is some buy in, it has no future.

  44. Uses lots of memory[ Go to top ]

    While having everything on the server and under server control is a nice feature, it also means spending lots of memory for each client connection. Basically you go to the extremes and are as stateful as possible wrt to the client side.

    This approach works fine for a small number of users, but will fail if you try to scale it beyond that.

    There is a reason Google is trying to keep as much state as possible on the client: It needs to scale to million of users.

    Thus GWT and the big push for REST based interfaces, where you have tons of opportunities to scale your backend.

    Good luck with ItsNat. I personally like the idea to put the browser back into its place. As a viewing mechanism. But reality looks different.

     

  45. Uses lots of memory[ Go to top ]

    it also means spending lots of memory for each client connection

    In the case of ItsNat static DOM subtrees are cached as serialized markup (text) shared between all users, only dynamic parts (going  to be changed in server) are instanced as DOM.

    Anyway I agree, a server side approach needs more memory, in my opinion 95% of web sites/applications can work fine with a server centric solution with no very much hardware investment (no significative difference with a client centric approach), the remaining 5% are Googles, Yahoos, FaceBooks, very popular newspapers...

     

  46. Uses lots of memory[ Go to top ]

    And I don't understand Google GWT's strategy, SEO is cornerstone in Google and solutions like ItsNat achieve SEO in SPI very easily.

    In general SEO is easier with server-centric approaches, in ItsNat is almost automatic, the same SPI application is page based when JavaScript is disabled or ignored (web crawlers) with no much hassle.

     

  47. One framework has been around for years and matches most of the criterias, I named BarracudaMVC. See http://barracudamvc.org.

    It was originally developped by Christian Cryder at Lutris (Enhydra) but has grown into an autonomous project. It is a really mature tech. It is licensed under the LGPL. It cleanly separates design and business logic (quite unlike JSP).

    Give it a look.

  48. Contrary to the presentation, Wicket does not force a multi-page design.  We have developed an extensive application all built on top of a TabbedPanel using Panels instead of Pages.  Regardless, this is a semantic difference that only comes into play if your web framework forces you to do extra work with pages as opposed to asynchronous http calls.

  49. Having worked on developing intranet applications for a while, I recognize all of the complaints in the presentation. There are very few frameworks out there where developing "heavy" applications is anything but an exercise in pain. For Java this is particularly pronounced since there is such an abundance of frameworks that are painful to use, and such an amount of (for the most part undeserved) praise for most of them.

    For complex customer-facing internet apps, my advice would always be to keep it to the bare minimum, use the simplest framework you can find, and put as many developers on it as you can. Spend a good bit of time designing the domain model, physically decouple the domain model from the web app and have the web app and the domain model talk across SOAP or similar. The physical separation means that your dev team is forced to design it reasonably well. Integrated, as for example Seam encourages (and don't underestimate the effect of encouragement) will give you nightmares later. Also, the separation of the domain model into a distinct server with a public API of course also makes those services available to others later on. Someone will ALWAYS ask for that. No matter how app-specific (ouch) your domain model is.

    Now, for intranet apps, I totally disagree with the conclusion here. Intranet applications are frequently (always) far more complex than internet facing apps. The internal domain requires a completely different set of features. You need to develop "Wizards", apps with significant - and at times long-lasting - client state etc. For such apps, the current web frameworks are ALL wrong. One could even argue that the idea of web-based is wrong entirely and develop the apps in a client-side language. Hell, many times even Visual Basic (urrrhg) would be a more appropriate solution than an HTML-based solution.

    This is where plugins shine. They allow you to deliver a complete, state-full, client applications with almost all of the features you have for developing regular desktop apps. Of the plugins on the market today, the most reasonable ones to use would be Java applets, Flash/Flex and Silverlight.

    The plugins give you things you can not have with HTML, even HTML 5. The first, and most important thing, is that they free you from the horror that is Javascript. Nobody should use JS to write apps that need to be maintained by dev teams for years and years. JS is a mess, and should only be used minimally in an app. Plugins allow you to write your app in a proper language where you can use proper design methodologies and tools (don't forget tools, never forget tools) to create maintainable code. Maintainable JS is mythological in any organization that is not dedicated to JS alone. No intranet dev team can do it.

    Secondly plugins give you access to features you don't have in JS (less so in HTML5, but that one doesn't solve problem #1).

    Oh, and tools. There are the tools. In any company developer productivity is paramount. I can do, in any of the plugin tools, more in minutes than can be done in HTML/JS in hours and days. For someone with unlimited free resources this is not an issue, but those only exist in Google and mythology.

    Personally I favor Silverlight these days. C# is an excellent language for a Java person to move to. I could of course use Java applets, but, well, if you're a Java developer you know why not. Honestly, this is not a topic any more. Sadly. I used to do a lot in Flex, but frankly Silverlight is more than heads and shoulders above Flex. It is generations of development methodologies ahead of Flex.

    On the server I use any kind of REST based framework. Mostly I have to talk to JBoss or Oracle, so I put a RESTful domain model in place that does well with those two. I expose SOAP interfaces from JBoss and interact with Oracle in the best manner based on the framework.

    Honestly, if you are developing intranet apps of some complexity that needs to scale, you'd be insane to consider an HTML framework unless you have unlimited resources.

  50. Think opposite[ Go to top ]

    I don't agree that "The server is or should be the browser". Til now, the purpose of web applications (server) is to serve Data + User interface + Code to interact between browser and web application, and above that, server has to maintain in-memory UI (DOM tree) for each user session and update it each time an or multiple partial or full HTTP requests are done by the browser...

    I would claim:

    * This is too complex! and we are adding too much workload to the server and too much complexity to the developer.

    * Doing partial update of a UI or call it Single Page Interface (SPI) is not a new or revolutionary technique. Now it is a buzzword because probably someone famous shouted it loud!?.
      So If SPI is the equivalent of SDI (Single Document Interface) for desktop application, then expect someone in few month to shout a new buzzword: MPI !
      It would be the equivalent of MDI desktop applications, you got it? :)

    If I recall correctly, the main problem that had and still have web developers is how to build easily Rich Internet Applications that enrich user experience, mimic desktop applications using a rich extensible set of UI components, run on a W3C browser compliant, and are based on standards (HTTP, AJAX, JavaScript, JSON, XHTML, CSS,...)?, i.e.: NO Applets, NO Flash, NO silverlight,... HMMM, It has to be something on which all software vendors has to agree on: HTML5, maybe?

    So, the question I am asking myself is: If we want to mimic the behaviour of desktop applications on the web, why would we want "The server is or should be the browser"? We just need the opposite: "The browser is the server!!!"

    Well, this is an idea, not sure how feasable it is, but imagine having a snapshot or part of the server code running on the browser. The web application would be composed of two parts:
    * Server Side part: It would consist of a bunch of services that act on a resource layer (For instance a set of web services doing read/write operations on a database)
    * Client Side part: This would be the UI that runs on the browser + a snapshot of a subset of serversides services that would run on the browser + The binding between UI and Data Model.

    Some of the advantages of this architecture would be the followings:

    1) Offline browsing: Storing part of the datamodel on the client side would allow offline browsing. In fact, applications on mobile devices use this design/arquitecture in order to solve unreliability/slowness of GPRS and UMTS connections. Applications synchronize with serverside doing incremental replication periodically or whenever connection to server is restablished after an outage.

    2) Since most interactions between user and application is done locally, bandwidth usage is reduced. Browser would push data changes to the server and pull app code changes from the server periodically.

    There would still things to resolve such as security to move toward this kind of applications, but idea here is that the browser should not be just a layer of presentation but it should be able to run remote web aplications locally.

    My 2Cents,

    Regards,
    Sofiane

  51. Testimonial[ Go to top ]

    Let me be honest. I use ItsNat. At ilikeplaces.com . 

     

    If you think I'd give a biased review, well I won't do that. I'm the last guy to allow technology lock-in. On the site, I've always tried to stick to standards (minimal workarounds) such as JPA, EJB and other popular Java standards. So with ItsNat, I was "more than cautious".

     

    I should confess, ItsNat did not fail us so far. It has a "few" limitations, but but... I've been admiring it lately.

     

    If any of you guys have used GMaps, you know that to create elements on the Google Map you use various variable definitions in Javascript. Quite amazingly, for a new feature I'm making, I am able to dynamically create the Javascript code on the server now, and send it based on user events to the client browser, upon a map-zoom drag etc.

     

    Now you might think this is something small. Well, I think, and have experienced that itsNat gives a LOT of flexibility in coding, both on Java and Client side.

     

    Still, I am cautious. You see, I've always hated that conversation with the HTML/Web Designer "Hey mike, pls leave those non html tags alone(jsf, other marku)"... "year whatever" says Mike... I've always wanted my html code to be clean of Java. I've always wanted it to have ONLY element ID's as the source of speaking to them. With itsnat "CORE" section, I've done this. Not one single ItsNat tag in my html code. And I'm happy about this. 

     

    That said, I AM worried(personal worry)
    about how itsnat handles the DOM. So far I've managed to make the site itsnat safe. However, we all use a popular Javascript framework like JQuery. ItsNat does not like DOM manipulation on the client much. But you "can" negotiate a bit with the framework. So far, even Google Maps did not break my code. Complex pages too.

     

    Speed is okay with ItsNat. I've no performance details. But lately Google crawls the site's .5 million pages at a rate of around 1 page per 1-4 seconds. The site survives on a 512MB ram with OPENEJB and the Database running on the same machine. Memory might be a concern but I cannot bother about this. I always avoid keeping Hard References on itsnat listeners, and the JVM garbage collects fully. So far, memory, not a problem.

     

    So is itsnat good? yes. Better than pure JSP, or JSF, and Struts. I did some reasearch on triniad and other frameworks before choosing ItsNat. At that point, I'd only reviewd all frameworks, and done a small feasibility test on Itsnat. Though I continuously worry ItsNat will break its contract on DOM freedom on client, and seperation of html with java in its "core" section, so far, I've not been let down by the framework.

     

    I always prefer things that do their job and get out of the way. I hate things that stay around after the work is done crying out "look i'm still here... I can do this... do that"...

     

    So far, ItsNat, lets you do your JOB. Both as a Java and Web Designer. No interference. No limitations.

     

    and if itsnat is gonna lock me in, I'd pray to be the first to find out :)

  52. Re:[ Go to top ]

    I recently had the opportunity to develop a small online booking system. This time round I was determined to make use of some development framework. Not for me the slow slog of writing all my code from scratch - surely we have moved beyond that now in web development?
    Wound Care