Matt RaibleMatt Raible is a Web Developer and Java Champion. 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 "appfuse". 771 entries found.

You can also try this same search on Google.

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

OSCON: A beautiful time of year in Portland

It's that time of year again for the excellent OSCON conference. Last year's show was great, but I spent far too much time in the conference, and not enough time enjoying summertime in Portland. I have a fondness for Oregon in the summer. I spent my last two years of high school in Salem (40 miles south of Portland) and remember loving life in August. This was likely due to the fact that it rained most of the rest of the year.

This year, I'm determined to enjoy Oregon more, and attend the conference less. I have a pass, and I'm doing a short 20-minute talk on "7 Simple Reasons to use AppFuse" (2:00 Wednesday in the Expo Hall). But that's about it. The rest of the week, I hope to enjoy myself and not be pummeled with any new technology or buzzwords. I might end up getting sucked into a session or two, but I'm hoping I don't. With any luck, I hope to visit both Edgefield and the Oregon Brewers Festival. Edgefield on Wednesday, Brewers Festival on Friday.

On Thursday, we're throwing another party at the Red Lion along with a host of other companies. Last year, we had a SourceBeat/Virtuas party at the Red Lion on the patio. The views of Portland were spectacular and it was definitely a good time. This year, it's a Geronimo Live! party. To register, please click on the image below.

Register for Geronimo Live

Thanks to the many sponsors of this event - we appreciate your support.

Geronimo Live Sponsors

Raible Road Trip #10 begins this Sunday. With any luck, I'll be able to snap some pics along the way and blog about our trip as we go.

Posted in Open Source at Jul 20 2006, 09:56:26 AM MDT Add a Comment

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

AppFuse and Groovy/Grails?

Here's an interesting e-mail I received last night:

I see AppFuse's strong points is in integrating a lot of oss in a synergistic manner, which is really great and helpful. Just wondering whether there is any chance of integrating AppFuse with groovy and especially grails.

I also just found out about grails 0.1 and it looks really promising, for a 0.1 release.

I just feel that it has some synergy there, a java ruby on rails combines with the best oss integration available.

My response:

I think Grails and AppFuse are more likely competitors rather than compatible. Grails uses Spring, Spring MVC and Hibernate under-the-covers, whereas AppFuse uses the raw frameworks. Of course, it would be cool to allow different classes w/in AppFuse to be written in Groovy or JRuby. At this point, I think it's probably better for users to choose one or the other.

Grails definitely looks cool, and a lot like Rails. However, I think using Groovy is a pretty big step for the majority of Java Developers out there. If you're reading this post, you're probably not in the majority.

Posted in Java at Jul 06 2006, 07:35:49 AM MDT 3 Comments

Two Finger Right Click

I just discovered that two finger right click has been added for 15" MacBook Pro machines. To enable it, go to System Preferences > Keyboard & Mouse > Trackpad. Check "Place two fingers on trackpad and click button for secondary click". Sweet - I dig this feature. Hat tip to the Parallels web site.

Now onto seeing if I can the free VMWare server to run Ubuntu side-by-side Windows XP on my HP box. If not, I'll drag out an old server and install it on there. It seems I'm in need of a build server since my other one is already being taxed by AppFuse's CruiseControl.

Posted in Mac OS X at Jul 01 2006, 08:52:13 PM MDT 3 Comments

JBoss Rules (Drools) 3.0.1 and AppFuse

Troy Kelley has written up a tutorial on how to integrate JBoss Rules (Drools) 3.0.1 with AppFuse.

While reading Matt's blog article I noticed this tutorial, which is pretty nice, but seems to assume that you're using version 2.x of JBoss Rules (Drools) - mainly because of the fact that the DRL is in XML.

Here's an updated version for 3.0.1 following the same outline as the previous tutorial.

Note that I'm using springmodules (I used 0.4) for the JSR support.

Good stuff Troy - thanks for putting this together.

