Program RIA in Java, run on server-side, with IT Mill Toolkit 5

Discussions

News: Program RIA in Java, run on server-side, with IT Mill Toolkit 5

  1. IT Mill Toolkit 5 is a new server-side Java UI framework for Rich Internet Applications that does not require any XML or JavaScript programming. New widgets can be created completely in Java as the frameworks client-side is built on top of Google Web Toolkit. While currently Flex is the king of declarative RIA frameworks, we feel that GWT is the best client-side Ajax framework for Java-programmers and JSF is the most dominant declarative server-side framework. In addition to these classes of frameworks, we find that server-side Java-based (not XML-based) UI frameworks still have their place for two reasons: security gained from not exposing UI logic to client, and ease of use gained for direct access to all Java APIs, a full unrestricted execution environment and lack of communication layer design. What is your opinion - which approach (client- or server-side; Java, XML or JavaScript) is the best and why? What is your favorite RIA toolkit for Java programmers? Why? For more info about IT Mill Toolkit 5, downloads (Apache 2 license), demos and documentation, go to www.itmill.com

    Threaded Messages (24)

  2. we find that server-side Java-based (not XML-based) UI frameworks still have their place for two reasons: security gained from not exposing UI logic to client...
    Umm...GWT exposes UI logic to client, GWT is client centric, UI logic pushed (and coded) from server...
    What is your opinion - which approach (client- or server-side; Java, XML or JavaScript) is the best and why? What is your favorite RIA toolkit for Java programmers? Why?
    Many people say there are very much (Java) web frameworks out there. Ok is true, but there are not very much "programming styles", filtering frameworks according to your "preferred style" is very important. Where IT Mill Toolkit fits (my opinion): * Pure web (no plugins) * Event based with AJAX * Client/JavaScript centric pushed from server. * View built programmatically (add(new Label()) etc). * Focused to desktop-like web applications * Component based It this approach fits with your style...fine! Here is my global classification (excluding IT Mill): Frameworks considered (only browser based): GWT, DWR (mixed with a JS library), JSF, Struts (v1), Wicket, Echo2, wingS, Tapestry, ItsNat. There are many more but most of them are similar to these. * Client/JavaScript centric (including JavaScript pushed from server): GWT, DWR. * Server centric: JSF,Wicket, Echo2, wingS, Tapestry, ItsNat * Custom tags based (HTML generated by the framework)/XML declarative programming (using expression languages etc): JSF, Struts (tons of similar frameworks), Tapestry. * View built programmatically: GWT, Echo2, wingS... * Pure HTML templates, components attached to the HTML using Java: Wicket, ItsNat. * Page centric: JSF, Struts, Wicket... * XML based navigation: JSF, Struts * Component based: all except DWR and Struts. * Focused to desktop-like web applications: GWT, Echo2, wingS (view built programmatically) * Not so focused to desktop-like app. ("web sites friendly"): all except GWT, Echo2 and wingS. * AJAX based components: JSF enriched, Wicket enriched, GWT, Echo2, wingS, DWR, ItsNat. * Remote views of other users: ItsNat * COMET/long polling built-in: ItsNat * Server-sent events: ItsNat * Functional web testing built-in using the browser: ItsNat Diversity is amazing if you can select which one fits in your requirements and programming style. Disclaimer: I am the ItsNat author.
  3. we find that server-side Java-based (not XML-based) UI frameworks still have their place for two reasons: security gained from not exposing UI logic to client...


    Umm...GWT exposes UI logic to client, GWT is client centric, UI logic pushed (and coded) from server...

    Please check the actual source code, you will soon see that this is not the case with IT Mill Toolkit. You can get into code through this page: http://toolkit.itmill.com (see example source code from there).
  4. Layouting (through Java or XHTML)[ Go to top ]

    I'd like to fix another assumption. With IT Mill Toolkit, you can let your AD to do any kind of HTML, CSS, images and so forth with any tool (e.g. DreamWeaver if you wish) and let programmers to concentrate on the functional stuff only. We understand that there exists situations where layouting is sometimes better to do with Java ("swing style") and sometimes more productive using plain old school XHTML using "tags" to place UI components. Please download and see how it is build, I'll do the same for ItsNat :)
  5. Web toolkits like GWT or this extension from IT Mill surely makes it easier in some cases to develop web applications, but why is it so damn common, that clicking through even the most simple demo application with different browsers reveal layout problems and things, which are not working? It took me only a few minutes to find ugly layout flaws with Firefox and Opera on the label page in "IT Mill"'s demo application and that the subwindow demo is not working with IE.
  6. why is it so damn common, that clicking through even the most simple demo application with different browsers reveal layout problems and things, which are not working? It took me only a few minutes to find ugly layout flaws with Firefox and Opera on the label page in "IT Mill"'s demo application and that the subwindow demo is not working with IE.
    Yep, that is unfortunately common, but (whatever it's worth) please remember this is a rather early beta release, and we know we have serious bugs in the layouts. I would say that our layouts got one of the most biggest redesign in this new version. Some of the things we have desided to do with layouts are pretty hard to implement (that still doesn't excuse us why even simple layouts are broken in IE), so please check the upcoming release for improvement on those parts.
  7. It really is server-centric[ Go to top ]

    Umm...GWT exposes UI logic to client, GWT is client centric, UI logic pushed (and coded) from server...
    Hi, I hope you understood the architecture of IT Mill Toolkit correctly. IT Mill Toolkit uses JavaScript (compiled with GWT) only to turn the web browser into a terminal or a thin client that handles UI logic only at a low level and basicly forwards all relevant events to the server. Only some very trivial user interaction is done in the client and all application logic is handled in the server-side. Thus, while GWT/JavaScript is client-centric, programming with IT Mill Toolkit is server-centric. The programmer doesn't need to know anything about GWT unless he wants to customize the widgets or create new ones. Notice that the previous version of the toolkit used plain JavaScript in the client-side. The new release uses GWT simply because Java is nicer to program than JavaScript. Applications written with the toolkit have remained compatible even though the language with which the client-side was written. So, the client-side technology is not that relevant, unless you need client-side customization. It doesn't seem possible to expose UI logic to the client much less than this, as long as the client is a web browser. Other observations you made looked good.
  8. IceFaces[ Go to top ]

    I'm using IceFaces (JSF) with Facelets for about a year, and I'm really impressed. It requires a higher learning curve from the start, but after that, to create the AJAX web user interfaces - it's a pleasure. It has things like own set of rich components, server-initiated rendering for the asynchronous server push and many other features that I find really great. There is also a huge community supporting IceFaces and is completely free. I love IceFaces !
  9. I'm quite impressed by the demo and wanted to say that the guys have done a great job at coding the framework. But IMHO the whole approach has fundamental flaws that would limit its wide adoption: - GWT is an awesome tool because it allows us to build true RIA apps using Java. The whole point of it is to run UI logic within the browser instead of making a roundtrip to the server. This provides the best response time to the user and that's the premise of Web 2.0. If I'm not mistaken IT Mill still makes roundtrips to the server for logic and UI state, so it's more analogous to server-side frameworks. If I'm starting a new project that requires RIA I would use GWT directly. I don't want another layer between me and GWT, even if it has nice demos. If you want nice demos, check out MyGWT.net;-) - Establishing IT Mill as a server-side framework, my immediate question would be what standards is it based on and what do I need to learn to use it. Again, if I'm not mistaken IT Mill uses proprietary APIs so I have to learn from scratch and once I've started using it there's no going back. If I'm OK with roundtrips to the server, I'd rather go for AJAX JSF like IceFaces or MyFaces if I have JSP/Servlet/Struts background, or AJAX Swing like http://www.AjaxSwing.com if I have Swing/AWT background. This way I have a minimum learning curve and I'm aligned with the industry.
  10. Some reflections: - Standards are fine, but a standard doesn't magically do the job well done, accomplishing all requirements and on time. - Sometimes standards fail, review the EJB history, ask to many Hibernate and JDO happy users. - Sometimes there is no standard fulfilling some specific requirements. For instance what standard gives you full/fine grane control of the view layout of your AJAX based applications? What standard allows building new user-defined AJAX components easily? - Standards promote implementation independence but I'm sorry, but JSF with AJAX add-ons IS NOT a standard at this time, a concrete implementation is not a standard (unless we are talking about a concrete implementation as the "de facto" standard, in JSF there isn't a strong leader). - Standards are usually conservative technologies, stay aligned with the industry is fine if you follow a low-risk path, but a low-risk path is not a competitive path. - Knowledge background is your only one reason for technology selections? For instance you are a Swing developer... then selecting a web-Swing-clone framework is the best solution according to my skills. A web-Swing centric framework is fine to reuse an already made Swing application, or to build a "pure desktop-like web application", but if you must build a "web-site friendly" web application... you are in a serious trouble.
  11. Your points about standards are definitely valid. Standard is not a panacea. Your other points make sense too. And it seems to be in the line with what I'm saying. Which is: - If you are building RIA from scratch then just use GWT directly (it has an ecosystem of projects that provide additional components and functionality) - If you are migrating from Struts/JSF then pick a framework that adds AJAX to it (you only get things that are not covered by the standard) - If you are migrating from Swing use AjaxSwing if you want to keep your code base untouched or WingS if you don't mind making code changes Again, I'm impressed by the work of Mill IT developers and developers of other frameworks. But unless you just like developing for the sake of development, it seems that a better use of time is to align your efforts with dominant technologies/frameworks. This way your contributions have a much better chance of being used. IMHO of course:-)
  12. The whole point of it is to run UI logic within the browser instead of making a roundtrip to the server. This provides the best response time to the user and that's the premise of Web 2.0.
    True enough, but the little extra you get with the server-roundtrip is better security, exactly by not exposing the UI logic in the client. This is actually one of our (IT Mill Toolkit's) "features". GWT is mostly used because it improves our own workflow and makes it easier for others to create new components as well. The loss in user-responsiveness is, in my opinion, the only drawback.
  13. The new release uses GWT simply because Java is nicer to program than JavaScript.
    I have understood, you are only using the Java to JavaScript feature of GWT, fine.
    but why is it so damn common, that clicking through even the most simple demo application with different browsers reveal layout problems and things, which are not working
    This is the main problem of frameworks "Focused to desktop-like web applications", they try to mimic the desktop deeply using a pixel level approach (HTML elements are sized, absolute positioning is used etc) and trying the application works the same in several browsers plenty of differences and bugs. The problem is similar to the AWT o SWT approaches reusing native controls, Swing approach is different it built its widgets from scratch (this is the reason of its crossplatform success), this is not possible in the web space because there is not so deep control. Anyway if you follow the Filthy-Rich route in the web, frameworks like IT Mill (and GWT, Echo2, wingS, Eclipse RAP etc) is the path. But be ready to fight with these issues, and of course good bye to control the HTML code and be ready to see pages (HTML elements) created with JavaScript when you see source code of the generated page.
  14. In fact IT Mill Toolkit supports both "HTML style" layouting as well as "Desktop style" layouting. Furthermore, you can both program your layouts (Swing style) or declare your layouts in pure HTML. Use of WYSIWYG HTML editors is also fine, and you can even use JavaScript to script create animated or other complex layouts, if you wish.
  15. What about ZK?[ Go to top ]

    No mention of ZK, which takes a similar, server-based,approach to RIA development? It is a mature framework with a lot of components.... http://www.zkoss.org/
  16. ZK vs IT Mill Toolkit[ Go to top ]

    I think that largest structural difference between IT Mill Mill Toolkit and ZK is that IT Mill Toolkit builds client-side on top of Google Web Toolkit. This allows easy creation of new widgets as well as easy use of existing GWT-widgets. BTW: IT Mill Toolkit has been used in production use since year 2001 (back then with name Millstone UI Library)
  17. Re: What about ZK?[ Go to top ]

    No mention of ZK, which takes a similar, server-based,approach to RIA development?
    This is starting to seem like a job... hey Joe I'm sending you the bill :) ZK: * Server centric * Custom tags based/XML declarative programming (very very strongly) * Component based * Focused to desktop-like web applications * AJAX based components * Initial page based on HTML "Initial page based on HTML" vs "Initial page based on JavaScript" are two new categories, they mean: what you see with a "view-source", what the browser receives. * "Initial page based on HTML" : means the browser receives serialized HTML. * "Initial page based on JavaScript": means the browser receives the markup embedded in JavaScript (JS builds the page). Applying to the previous frameworks: * Initial page based on HTML: JSF, Struts, Wicket, ItsNat, jZeno, Tapestry(?) * Initial page based on JavaScript: IT Mill, GWT, DWR, Echo2, wingS, Eclipse RAP, Tapestry(?) Tapestry: some controversial, because is integrated with Dojo, Dojo is for me in the "Initial page based on JavaScript" category.
  18. Initial page based on X[ Go to top ]

    Jose, this is a really interesting classification: A) "Initial page based on HTML" vs B) "Initial page based on JavaScript". Even though the page probably changes a lot with Ajax calls, the "A"-type frameworks tend to be more "Web 1.0" and "B"-type frameworks more "Web 2.0". Also "A"-type frameworks are probably much more friendly to search engines. In the recent presentations I have used two main axis for framework classification: - X: Where UI logic is run: server, browser or browser-plugin - Y: What is the language used for constructing UI: Java, XML, JavaScript, C#, ... As you can see, these are not binary decisions - many frameworks combine different models, but drawing the frameworks on 2D space on these axis gives quite good picture of their properties. I uploaded a picture with some frameworks included to flickr: http://www.flickr.com/photo_zoom.gne?id=2114340432&size=o BTW: IT Mill Toolkit 4 contains special "HTML-mode" where the same application can render all of the UI in static HTML-pages (without Ajax and if needed even without JavaScript turned on). We deprecated this rendering mode from Toolkit 5 as most browsers handle Ajax just fine nowadays. If you want to try it out, download 4.0.3 version and click HTML-mode links in the demos. Your application should run without changes in plain old HTML. Web 1.0 style.
  19. Re: Initial page based on X[ Go to top ]

    Jose, this is a really interesting classification: A) "Initial page based on HTML" vs B) "Initial page based on JavaScript". Even though the page probably changes a lot with Ajax calls, the "A"-type frameworks tend to be more "Web 1.0" and "B"-type frameworks more "Web 2.0".
    I don't buy that argument, what is Web 2.0 in a technical point of view? Web 2.0 = AJAX roughly, many A) based frameworks have AJAX built-in. A) case is more related with "Focused to desktop-like web applications" and B) more related with "Not so focused to desktop-like web app" In the case of ItsNat, I can easily convert ItsNat to the B) category because ItsNat manages a DOM server tree and knows how to render to JavaScript an HTML page (ItsNat do it as the response of AJAX events to send page changes to the browser). ItsNat could send the initial page as JavaScript easily (I could add a switch to do this optionally) but I don't like it, three reasons: 1) Serialized HTML is several levels faster to consume by the browser. Is paradoxical because the JavaScript already contains the HTML in "DOM form", the internal browser state, HTML already "de-serialized", but JavaScript code must be parsed first (JavaScript syntax is by far more complex compared with HTML) and executed after, and JavaScript is slooooow. Serialized HTML is processed by native code. 2) Search engines don't like JavaScript. A) frameworks are Google friendly including AJAX based, permalinks can be used to drive the application to the desired state without AJAX. 3) Debug: you can see easily the source code in HTML form to identify a visual bug, and a JavaScript bug can be identified more easily because the code smaller. Anyway A) category is the price of "Focused to desktop-like web applications" and I must recognize the work of toolkits like IT Mill is very very hard and complex. Do you need this style of programming? may be, this is a question every developer must to ask him/herself (of course related to a specific project).
  20. HTML-based rendering[ Go to top ]

    I'd like to add one more difference about HTML vs JavaScript: ZK allows developers to use HTML-based template to design a component. It is a big plus for designing sophisticated components.
  21. HTML templates[ Go to top ]

    So does IT Mill Toolkit (now called Vaadin).
  22. jZeno[ Go to top ]

    Also not mentioned was jZeno (http://www.jzeno.org). Given the categories above I would say it is - Server centric. - View built progamatically - Component based - Focused to desktop like applications - AJAX based components - Functional web testing built-in (next release) And it is not just a UI framework, as it offers an integrated environment for data access, business logic, etc.. Disclaimer : I am the author of jZeno. Kind regards, Dimitry.
  23. jZeno[ Go to top ]

    Dimitry, jZeno looks really interesting. The architectural approach looks to be very similar to Echo2 and IT Mill Toolkit 4.
  24. And Appcelerator....[ Go to top ]

    I'll throw Appcelerator (http://www.appcelerator.org) into the discussion too. Our latest release supports server-side programming in Java, but also Ruby, PHP, Python, .NET (so far). On the client side, we've opted for open standards-based HTML, Web expressions and RIA widgets - versus Javascript or compilers - for UI development. It's another open-source alternative. We're still getting rolling, so let us know what you think.
  25. Just wanted to express what I think is going to be a common noise from the Grails crowd to support Appcelerator as a plug in...