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.

Choosing a JVM Web Framework

I plan on rewriting my "Comparing Java Web Frameworks" presentation for this year's Colorado Software Summit. Rather than "Comparing Java Web Frameworks", I'm going to make it into more of a "Choosing a JVM Web Framework" presentation. I think this opens it up to more possibilities such as Grails, JRuby on Rails, Flex and GWT.

One of the things I hope to talk about is choosing the right tool for the job. I think there's 3 types of web applications you can develop:

  1. Consumer-facing, high-traffic, stateless applications
  2. Internal, more desktop-like applications that are stateful
  3. Media-rich applications that require a RIA framework like Flex

Once you've decided on which of these you're developing, it's much easier to narrow down the choices:

  1. Struts 2, Spring MVC, Stripes
  2. JSF, Tapestry, Wicket
  3. GWT, Flex, OpenLaszlo

I'm not sure if GWT fits in the RIA category. I'm not sure where Rails or Grails fit either. They more closely resemble category #1 than any other, yet there's a lot of speculation about their scalability. I think if that perception can be changed, they'll fit into the first category quite well. However, I don't think they compete with component-based or RIA because they don't hold state or offer rich-media capabilities.

Sidenote: I find the scalability debate quite interesting. There's a fair amount of propaganda in Javaland that scalability can be achieved with appservers and clustering tools like Terracotta. If this is true, I've yet to read good solid proof of it. Most of the "how to scale" information out there suggests "share nothing" architectures that shard data and applications across several servers. Of course, there's scalability and then there's massive scalability. Can appservers and clustering solve massive scalability like Google and Amazon require?

The 2nd and 3rd categories have someone of a blurry line, so I'm hoping to figure out how to clarify that. There's also a lot of other factors that will go into choosing a web framework. What if you're simply trying to replace a home-grown framework with an open-source one? If you want to keep your backend and all its logic, does it make sense to use something like Seam, Grails, JRuby on Rails or even AppFuse? Probably not - all their wizbang features and CRUD generation doesn't mean much if all you're using is the web framework. Also, if your application requires support for non-JavaScript browsers (for 508 compliance), then GWT and JSF can be easily eliminated. I know that there are many claims that JSF doesn't require JavaScript, but I've yet to see a real-world application developed with JSF that expects JavaScript to be turned off. Progressive enhancement is a requirement by many of my clients these days.

What's your opinion? How can we make it easier for developers and companies to choose a web framework? Is categorizing application types a good technique?

Posted in Java at Aug 07 2007, 10:10:05 AM MDT 43 Comments

Seeley Lake on Fire

Where's my Mom the "Burn Boss" when you need her? From the Missoulian:

Seeley Lake residents prepare to flee Jocko Lakes fire
In two weekend days, the Jocko Lakes fire exploded across 18,000 acres, destroying one home, damaging several others and threatening this small western Montana town.

In doing so, the wildfire earned itself designation Sunday as the No. 1 priority forest fire in the nation.

After Saturday?s firestorm and flurry of evacuations, Sunday brought minimal winds and gave fire crews a fighting chance to get a handle on the fire, which is just a mile west of Seeley Lake and a mile north of Placid Lake.

Seeley Lake is 25 miles from The Cabin. There's unlikely to be a threat the The Swan (where I grew up). However, Seeley Lake is pretty close to home as I went to high school there and we have a very good family friend living in "Dog Town". Must be exciting times right now.

This fire made me think of this awesome photo from a few years back.

One of my favorite digital photographs

Posted in General at Aug 06 2007, 12:00:56 PM MDT 6 Comments

5 Years

Doh! It looks like I missed my 5-year blogiversary last week. It's hard to believe it's been 5 years since I started this blog on August 1, 2002. A lot has happened since then: Abbie was born, we moved from Morrison to Denver, Jack was born and Julie built a new house. For those that know me personally, a lot has happened this summer too.

Julie and I are getting a divorce.

Our reason is simple - we're not in love with each other like we expect a married couple should be in love. It's going to be a good move for the both of us and while it might be hard to get through the next several months, we'll both be happier in the long run. We still plan on raising a family together, we'll just be doing it from two separate households and living two separate lives. I bought a house a few weeks ago and moved in last week. This past weekend was my first "Daddy's weekend" and the kids and I had a blast.

I realize that divorce is a sensitive subject and it might not be something that folk's think is appropriate for a blog post. I started this blog in order to document my life's history and this seems like a pretty important thing to document. My life has certainly changed a lot in the past couple months and it's likely to change quite a bit more in the future. I realize I haven't been blogging much lately - now you know why. I don't know if I'll return to actively blogging like I once did, but I think I will.

I've turned off comments for this post - I hope you understand. If you'd like to tell me your story about successfully raising children of divorce, I'd love to hear about it.

Update: It figures - my contact form appears to have been broken for the last month or so. If you used it to send me a message, there's a good chance I didn't receive it. Sorry - it should be fixed now.

Posted in General at Aug 06 2007, 10:00:06 AM MDT

Roller Themes

Eugene Strokin has been doing an excellent job migrating Free CSS Templates to Roller Themes. So far, he's done 10 and it doesn't look like he's stopping any time soon. Well done Eugene! IMO, nice-looking themes for Roller has been one of its biggest missing features.

Now if we could only use Roller to power the Apache project site...

Posted in Roller at Aug 03 2007, 12:26:56 PM MDT 2 Comments

Trim Spaces in your JSP's HTML Redux

Since my last post on trimming whitespace in JSPs seems to be a popular topic, I figured it appropriate to note that JSP 2.1 supports a new trimWhitespace directive.

<%@ page trimDirectiveWhitespaces="true" %>

If you're using a Servlet 2.5 XSD, you can also do this in your web.xml:

    <jsp-config>
      <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <trim-directive-whitespaces>true</trim-directive-whitespaces>
      </jsp-property-group>
    </jsp-config>

A Servlet 2.5 XSD seems to be the following:

<web-app
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    metadata-complete="false"
    version="2.5">

To learn more about this feature, view Summary of New Features in JSP 2.1 Technology and search for "TrimWhiteSpace". It'd be nice if there was anchors in this article for a direct link, but I couldn't find any.

Now I just wish JSP's EL had an xmlEscape="true" flag to escape XML in printed variables. Freemarker supports this.

Hat tip to Kerem and Krishna's Unified Expression Language for JSP and JSF article.

Posted in Java at Aug 01 2007, 05:01:25 PM MDT 10 Comments