Matt RaibleMatt Raible is a writer with a passion for software. 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.

At the MySQL Conference in San Jose

I arrived in San Jose at 10:00 this morning to give a 3-hour tutorial on developing test-driven webapps with Spring and Hibernate [download PDF]. This was just a fancy name for developing webapps with AppFuse, but the session seemed to go over pretty well nevertheless. In the first half of the class, there were a couple of sleepers, but I cranked down the A/C for the second half and everyone stayed awake (although some were shivering). I never thought I could ramble on for 3-hours, but it wasn't that hard. I did end up doing mini-presentations on Spring and Comparing Web Frameworks, but all in all, I think it went pretty well. Very few people in the room had heard of any of the Java web frameworks, and only 6 were familiar with Spring and Hibernate. It was a tough crowd, but AppGen's code generation (hopefully) showed it's easy to create CRUD-based webapps with AppFuse. Note to self: make a video of that.

I have a free pass to the MySQL Conference, but I doubt I'll attend many sessions. I have a lot on my plate for AppFuse 1.8, Acegi integration into Roller, and some updates for Spring Live. It should be a good week, hopefully I'll get a lot done. This weekend should be awesome - Julie shows up on Friday for our 5-year anniversary party.

The best part of the conference so far? Talking shop over beers with the locals (crew from c|net and AppFuse user Phil Hershkowitz).

Posted in Java at Apr 18 2005, 09:34:01 PM MDT 1 Comment

How do we bake Ajax into Struts and Spring MVC?

I see a trend happening here. The next version of WebWork, as well as Tapestry and JSF are all embracing Ajax technologies. By "embracing", I mean they're not only using them, but they're making it easier for us to use them.

After using XmlHttpRequest in my last two projects, I think this is a must for Struts and Spring MVC as well. The technology is very cool and customers absolutely love it.

The question is how do we bake it in? WebWork makes it easy because its tag libraries are backed by customizable Velocity templates. With Struts and Spring MVC, it seems the best way would be to use tag libraries, but maybe there's better alternatives. Do they each need an AjaxAction/AjaxController or something that allows DWR-type stuff?

What are your thoughts? You might argue that using DWR should suffice, but w/ everyone else (even Rails) baking it into the framework - I see no reason why Spring MVC and Struts shouldn't do the same. You are using these frameworks to develop kick-ass UIs aren't you?

Posted in Java at Apr 15 2005, 06:20:28 AM MDT 13 Comments

Better Date Input

JSCalendar is my pop-up calendar of choice these days, but I have to admit this better date input demo is very cool. It'd be sweet if you could combine the two. Hat tip to fiftyfoureleven.com.

Posted in The Web at Apr 14 2005, 01:27:15 PM MDT 3 Comments

Why Wicket looks cool

I like the looks of Wicket for a couple of reasons - without even using the framework yet.

  • Its project homepage looks good. If you're using a Java web framework, chances are you're developing UIs too. If you don't know how to make sites look good - it's time to find a new line of work IMO. Of course, learning how to make good-looking UIs is another option. ;-)
  • Its Wicket Stuff project. It provides Hibernate, fValidate and Spring integration. It also appears to provide an option to use Velocity for your templates. I'm not sure what the Velocity integration provides - since HTML templates (ala Tapestry) should do everything that's needed.

What I don't like about the project:

  • The Buzz page has a quote that's (apparently) from this site. Unfortunately, it looks like I said it - which I didn't.
  • There's no books being written about it. If it's really that good - where's the books? Ruby on Rails will have 3 by the end of this year. Any good framework should inspire books to be written about it.
  • The Wicket Stuff project has no documentation. Javadocs don't cut it. Tutorials are king.

I hope this project succeeds - Tapestry needs some competition and I don't think JSF is providing it. If JSF adds HTML Templates (or I figure out how to use Java Studio Creator to manage an AppFuse+JSF project), that's a different story.

Posted in Java at Apr 14 2005, 08:37:03 AM MDT 12 Comments

