Emilio Suarez's WebLog

Friday, May 30, 2008

RIA Technologies

"Rich Internet Applications" (RIA) are the current standard when in comes to developing a highly interactive web application and usually when people mention RIA, they imply Ajax. I named this post "RIA Technologies" because not everything that implements a rich user experience is based in Ajax technologies... but here I'll explore which technologies make more sense for the project that I am working on now, which requires the development of a browser-based monitoring application, which we want it to be extremely user-friendly, interactive and intuitive.

So I took a quick look at what are the current technologies leading the pack in the RIA world:
  • Dojo - a very powerful framework built
  • prototype - a low-level and very powerful Javascript foundation
  • scriptaculous - provides very slick animation, drag and drop and other features
  • Google Web Toolkit GWT - a Java-to-Javascript compiler that has the backing and support of Google
  • Google Gears - the offline engine for web applications that powers Google Reader and more
  • Flex and Air - Adobe's answer to RIA = Flash applications, with a powerful offline engine
  • OpenLaszlo - competitor to Flex which has a strong following
  • Yahoo User Interface YUI Library - set of utilities and controls for building UI widgets
  • JavaFX - Sun's and Java's response to Ajax: neither Javascript nor Flash...
  • Silverlight - Microsoft's RIA platform
  • and many more...
There are also a number of books, blogs and conferences that are talking Ajax and Web 2.0 which seems to be very popular lately.

Blogs:
Books:
Conferences:
In the last few years, the explosion on things related to Ajax, Web 2.0 and RIAs has been phenomenal... as AjaxWorld Magazine predicts... 2008 is the decision year for RIAs.

As with any other technology, you'll have to use the right tool for the job. Some applications will benefit from a Flash-based UI, where charts and animation are more important (marketing sites), where other applications that need more user interaction and data entry may benefit more from using an Ajax-based framework.

What will I end up using? that's the question... but Dojo is at the top of my list for a reason ;-)

Saturday, April 12, 2008

Structure101

As a recent winner of a Productivity Jolt Award, Structure101 gained my attention, and I was also drawn to it by listening to an interview with Juergen Holler one of the co-founders of the Spring framework on Software Engineering Radio.

I played with the trial version and within minutes I was able to create diagrams that displayed graphically the architecture of the application, but most importantly, violations to the the architecture. How does it find violations? These are merely upstream dependencies that basically assumed from the way packages are structure in Java and how Classes call each other. So when classes in two packages reference each other, you have circular dependencies, which are bad for your architecture.

I loaded our application code and in a matter of minutes I was blown away by the simplicity and the power of Structure101 to analyze the organization and design of your code. Structure101 performed the analysis and created the different perspectives where I could see problems in the design. There are 4 perspectives:

  • Overview perspective - where it displays a summary of issues and findings on the code (tangles, architecture violations, metrics, etc.)
  • Composition perspective - where it displays dependency graphs of packages
  • Slice perspective - where it displays the violations, complexity and tangles at different abstraction levels of design
  • Architecture perspective - where it shows a diagram of the architecture and the violations, and makes it very easy to rearrange or create your ideal architecture and see what you need to do to get there.
  • XS perspective - basically shows the relationship of two metrics: size and excessive complexity (XS)
  • Collaboration perspective - this is basically the visualization of afferent and efferent dependencies between the different packages and classes.

Structure 101 is a desktop application and is available for Mac, Windows and Linux and supports Java, C/C++ and Ada and it also has a Web Application component, that allows for publishing diagrams and allowing external users navigate through the different perspectives in a read-only fashion. There are also plugins for the major Java IDEs, IntelliJ and Eclipse that connect with the remote repository and can provide instant feedback to developers when they are breaking the architecture. This is great specially for big teams, where Architects don't have the bandwidth to be policing all the code all the time.

Kudos to Headway Software for a great application, and you can get some more insight information on Chris Chedgey's blog.

Monday, December 10, 2007

Crappy Java?

Well, it's been out since October, but I recently came across it and looks like another tool that should go into our build process. Crap4J. This is the latest offering from Agitar, and graciously it comes in the form of Open Source... great!
As someone who is greatly interested in producing quality code, I see this addition to my arsenal of open source tools as a very good one. Along with PMD, Findbugs and others (in particular the code inspections on IntelliJ IDEA), Crap4J will now be part of the continuous build process.
Now, I am not comparing it to Clover, which is also in use at our project, since Clover is commercial and Crap4J isn't. The great thing about Clover is that it finally correlates complexity with code coverage, giving you very nice indicators of what code is at risk and where you should spend your 80/20 time increasing test coverage.

Crap4J is the realization of an idea that Alberto started in his blog a few months ago... "Pardon my French but this Code is C.R.A.P." and we can finally see the new CRAP metric out in the development community and materialized in a tool. Even though it will be criticized and challenged, I think it is a welcome addition to the arsenal of metrics, and specially because it comes with a catchy name ;-)

Thursday, November 15, 2007

