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.

[CSS] Apache Geronimo Architecture and Community by Bruce Snyder

The main reason that Geronimo was started was to have a BSD-style licensed Java application server. The other two open-source application servers are JOnAS and JBoss, both of which are LGPL. The advantage of having a BSD/Apache licensed container is that companies can put it into their products, or develop products with it - w/o worrying about licensing issues. Bruce says IBM just validated the goals of Geronimo with their WebSphere Community Edition.

Geronimo's architecture is designed around GBeans - which are services that are pluggable inside of the kernel. To learn more about GBeans, see Jeff Genender's article "Integrate third-party components into Geronimo". The GBean is an IoC container in itself. Bruce is now showing a GBean Descriptor for ActiveMQ. There are only a few main elements in this XML file: multiple <dependency> elements and <gbean> elements. The dependency element refers to a JAR and the idea was borrowed from the Maven project.

Bruce, the poster-boy for Maven 2 only made it 15 minutes before he mentioned Maven. ;-)

For more information about integrating ActiveMQ in Geronimo, see Sing Li's article "Magic with JMS, MDBs, and ActiveMQ in Geronimo".

Deployers vs. Builders: Deployers are J2EE specific, Builders are Geronimo specific. The Geronimo Deployer is JSR-88 compliant and handles both deployment and distribution. Personally, I'm a little disappointed that Geronimo doesn't support hot-deploy out-of-the-box, but I can understand their desire to be spec-compliant first, and developer-friendly 2nd. After all, it is an IBM product. ;-)

Geronimo's deployer is currently a script that you can pass arguments into. There is also a webapp console (developed and donated by Gluecode) that's based on portlets. It uses JetSpeed under the covers and looks to be a pretty slick little webapp. Bruce started up Geronimo and showed us the console UI - it appears Geronimo's default footprint is about 20 MB.

Custom Assemblies: One of the nice things about Geronimo is that it's so configurable. Because of it's architecture, you can easily create custom assemblies. Here's a few examples:

  • Tomcat + Derby + Jetspeed + ActiveMQ
  • Jetty + Apache DS + ActiveMQ + OpenEJB
  • Jetty + JOTM + Derby + OpenEJB
  • Tomcat + ActiveMQ + Spring Kernel + ServiceMix

The Geronimo Kernel and GBeans make all of this possible. This is pretty cool IMO, especially with the whole Agile Java EE movement. Bruce thinks this is real future of Geronimo: the stacks that can be created with it. He expects the innovation and ideas in this area will come from the community and what users want.