Posted in Java at Jun 28 2006, 04:55:39 AM MDT Add a Comment

RE: What Web Application framework should you use?

Tim O'Brien has an interesting post titled What Web Application framework should you use?. The first thing I noticed about this post is the permalink. It looks like he started with "Isn't Rails supposed to change...", which makes me wonder what the rest of the title was. In this post, he rags on Java Web Frameworks and the lack of a clear path for choosing one. He ends up predicting that many will stick with Struts 1.x (poor bastards) and those that aren't tied to Java should move to Rails. I don't have a problem with folks moving to Rails, but I would like to comment on the Java Web Framework space and Tim's comments.

He says:

Prediction: The confusion over what is happening over at Struts is going to discourage people from continuing to use it. The Struts team did the right thing in recognizing that Struts 1.x was a dead-end, but that project needs a single public message. Is it Struts Action or is it Struts Faces? Or is it two frameworks capitalizing on the Struts brand name?

I think what is going on in the Struts project is definitely two frameworks capitalizing on a brand name. That was a concious choice on the project's part when they chose to start creating sub-projects. The interesting thing about Struts Shale is it's largely a prototype for JSF 2.0. Furthermore, it was rejected by many Struts developers as becoming Struts 2.0. Why? Because JSF sucks. Especially when used with JSP - which is what most folks are doing.

JSF continues to be the most over-hyped under-used framework in Javaland. If you read the blogs of first-time users, you'll find many complaints and issues on how things work. Granted, most of these problems are with JSP and the implementation, but still. If I were in charge of JSF, I'd dump JSP altogether, bundle Facelets with it and allow more flexible page navigation (including controller-to-page). Don't get me wrong, I like the ideas behind JSF, I just don't like the implementation (or the fact I have to wait years for things to be fixed in the spec).

That being said, I've yet to meet an unhappy WebWork fan. If you find someone that still likes Struts, ask them if they've used WebWork. Chances are they'll say no. As far as Tapestry is concerned, the learning curve is too high. It's been rejected time and time again by my clients because of the learning curve. Are they going to fix this? Yep, they're going to re-write the whole damn thing - again! Every major point release of Tapestry throws backwards-compatibility out the window. Furthermore, I've heard once you get over the learning curve, it's a joy to work with. I've also met people at conferences that've used it over a year and say they're still struggling with its concepts.

Spring MVC - I wish I had bad things to say about it, but I don't. It (obviously) has the best Spring integration, but I've found WebWork much more pleasurable to work with. Sure, Spring has a ThrowawayController, but with a name like that, you can tell it's a second-class citizen.

Inspired by Tim's post, here's my prediction:

Struts Action 2 will be the best choice for developing Java-based web frameworks. Not only does it support JSF, but it's easy to learn, test and use. Furthermore, it seems to be the most often used framework in major software products and web sites.

How's that for a clear message? Struts Action 2 is the shiznit, now let's get back to developing applications.

Disclaimer: This is my opinion with a lot of stuff thrown in to get folks riled up. I've never put a JSF, Tapestry or Spring MVC application into production (except for AppFuse of course), so most of my opinions are likely without foundation. In wonder how many applications Mr. O'Brien has put into production with these frameworks?

Posted in Java at Jun 20 2006, 08:32:41 AM MDT 57 Comments

Happy Father's Day

Father's Day has been great so far. We started off this morning by opening gifts. The kids gave me some new framed pictures, as well as a whole bunch of huckleberries. I couldn't ask for better gifts. After that, we headed out to breakfast at my favorite joint, Pete's University Park Cafe. From there, we headed up to Tiny Town and rode around on the "Choo Choo Train". We stopped for ice cream on the way home and now I'm sipping a cold one while watching the US Open. Life is good. :-D

Abbie and Jack, June 2006

Thanks to my Dad for being such an inspiration - I hope I'm as smart as you someday Pappy. Can't wait to see you in July!

Related: Father's Day 2005, 2004 and 2003.

