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.

AppFuse Logo - winner is Igor Polyakov!

Igor Polyakov is the winner of the AppFuse Logo Contest! I didn't get many votes from the mailing list - but of the 7 votes I received, 5 were for Igor's logo. Since it was my favorite too - I can't complain. Congratulations Igor - we dig your design!

AppFuse Logo

Posted in Java at Jun 25 2004, 05:43:25 PM MDT 4 Comments

Maven's ibiblio repository: nicely out of date

I have a feeling that Maven and I will never quite get along. I live on the bleeding edge, because you have to if you want to keep up with open source. I'm using Hibernate, Spring and JSTL in my Maven sample app. Hibernate is pretty up to date - ibiblio has 2.1.3 and 2.1.4 is the latest. Spring's JARs aren't too bad - 1.0.1 vs. 1.0.2 being the latest release. So much for getting spring-mock.jar quick and easy - since it's part of 1.0.2. JSTL is one version behind too.

Lesson learned: if you want to stay on the bleeding edge, don't use Maven. I suppose another option is to become the guy who uploads these new versions. That job looks rather complicated though. I'm guessing that most folks are simply maintaining their own repositories (or staying away from the bleeding edge).

Posted in Java at Jun 25 2004, 09:41:31 AM MDT 8 Comments

Maven tip o' the day: use a custom stylesheet

One of Maven's best features is its ability to generate websites with project documentation. In most cases, it'll motivate developers to improve the documentation for their project. At least it has for me with Struts Menu. However, Maven makes the worst mistake in the history of web development - it doesn't set a default background color. A lot of idiots do this these days, so do me a favor folks - change the default background color on your browser to something obnoxious. Mine is set to bright orange right now. Try changing yours to orange and then visiting the Maven site - its fugly. This issue isn't as bad as it used to be. Most people don't notice it, but "back in the day" when browser's used gray as their default - it was an issue. Maybe I'm just old fashioned.

Anyway, back to Maven. Yesterday, I was responsible for upgrading some Maven sample apps to the latest RC3, which makes the mistake mentioned above (RC1 did not). Usually when you encounter these issues in Mavenland, you click 5 times (Google with Firefox makes it 1 click) to find the plugins site and then look for its properties. In this case it's xdoc, which has a horrendous number of UI Color Settings.

These settings have two major problems. First of all, they don't work with RC3, and secondly - it's an awful way to define the colors and such for your site. Especially since its mostly related to colors. A better way that I've found is to put a maven-theme.css file in your xdocs/stylesheets directory. This will override Maven's default stylesheet and you get a lot more control over the look and feel of your Mavenized project site. The easiest way to get a template to start with is to generate your site and then copy target/docs/style/maven-theme.css into this directory. Hope this helps make Maven a little bit easier. wink

Posted in Java at Jun 25 2004, 06:56:52 AM MDT 1 Comment

EJB Solutions is now Open Logic

Open Logic EJB Solutions has changed their name to Open Logic and Out-of-the-Box has become Blue Glue. Why do I care? Because I start working for them (as a contractor) tomorrow! It'll be cool to work for a company that's just changed their whole website and released a new version of their product. Sounds like my kind of environment. It's kinda strange that their press releases have next Monday on them - I guess to coincide with JavaOne?

Posted in Java at Jun 21 2004, 10:22:04 PM MDT 6 Comments

Mailstore seems to be based on AppFuse

An interesting post titled "Project and Build Structure" showed up on javablogs.com today. As I began reading the project structure layout, I thought, "that looks good." It wasn't until I viewed the build.xml file that I realized that Seyed had copied AppFuse and modified it to his needs. This is fine and the license allows you to do this. However, Seyed's post seem to indicate that he is coming up with all of this stuff on his own. It seems, to me, that Seyed is (so far) in violation of AppFuse's license. Of course, if he'd merely give credit to AppFuse, he'd be free and clear! ;-)

Posted in Java at Jun 13 2004, 06:06:40 PM MDT 3 Comments

Using JAAS with Tomcat

Want to use JAAS with Tomcat? If so, you might want to checkout this Using Tomcat with JAAS tutorial.

