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 "java". 1,857 entries found.

You can also try this same search on Google.

7 simple reasons to use AppFuse

IBM developerWorks published my "Seven simple reasons to use AppFuse" article today. Here's a summary:

Getting started with open source tools for the Java™ platform such as Spring, Hibernate, or MySQL can be difficult. Throw in Ant or Maven, a little Ajax with DWR, and a Web framework -- say, JSF -- and you're up to your eyeballs just trying to configure your application. AppFuse removes the pain of integrating open source projects. It also makes testing a first-class citizen, allows you to generate your entire UI from database tables, and supports Web services with XFire. Furthermore, AppFuse's community is healthy and happy -- and one of the few places where users of different Web frameworks actually get along.

While you're there, you might be interested in reading the "Introduction to Spring 2 and JPA" tutorial. I don't know if we'll get JPA support into AppFuse 2.0, but it's certainly a possibility.

As far as AppFuse 2.0, here's the current structure I've started on for Maven 2:

appfuse
    - data
        - hibernate
        - ibatis
    - service
        - pom.xml
        - src
    - web
        - jsf
        - spring
        - struts
        - tapestry

After code is moved into the directory structure above (or completely re-written), I'd like to move to working on creating single module archetypes and multi-project archetypes (data, service, web) with Maven 2.

After getting the Maven 2 structure checked in, hopefully we can start looking at replacing AppGen. Scott Ryan has done a fair amount of work on this so far with his AppFuse Maven Plugin.

I plan on documenting the plan of attack and milestone features for 2.0 sometime this week.

Update: I started working on the Maven 2 conversion last night. The above structure has changed slightly. Now there's a project in data and web (notice the pom.xml and src in these directories). These projects will contain the classes/files that are common to their sub-projects. The fact that these projects even exist will likely be transparent to the end user.

AppFuse 2 Structure

Posted in Java at Aug 08 2006, 01:14:15 PM MDT 17 Comments

Dream Machine

Mac ProWell done Apple, you've created my dream machine. Too bad it's so damn expensive. My ideal configuration is as follows:

  • Two 3GHz Dual-Core Intel Xeon
  • 4GB (4 x 1GB)
  • Hard Drive - Bay 1: 250GB 7200-rpm Serial ATA 3Gb/s
  • Hard Drive - Bay 2: 500GB 7200-rpm Serial ATA 3Gb/s
  • 2 x NVIDIA GeForce 7300 GT 256MB
  • Apple Cinema HD Display (23" flat panel)
  • 2 x SuperDrives
  • Both Bluetooth 2.0+EDR and AirPort Extreme
  • Apple Wireless Keyboard and Apple wireless Mighty Mouse
  • AppleCare
  • Subtotal: $6,436.00

The nice thing about owning one of these bad boys is you could run several copies of Linux and Windows (using VMWare and/or Parallels). I could literally buy one machine and have 5 in a matter of hours. Hmmm, I should probably bump up that ram to 8GB.

It's tempting, but that's a lot of cash to shell out for a machine. Then again, the more write-offs the better. ;-)

Posted in Mac OS X at Aug 07 2006, 08:47:11 PM MDT 14 Comments

Moving from CVS to SVN at java.net

I like java.net. Ever since I moved AppFuse to java.net from SourceForge (in February 2004), I've been very happy with their service. I can't recall having an issue with CVS, and if I did, it was during a scheduled outage. The only thing that's ever made me consider moving AppFuse to another site was java.net's lack of Subversion.

A lot has changed in the last year, and now java.net does support Subversion. However, if you want a project converted from CVS to SVN, you have three options:

  • Drop and re-create your project, losing all of your mailing-list/forum history
  • Create an entirely new project, which gives you similar results to the first option
  • Pay to have your repository converted

Since I like being at java.net (uptime being the major factor here), I've decided to go with option #3. It's costing $750 to convert AppFuse from CVS to SVN, and Virtuas has agreed to sponsor the move. I like that we'll be using SVN soon, but it does seem odd that we actually have to pay for it. AFAIK, moving a SourceForge project from CVS to SVN doesn't cost anything.

In recent days, I've thought about moving AppFuse to Google Code, but it looks like they might be having some early growing pains.

Google Code Error

Posted in Java at Jul 29 2006, 07:26:16 AM MDT 5 Comments

Heading back to Denver

Today is only day 3 of Raible Road Trip #10, but it's likely to be the most stressful one. I'm at Portland's Airport (on their free wireless) getting ready to hop on a plane back to Denver. The Max worked great this morning. I caught it outside the Convention Center around 4:30 a.m. and was checked in before 6:00.