Posted in General at Jun 18 2006, 03:26:00 PM MDT 9 Comments

[DJUG] Portlets and Portal Architecture with Scott Ryan

The genesis of this talk is Scott's has talked to a lot of developers about web development and most don't understand all the features you get from portal servers. A lot of developers don't know how to sell them to upper management. Typically, they're very expensive, but you get a lot of functionality and features for the price. Portal servers are not just glorified web applications.

You all know what portals are, right? Yahoo is probably the most famous. RockyMountainNews.com uses a portal server, so does Denver Post. The top commercial offerings are BEA WebLogic, IBM WebSphere, Plumtree, Vignette, ATG and Microsoft Sharepoint. The first version of WebSphere was based on Jetspeed 1 and it was a pretty bad implementation. Plumtree was bought by WebLogic and is apparently a combination of .NET and SOA. Microsoft claims they're adding more portal-like stuff, but currently it's very document-management centric (reminds me of Alfresco).

On the open source side, the players are Liferay, Jetspeed, JBoss Portal, Exo, Metadot, Plone, PHP-Nuke and Magnolia. I didn't know Magnolia was a portal server, must be a new feature. Liferay is Scott's favorite, Jetspeed is pretty good, but not much out of the box.

Portals all started because companies had disparate websites and wanted a way of combining them into a single dashboard. Pieces of a portal:

  • Single Sign-on with a unified security model.
  • Security/Administration: Portals usually have a content-management component, which allow delegated administration. It's difficult to organize this initially, because of the need to create a hierarchical organizational structure of permissions.
  • Personalization: out-of-the-box you can customize the look-n-feel. A lot of times these are driven by rules engines, particularly in the open source arena. Content can often be customized so you can add/remove items that you're interested in.
  • Content Management: always comes with a portal because a portal is usually responsible for displaying content. Some include workflow and administration features, like locking, version and administration. JSR-170 defines an interface for accessing CMS systems.
  • Collaboration: this is the hot thing this year. Forums, discussions, blogs, RSS feeds, real-time chat, etc.
  • Administration: Creation of users, groups and roles. Page and portal layouts, themes, skins and CSS. Selective rights to users to modify desktops and portal attributes.
  • Search: Federated search, content repository and meta data search. Web page, database and file system search.
  • Interaction Management: Rule-based personalization, campaign execution and management. Event and behavior tracking. Content/Product centric marketing.
  • Commerce: Catalog, shopping cart, etc.

For doing portlet development, Scott recommends using a more native technology (i.e. Struts, JSF, PHP, JSP, etc.) and enabled it as a portlet using bridges. Development interfaces are offered via the web or many commons IDEs. You will need some XML, HTML, JSP, CSS and graphics experience to totally enable a portal. Sounds similar to the stuff you need to know for Ajax, eh?

Portals require a mix of development and configuration skill sets. The mix of configuration and development is determined by the platform. Try to lean away from the proprietary features but don't run away from them. Look for pre-build portlets, themes, skins, etc.

One big gotcha of portlet development is source code management. When Scott started developing with portlets, there was no such dev/test/prod setup - vendors just expected him to modify prod. Vignette has a "car" file archive, Liferay has a "lar" archive. These files allow you to easily deploy the changes required for a portlet to work. Apparently, this is still a space that needs a lot of work to allow good source-code control and the ability to rollback updates.

When rolling out a portal for an organization, it's important to start small and build features incrementally.

At this point, my laptop died - as in it went completely black. I hit the power button and it started up again, complete with the loud "bong" for all to hear. A few seconds after restarting, it went black again, so I gave up. After Scott's talk finished, I opened up and tried again - and now it's working.

The rest of Scott's presentation was very cool - he did demos of Liferay's and WebLogic's portals. Liferay looks very cool and a lot of their features remind me of Netvibes.com.

Posted in Java at Jun 14 2006, 07:15:31 PM MDT 4 Comments