Although it is possible to use JAAS within Tomcat as an authentication mechanism (JAASRealm), the flexibility of the JAAS framework is lost once the user is authenticated. This is because the principals are used to denote the concepts of "user" and "role", and are no longer available in the security context in which the webapp is executed. The result of the authentication is available only through request.getRemoteUser() and request.isUserInRole().

This reduces the JAAS framework for authorization purposes to a simple user/role system that loses its connection with the Java Security Policy. This tutorial's purpose is to put a full-blown JAAS authorisation implementation in place, using a few tricks to deal with some of Tomcat's idiosyncrasies.

Personally, request.isUserInRole() usually does everything I need. If I need something more than that, it's usually pretty easy to add some custom logic. Of course, if I ever need anything super robust, I'll probably use the Acegi Security System for Spring.

Posted in Java at Jun 03 2004, 10:30:27 AM MDT 3 Comments

How do you make your source tree Eclipse/JUnit friendly?

I've never had a problem getting builds and unit tests to work with Ant. However, unit tests run faster in an IDE, so I'm trying to refactor some code to allow for testing in the IDE. My current directory structure looks like this:

-- project
   - web
     - WEB-INF
       - classes

I need both "WEB-INF" and "WEB-INF/classes" in my classpath. There's XML files under WEB-INF for Spring and Commons Validator, and there's a log4j.xml under WEB-INF/classes for log4j. These files are all in their natural locations as far as all the projects I've seen. However, Eclipse won't allow me to nest classpaths - so it's virtually impossible (as far as I know) to add both directories to my classpath. Any ideas how to workaround this Eclipse "feature" are appreciated.

For those "IDEA is better" folks - I agree. IDEA allows me to add web, web/WEB-INF and web/WEB-INF/classes to my classpath with no issues.

Posted in Java at Jun 02 2004, 12:46:10 AM MDT 6 Comments

The Java Community - its strength is in its disunity

Charles responds (in a comment) to Ted's accusation that .NET's community is better than Java's.

Actually, the strength of the Java community lies in its disunity. Unity is a false strength: it's safety in numbers, but it's also a herd mentality. I suspect the drive for "strength in unity" is a reflection of Microsoft's philosophy of dominance: that the best thing for the world is if everyone just Does Things Our Way: A computer on every desk running Microsoft software. The Java community has competing infrastructure vendors. We have a raft of competing web frameworks, competing AOP frameworks, competing persistence frameworks, competing IDEs, competing heavyweight and lightweight containers. And it's this competition that makes Java such a vibrant community. Nobody's quite satisfied with what the other guy's doing: everyone wants to do better. It's also what makes us, at times, a bunch of bickering children. That does us quite a bit of harm, but I think in the long run things work out for the best.

Well said.

Posted in Java at May 31 2004, 12:04:14 PM MDT 2 Comments

[ANN] AppFuse 1.5 Released!

I finally found time to fix a few minor bugs in AppFuse 1.5 Beta and update all the tutorials. Now there's 3 new HowTos for developing a Master/Detail page using Spring's MVC Framework. After writing the tutorials, I found a new appreciation for Spring's MVC. I really like its lifecycle and (if given the opportunity) I think I'll use it for my next project. Without further ado, here's the relevant links:

Enjoy!

BTW, if you live in Colorado and you want to learn more about AppFuse, Spring and AppFuse Light - stop by the Denver JUG on June 9th or the Boulder JUG on June 10th. I'll be talking at both events. As a teaser, here's the bullet points from my slide on AppFuse Light:

  • Designed for quick apps with few requirements (i.e. prototypes)
  • Uses Sitemesh for skinning
  • No build-time dependencies (i.e. XDoclet), no out-of-the-box security
  • Web tests do not depend on container
  • All code can be easily ported to AppFuse if you need AppFuse features (i.e. security, i18n, gzip compression)
  • Simpler, lighter, faster (for building and testing)

Posted in Java at May 27 2004, 04:18:08 AM MDT 8 Comments

[NFJS Denver] Ramnivas Ladded and Aspect Oriented Programming

