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.

RE: WebWork joins Struts

From the struts-dev mailing list:

Between the Clarity hubbub and the Java Web Alignment brouhaha, it came up that WebWork would like to merge with another framework. Ted and Don followed up with the two core WebWork developers, Patrick Lightbody and Jason Carreira. As it turns out, they are very interested in merging WebWork with Struts. An archive of our discussions is available as a Quick Topic thread.

As some of you know, the underlying idea behind Ti was to use WebWork as the core of Struts Action Framework 2.x. Conceptually, WebWork and Struts 1.x are very similar. We've often said, without embarrassment, that WebWork does many things better than Struts 1.x. Meanwhile, WebWork has the ability to provide a layer of almost full backwards-compatibility for Struts 1.x, and we have already demonstrated we can integrate Beehive's (very cool) Page Flow with WebWork.

Patrick Lightbody:

Yes, it's true. The WebWork development team (Jason and I) have been working with the Struts development team (Don Brown and Ted Husted) and have come to the conclusion that the best thing for Java community would be to merge WebWork in to Struts.

Read Ted's email here, but the gist of it is this: WebWork is a great technology, and Struts is a great community. It's a perfect match and bringing the two together will only be better for WebWork and Struts users alike. The only down side for me is that I'll be working less with OpenSymphony, but I believe that is a small price for all the great benefits that come from this merger.
...
With this renewed energy, larger development team, and larger community, the combined efforts of Struts and WebWork will surely make the Struts platform the easiest, fastest, and most powerful Java web framework available. We hope that all the WebWork users and developers are as excited about this as we are and are ready to take WebWork to the next level.

IMO, this is good for both Struts and WebWork. WebWork gets the additional marketing it needs, and Struts users get a kick-ass framework to develop with. If you're a Struts user and haven't tried WebWork, prepare to be impressed. I was and still am.

I plan to upgrade AppFuse and Equinox to WebWork 2.2 as soon as its released. Hopefully I'll be able to migrate both the Struts and WebWork versions to SAF 2.0 w/in a few months.

Posted in Java at Nov 27 2005, 04:18:55 PM MST 4 Comments

Equinox 1.5 Beta 1 Released

This release is mainly to test out dependency downloading using Maven 2's Ant tasks. In addition, a few bugs have been fixed, but there's quite a few more on the roadmap. I plan to fix all of these before releasing 1.5 in a couple weeks.

Please test out this release if you have a chance. One of the nice things about using Maven 2's Ant Tasks, is you can download Maven 2 and generate your Eclipse or IDEA (possibly even Netbeans) project files using "mvn eclipse:eclipse" or "mvn idea:idea". You can also use Maven 2 to build and test things if you like. The only thing that doesn't currently work with Maven is the web tests with Cargo. I can try to get those working if there's enough demand. For now, you'll have to use Ant if you want to test the UI.

The download is much smaller now - barely over 1MB vs. ~20MB for 1.4. Most of the size comes from the Maven 2 Ant Tasks - which is a 869KB JAR. Of course, I could've made the distribution even smaller and required you to download the JAR and put it in $ANT_HOME/lib, but I decided to make things easier by including it.