Using Ivy in AppFuse

I'll admit, the thought of not checking in JARs to AppFuse's CVS is intriguing. With Ivy, I think I could pull off the current setup, plus a dynamic-downloading system. By current setup, I mean that the JARs are distributed in your "lib" directory and you can build your app w/o downloading any dependencies. I like this because I can develop AppFuse and not worry about my internet connection.

Dion doesn't get my love for checking in JARs. The main reason I do it is because it takes me a less time to download a new release and check it into CVS than it takes me to find that same release in Maven's Repo. Case in point: Hibernate 3.

I love the idea of Ivy, and mockhaug makes it sounds great, but I don't want to have to create a bunch of metadata whenever I want to use something like Hibernate 3. Then again, if Ivy is ever going to catch on, someone has to do it.

In conclusion, I'm still not convinced I should integrate Ivy into AppFuse - sounds like maintaining and uploading dependencies would be a lot more work than just checking in JARs. If there was a person responsible for creating Ivy metadata every time a new release came out, I might think different.

Posted in Java at Apr 13 2005, 02:19:21 PM MDT 6 Comments

Very cool search with XMLHttpRequest

From fiftyfoureleven.com, I learned about forgetfoo.com - which is doing some very cool stuff with XMLHttpRequest. Be sure to check out the calendar, comments and naked picture of Britney Spears.

While we're on the topic of cool stuff, I also learned about this cross-browser Nifty Corners component. Should we call a set of CSS+JavaScript files a component I think so, what else would you call it?

Posted in Java at Apr 13 2005, 11:13:55 AM MDT 4 Comments

Closures with CollectionUtils

Here's a pretty nifty trick for using closure's with Jakarta Commons CollectionUtils:

List list = new ArrayList();
...
CollectionUtils.forAllDo(list, new Closure() {
    public void execute(Object obj) {
    // execute something for each item obj
    }
});

I wonder if there's any performance hit from doing things this way vs. a good ol' Iterator? Hat tip to Anand Subramanian.

Posted in Java at Apr 13 2005, 08:49:07 AM MDT 18 Comments

Use SiteMesh to decorate multiple webapps

Did you know it's possible to decorate multiple webapps with the same SiteMesh decorator? I learned how to do this from the SiteMesh mailing list:

  • Put sitemesh.jar in your container's classpath. You could put it into each webapp's WEB-INF/lib, but it looks like there's problems with that.
  • Create and deploy a webapp that contains the common decorator.
  • In each webapp's decorators.xml, add a "webapp" attribute to point to the webapp you deployed in Step 2.
    <decorators>
        <!-- load decorator from a different web-app deployed in the server -->
        <decorator name="main" webapp="some-other-webapp" 
            page="/decorators/main.jsp">
            <pattern>/*</pattern>
        </decorator>
    </decorators>
    

Try to do *that* with Tiles. ;-)

Posted in Java at Apr 12 2005, 10:05:19 AM MDT 12 Comments

More Tapestry+Ajax Components

Tacos is "library of useful Tapestry components", created by Viktor Szathmary. Today, he published a new release with support for Partial Page Rendering and Partial Forms. I especially like that Viktor incorporates the Fade Anything Technique as part of the components. Even better, these components work fine with JavaScript turned off. Well done Viktor! Too bad I can't use Tapestry at my day job. :(

Posted in Java at Apr 10 2005, 11:41:47 AM MDT 5 Comments

DU Wins and The Blizzard of 2005

Last night was a great game and DU has repeated as NCAA Champions! Woooo hooooo!! Nice jobs gents - we're definitely looking forward to next year's season and hope to get season tickets on the glass.

2005 NCAA Champions

This morning, I woke up to a bunch of snow, high winds and The Blizzard of 2005. It's nothing like the Blizzard of 2003 where we got 4-8 feet of snow, but it's still pretty exciting. I snapped a few picks of what it looks like around our house.

Posted in General at Apr 10 2005, 10:34:39 AM MDT 2 Comments