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 "matt". 663 entries found.

You can also try this same search on Google.

[TSE] Designing Stateful Web Application Control Flow with Erwin Vervaet

Spring Web Flow (SWF) does not fit into an application or a feature where free-flow navigation is required. It works best where you need to lock down and control navigation. SWF is not designed to be a web framework, but rather to solve the specific problem of navigation and state management between many pages.

Erwin is a Senior consultant at Ervacon and has extensive experience using Java SE and Java EE. He is the inventor and co-lead of the Spring Web Flow project.[Read More]

Posted in Java at Dec 08 2006, 03:47:49 PM MST 5 Comments

[TSE] Rapid Web Application Development with Rob Harrop

There's a couple of other sessions I should probably go to, namely Juergen's talk on Transactions and Mark Fisher's Message Driven POJOs Rock! However, transactions is generally a pretty boring topic and I don't see myself developing any MDPs in the next two weeks. If you don't use your knowledge in two weeks, you generally lose it, so I'll wait to learn more about MDPs until someone pays me to. I know a fair bit already, so I don't know that there's a whole lot more to learn.

I'm attending Rob Harrop's Rapid Web Application Development Essentials talk. With any luck, I'll learn some new tips that we can use in AppFuse.[Read More]

Posted in Java at Dec 08 2006, 11:42:37 AM MST 7 Comments

Spring's "p" namespace and AppFuse Performance Tuning

After seeing Rod Johnson's post about Spring 2.0's "p" namespace, I'm wondering if it's something we should include in AppFuse? I don't think it's quite as intuitive as <property name="">, but I'm curious to see what users think. The biggest reason against using it is (AFAIK) neither Eclipse nor IDEA will give you code-completion on (whereas they will for <property name="">).

In other news, Matt Fleming has an excellent writeup on how he optimized AppFuse (Spring MVC flavor) to handle pages with large forms. His form was 38 MB worth of HTML when saved to disk so I doubt everyone will need this, but it certainly is interesting information. If there's enough demand, we'll make Matt's suggestions available options in an upcoming release.

Posted in Java at Nov 28 2006, 03:02:13 PM MST 4 Comments

How do you get open source frameworks past the red tape?

From an e-mail I received earlier this month, with a subject of "Acceptance red tape":

After requesting permission to use the Spring Framework for the business logic and data access layers of an application, how do you fight something like this? Spring is not an approved Framework for the ********** environment. We understand the benefits of the framework. However, we have not certified it in our environment. Additionally, we have concerns that this framework will not gain long standing traction among the J2EE community. We would like to reduce the number of frameworks used in our environment, and do not want to be left with "legacy" frameworks that have little acceptance or support as is the case with the pico container. This is a response from one of our clients after asking about the use of a framework in our development after another vendor had used the PicoContainer without their permission. We have Spring experience and we love it. My responses have been to ask what they have certified that we could use and to ask their business staff to override their tech staff. I'm caught needing to redesign an aging J2EE application with an awfully over-architected original design confined to EJB 2.1, JSP 2.0, Servlet 2.4, and JDK 1.4.X in a very short amount of time. The additional responses were that they have only certified Struts and although both the business staff and the tech staff admit they know the benefits of Spring, neither of them are allowing us to use it.

My response:

Wow - I don't know what to say, especially when they say "Additionally, we have concerns that this framework will not gain long standing traction among the J2EE community." They're probably using Struts and they thinks it's wonderful, eh? ;-)

I could compose a long response with lots of details, but the fact that they prefer EJB over Spring is baffling. Spring is so much easier to program with, it's not even funny. Granted, EJB does have its place, but it's often used as a hammer for a problem that doesn't exist.

Have you experienced similar "Acceptance red tape" in your company? If so, how did you work around or work through it?

Posted in Java at Nov 16 2006, 08:04:24 AM MST 31 Comments

ICEfaces gets open sourced

As far as JSF Ajax frameworks are concerned, there seems to be two major players: Ajax4jsf and ICEfaces. I don't know that either one is a true open source project (where developers are from multiple companies), but Spring isn't either, so I don't know that it actually matters. I think it interesting that both products don't seem to care about capitalization, but I digress.

Today, ICEsoft announced they've open-sourced ICEfaces. Was this inspired by Java going GPL?1 I doubt it, these things take time and it's likely that ICEsoft had this one in the cooker for quite a while. I do think it's interesting that the major JSF component vendors (Oracle, Exadel and now ICEsoft) have all open-sourced their products. Must be a tough market out there.

Apparently, ICEfaces works with Facelets, so it should work with AppFuse and Equinox. Looking through ICEfaces documentation and sample apps, they seem to be missing a straight-forward "here's how to integrate it into your existing application" guide. They do show how to modify your web.xml, but there doesn't seem to be a short, concise guide to what configuration settings you need to add to your faces-config.xml. I was somewhat motivated to write such a guide this morning, but lost motivation quickly as I realized it might be quite the effort. If someone wants to create the Maven bundles for ICEfaces, I'll try to carve out some time later this week to write up instructions for integrating ICEfaces into Equinox and AppFuse.

Unfortunately, integrating ICEfaces into your project is only the beginning. The hard part is choosing which is a better Ajax toolkit: ADF Faces/Trinidad, Ajax4jsf or ICEfaces? Trinidad and ICEfaces seem to be more about components, whereas Ajax4jsf is more about Ajaxifying regular ol' JSF components. So I think Ajax4jsf still remains, and ICEfaces looks like a better out-of-the-box component library than Trinidad. I guess time will tell.

Update: I forgot to mention Infragistics NetAdvantage as a JSF Ajax framework. OpenLogic decided to use Infragistics in the project I started for them. I was able to get it working in AppFuse fairly easily, but it's kinda ugly from a setup standpoint. They require you to copy a bunch of static files (images, stylesheets and scripts) into your project. Yech.

