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.
You searched this site for "framework". 558 entries found.

You can also try this same search on Google.

Java is more complicated than .NET ... unless you use AppFuse

From Java to .NET, Back To Java Again, My Little Impression of The Two:

Having said all these, integration of various java projects together really do take a lot of Java people's time, it's no joke, but it's not desperate. For example, the open source project "AppFuse" does a fantastic job integrating various frameworks for us, I strongly encourage everyone to give it a shot and see how much time it saves you.

So which platform do I like? My impression is Java offers a lot flexibility and choices, but at the same time introduced the "Paradox of Choices", having so many things and integrate them together is no easy task, it simply overwhelm the human brains. .NET on the other hand is in a controlled environment, less choices, but easy to develop.

In other words: Java development is way more complicated than .NET ... unless you use AppFuse. ;-)

Posted in Java at Feb 20 2007, 09:25:15 PM MST 5 Comments

Slick looking Confluence sites

You have to admit, both Wicket and Cayenne have nice looking websites. Did you know they're both backed by Confluence? Wicket has a Writing documentation page that explains how it works. Basically, they use the autoexport plugin to export their content to static files. If you configure this plugin to be invoked from a cron job, it's a great way to create a constantly updating dynamic-but-static site.

I believe there's a couple reasons Apache uses this setup: 1) it allows projects to customize the look and feel of their site w/o customizing how Confluence looks and 2) it reduces load on its servers since most content is served up statically. I've thought about using a similar setup for AppFuse's documentation, but I've run into a couple issues:

  • The autoexport plugin is pretty flaky. The latest release (0.13) doesn't work with Confluence 2.2.9. Strangely enough, the previous version (0.12) works fine. It looks like the author had a good run with this plugin when he created it (almost a year ago), but hasn't updated it since.
  • The dynamic tree menu doesn't get included in the export. If I could somehow include this tree (and the current theme) when exporting, it'd be very cool.
  • The new code macro works much better than the {code} macro, but it has exporting issues both with PDF and the autoexport plugin. I tried using the code macro, but it doesn't show any syntax highlighting when using an Adaptavist Builder theme.

Apache's setup for Confluence appears to be quite good. I wonder if we should use it for AppFuse? We don't have the bandwidth/load issues that they do - and we've managed to make the site look decent using Adaptavist Builder. I like having a single source of constantly changing documentation, rather than two sites, where one is static. I think this causes confusion for users if the documentation changes a lot. That being said, I would like to export the content for bundling and versioning with each release. I wonder if Atlassian is planning on fixing the new code macro exporting issue anytime soon?

Posted in Java at Feb 09 2007, 08:02:54 AM MST 5 Comments

AppFuse 2.0 M3 Released

The AppFuse team is pleased to announce the release of AppFuse 2.0 M3! This release marks a milestone in our documentation efforts. We've completed all of the web framework tutorials and ensured that all the archetypes work properly. Turkish language support was added and native2ascii was integrated so all i18n bundles should work properly.

The major things missing from this release are code generation (AppGen) and web services (XFire) support. We hope to add both of these before the final release.

AppFuse 2.0 is available as a Maven archetype. For information on creating a new project using this release, please see the QuickStart Guide.

The 2.0 series of AppFuse has a minumum requirement of the following specification versions:

  • Java Servlet 2.4 and JavaServer Pages (JSP) 2.0
  • Java 2 Standard Platform Edition (J2SE) 5.0

For more information, please see the 2.0 M3 Release Notes.

We appreciate the time and effort everyone has put toward contributing code and documentation, posting to the mailing lists, and logging issues. We also greatly appreciate the help from our sponsors, particularly Atlassian, Cenqua, Contegix, JetBrains, Java.net and KGBInternet. Without them, working on this project wouldn't be nearly as much fun. ;-)

Posted in Java at Feb 06 2007, 02:16:45 PM MST 16 Comments

AppFuse Book!

David Whitehurst (an AppFuse committer) has taken on the task of writing a book on AppFuse 2.0. I don't envy him, but it looks like he's got a lot of good ideas.

When I started looking at AppFuse version 2.0 source and how it's going to use Maven, I got excited. I got so excited I'm writing a book about it and SourceBeat is going to publish it. I talked with Matt Raible, got his blessing, and sent SourceBeat the proposal. They liked it!

Well, I guess the news is out. We're doing the "AppFuse Primer" and it's scheduled for release August 2007.

