lunes, 31 de marzo de 2008

IWebMvc Milestone 3 Client Features Screencast

I'm still in the middle of the way to Milestone 3 but I wanted to create a screencast of the features currently available so here it is!

Unfortunately:
  • I've tested it under VideoLan & QuickTime and both play the file fine. For some obscure reason WMP fails to do it.
  • Google Code just allows files up to 20MB so I had to remove the later parts (searching, auditing, other widgets) and compress it further
  • It just covers the client side (won't see any code)
But, all in all, it's a good showcase of what IWebMvc offers out-of-the-box to any developer. In the near future, I'll try to create a new one showing the development process, probably explaining how to create a new domain entity and getting CRUD operations running.

And remember, some of those features (security, documentation, widget enhancements...) are exclusive of Milestone 3 so they won't be publicly available for a while (I reckon a week or so yet). But you can always get the latest SVN revision if you want to test them today.

viernes, 21 de marzo de 2008

IWebMvc M2 available: Lots of goodies

It's been less than a month since the preview release of IWebMvc but a lot of things have been added to the platform and I thought it was a good moment to release a new version. I will label it as Milestone 2. In case that you didn't try the first one I've created a short presentation of the framework possibilities. It's the fastest way to get your feet wet with IWebMvc and an interesting reading nonetheless. You can obtain it from the project download page.

And to the topic! This new version packs lots of new functionalities so I'm going to just list them and provide some info (remember that the best way to understand everything is downloading and checking for yourself!):
  • Environment features
    • Additional supported configurations
      In addition to embedded Jetty, IWebMvc can now be run in Tomcat and/or Glassfish (or any other JEE5 compliant AS really). IWebMvc will autodetect the deployment server and apply some custom configuration.
    • Per server configuration
      IWebMvc transaction management can be configured in pretty much any way you like. It offers examples to be easily deployed in different environments: Database pools, full JTA, Spring JPA, driver manager connections, JOTM, with or without JNDI, ...
    • IDE integration
      This version provides Netbeans 6 / Eclipse Europa project files for easy workspace setup.
    • MySQL support
      IWebMvc will accept MySQL (in addition to HSQLDB) as database back end.
    • Installation guide
      In addition to Jetty demo, IWebMvc includes now complete installation instructions to run it in the several supported configurations.
    • Cache & compression filters
      All content served will include HTTP cache headers and will be compressed using gzip, improving performance and saving bandwidth.
    • IE 7 preliminary support
      There are still minor glitches (mainly with file management) but 90% of the features already work.
  • Hibernate features
    • Full Text Search
      In addition to filters, IWebMvc can look up entities searching in all indexed fields.
    • Completely revamped Filter functionality
      Easier to include and more powerful.
    • Support for lazy initialized collections
      Views can wok with uninitialized collections transparently.
  • DWR features
    • Classpath scanning
      DWR will scan the classpath looking for suitable beans (those annotated with @RemoteProxy) and create automatic proxies for them.
    • New DWR read store
      Built from scratch dojo data read store. Tested support for FilteringSelect and/or Grid widgets.
  • dojo features
    • Upgraded to version 1.1 beta 3
      All client code has been migrated to the latest available developing version of dojo (final release of 1.1 expected this month).
    • Theme support
      User can change the appearance at any time. All three (Soria, Tundra, Nihilo) themes from dojo are available. Custom themes can be added with little effort.
    • Entity Locator widget
      Domain entities can be binded using a powerful search widget (in addition to preexistent combobox widget).
    • Video widget
      New video component supporting Flash (.flv) archives
    • Thumbnail widget
      Server side on the fly creation of thumbnails for any image.
    • Grid widget
      In addition to PagingGrid, classical dojo grids are now available
    • List widget
      Any List<DomainEntity> can be created / updated transparently. All binding and validation is automatic as well. A specific tag wrapper and client component have also been created. Other collection widgets can be easily derived from this one.
    • Refactored client code
      Most of JS code has been refactored out of the widgets to a common file to improve performance and maintainability.
In fact, there are more features present but I'll left them undescribed for now. Of course, this version packs dozens of bug fixes as well. But better see it by yourself! So I have to encourage everybody to go to the dowload page and give it a try. Or by checking out the latest sources (svn export http://internna.googlecode.com/svn/trunk/IWebMvc IWebMvc). As always comments, suggestions, contributions, requests are very welcomed using the mailing list. And expect many more new features coming soon :-)

lunes, 3 de marzo de 2008

IWebMvc first preview version available!

The landscape of web frameworks based on Java is crowded. For the most part, they are all flexible and capable and you're better served using them than trying to build something by your own. At the bare minimum you are saving time. The price to pay is the learning curve. And sometimes is steep! Let's take Spring, for example. The basics, the IoC container, is easy to learn and leverage but add now, AOP, transaction management, MVC, security and/or ORM capabilities. Things can get complex really soon.

Unfortunately, even if you happen to master all those topics, a new issue will rise his ugly face. It happens because even the best frameworks just target some clearly defined development areas, for example, Hibernate targets database abstraction. This means any developer is forced to include a variable number of libraries and integrate them as best as he can. Being a committer of DWR (currently responsible of the Spring integration) I, for sure, know first hand what this means. In short, troubles.

Some Open Source frameworks have come to the rescue. AppFuse will let you kick start a project using a different combinations of frameworks quickly. Grails is another great web platform, the scaffolding features are fantastic (automatic controllers and views!) but it's based on Groovy.

Nonetheless, in my mind what I really needed was a platform that:
  • Is based on Java
    Although supporting Grooy / JRuby is a plus
  • Helps me to kick start a project
    But simplifying the process by giving me the best (and this can be tricky) set of frameworks for each task
  • Integrates both server and client sides
    And it's lightweight, robust and extensible. Read enterprise quality.
  • Supports all the common tasks a web app has to handle
    I include here: User Management, CRUD operations, i18n support (both framework & data), AJAX and astounding visuals

In the end there was nothing in the wild that could help me. In part because my framework choices are pretty clear (and fixed): JEE5/Spring/Hibernate/DWR/dojo. I have a number of projects on my back (heck! 10 years!) and these tools have helped me (like no others) to achieve robustness, productivity and quality.

So at the beginning of the year I embarked a personal task. I would build a web framework (yet another!), filling the void that existed, and release it as Open Source. I knew I had the knowledge (picking ideas from each successful project I've been in) and it was a matter of effort.

I'm glad to be able to release the first alpha (preview) version today! Here's the list of features I could manage to get working during the time:
  • Environment
    • Fully configured project
    • Ant + Ivy working build scripts
      • Transitive dependency management
      • Quality assurance tools and reports
      • Platform independent
    • Server and database independent
      • Tested against Glassfish v2 and Jetty
      • Tested against MySQL and HSQLDB
  • Spring
    • AOP, Context, MVC, ORM, TX pre-configured
    • Root (parent) & per web application contexts
    • Incredibly reduced XML configuration
      • Convention over configurarion
      • Annotation based configuration
    • Locale support (English, Spanish)
    • Powerful but easy validation framework
      • Injected in Controllers
      • Remote use with AJAX
    • Repository abstraction
      • Implementation based on HDD (more following)
  • JPA / Hibernate
    • Annotation based
    • Automatic DB schema creation & update
    • Base domain model provided
    • JTA
    • Generic DAO implementation
  • DWR
    • Advanced use of converters & javascript
      • Mapped domain objects allow transparent work in the browser
    • File upload with progress bar
    • Leverages upcoming 3.0 functionalities
      • Not yet available in any other framework
      • Remote beans using annotations
      • File transfers
  • dojo
    • Wrapped dojo widgets inside tag files
      • Centralized access
      • Auto-configured
    • DWR integration
      • Including a DWR read store to populate content
      • Automatic remote validation added
    • Widgets
      • Provided backing beans in the server for each widget
        • Automatic binding and validation
      • Included in this release
        • Textbox family (text, number, date, checkbox)
        • I18n text
        • Rich text editor
        • Document upload
        • Image upload
        • Entity grid (including pagination, ordering & AJAX backing model)
        • Filter (includes filter groups and ranges)
        • Menu bar
        • Entity selector (using a combo)
        • Color chooser
  • CRUD
    • Automatic CRUDs for any domain entityt
    • Default or customized views
    • Build domain classes using Lego pieces
      • Automatic DB mappings
  • Miscellaneous
    • 3DES Encryption
    • Utility classes
    • Little demo application
Not bad for a months work :-)

If you wanna try it (and I really hope so!) here are the installation instructions. Just a little disclaimer before: This is a preview (alpha status) release. It has many glitches (Firefox is in fact recommended). It's main goal is to offer a vision of where the framework is heading (it lacks several important features like security, documentation, theme support...). In addition I really wanted to make this release today so I rushed a little and couldn't fix some tests (don't worry about that). So, finally, the promised instructions, enjoy it:
  • Requirements
    • Installed JDK 6
    • Subversion client (if checking the sources)
  • Download
    • From HTTP: Download from repository
    • From subversion:
      svn checkout -r 72 https://internna.googlecode.com/svn/trunk/IWebMvc IWebMvc
  • Double click the provided run.bat file
  • Point your browser to http://localhost:8080/iwebmvc

Now, the real value of the platform can be seen creating a new domain class (like those in the demoapp.domain package) and getting for free the CRUD operations, the screens and the DB schema. And building the model class should be fairly easy using the provided backing beans (I18nText, RichText, Document, Image, ...).

For any questions (comments, contributions, recommendations, doubts...) related to IWebMvc please refer them to the mailing list.