[1] Stephen O'Grady has an excellent writeup on this: And Sun Said, Set My Java Free: The Open Source Q&A.

Posted in Java at Nov 14 2006, 10:27:07 AM MST 8 Comments

Should I rename Equinox to AppFuse LE?

I'm curious to know if folks think I should rename Equinox to "AppFuse LE"? LE stands for "Light Edition" in this context, but I'm open to other suggestions. Even though my Equinox project is ranked higher than Eclipse's Equinox project, it's obvious there's a name clash. It seems to make sense for me to change the name since it's a one-man project and Eclipse is a huge organization. AppFuse LE seems like a good descriptive name, as does "AppFuse Light" and "Spring Kickstart".

Eventually, I'd like to figure out a way to merge AppFuse and Equinox. If users could start with something like Equinox (no features) and plug-in the various features, that'd be pretty cool. Some web frameworks (i.e. Struts 2) have a plugin feature, but most don't. I figure we can leverage Struts 2 for all frameworks, and convert to specific frameworks' plugin features if they're added. Of course, we're also looking at OSGi and Spring's OSGi support for our plugin architecture. The only problem with OSGi is it looks pretty complicated compared to Struts 2's plugin system.

The other advantage of changing the name is I could create a new java.net project with SVN support and not have to pay for the CVS -> SVN conversion. Of course, leaving the name the same also makes it pretty easy as there would be no additional work for me. ;-)

Thoughts?

Posted in Java at Nov 13 2006, 09:36:59 AM MST 20 Comments

Continuum, Luntbuild, Pulse and NetBeans

Last night, I did a bit of playing with technologies new to me. First of all, I got AppFuse 2.0 running on Continuum. This was was easy enough, I just had to add <scm> information to each pom.xml. Thanks to those who recommended this approach. I thought it was a silly solution until I realized "mvn site" produced the wrong information when <scm> wasn't present for sub-modules.

Since I was playing with Continuous Integration tools, I decided to give Cerberus, LuntBuild, and Pulse a spin. My goal was to give each server the old "college try" and see if I could get them running with minimal effort. I don't know where I heard about Pulse, but it was somehow included in my tests.

Cerberus didn't work with my Cygwin/Ruby setup, so I was done with it quickly. LuntBuild worked pretty well, but the interface and configuration seemed kinda clunky. I also found it strange that it uses a 4.x version of Jetty - seems kinda old. I was surprised to see that it uses Tapestry for its web framework. Pulse was the nicest one with a kick-ass (ajaxified) user inferface, powered by Acegi, WebWork and Hibernate (according to its JARs). It was definitely the easiest to setup and use. While Pulse isn't free for commercial use, it is free for open source projects, as well as small teams.

Summary: Continuum, LuntBuild and Pulse seem to be the best tools for building Maven 2 projects. While CruiseControl works, and works well, it does require you to customize XML from the command line, whereas these tools allow you to do everything through a web interface.

Toward the end of the night, I downloaded NetBeans 5.5 and installed its Maven 2 Plugin. I was surprised at how full-featured this plugin is. I was able to build, test and run the AppFuse web modules in the embedded Tomcat without issues. It's definitely a cool plugin. As for NetBeans, it seemed pretty sluggish and I couldn't figure out how to get Ctrl+Shift+R functionality, which is a must for me these days. Also, I couldn't get the JSF support working for the AppFuse JSF Module, seemingly caused by the Maven plugin (project properties only has Maven options). Since NetBeans works so well with Maven 2, and it's much more full-featured than Eclipse, it seems natural to recommend it to AppFuse 2 users. Of course, I like IDEA a lot more, but there's no Maven 2 plugin that I know of.

Posted in Java at Nov 03 2006, 10:31:19 AM MST 17 Comments

IDEA 6 on OS X and Out of Memory Errors

Ever since I upgraded to IDEA 6.0.1 on OS X, I've been getting Out of Memory errors like no tomorrow. It seems like it's leaking memory when I'm not even using it. Today, I went to lunch shortly after opening IDEA to do some work. When I came back, I was created with the following dialog:

OOM Error Dialog

I've set my Info.plist to have -Xms256m -Xmx512m -XX:MaxPermSize=256m, but it doesn't seem to help. How has your IDEA 6 experience been on OS X? Are you running out of memory? I haven't had any issues on Windows - maybe it's a problem with the MacBook Pro?

I fully expect the IDE zealots to say "use NetBeans or use Eclipse". Eclipse doesn't support hierarchical projects, so that won't work. I'm willing to try NetBeans if I can run something like "mvn netbeans:netbeans" and if it supports hierarchical projects like IDEA does.

Posted in Java at Nov 02 2006, 08:06:39 PM MST 15 Comments

Upcoming Speaking Engagements

If you're interested in learning about Struts 2 or AppFuse, I'm doing a number of speaking engagements in the next month:

How's that for getting some mileage out of my CSS presentations? ;-)

I don't know who will be doing the Basic Concepts talk at DJUG, but I'm pretty sure Chris Maki will be presenting on JPA at the JBoss User Group meeting.

In addition to these local talks, I'll also be talking at The Spring Experience on What's new in AppFuse 2.0. Since my talk is at 9:30 p.m. on Saturday night, I'm looking into getting some free beer to bribe people into showing up.

Posted in Java at Nov 01 2006, 09:56:18 PM MST 4 Comments

JIRA Spam

The AppFuse JIRA instance has been getting hammered with spam today. Some jackasses are creating accounts and posting issues (as well as comments) chalk full of links. Any ideas how to stop this - outside of not allowing new users to sign up?

Posted in Java at Nov 01 2006, 09:32:56 PM MST 7 Comments