IntelliJ IDEA 7

It is finally here... IntelliJ IDEA 7 is out of beta and a released product... and what a nice improvement.

It has a lot of improvements to work better with Spring and Hibernate, Web Services, J2EE, JPA, JSF and GWT. It even includes top-level support for Groovy, Ruby, JRuby, Grails and Rails. There is also an easy way to import an existing Eclipse project into IDEA, which is what most of our developers use in my project. It also includes code coverage using Emma when running your JUnit tests in the IDE and a very slick Dependency Structure Matrix (DSM). And as usual, the refactoring support is much better, including support for refactoring XML, HTML, CSS and JavaScript.

In summary, it is a great improvement over the previous version, and a definite upgrade.

Monday, November 05, 2007

Leopard is here

Well, after more than a week, playing with Leopard, the latest version of the Mac OSX operating system from Apple, I am sold on it.
As Walt Mossberg declares, it is not "Revolutionary" rather "Evolutionary". And the main thing is that it is a really stable version that builds on a a great foundation that was "Tiger" the previous version of the OS.

There has been extensive coverage of the new features of "Leopard" such as the ones from the NYTimes (David Pogue), USAToday, MacWorld, but the most extensive and comprehensive (in my opinion) is the one from ArsTechnica. It goes into details of both the things that you see, and the ones that are under the covers.

Personally, the features that I like the most are:

* Quick Preview: it is one of those things like QuickSilver, once you start using, you cannot imagine living without it.
* Spaces: I have used Desktop Manager before, but having it built-in the OS makes a huge difference.
* Networking: there are a few changes to the networking components including Airport that just make it easier to work with multiple networking environments.
* Screen Savers: There are a couple of really nice screen savers, specially the ones for displaying photos and mosaics.
* Mail and iCal: have much better interfaces and features. The stationery in Mail is very slick and easy to use.

And the most important feature is that everything works. VMWare Fusion released an update for "Leopard" and I haven't had any issue with any other applications. The same applies to my old Powerbook G4 that I also upgraded and handles the new OS perfectly.

Friday, September 14, 2007

BEAWorld and VMWorld

This week I attended BEAWorld 2007 and I also visited briefly VMWorld which I could enter as a visitor from BEAWorld's conference.

This conference is a big departure from the very technical conferences that I have attended recently in the past (No Fluff Just Stuff, RubyConf, MacOSX Conf, EclipseWorld) but it was very interesting to see what the world of big Enterprise Applications is like today. It was a short conference 2 1/2 days and all the mornings we had keynote presentations by several BEA Executives and also from CEOs and high level executives from companies like Comcast, KOHLS, FedEx and Intel. The session tracks in the afternoons ranged from very technical (Developer tracks), to very high level and focused to particular industries (Financial, Telco). So I attended the technical ones obviously and got to hear some very interesting ones.

I was very impressed with the size of VMWorld, and the number of companies building and working around the concept of virtualization. I have been a loyal user of VMWare Workstation since the early days, and I am currently using VMWare Fusion on my Mac, which is a really nice piece of software that allows me to run Windows, Ubuntu, Solaris and a number of Virtual Appliances that enable me to get things done more quickly.

On the BEA front, the theme of virtualization was also prevalent, specially with the recently released products of WebLogic Server - Virtual Edition (WebLogic running without an OS) and the WebLogic Liquid Operations Control, which allows you to manage multiple virtual instances of WLS-VE from a central location. Very powerful stuff.

I am pretty sure that the Virtualization theme will become more prevalent in the coming years. It has become a necessity in the current technology environment.

Monday, August 06, 2007

VMWare Fusion

VMware Fusion

For the last few weeks I have been toying with the beta version of VMware Fusion, and today version 1.0 is being released. VMware recently entered the playing field of providing a virtualization product to enable running Windows on Mac OSX. I have not tried Parallels yet, but since I have been a long time user of VMware on Windows before, I wanted to give them a try and see how good they were on the Mac. So far I have been impressed, the quality and the features that Fusion offers are at the level of the Windows/Unix VMware Workstation version that has become the defacto virtualization tool.

For starters, the ease of installation of Windows using the quick installation wizard is very good. It also automates the installation of the VMware Tools, so you get a running Windows machine up and running very quickly.

But one of the nicest features I think, is the Unity windowing system, which simply removes the Windows Desktop, and makes all windows display at the same time with all the other MacOSX windows, so you can use Expose to see all the windows, including Mac and Windows. You can also use the Cmd-Tab keystroke to navigate between Mac and Windows applications. Very nice.

The performance of Windows running within VMware Fusion is also very good. I ran a couple of benchmarks for CPU speed, and the results were similar and in some cases faster than the Dell Dual Core laptop that I also use.

Installing Ubuntu was another test and as expected it went smoothly. Everything works perfect, including the screen resolution in Ubuntu that can be set to what the MacBook Pro supports.

I think this will be my choice of virtualization software for running Windows and Linux on my Mac.