For the 2nd session of the day, I've decided to attend the session on AOP. My choices were Converting XML (Ben Galbraith), JSF (David Geary), What's new in EJB 2.1 (Monson-Haefel) and Runtime Code Generation (Glenn Vanderburg). I asked David about his JSF presentation and he said it was "boring" so I decided to skip it. This session, in the first 10 minutes, is pretty boring too. I might have to duck out of this and attend another session - but none of the other sessions really interest me. This one started this morning, and it seems to be a continuation of this morning session. It's mostly on AspectJ and he's doing the good ol' logging example. I don't really have an interest in using AspectJ since Spring's AOP is more than adequate for my needs. Oh well, I guess I'll stick around and relax.

Ramnivas is using Eclipse to compile his aspects, and shows us how if he uses "javac" to compile everything, no aspects are added. I'm guessing that there's some sort of plugin for Eclipse that allows for easy compiling of aspects. A new feature in AspectJ 1.2 is the ability to set an ASPECTPATH and then use "aj" rather than "java" to run code. This achieves the same effect as compiling the aspects in Eclipse. The "aj" script appears to just set the system classloader.

Now Ramnivas is showing us how you can use an aspect to define pointcuts on internal appserver classes. His example involves WebLogic, the J2EE Petstore and logging any EJB method calls. To use this, he has to start WebLogic with a custom script, that has a custom classloader defined. For some reason, we're now talking about log.debug() vs. if (log.isDebugEnabled()) { log.debug() }. Ramnivas thinks that most folks don't wrap their debug statements (the proper way). Who doesn't know about this?! I'd like to think that most developers are writing the 3-line version vs. the 1-line version.

An interesting quote: "So many things to show you - 3 hours is not enough." Maybe if we didn't have to wait 2 minutes for WebLogic to start each time, 3 hours would be plenty. ;-) Ramnivas just added logging to all the classes in the blueprints packages and then reloaded the page. There looks to be several thousand method calls occurring behind the scenes for a simple page. Of course, there's lots of tag libraries - but still - PetStore is a ridiculously complex application. Why did some ever impose this crap upon us as "best practices" for Java. IMO, best practices should be based around simplicity, maintainability, testability and performance. Does the PetStore even ship with unit tests? I'll bet it doesn't...

Now we're watching a pretty cool demo where Ramnivas is using aspects to enforce coding policies. In this example, he's using aspects to enforce rules in EJBs (i.e. no static variables, swing or threads). It interesting in that the aspects actually prevent compilation and display errors defined in the aspect. It's a neat idea, but I'm suspicious in that a lot of this AspectJ stuff seems to be Eclipse-specific. What I mean by this is that Eclipse seems to be required for compilation. Is it easy to aspect-enhance your classes using Ant? I would hope so.

Ramnivas seems to be quite the AspectJ expert. He mentioned that he wrote a book for Manning and has mentioned a couple of his contributions to AspectJ in this presentation. I admire authors that write and contribute to projects at the same time. It's often an indicator that the person knows what the hell they're talking about.

This afternoon's first session choices are as follows: JSF Advanced Topics (Geary), Intro to J2EE Web Services (Monson-Haefel), JSR166 (Glenn Vanderburg), Rhythm (Brian Boelsterli) and GUI Development (Ben Galbraith). Web Services and Rhythm are 3 hour presentations, so I might stay away from those - that's just too long for me. Now that I'm sitting in the 2nd half of a 3 hour presentation - it seems that these sessions are best attended in the first half. It's almost as if the presenter is trying to find things to talk about in the second half. Or maybe AOP is just a boring-ass topic. ;-)

I'd like to go to Brian's talk on Rhythm, since he's a good friend and mentor of mine. But then again, I learned Rhythm from him - and use it daily - so I don't know that I'd get anything out of it. Advanced JSF looks good, maybe I'll go to that one. For the 2nd session this afternoon, I'll probably attend Howard's Creating Powerful Web Forms with Tapestry. Maybe I should stick with JSF and Tapestry and make it a web-intensive afternoon. Both presentations are even in the same room!

Posted in Java at May 22 2004, 12:29:31 PM MDT 4 Comments