Now, it's time for you guys to flood me with comments so that you can turn my outline upside down and get all the things that you want to learn about in the book. C'mon, I know you want it. I do and I decided that I would write down everything I've been learning about it. Everyone is going to be quite pleased with AppFuse version 2.0. And, I hope that this book will compliment its release with a publication this summer after everyone has had a chance to play with it some on their own.

Here's a rough table of contents.

  • Chapter 1 - Introducing AppFuse
  • Chapter 2 - An AppFuse Quickstart
  • Chapter 3 - Developing with Maven
  • Chapter 4 - Using the Spring Framework
  • Chapter 5 - Persistence with Hibernate
  • Chapter 6 - The Service Framework
  • Chapter 7 - The Web Tier
  • Chapter 8 - AppFuse Security
  • Chapter 9 - Production Deployment, Migration, and Maintenance

If you'd like to help David shape AppFuse Primer, please post a comment on his blog.

Posted in Java at Feb 05 2007, 10:30:25 PM MST 11 Comments

Maven 2 hates Commons Logging

It's true that most people hate commons-logging, but Maven 2 hates it even more. There are many open source projects that use this library, so you're likely to depend on it when you never intended to. Of course, this is Maven 2's transitive dependencies fault - but currently there's no option to turn transitivity off. I tried changing to SLF4J, but that causes some Maven plugins to fail.

Since the Maven team refuses to fix this (even though it's an *obvious* exception to their rule about not changing anything), I've fixed it myself. The AppFuse repo has a fixed version of commons-logging's pom.xml. To get the fixed version of commons-logging, delete it from your local repo, then add AppFuse's repository to your pom.xml:

    <repositories>
        <repository>
            <id>appfuse</id>
            <url>http://static.appfuse.org/repository</url>
        </repository>
    </repositories>

Since the burden of this issue clearly rests upon the shoulders of the commons-logging developers - can we please get a new release with a fixed pom? Pretty please?

Update: I tried to get slf4j to work again today. While I succeeded, I found a critical bug. The bug is that log messages don't print out the method name, just debug(), info() or whatever from your classes. It's possible to fix this by using slf4j instead of clogging. However, that won't help you get method names printed when cranking up the logging for 3rd party libraries like Spring and Hibernate. Since this won't be fixed, it seems better to stick with commons-logging. I doubt I'd have any luck getting all the libraries that AppFuse uses to move away from commons-logging.

Posted in Java at Feb 04 2007, 10:43:15 PM MST 11 Comments

The Last Two Weeks

Ever since Virtuas shut down a couple weeks ago, I've been having a blast. Mostly, I've been working on AppFuse, but I've also been spending more time with Julie and the kids. Where I work varies from day-to-day. Some mornings, I'll head to our local Einstein's or the close by Spanky's Roadhouse. Other days, I'll work from home and let the kids harass me all day. I'll admit, there's some days that are frustrating when I'm about to solve a problem and the kids are yanking my fingers off the keyboard. However, there's others where the music is cranked, the kids are dancing in my office, and I just solved a problem that was bugging me for the last 6 hours. There's nothing like having a Woo hoo! after solving a problem you've been wrestling with all morning. It's even better when there's friends around to help you celebrate. My whooping and clapping often leads to games of "horsey", happy kids, and a worn out dad.

In AppFuse news, I finished all the web framework tutorials a couple nights ago. Since the beginning of this year, I've written over 100 pages worth of AppFuse documentation. Wednesday's "the web tutorials are done" was a huge milestone and it feels great to be done with it. We hope to release 2.0 M3 in the next few days.

Yesterday, after getting 8" snow reports from Beaver Creek two days in a row, I suggested to Julie that we "head for the hills" for a day of skiing. She agreed and we left a few hours later. We ended up at Keystone since they have cheap skiing for kids and it's one of the closest ski resorts to Denver. Leaving last night was brutal. It starting snowing around 2pm and we left town around 5:30. We quickly ended up in rush hour traffic and it took us an hour just to get out of town (to the top of Lookout Mountain). Once we hit Idaho Springs, the roads improved and by the time we got to the tunnel the roads were bare and dry.

Keystone

Coming up here last night turned out to be a good idea. Denver experienced a record low of -18° F this morning. Furthermore, there were wicked winds and west-bound I-70 was closed for 9 hours this morning because a semi blew over and spilled all of its 2000 gallons of unleaded. I watched the story on the news and was quite impressed when I heard the wind was so strong it was blowing windows out of cars.

The skiing at Keystone today was bitter cold (-15 to -25 °F with wind chills), but I made it work. Hot Cider and bump runs are excellent ways to keep warm. Now we're sitting in the condo we rented and waiting for the kids to wake up so we can enjoy FAC at the local bowling alley.

Life is good. :-D

Posted in General at Feb 02 2007, 05:25:36 PM MST 4 Comments

Roller as a Photoblog

Discovered on the roller-dev mailing list from Richard Jones:

For the last 6 months I've been turning Roller into photoblogging platform - you can see the most up-to-date version @ www.pixyblog.com.

I really like what Richard has done with Roller - especially this entry. ;-)

