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.

Buildix - CruiseControl, Trac and Subversion for VMWare

From the CruiseControl mailing list a few minutes ago:

Just passing on the info... this is one of those projects I also wanted/intended to do. :) I'm glad someone beat me to it!

http://buildix.thoughtworks.com

It includes CruiseControl, Trac, Subversion all on a single live cd or vm ware image. Very nice!

After installing Ubuntu on VMWare server last weekend, I was getting ready to create something similar to this. I'm glad I saw this as it seems to be a much more complete package than the one I was going to create. I'd prefer Ubuntu over Debian/KNOPPIX, but since Ubuntu is based on Debian, it probably doesn't matter.

A couple additions I'd like to see are Maven 1, 2 and Continuum pre-installed. I doubt that'll happen though since CruiseControl is a Thoughtworks-sponsored project. Regardless, if I had a Buildix with those options, I'd likely use (and recommend) it for every future project. A lot of clients already have bug tracking and source control installed, so the build server is the main thing that interests me.

Posted in Java at Jul 06 2006, 08:17:38 AM MDT 11 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

Fun in DC

I made it back to Denver yesterday after quite a week in DC. The trip had to be the most fun I've ever had on a business trip. This was mostly due to my partners in crime, James Goodwill and Bryan Noll. Not only are these guys kick-ass Java developers, but they keep you entertained all day long. With my bad back, the ridiculous rain, and getting lost all the time in our rental car, we had quite a trip. The tech meetup on Wednesday night at Brickskeller was awesome. Thanks to all the guys that showed up - we'll definitely do it again in July.

Next week, we're working remotely, then we're back in DC on the 10th. Wednesday, July 12th looks like a good date for the next Tech Meetup. We're open to venue suggestions, but we're also more than willing to return to Brickskeller.

Posted in Java at Jul 01 2006, 12:17:57 PM MDT 2 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

Tech Meetup near Washington, DC

In the comments of my last post, a few folks mentioned they'd be interested in doing a "tech meetup" this week. We're staying at the Sheraton Reston Hotel. We'd prefer to stay "close to home", but that's only because we get lost easily. ;-) In reality, we're open to anything as long as it's not raining cats and dogs like it has been.

Tomorrow (Wednesday) night looks like the best night. 7:00 is probably a good time - where do you want to meet?

Posted in Java at Jun 27 2006, 05:22:04 AM MDT 20 Comments

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

[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

DJUG Tonight: Portals, MyFaces and Dojo

Tonight's Denver JUG meeting should be a good one. Scott Ryan is going to do a presentation on Portals, followed by Bill Dudney on integrating MyFaces and Dojo. Both presentations look interesting, but I really like what's in Scott's description:

The real questions is what really makes up a portal and what makes it different from just a normal AJAX enabled website. In this basic concepts presentation we will look at the components that make up a modern portal framework. We will look at the common architecture of this framework and what pieces and parts you should expect to find inside a portal framework. We will examine several commercial and Open Source portal frameworks including PHP and Java based portal framework. We will look at some of the tools that enable you to develop and configure a portal and if we have time we will look at installing and developing with a common open source portal framework.

With any luck, I'll be able to blog both talks.

In case you weren't aware, Scott has also done a fair amount of work migrating AppFuse to Maven 2, along with Brian Topping. Scott has put together an appfuse-maven-plugin and Brian has converted an existing AppFuse project to Maven 2. Read more about the move to Maven 2 in this mailing list thread.

Don't forget the best part of DJUG - networking at the Rock Bottom Brewery!

Posted in Java at Jun 14 2006, 09:34:02 AM MDT Add a Comment

Seam 1.0

I've posted my thoughts on Seam 1.0 to my Virtuas blog. What are your thoughts?

It's great to see the release of Seam 1.0. Seam is similar to many full-stack frameworks like Rails, Rife and AppFuse in that it gives you all the pieces you'll need to build a kick-ass web application.

I've blogged my thoughts on Seam before, so there's no need to do that again. I like the idea, especially the lack of interfaces and the 3-files-for-each page idea. However, I don't know that this concept will fly with Java developers. I agree there's a need to simplify, but many of us are mesmerized by the de-coupling that Spring gives us. So now we're programming to interfaces, and every-so-often swapping implementations. I don't know that we can switch to this simpler model. And then there's the "EJB" thing. I think there will be a fair amount of developers that don't use EJB3 simply because it has the "EJB" name. The best thing the EJB Expert Group could have done for EJB3 would be to give it a new name.

The other thing I worry about with Seam is that it wasn't developed from an existing application. AFAIK, it didn't get extracted from a real-world application that had all the problems that Seam solves. I know that Gavin is a smart guy, and he's probably seen these problems in the real world, but there's nothing like developing a real-world application with a technology - and then extracting the framework from that.

In reality, I'm probably jealous. Seam has some really cool features, JBoss has done a great job of marketing it, and it seems to be a really cool way to develop applications. If I'm going to make AppFuse a direct competitor to Seam, it's gonna be quite the uphill battle.

Posted in Java at Jun 13 2006, 04:45:48 PM MDT 5 Comments