Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

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.

10+ YEARS


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.

WebWork and JDD

I attended the Boulder Frameworks meeting tonight on WebWork, followed by the Boulder JUG meeting. The WebWork (a.k.a. WW) presentation had a mere 5 attendees, but Kris gave a very good overview of WW and showed how simple it was. Here are some of the strengths of WW according to Kris:

  • It's not dependent on J2EE. Many method signatures are empty and it uses interfaces everywhere, rather than parent classes. Sounds cool. Kris likes it because "it gives you a warm fuzzy feeling you're not tied to WW."
  • It's not Jakarta. "Jakarta is like a Ketchup bottle - you have to beat it to get anything out of it." I don't know that the WW team produces software much faster than Jakarta though...
  • Instead of using the HttpServletRequest, WW uses a Stack, which is essentially the same thing (sans J2EE).
  • WebWork has Interceptors. They're like Filters, but WW comes with built-in Interceptors that can be applied declaratively. Kris mentioned there's little documentation on the built-in Interceptors - a wiki page would be nice.
  • Action packaging - you can turn a portion of your WW application into a jar and it can be added to another WW application. It sounds good, but I can't think of a use for it right now. Sounds like modules in Struts.

Kris's biggest reasons for liking WW was Interceptors and Inversion of Control. However, Struts has those too. Good presentation. I plan to learn WW and give up this whole my framework is better than yours stance. In fact, I hope to do this with many of the technologies I use everyday. I'm going to start using Orion and Resin so I know if Tomcat really is better, or better yet - when should I use one appserver or the other. I'm learning IDEA so I know when to use Eclipse and when to use IDEA. Today I discovered how IDEA warns me about invalid Javadocs (very nice feature). Eclipse continues to rule the CVS integration world, and I see no reason to quit using it and bitch about IDEA's lack of CVS integration.

After WW, I walked across the hall to listen to James Duncan Davidson talk about "James Driven Development" (my phrase) - also known as Objective Object Orientation. Rather than bore you with the details, here are the highlights:

  • Don't abstract too much - just enough to fit your needs. Examples of too much abstraction can be found in Apache's Repositories (James's words - he didn't specify any projects).
  • Don't extend, instead create objects do something, then you don't need to know the interworkings of the object.
  • Dynamically typed languages rock (i.e. Smalltalk, Ruby, Python). They're much easier to develop with, especially when backed my TDD. You can accomplish similar things in Java using lots of casting.
  • He can't wait until something comes along and kills Ant and Tomcat - he never thought they'd make it this far - especially considering he wrote them when he was a Junior Programmer for Sun. He gave Tomcat its name because he thought it'd be good animal on the book cover of an O'Reilly book. He never thought it would happen, and now that it does have a book, he said he's disappointed it's not an actual Tomcat (apparently it's a snow leopard?).

His point about Ant and Tomcat is that 1) something better than Ant will rock, so we should all be happy when something better comes along and 2) Tomcat was never designed (or tested) to be used in the environments its being used in (i.e. Nuclear Facilities). Good stuff - brain is full.

Posted in Java at Oct 09 2003, 11:29:22 PM MDT 7 Comments
Comments:

What do you mean with 'IDEA's lack of CVS integration'? I allways found IDEA's CVS integration pretty good - much better than Eclipse's. And it is said to become even better in 4.0 ;-) If you didn't know, there's a document available on how to deal with CVS in IDEA: http://www.intellij.com/docs/CVS.pdf

Posted by Michael on October 10, 2003 at 08:45 AM MDT #

Thanks for the tip Michael.

Posted by Matt Raible on October 10, 2003 at 11:01 AM MDT #

Well, I'm glad the Struts community can learn from what we're doing with WebWork2.... I'm originally from the south, and there's an expression there.... "Slapping lipstick on a pig" :-)

Posted by Jason Carreira on October 10, 2003 at 02:29 PM MDT #

There's also a serious weakness in the SAIF Interceptor Interface... it only provides before and after? You can't do both in one method? What if you wanted to do: try { // continue processing here } catch (Exception e) { // handle exception here and clean up } There's no way to do this, or a host of other things that aren't really before or after but AROUND...

Posted by Jason Carreira on October 10, 2003 at 02:32 PM MDT #

Thanks for the mention Matt. One thing you didn't mention is that the presentation revolved around the Wafer Weblog application. The code is available to all at http://sourceforge.net/project/showfiles.php?group_id=50801 or you can go straight to CVS if you like. Matt did point out some server configuration issues but those issues are mostly noise so the app still works. It's hard to learn a framework, create the app, polish it up, present and author on it in as short of time frame as possible. So if any WW2 experts want to take a look and clean it up some, PLEASE do, it is in the best interest of the community and those who use the Wafer Weblog application as their example for learning.

Posted by Kris Thompson on October 10, 2003 at 02:44 PM MDT #

As to the weakness in SAIF, I agree. Being a 0.1 release, the code is more of a proof on concept how easy it would be to add WW2-like features. Unfortunately, the Struts people I talked have their own Struts hacks to solve the problems interceptors and IoC solve, so its hard to get interest. As an aside, I really how xwork handles interception, particularly the abstraction of the action invoker responsibility. It took a few reads of the wiki to see the flow, but it is a thing of beauty. Nice wiki docs, btw.

Posted by Don Brown on October 10, 2003 at 05:06 PM MDT #

Hi! Being the core developer of SAIF I totally agree with Don. SAIF was indeed more a proof of concept. I wanted some of those cool features of WW2 for Struts. Some of our projects must use Struts because of political directives. Anyway there's always room for improvements ;-)

Posted by Lars Hoss on October 10, 2003 at 10:45 PM MDT #

Post a Comment:
  • HTML Syntax: Allowed