In job-hunting news, the market seems to be pretty hot in Denver right now. While I haven't accepted any offers, I have been replying to 4-5 inquiries per day, as well as shooting out 2-3 resumes per day. I had a couple interviews yesterday and another one this afternoon.

The most intriguing interview so far has been with Sun. I'm jazzed about it because of the work opportunities there, but I'm not-so-jazzed because 1) it's a full-time position (which typically pay a lot less than contracting and 2) it's working for a big company. That being said, it does seem that Sun is really turning things around and it's probably an exciting time to work there.

For those folks out there that have worked for Sun - what's it like? Is it a good place to work these days? Would you recommend it for a passionate open source developer like myself that likes to make contractor rates and take lots of vacation?

Posted in Roller at Jan 30 2007, 11:12:47 AM MST 11 Comments

Simplified UI Tags in Struts 2

Struts 2.0.3 contains a much needed simplification of its UI tag libraries. Before 2.0.3, you had to define a property three times (in the value, label and name attributes):

<s:textfield label="%{getText('user.firstName')}" name="user.firstName" 
    value="%{user.firstName}" cssClass="text medium"/>

In 2.0.3+, you can use the "key" attribute to replace all these attributes. For example:

<s:textfield key="user.firstName" cssClass="text medium"/>

One of the things I really like about WebWork/Struts 2 is the previous examples have the ability to write out the entire form row, rather than just an input field. Even better, the markup rendered is customizable via FreeMarker templates.

The bad news is Struts 2.0.3 never got released because the struts-annotations project hasn't had a release yet (good ol' Mavenism). The good news is Struts 2.0.4 is rumored to be out by the end of the month. In the meantime, if you're using Maven 2, you can use AppFuse's repository to get the goods. Here's the repo settings you're need:

<repositories>
    <repository>
        <id>appfuse</id>
        <name>AppFuse Repository</name>
        <url>http://static.appfuse.org/repository</url>
    </repository>
    <repository>
        <id>struts-203-staging</id>
        <name>Apache Struts 2.0.3 Staging Repository</name>
        <url>http://people.apache.org/builds/struts/2.0.3/m2-staging-repository</url>
    </repository>
</repositories>

Yeah, I could just advise you to use AppFuse 2.0 - but we're having a hard enough time supporting our existing users. ;-)

Posted in Java at Jan 23 2007, 06:02:22 PM MST 6 Comments

Welcome to 2007

Happy New Year everyone! 2007 should be a great year: Julie and I will pass 7 years of marriage, Jack will turn 3 and Abbie will become a 5 year old. In addition to being happy and getting healthier, I hope to learn a lot this year. AppFuse 2.0 will be released, and I hope to develop applications with Grails, GWT, Rails, Seam, Stripes and Wicket. Yeah, it's ambitious - but these frameworks are supposed to be easy to learn, so it shouldn't be too difficult.

Blog stats for 2006: 296 entries and 2,162 comments.[Read More]

Posted in General at Jan 01 2007, 11:18:16 AM MST 2 Comments

2006 - A Year in Review

Looking back at 2006, it's amazing to see everything that happened. One of the main reasons I started this blog was to provide a history of my life. Now it's time to cash in on that cool feature and look back at the last 12 months.

Beach by Villas Nizuc In early January, I finished working on the Vongo project. I eventually had to shut off comments for my post on Vongo because there were so many complaints. The good news is I didn't work on the UI or service part of it, just the Spring/Hibernate/XFire backend. A week later, Apple announced the MacBook Pro and I purchased one immediately. I still have the same machine and couldn't be happier. A week after that, I quietly released AppFuse 1.9, went to the Broncos vs. Patriots game, then left the next morning for Cancun to celebrate my dad's 60th. I got to watch the Broncos season end after returning from Cancun. January 2006 is one for the books - I scored good tickets to two playoff games and spent a week in Cancun! I'd relive that month without hesitation.

