Matt RaibleMatt Raible is a Java Champion and Developer Advocate at Okta.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

NYC Seminar: Flex and WebWork

Christophe talked about Flex, it's architecture and built the data grid for the Flex pet store in a matter of minutes. After seeing this presentation, I definitely think Flex is wicked cool. It's too bad that it's price tag is $6K/CPU. However, Vic is probably right - this stuff should be the next generation of webapps. I'd order the developer CD but it sounds like something I'd play around with and never use. It looks so easy to use that I'm willing to bet I can wait until a client demands it - then learn it in a matter of days - or even hours. I did end up asking Christophe about unit testing these Flash UIs. They're working on it, but nothing exists yet.

Now Jason is up - the last session of the day.

What is WebWork 2.0?

  • The 2nd generation of WebWork
  • A web MVC Framework
  • a wrapper on top of a generic Command Pattern implementation (XWork)
  • A small but powerful tag library

XWork is where Jason spends most of his time. XWork is a generic command pattern implementation. Actions are command objects in XWork. XWork adds advanced features.

  • Interceptors: setting parameters, workflow, etc.
  • Results: includes one for chaing to another Action
  • Simple IoC container
  • Powerful expressional language (OGNL)
  • Flexible type conversion
  • Metadata driven validation framework

What does WebWork add?

  • Adapter for Http request/response
  • Integration of Session / Application Scopes
  • ServletDispatcher translates HTTP Requests into Action execution
  • Request parameters passed to Action Results
  • Supported view technologies: Velocity, Freemarker, XSLT Jasper Reports, JSP

Action is a simple interface with an execute method. ActionSupport is a useful base class.

I gotta say - one of my favorite things about WebWork is the fact that all its UI tags are built using Velocity. This means that you (the developer) have full control over what HTML is generated from the JSP tags.

Interceptors have been nicknamed "Domain AOP." Interceptors allow custom code into the call stack and much of the WebWork "magic" happens with Interceptors. WebWork has a number of built-in interceptors:

Setting Parameters

  • ParameterInterceptor
  • StaticParameterInterceptor
  • ChainingInterceptor
  • ConversionErrorInterceptor

Defining Workflow

  • DefaultWorkflowInterceptor
  • PrepareInterceptor
  • ServletConfigInterceptor

Preventing duplicate posts

  • 2 types of token interceptors

Interceptors can be grouped into named Interceptor Stacks (i.e. defaultStack, validationWorkflowStack).

2 types of actions possible: Model-Driven vs. Field Driven (merging of Action and ActionForm). ModelDriven Interface - public Object getModel(). Porperties of the model will be available as simple properties - "" becomes "name". To use, you have to add ModelInterceptor to your WW config file.

OGNL (Object Graph Navigation Language). An expression and binding language for getting and setting properties of Java objects. Normally the same expression is used for getters and setters.

XWork Validation Framework

  • XML based. Validation file in the same package as the class. Defines one field validator and the error messages to add if it fails.
  • Bundled validators - supports required, range, email, url and OGNL Expressions (very powerful).
  • JavaScript support recently added for simple validators - nothing for expressions though (tough to do).

Doh! Jason's demo didn't work. I did a lot of demos in my preso so I couldn't help but say "shoulda used a Mac!" These PowerBooks might be a bit slow for development, but they're definitely nice for this traveling salesman thing.

This is where you get your money's worth: All the speakers and attendees comparing frameworks, talking about their problems and trying to figure out a better way.

Posted in Java at Apr 03 2004, 04:13:54 PM MST 8 Comments

Cool, thanks for blogging Matt... I was worried that everyone's session would get blogged but mine :-)

Posted by Jason Carreira on April 04, 2004 at 09:33 AM MDT #

Matt, I was at the conference to, never had a chance to introduce myself to you. Anyway, I agree that flex is awesome and end users would love it. You said you would wait until your client demands it, but if you learned it and put together a demo, you might be able to wow some potential clients and get business that you wouldn't get before. Just a thought. Also, since this is obviously a product targeted at enterprise customers, do you think there are enough flash developers in the open source community to create an open source flex-like product?

Posted by Paul Barry on April 04, 2004 at 10:11 AM MDT #

<em>> do you think there are enough flash developers in the open source community to create an open source flex-like product?</em>

Paul - I don't know of that many Flash developers in the open source community. I have seen some <em>very good</em> Flash developer's names on some mailing lists lately, but I don't know that they'd be interested in this. I'm guessing that you have to have some proprietary Macromedia "secrets" in order to produce Flash bytecode from XML.

Posted by Matt Raible on April 04, 2004 at 10:19 AM MDT #

I don't think Christophe mentioned that they sell the licenses in 2 CPU increments, so you actually have to shell out 12K to get started. :-( Anyway, I really enjoyed this seminar, all presentations added a unique flavor. Until we can afford the Flex license, I'm going to start using the display tags, they looked like they could add some nice usabilty with very small amount of code changes.

Posted by Thomas Risberg on April 04, 2004 at 10:31 AM MDT #

Have you looked at Laszlo as well? I feel like their stuff is slightly better than Flex, but both are really neat. Unfortunately, testing their code is a pretty difficult thing to do.

Posted by Patrick Lightbody on April 05, 2004 at 08:47 AM MDT #

Matt, definitely interesting ideas raised at the seminar. While Christophe was presenting, couldn't help but wonder what Microsoft's impact on the move to rich clients will be (although we'll probably be restricted to using IE). Another thing I've been thinking about is Christophe's comment about restricting the number of client IP's in the developer license. If we're just pushing .swf files out to the client, what's to prevent us from having a dedicated machine as a server-side proxy that acts as a client to the Flex server? Client requests would come to the proxy, which would invoke the Flex server, and send the .swf file back to the client after it's been generated. I'm going to try out Flex to see exactly how this works... I'm guessing Macromedia's thought of this already.
p.s: am typing up the copious notes I took, which I'll post somewhere soon...

Posted by Sid Bala on April 05, 2004 at 03:43 PM MDT #

Patrick - I have heard of Laszlo. I also noticed that their CTO (David Temkin) has started a blog.

Posted by Matt Raible on April 05, 2004 at 09:20 PM MDT #

Unfortunately in the larger picture, flash will never reach critical mass unless they give it away OR it gets integrated with the browser. I know too many people, myself included, that WILL NOT install flash as it currently exists. It is also clear from the pricing that Macromedia doesn't really understand how to make this product truly successful, i.e. have a light or opensource version so that developers get familiar with the product, or pricing it correctly so it can get some developer presence. Too bad since the market truly needs something more than HTML.

Posted by Edgar Dollin on September 02, 2004 at 08:09 AM MDT #

Post a Comment:
  • HTML Syntax: Allowed