Yes, I think I can share something here.
I got this project task in last year. This project worked with web designers for the system implementation. The consideration of choosing ItsNat as the base development
framework is it can totally separate the design and coding in all round. Thus, the restriction on the design and programming is minimal. Another reason is the project
delivery time is tight, I believe using ItsNat can save a lot of UI and system integration and debugging time.
Since this is the first time using ItsNat on development, we tasted its sweet and bitter.
Let me share some advantages here:
- The page template and fragment structure can let our programmers to focus on a small parts in the page for programming and debugging. Problems can be isolated between
fragments. For example, the main page was divided into 5 fragments, i.e. Menu, Banner, Main Body, Sitemap, Footer. Once the banner design changed, we can just focus on the
Banner fragment XHTML and its handler (Handler is the java code to manipulate a fragment). Other parts can keep no change. If there have bug on the page, it is obviously
belongs to which the fragment was editing.
- The event handling method makes the dynamic response easier to implement. Conventionally, we need to write javascript to handle client side actions, for example, validating
a form before submit. With the help of ItsNat, all the business checking logic can place on server and able to adapt the Data Validation JSR. Of course, some dynamic response
to client can also be handled.
- Short learning curve. Comparing with other Java Framework, e.g. Spring MVC, Struts 2, Vaadin, junior programmers just need few days to understand how they should manipulate
W3C DOM elements and components with event handling is enough. Provided that the programmer familiar with HTML and JQuery, the barrier to ItsNat is low.
Despite from above advantages, we faced some difficulity during the project as below:
- Uncontrollable document after JQuery transform. For the modern website, JQuery is common for HTML components. However, some of those components will change client
document's structure. This will break the document synchronization of ItsNat. We are hard to determine the cut point at where ItsNat should manage and where can't.
Especially, when web designer use javascript to generate some HTML elements, e.g. Facebook like, ItsNat will throw the client side javascript error that it fail to navigate
the client tree to its target from server's return.
- Page refresh problem. If SPI is applied on the page, even server remembered the state of the client, sometimes javascript error will be thrown after page refresh if the
page contains some JQuery or CK Editor component.
- Limited reference material. We just can get help from ItsNat manual and feature show case source codes. Once developers encountered a problem, it is not possible for he/she
find solution via Internet.
- Confusion of APIs. There are a lot of similar names java classes, for example, ItsNatDocument, Document, HTMLDocument, ClientDocument. It is hard for me to determine when
and how to use what class and know their difference. (Of course, I have no time to read all the manual)
- Function execution sequence. I think this point has not emphasised in any documents but I got some similar case. For example, after created a ComboBox Component, if the
Renderer should set before getting out the DefaultComboBoxDataModel. If the sequence reversed, the renderer will not work. Moreover, if the Object added to the Data Model,
after then, change some value in the Object will not be reflected.
In conclusion, ItsNat is a good framework that worth to try and make the real MVC system. Thanks to Jose contribution.