The Ride to Work In February, I began playing with Maven 2 , figured out how to use Tiles with WebWork and did a fundraiser for the CSS Framework design contest. I even posted some pictures of my ride to work. Prior to freezing my ass off, Jack had a rough week with Rotavirus and ended up in the Emergency Room.

At the end of February, I received my MacBook Pro and fell in love with everything but the wireless. My posts on the MacBook Pro and wireless issues still get comments weekly from other folks having similar problems.

On February 22nd, Daniel Steinberg's daughter Elena died of bacterial meningitis. Julie made me stop reading Daniel's Dear Elena blog because I was such an emotional wreck. I saw Daniel at a couple of conferences this year, but didn't talk to him until The Spring Experience in December. I didn't know what to say to him. He erased all my apprehensions with a simple "Thanks", a smile and a handshake. It's good to see you're still writing about Elena Daniel. I still have a hard time reading your posts.

February ended with a beautiful 72°F day.

In March, I started the CSS Framework design contest, rode to work in the rain and flew to Boston and Vegas. Memories of St. Patrick's Day in Boston with friends still brings a smile to my face. TheServerSide show in Vegas was a lot of fun and it was the first BOF I hosted with free beer. I later got to meet Mike Stenhouse (the inventor of The CSS Framework) in December and hosted two more "BOFs with Beer" at the Colorado Software Summit and The Spring Experience. Cost difference? Vegas: $800, Keystone: $350, Hollywood, FL: $220.

At the end of March, I came down with a nasty case of Carpal Tunnel. After seeing a specialist that massaged the hell out of my arm, everything was back to normal. I haven't had any issues since - but I also haven't had many multiple-no-sleep-night coding sprints in a while either.

Off to The Shop In April, I quit working on AppFuse and moved to Rails. I posted my Tips for Productivity and Happiness at Work (my most popular blog entry of all time), shipped my bus off to the shop and celebrated Julie and I's 6th anniversary. Then I rebooted this site and lived it up in New York City.

May brought CSS Design Contest winners and a 2-week trip to San Francisco for The Ajax Experience and JavaOne. The highlight of that trip was the weekend I spent in Wine Country.

Hans Fahden

In June, AppFuse 1.9.2 and Seam 1.0 were unleashed. Tim O'Brien had an interesting post titled What Web Application framework should you use?. I responded and Struts became a more focused project. Shale moved to a TLP shortly after. We started planning Raible Road Trip #10 and I began traveling to Washington, DC for a project. Going for beers at Brickskeller was the highlight of our trip that week.

July introduced me to cancelled flights and redeyes and Jason Carreira started JSR 303. AppFuse 1.9.3 was released and Julie sold her house to the first people that looked at it. At the end of the month, Jim Goodwill and I drove to OSCON in Portland. Having beers with Bryan and Scott at The Kennedy School was a highlight of that trip. Following OSCON, the family and I headed to Montana for a week.

The Cabin August was great, probably because I'd just hit 7 states in 7 days. I published an article on IBM developerWorks and had a device-free weekend (which I definitely need to do more often). I began working on AppFuse 2.0, a new sushi restaurant moved into our neighborhood and I got a new EVDO card (which I later lost in November). Jack turned 2 on August 28th.

In September, we got a new puppy. I traveled to the drunkest city in America, Las Vegas and New England. Julie met me in Boston and we had a blast at our good friends' (Chris and Julie's) wedding.

Abbie and Jack October brought the release of Spring 2.0 and a 2-week project for me at OpenLogic. Abbie and Jack got their pictures taken at school and I spent at week in Keystone at The Colorado Software Summit.

In November, my sister Kalin brought some hard cider to Abbie's 4th birthday. I attended Denver's NoFluff and hugged my kids. Jack and I had a boys weekend and we headed to The Cabin on Raible Road Trip #11.

Helmets on and ready to go To end the year, I did a bit more travel - first to Boise then to Florida for The Spring Experience. After a week of vacation in Florida, we returned to Denver for The Blizzard of 2006. Finally, we drove up to Steamboat for Christmas and took the kids skiing.

All in all, it's been a fabulous year. Watching the kids grow up, start to play together and even have conversations with each other has been very cool. I traveled more than I wanted to, but I also got to visit a lot of cities that I'd never been to. My goals for the year? To be happy, ski more and enjoy a few car bombs with family and friends. ;-)

Posted in Roller at Dec 31 2006, 03:05:56 PM MST 1 Comment