For more information about installing the various options, see the README.txt file. Currently, you can use the following persistence frameworks:

  • Hibernate
  • iBatis
  • JDO (JPOX
  • OJB
  • Spring JDBC

And a number of web frameworks too, as listed below with links to demos.

Update: I forget to mention that I owe a big thanks to Carlos Sanchez. He (and the other Maven developers) have been great in helping to resolve all the issues I found with transitive dependencies.

Posted in Java at Nov 26 2005, 04:51:48 PM MST 4 Comments

Are you doing client-side validation in your JSF applications?

Are you doing client-side validation in your JSF application? I am in Equinox and AppFuse, but it seems somewhat primitive. I'm using David Geary's corejsf-validator.jar from his Core JSF book. It hooks into Commons Validator, and while it does work - it has some issues. First of all, if you have it in your classpath when testing, it screws up Ant-style path matching in Spring (applicationContext*.xml doesn't work). Secondly, it puts all the JavaScript validation functions right in your page, rather than in an external file that can be cached by your browser.

In reality, I believe that JSF should include client-side validation as part of the spec. After all, all of the other popular Java web frameworks support it. Then again, Rails is growing in popularity and AFAIK, it doesn't support it. In addition, the popular Java webapps I've seen (JIRA, Confluence, Jive Forums) don't use it either. I'm not trying to advocate that we should all be using client-side validation in our apps, I'm merely saying it should be an option in the standard web framework for Java.

The only public (and open source) option I've found is the Commons Validator support in Shale. Will this work in a MyFaces application w/o Shale? Are there other client-validation frameworks for JSF I don't know about? Or is the best option "don't use client-side validation with JSF?"

Posted in Java at Nov 24 2005, 09:02:39 AM MST 6 Comments

Clustering OSCache

For the past few days, I've been tuning and configuring OSCache in a clustered (WebLogic) environment. While setting it up was fairly easy, there was some fundamental concepts that took me a bit to figure out.

First of all, I chose to use JavaGroups instead of JMS. The primary reason behind this was it was easier to configure, but I also discovered that if you use JMS - you have to have a unique "cache.cluster.jms.node.name" property in your oscache.properties file on each server. This means to use OSCache with JMS, you have to build two different EARs. At least that's my impression. If you've figured out a better way to do this, please let me know.

In the application I'm working on, there are 4 different caches: one for Hibernate, and several other ones we've created with OSCache and Spring. For the past week, I developed a feature where we cache a user's account information across the cluster. The feature is more like an HttpSession than a cache b/c it's designed to replicate an authentication token (similar to a session id) across all the master servers.

After much head pounding, I discovered that OSCache doesn't update other nodes in a cluster for inserts and updates. It only broadcasts flushes. After understanding how OSCache works, it was much easier for me to code the solution (sans OSCache). If you'd like to see OSCache support replicating a cache across a cluster, vote for CACHE-96.

Posted in Java at Nov 23 2005, 01:05:44 PM MST 9 Comments

Lots of Java activity in San Francisco

The last 24 hours here in San Francisco have been quite interesting. Yesterday, I had lunch with a group of AppFuse users. They work for a company a few blocks from my training class. Chipotle was on the way, so I grabbed a burrito on my route and had a great time talking with them about the various open source tools that AppFuse uses, as well as what's on the roadmap. Thanks for the cookies John!

After class yesterday, I had a Guinness with an AppFuse user that recently put a high-volume site into production. He said it's held up surprisingly well and AppFuse greatly simplified his ability to deliver the project on time. In fact, most of the features the client wanted were already built-in.

Last night was another hotbed for Java talk - from web frameworks to TSSS in Vegas. Matt Filios and I had dinner and drinks with Mike "wanna play poker" Cannon-Brookes, Crazy Bob, Patrick Linskey, Geoff Hendrey (I hope I got the name right) and a number of other guys whose names escape me. It was Mike's birthday, so I left early to avoid the chaos that Crazy Bob and Mike always seem to stir up.

To top it all off, this morning I ran into a couple of folks that read this blog. I was getting breakfast at a local bagel shop - when a guy came up to me and asked "Is your name Matt"? I answered yes, and we talked briefly about my trip out here. It was kinda wierd being recognized, but kinda cool at the same time. It was good to meet you Nadeem.

I'm heading home from this wonderfully warm place tonight, but I'm sure I'll be back in the near future.

Posted in Java at Nov 18 2005, 12:00:57 PM MST 5 Comments

Rocky Mountain Software Symposium

This afternoon, the Rocky Mountain Software Symposium returns to Denver for the final show of the year. Of course, this conference is better known as No Fluff Just Stuff, Denver. Lucky for me, I'll be presenting all my sessions tomorrow so I'll at least get one day this weekend to relax. It looks to be a good show, with lots of interesting sessions. Here's mine:

After the presentation class I attended last week, I think all these should be renamed. Unfortunately, I didn't have time to re-organize the presentations, but if I could change the titles, they'd be something like this.

  • Write better code faster with Spring and Hibernate, use AppFuse to simplify both
  • Make your webapps suck less by using Ajax
  • Use Spring AOP and Transaction Frameworks, because they're so damn easy

;-)

Update: PDFs of my presentations, as well as the Ajax demo is available from Equinox's downloads section. Make sure and view the README if you want to run the demo and see how to view the Ajax features.

Posted in Java at Nov 11 2005, 08:27:51 AM MST 8 Comments

Editing Java webapps instead of edit/deploy/reload

For the last few years, I've always done Java webapp development the hard way. Yeah, I'm the guy that makes Dion cringe (although I'm pretty sure he's not referring directly to me). I edit a class/jsp/xml file and run "ant deploy reload". Then I wait a few seconds for my context to reload in Tomcat. Luckily, I do mostly test-first development, so it's rare that I have to open my browser to test stuff. However, with the power of CSS and Ajax, manual testing in a browser is becoming more and more useful (although Selenium may solve that).

I've long resisted the power of the IDE, b/c I've always trusted Ant and felt confortable with the command line. However, I'm ready for a change. I'm ready to start developing Equinox and AppFuse-based applications using the edit/save/auto-reload cycle. So how do I get started? Where's the instructions for setting up my IDEs to work this way?

I prefer to use Eclipse and IDEA for development - so I'll likely try to get this working in both. If I get it working, I'll make sure and provide good documentation so others can do the same. I'm also willing to make any changes in project structure to make this happen; modifying build.xml (or pom.xml) to accomodate shouldn't be too difficult.

Posted in Java at Nov 07 2005, 09:16:03 AM MST 23 Comments

Pictures from the Colorado Software Summit

Here's a few pictures from the last few days - including a few shots while driving up yesterday. One thing that's interesting about this conference is there's a huge contingent of Tapestry users and enthusiasts.

Posted in Java at Oct 27 2005, 10:52:05 AM MDT 1 Comment

Spring MVC the most popular web framework among AppFuse users

At the beginning of October, I did an informal poll on the AppFuse mailing list to see which web framework users were developing their applications with. Surprisingly, Spring came out on top, and the component frameworks (JSF and Tapestry) are the least used. I find this interesting b/c AppFuse lowers the barriers and reduces the learning curve for all of these frameworks.

Poll Results

If you're an AppFuse user and didn't respond on the mailing list, please leave a comment with the web framework you're using.

On a related note, I noticed that java.net added RSS Feeds for mailing lists today. This means if you have an RSS Reader, you can subscribe to the AppFuse user mailing list.

Heh, I just subscribed and there's no messages in the feed. Maybe this feature needs a little more work.

Posted in Java at Oct 25 2005, 10:29:40 AM MDT 30 Comments

Heading to the Summit

Colorado Software Summit

In a couple of hours (after my fraternity's annual Alumni vs. Actives softball game), I'll be heading up to Keystone to attend the Colorado Software Summit. I'm pretty excited about going; it's at one of my favorite places to ski, and it's the first time I'll be attending. I've heard great things about this conference, and I'm sure it'll live up to its reputation.

On the other hand, I have a good case of the "it figures". I caught a nasty cold from the kids a couple of days ago and it's sure to be in full force by tomorrow. With any luck, I'll lose my voice sometime before a talk this week - or perhaps cough my way through one of them. Do you have a good story about speaking when you're sick? If so, please share.

Posted in Java at Oct 23 2005, 11:19:23 AM MDT 1 Comment