I land in Denver in a few hours, pick up the kids, and fly back - arriving back in Portland around 2:00 this afternoon. Abbie is 3 and 1/2 and Jack is almost 2. Jack will surely impress me with his deviant and defiant behavior. There's nothing like flying with a 2-year old. They won't sit still for more than 5 seconds, and they love to kick the seat in front of them. Should be interesting for sure - wish me luck!

10:30 a.m. Update: Arrived in Denver at 9:30. The CowBoy Bar on Terminal A is the best place to get power at DIA. There's 3 outlets in the corner on the left when you walk in. The kids should be here in an hour, our flight to Portland leaves at 12:30.

Update 2: We arrived in Portland virtually stress free at 2:00. The kids were great on the plane. Jack slept half the time and Abbie colored Dora pictures. The only hard part was carting two backpacks, 2 car seats and 2 kids through the Portland airport.

Posted in General at Jul 25 2006, 06:34:11 AM MDT 3 Comments

AppFuse Videos updated for 1.9.3

I've created new AppFuse demo videos that are up-to-date with version 1.9.3. The setup video is around 3 minutes, and the AppGen one is around 3:30.

New Project and Feature Tour
Setup Screenshot

Code Generation with AppGen
AppGen Screenshot

If you have any suggestions on making the above movies more effective, please let me know. I used SnapZ Pro X to shoot them and QuickTime Pro to compress.

In other AppFuse news, a couple of new tutorials have been written:

Props go out to Chris, Matt and Luciano for taking the time to write these detailed tutorials. Well done gents!

Posted in Java at Jul 24 2006, 08:58:06 PM MDT 10 Comments

Article on Equinox in Das Java Magazin

In AppFuse's IRC, I learned of a German article on Equinox. It sure looks cool - too bad I can't read it.

Posted in Java at Jul 20 2006, 12:35:41 PM MDT 4 Comments

Validation Framework Consolidation

Looks like Jason Carreira has stepped up to the plate to try and consolidate the validation frameworks we have in Java. I'm sure it was a joint effort among many, but Jason's name is the only one I see on the JSR. I applaud this effort - it's definitely needed.

I've used Commons Validator, the XWork Validation Framework as well as Hibernate's Validator. While Commons and XWork work, the ability to annotate a class and validate it anywhere/anyhow is pretty cool. I reviewed an article a couple months ago that hooked Hibernate Validator into Spring MVC and Prototype for client-side validation. There's a lot of good stuff in this space - let's hope this JSR creates something even better. More than anything, let's hope it doesn't brush off client-side validation like JSF did. ;-)

In an ideal world, the RIFE, Spring MVC, Stripes, Struts, Tapestry and Wicket developers will all participate and allow JSR-303's result to be used as their framework's validation engine. I think it's a given that this will be usable with JSF.

Posted in Java at Jul 11 2006, 02:05:37 PM MDT 18 Comments

DC Tech Meetup

Anyone out there still interested in a DC-Area tech meetup tomorrow night? If so, are there any good places near Tyson's Corner? We'd love to return to Brickskeller, but it'd be nice to avoid the 1.5 hour commute to get there. It's not that far, but traffic is something else around here.

Update: Vienna Inn (map) is the location - we'll be there around 8:00.

Posted in Java at Jul 11 2006, 11:04:35 AM MDT 12 Comments

AppFuse 1.9.3 Released

This release is primarily a bug fix release, but also contains upgrades to several dependent libraries, including Acegi Security 1.0.1.

To install and configure AppFuse for development, see the QuickStart Guide. Thanks to all the sponsors who have contributed products and free hosting to the project.

To see how AppFuse works, please see the following demos (username: mraible, password: tomcat):

Comments and issues can be sent to the mailing list or posted to JIRA.

Note: If you're building AppFuse on Linux, you should be aware of some non-English encoding issues. The solution is to add the following to your ~/.bashrc file.

export LC_CENGINE=en_US
export LANG=en_US
export LANGUAGE=en_US

Posted in Java at Jul 11 2006, 08:20:45 AM MDT 12 Comments

SiteMesh works with JSF?

It looks like Andres Castillo has figured out how to make SiteMesh work with JSF. In case you didn't know, SiteMesh has Tapestry support in its CVS repository.

To learn more about SiteMesh, see Introduction to SiteMesh and Advanced SiteMesh.

Posted in Java at Jul 10 2006, 06:03:03 PM MDT 2 Comments