Geronimo Community: Made up of many different open-source projects: MX4J, ActiveMQ, Tomcat, ActiveCluster, HOWL, JOTM, TranQL, Derby, Jetty, ServiceMix, OpenEJB. Rather than re-creating everything (the ol' NIH syndrome), the Geronimo team has tried to embrace and re-use other open source projects as much as possible. Many of the committers on the aforementioned projects are Geronimo committers or founders.

Bruce's favorite quote: In open source, we come for the code, we stay for the people.

Project Status: Now a top-level Apache project. Has officially passed J2EE 1.4 certification tests. The official 1.0 release date is "when it's done it's done", but the developers are hoping to finish by ApacheCon.

Posted in Java at Oct 26 2005, 04:08:08 PM MDT Add a Comment

[CSS] Mule - A Detailed Look at an Enterprise Service Bus by Tom Bender

Below are notes I took while attending Tom Bender's talk on Mule at the Colorado Software Summit:

SOA: A collection of services with well-defined interfaces and a shared communication model is called a service-oriented architecture.

ESB: Provides a light weight, loosely coupled, event-driven SAO with a highly distributed universe of naming routing destinations across a multi-protocol message bus.

Four Tenets of SAO (as proposed by Don Box):

  • Boundaries are Explicit
  • Services are Autonomous
  • Services share Schema and Contract, not Class
  • Compatibility is based upon Policy

Properties of an ESB: Light Weight, Loosely Coupled, Event-Driven, Transactional, Securable, Distributed Network Topologies, Abstract Endpoints, Intelligent Routing, Message Transformation (inbound/outbound), Multi-Protocol Message Bus.

One of the main differences between application servers and ESBs is appservers are traditionally integrated with a hub-and-spoke architecture. ESBs, on the other hand, use a distributed integration architecture.

Mule - What is it?

Ross Mason is the founder and primary developer of Mule. From its homepage:

Mule is an Enterprise Service Bus (ESB) messaging framework. It is a scalable, highly distributable object broker that can seamlessly handle interactions with services and applications using disparate transport and messaging technologies.

Mule is an event-based architecture. Actions within a Mule network are triggered by either events occurring in Mule or in external systems. It's a light-weight messaging framework that's highly distributable and very pluggable (i.e. for multiple transports and protocols). Mule supports Web Services using Axis or Glue.

A Closer Look at Mule

The basic building block is a "UMO Component". This component is used to wire applications together - it's basically a POJO that can optionally implement interfaces if it wants to hook into lifecycle events. An application communicates with the UMO component through a channel (i.e. TCP/IP or JMS). This channel talks to a message receiver that works with a connector that's backed by a transformer and formats it for the UMO component (whoa, that's a mouthful - and that's only inbound!). When going to the receiving application, the process starts from the UMO component, goes though the outbound router - and plows through the whole transformer » connector » message dispatch » channel » application process again. Here's a diagram of this process that I found on Mule's website:

Mule Overview

Mule supports many different endpoints: POP3/SMTP, JMS Topic or Queue, HTTP, File, VM (w/in the JVM), SOAP, RMI and EJB. Each of these have their own URI prefix.

I tuned out for the rest of Tom's talk (sorry Tom). The whole ESB topic is pretty dry IMO, but Tom seemed to do a good job of keeping the audience interested.

Posted in Java at Oct 26 2005, 02:46:55 PM MDT 1 Comment

The best part about the Colorado Software Summit

The best part about the Colorado Software Summit has been the fact that I can travel home at night. Keystone is beautiful, the conference is well organized - but hopping in my car and sleeping in my own bed last night was awesome. This morning, I'll be heading to breakfast with the family, taking Abbie to school and then driving back up for some dynamite sessions this afternoon.

Tom Bender is speaking at 1:00 on "Mule - A Detailed Look at an Enterprise Service Bus", followed by Bruce's "Apache Geronimo Architecture and Community". I'm staying with both of these guys in a nice condo on the lake (across from the conference center) so it should be fun to hear them speak. I'll do my best to blog both sessions.

Posted in Java at Oct 26 2005, 06:09:23 AM MDT Add a Comment

My favorite quote from the Colorado Software Summit

Here's a good quote from John Soyring's keynote on Monday:

... Geronimo is a subset of Websphere ...

I especially enjoyed this b/c I was sitting next to Bruce Snyder, one of the founders of Geronimo.

This quote seems to have been backed up yesterday with IBM's release of WebSphere Community Edition.

Posted in Java at Oct 26 2005, 04:40:29 AM MDT Add a 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

Keystone

Opening Keynote at Colorado Software Summit Keystone Keystone

Posted in Java at Oct 24 2005, 06:10:56 PM MDT 4 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

Pennies in the Radio

Julie took her car in to the stereo shop today b/c the radio was cutting out every once in a while. Actually, it was better than that - it'd quit working when she'd drive over a bump, and then start working again when she hit the next bump. The stereo shop called a few minutes ago to tell us what the problem was: someone has stuffed pennies into the radio, and they'd somehow fallen down and were shorting out the wiring below. I wonder who that someone was?

Our Little Cowgirl

If you have a good "my life as a parent" story, I'd love to hear it.

Posted in General at Oct 22 2005, 03:20:32 PM MDT 16 Comments

What's a good DVI KVM?

I'm looking to get a KVM Switch for my home office. I used to have one when I had 2 19" Dell Monitors and it worked quite well. However, since I got a 23" Cinema Display, I haven't had one. This means that if I ever work on my PowerBook, I don't get to enjoy the comfort of a keyboard, mouse and huge monitor. This needs to change.

I bought a DVI KVM switch when I first got the monitor a year ago, and it didn't work. Apple's DVI connector was too big and didn't fit in the switch. So now I'm looking again - do you know of any that work well with a Cinema Display?

Posted in Mac OS X at Oct 20 2005, 08:56:21 AM MDT 7 Comments

MySQLDialect vs. MySQLInnoDBDialect

I've used Hibernate's MySQLDialect ever since I started using Hibernate and MySQL. However, I noticed with Hibernate 3 there's a couple of new MySQL Dialects in town: MySQLInnoDBDialect and MySQLMyISAMDialect. Using MySQLDialect still seems to work fine for me - and it handles transaction rollbacks when I'm using InnoDB types.

What's the point of these fine-grained dialects? Should they be used when possible, or does MySQLDialect default to one of these based on MySQL metadata? IMO, Hibernate's javadocs could stand to have a little more "doc" action. Maybe I'm just not looking in the right place for the answer to this question.

Posted in Java at Oct 19 2005, 08:53:16 AM MDT 5 Comments