• Home
  • Events
  • About
  • It's all about the form…

    February 26th, 2008

    Based on the feedback we receive from our customers and our own experiences at customer sites, we learned that almost every application contains multiple forms. In business applications, forms are the basic building blocks that make up the essence of the application. Until now, UltraLightClient provided no special support for this central element. With UltraLightClient ’08 this will change!

    UltraLightClient 08

    UltraLightClient ’08 will provide an out-of-the-box form component that makes it ultra easy to implement your forms:
    What before was obfuscated by a lot of boilerplate code will now be reduced to some lines of clean code. What before offered lots of degrees of freedom (and lots of ways of getting lost as well) is now guided by best practices. As a result, form code is easier to write, easier to find, easier to read, easier to understand, and easier to maintain. Writing a form will become a very cost-effective task with UltraLightClient ’08!

    Implementing a form basically means defining the following aspects of the form:

    • layout of the input components
    • value binding to a business object
    • input validation
    • status feedback: missing or invalid input, dirty state (i.e. not yet stored input)
    • calculation of dependent values (e.g. find corresponding city to entered ZIP)

    Let’s consider an example that shows how to express these aspects with help of the form component and how the form component simplifies your life (the programming one, not the real one ;-)). In this example I’ll show you how to implement the following form using the new features in UltraLightClient ’08.

    Form

    The first step is to define the layout of the form. In the old days, this would mean creating tabs for the separate parts of the form, adding labels to the tabs, adding input fields to the tabs, connecting the labels to the input fields, adding layout constraints for each added component (e.g. that the last name input field is on the same line as the first name input field), … With UltraLightClient ’08 this is just one line of code for each tab and each input field! The resulting code is easy to write, easy to understand, and easy to maintain:

    And as an added bonus, you get the value binding for free! There’s no need to copy the property values from the business object (a person in this example) into the form when creating the form, and no need to write back the input component values into business object when storing the form. UltraLightClient ’08 takes care of this for you for free.

    How about input validation? In UltraLightClient ’08 this is ultra easy as well:

    The previous code snippet adds error feedback to the form whenever the user input starts with a digit. UltraLightClient ’08 takes care of invoking your validation code when necessary and displays the validation feedback to the user. So no need for you to add listeners to the input components and to update the form to display the validation feedback. See the red exclamation mark and the tooltip in the screenshot above, displaying the validation feedback.

    We talked about layout, value binding, input validation, and status feedback. In the last section of this post, we will tackle the calculation of dependent values. With UltraLightClient ’08 this is ultra easy as well:

    As with input validation UltraLightClient ’08 takes care of invoking your code when necessary. So there is no need for you to add listeners to the input components and to update the form here as well.

    Summary: With the new form component in UltraLightClient ’08 implementing forms is an ultra easy task. No need to write stupid boilerplate code again and again. You can concentrate on the essential parts. Plus UltraLightClient ’08 enforces best practices, which results in more uniform code. Form code will become ultra easy to write, ultra easy to read, and ultra easy to maintain in the upcoming release.

    We plan to publish an UltraLightClient ’08 milestone release in early April. Stay tuned!

    Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
    • email
    • Print
    • Twitter
    • LinkedIn
    • XING
    • Facebook
    • Google Bookmarks

    Hierarchies

    February 26th, 2008

    Canoo’s CTO Bruno Schäffer is speaking at SD West 08 on “Design Patterns for Rich Internet Applications”.

    SD West 08

    The following blog post outlines some of the concepts that he will cover in his talk. This is part four of a series of blog posts:

    As we have seen in the previous posts of this blog post series, the presentation model clearly assigns responsibilities within the presentation layer. For simple user interfaces this approach is more than good enough. However, simple user interfaces are not really the domain of Rich Internet Applications (RIA). How can we tackle complex user interfaces using the presentation model approach? Let’s have a look at a non-trivial user interface:

    Screenshot

    It shows a typical master-detail view, further enhanced by a tree navigation on the left-hand side. The user can select different aspects of a person in the tree which brings up the corresponding form on the right hand side.
    A naïve approach would be to create a single presentation model for the entire view. While implementing the presentation model you will soon realize that there is just too much state and behaviour to be captured in a single presentation model.

    If a view is too complex, we have to split it up into manageable sub-views, each with a presentation model of its own. The combination of sub-view with its presentation model is called “application component”. An application component communicates with its environment only via the presentation model, i.e. the presentation model acts as an observer to other application components (resp. their presentation models).

    A complex user interface can now be decomposed into a number of fairly independent application components. Independence means, that these application components can be employed or reused in different contexts. Independence is facilitated by relying on the observer pattern for communication with other application components.
    How do you build a complex user interface from a set of application components. You simply arrange the application components in a hierarchy. Each application component is responsible for the creation of all directly known application components. Views and presentation models have to be aware of this hierarchy. An abstract base class for view resp. presentation model can factorize this.

    The component hierarchy for our example user interface shown above looks like this:

    Component hierarchy

    Views are marked red and presentation models are blue.

    As you can see not every view needs to come with a presentation model of its own. In this case the form view hooks up to the presentation model of the navigation view. A change in the tree selection will be broadcasted by the navigation presentation model. The form view updates itself accordingly by bringing the corresponding view to the front.

    In addition, application components are perfect candidates for testing. Each application component can be tested independently (as described in part three). Testing a user interface made up from a hierarchy of application components can be considered as integration testing. It still focuses on the behaviour of the presentation models, though. An integration test case first creates the presentation model hierarchy and then tests the behaviour of the model hierarchy. The view code in this hierarchy is still trivial and therefore rarely need dedicated test cases.

    Application components have another advantage. They are perfect candidates to be assigned as an independent task to a developer.

    There are still some challenges left, such as clean initialization for presentation models and views when creating a hierarchy of application components or distribution of update events in this hierarchy without ending up in infinite update cycles.

    In the next blog post, we will have a look at a simple framework which supports building user interfaces with application components. We will also see how easy it is to generically add undo/redo to an application.

    Part 1: MVC and the Brave New World of RIA
    Part 2: The World Needs More Models
    Part 3: A Simple View on Complex Stuff
    Part 4: Hierarchies
    Part 5: Presentation Model Framework
    Part 6: What’s Needed Besides the Presentation Model

    Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
    • email
    • Print
    • Twitter
    • LinkedIn
    • XING
    • Facebook
    • Google Bookmarks

    How Widespread is the Use of RIA Plug-ins?

    February 19th, 2008

    Are there any studies or reports on the acceptance of plug-ins for Rich Internet Applications (RIA)? Are there any statistics available? Or any Gartner or Forrester reports?

    These are some questions we hear quite often. I tried to find out if there is an independent report on this. But most reports I found so far are based on vendor statistics.

    Adobe Flash

    Adobe claims over 750 million connected PCs and mobile devices worldwide have the Flash player installed. There’s a Adobe stats page that shows the current percentage of penetration for each version. Mike of RIApedia.com points to this same web page and concludes that 90% can view Flex 2 applications. The latest Flex framework requires Flash Player 9.0.

    Java Runtime Environment

    The Sun Microsystems website reports that over 91% of internet-connected PCs have Java enabled.

    Java Desktop

    Over 91% of Internet-connected PCs have Java enabled (Source: Omniture, April 2007).
    This includes over 63% of Sun JRE in the US, and over 65% of Sun JRE in Italy/Spain/UK (Nielsen//NetRatings, January 2007)

    92% (and growing) of JRE installs (Java.com, J.S.C.) are now Java SE 6 (April 2007, Sun)

    Estimated Worldwide Java SE penetration per Operating System and VM vendor (Source: Sun estimate, April 2007)

    • Sun JRE (Windows): 65%
    • Microsoft VM (Windows): 21%
    • Apple VM (Mac OS): 3.5%
    • Other (including Java SE on Linux and other OS: 1.5%

    PC OEMS representing over 60% of all shipped PCs in Q4 2006 have signed Java SE redistribution agreements with Sun. (Sun, based on IDC #206152, March 2007).

    9 of the top 10 PC OEM vendors have a JRE redistribution agreement with Sun. (Sun, based on IDC #206152, March 2007).

    Silverlight

    I would expect Microsoft’s Silverlight to be a lot lower (being newer to the market). Techcrunch reported in January 2008 that NBC will be streaming the Beijing Olympics using Silverlight.

    So far, all I have found are statistics on the number of downloads. I would be interested in how often the plug-ins are accessed per week and for what kind of applications (gaming vs. work-related applications).

    JavaScript

    For completion’s sake, let’s have a look at the stats for JavaScript, which is part and parcel of all standard web browsers and does not require a separate download. JavaScript needs to be enabled for AJAX applications.

    Javascript 1.2+: 3048722 (93%)
    Javascript <1.2: 5587 (0%) Javascript false: 214683 (6%)

    The Counter lists that 93% of all web browsers have JavaScript enabled.

    Nevertheless, statistics can often be misleading.

    Before deciding on a technology, consider the target audience. How often will a person use the application? Regular users will probably be more inclined to download a plugin if the corresponding web application improves their work experience or productivity.

    Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
    • email
    • Print
    • Twitter
    • LinkedIn
    • XING
    • Facebook
    • Google Bookmarks

    Canoo is Silver Sponsor of Jazoon 08

    February 18th, 2008

    Jazoon 08

    Canoo is sponsoring Jazoon, a Java conference taking place in Zürich, Switzerland from June 23 to 26, 2008. The initial speaker list looks very promising, with a number of renowned speakers.

    See also last year’s Jazoon blog posts written by Canoo attendees.

    Meet Canoo at these upcoming events:

    2G Experience

    Dierk König is speaking at this week’s 2G Experience in Reston, Virginia.

    SD West 08

    Bruno Schäffer is speaking at SD West 08 in Santa Clara, California on Friday, March 7.

    OpenExpo in Bern on 12th and 13th March, 2008

    And on March 12 and 13, Canoo will be exhibiting at the OpenExpo in Bern, Switzerland. Order a free entrance ticket here.

    An overview of all Canoo events is available here: http://canoo.com/events.html

    Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
    • email
    • Print
    • Twitter
    • LinkedIn
    • XING
    • Facebook
    • Google Bookmarks

    Podcast: Frank Westphal interviews Dierk König

    February 16th, 2008

    Groovy and Grails at Frankwestphal.de

    Listen to the podcast on Groovy and Grails (in German).

    Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
    • email
    • Print
    • Twitter
    • LinkedIn
    • XING
    • Facebook
    • Google Bookmarks

    css.php