Steven Haines
http://www.stevenhaines.com
Steven Haines

Model-Driven Architecture

Model-Driven Architecture, as defined by the Object Management Group (OMG) in 2001 (Wikipedia link), focuses on "forward engineering, i.e. producing code from abstract, human-elaborated modelling diagrams (e.g. class diagrams)". In short, you focus your efforts on defining and maintaining a model, typically UML, and then sections or subsections of your application are generated for you from your model. For example, you may define classes in a class diagram that represent entities in your application's domain model, and from those you may generate Hibernate classes, including their relationships. Furthermore, you may define DAO classes, service classes, etc., and then wire them together in sequence or collaboration diagrams and then generate substantial portions of your application from them.

I am building an article series on MDA for InformIT.com, so I would like to solicit your opinion about MDA. Specifically:

  • Can MDA live up to its hype?
  • Setting aside trying to generate an entire application, does MDA have a place in generating certain tiers (e.g. domain model / Hibernate classes) of your application?
  • Who is more likely to embrace MDA and who is more likely to reject it? Is there a different perception between architects and developers? How about managers?
  • What do you think about the current MDA software offerings, e,g. AndroMDA?

And I welcome any other opinions you may have.

 del.icio.us  Digg 

Back to Blogging

Sorry for the 3 month break in my blog posting, but on 11/28/2009 we welcomed the latest member of our family: Rebecca Michelle Haines. Plenty of pictures up on my Facebook, send me an invite if you want to see them.

Now that things have calmed down a bit, I'll start posting regular updates to this blog...

Thanks
Steve

 del.icio.us  Digg 

Wicket Article Series - Part II

In the latest installment of my Wicket article series I built out the "Post Article" page in my GeekNews example. The GeekNews example is a simple content management system that displays a list of articles on the home page, allows a user to click on an article summary to review the article, and now allows users to post their own articles. I have not covered access control yet to allow only administrators to post articles, but thus far this series includes:
  • Links and Bookmarkable links
  • Using a ListView repeater to display the list of articles
  • Handling form input and binding an object to the form using a CompoundPropertyModel
  • Using TextFields and TextAreas in forms
  • Simple form field validation: making a field required, validating String length, and validating that a date is in a specified range

GeekNews Part 1 posted on Friday and Part 2 will probably post on Wednesday (we have an abbreviated schedule for the holiday.) Next week I'll review more form types and more form validators and then I'll turn my attention to Spring and Hibernate integration.

My impression of Wicket so far is very positive. Writing web application has not been so much fun in years - I think I'm just happy to be able to focus on writing pure HTML and handling the presentation logic inside a Java class. Many people may disagree with me, but I am finding that it makes developing web applications much easier by avoiding the painful translation of an HTML document to a JSP-marked up HTML document.

The question that is burning in my mind, though, is how much "magic" is Wicket holding on to behind the scenes? Even adopting detachable models (so that model objects are not stored in the HTTP session), I wonder how much memory it is consuming to retain page history? Will Wicket scale well enough to support massive amounts of load? How will it behave with Terracotta? Tune back in as I find the answers to these questions.


 del.icio.us  Digg 

Wicket Article Series

I started an article series about Wicket on InformIT.com last week and thus far I have become very encouraged. The thing that I like about Wicket is that it is simple to move from an HTML mockup to a working application - add a few wicket:id attributes to the HTML tags to which you want to add dynamic content and then build logic in a corresponding Java component to generate that dynamic content. This brings up another point, it is very natural for me, as a Java developer, to build content inside a Java class and to work with Java objects rather than to build that same presentation logic using a tag library.

For example:

HelloWicket.html
<html>
<body>
<h1 wicket:id="message">This is my message</h1>
</body>
</html>

HelloWicket.java
public class MyPage extends WebPage {
  public MyPage() {
    add( new Label( "message", "Hello, Wicket!" );
  }
}
In the article that will publish this week, I build a more substantial example of a simple content management system that I originally built using Spring MVC for JavaWorld, that illustrates how to use the ListView as a repeater to display multiple articles in the "repository" (ok, it's hard coded inside the application for now), how to handle links, and how to navigate from the HomePage to an Article page. The next week I'll complete the content that I built for the Spring MVC example by building and handling the form submission.

The question that I have for anyone reading this is with regards to Wicket integration with Spring and Hibernate - any experience? I read through the Spring and Hibernate chapter of Wicket In Action tonight and it looks feasible, but still not as elegant as the Spring MVC or Struts 2 integration. But if I can work through a clean solution, I may very well have found my next favorite web framework But I'll hold off my formal recommendation of Wicket until I run some performance tets - its session memory usage looks like it could become problematic if not properly managed.

So please chime in if you have any Wicket experience and have any insight that might make the article series better - like why you like Wicket and what cool things make it better than its competition.



 del.icio.us  Digg 

Welcome

I setup this website as both a professional resume and as a conduit for me to share the technical madness that is running through my mind. To get started, I am the author of several Java-related books:
As well as contributing chapters to the following books:
And I've been the Java Reference Guide host on InformIT.com, Pearson Education's (SAMS, QUE, Prentice Hall, Addison Wesley) online IT Resource, through which I have been publishing weekly articles for the past several years. You can read the Java Reference Guide here.

You can check out some of my white papers here:
I've spoken at numerous industry events and Java Users' Groups, such as repeated speaking slots at JBoss World and the Software Test and Performance Conference.

Additionally I spent several years teaching Java and Computer Science related courses at the University of California, Irvine and Learning Tree University.

I am currently interviewing and looking for either permanent employment or contract work, but previously I worked for several software companies specializing on Java and most recently (the last seven years) focusing on Java performance management. I spent the last seven years at Quest Software as the Java domain expert, where I defined the technical requirements for their performance monitoring and management software (for the likes of WebLogic, WebSphere, JBoss, and Oracle Application Server.) I spent two years at Quest in a professional services organization that I created with a focus on performance tuning and troubleshooting production performance problems. In this role I defined the service offerings and implemented many of the engagements for Fortune 500 companies in the Financial, Telecommunications, and Health Care industries.

Prior to that I worked as a Java architect in the B2B eCommerce, online marketing, and photo imaging spaces.

I can be reached at steve@javasrc.com, feel free to drop me a line. And if you have requests for InformIT.com updates, send those to informit@javasrc.com so that I don't miss them.

Cheers.
Steve

 del.icio.us  Digg