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 web frameworks comparison". 2,229 entries found.

You can also try this same search on Google.

[ANN] Cargo 0.2 Released

Download · Release Notes · Learn More · Project Weblog. I've been looking for something like Cargo for a while now - mainly so I could provide an easy way to test JSPs (and therefore the whole app) in-container. For the last couple of years, I've been using Cactus' <runservertests> task, but it requires you to configure your own startup and shutdown targets - which can be difficult for the different containers. Cargo makes this easy. So easy that I've added it as a topic to Chapter 8 of Spring Live. BTW, the MyUsers sample app shows you how to use jMock and Easy Mock for isolating Manager tests and Action/Controller tests - something that I might eventually move to with AppFuse.

In 1.5, AppFuse's build.xml is tightly coupled to Tomcat for running Cactus tests and Canoo WebTests. There are only a couple of Cactus tests in the Spring and WebWork versions - LoginServletTest and ActionFilterTest and I believe I can use Spring Mocks to refactor those and test them out-of-container.

Using Spring's ContextLoaderPlugin for Struts, I should be able start testing the Struts Actions using MockStrutsTestCase too. This means that the only in-container tests will be Canoo WebTests. As part of 1.6, hopefully you'll be able to run the "test-web" target sans container. Right now it sounds like quite a challenge, but being able to run Spring's Controllers and WebWorks Actions out-of-container is a really nice feature. Furthermore, removing Cactus as a dependency would open the doors for using JDK 5.0.

I'm also hoping to add support for switching containers - by running a simple script that nips and tucks the build.xml. For 1.6, I'll try to add an installer for Resin. If it's easy, I might take a stab at Jetty and Orion too.

Update: Cactus is gone - there's no need for it anymore as all actions/controllers, filters and listeners can be tested out-of-container. The best part is I didn't have to change any application code - just a few tests. Sweet!

Posted in Java at Oct 03 2004, 04:15:48 PM MDT 2 Comments

The Beauty of SiteMesh

I'm pumped that I recently switched from Tiles to SiteMesh in AppFuse. Not only was it easy to learn when I integrated it into Equinox, but it easy to replace Tiles with SiteMesh in AppFuse.

The best part of SiteMesh is once you have it setup and configured, you rarely have to muck with it again - it just works. In fact, it's so non-obtrusive that when I re-worked all AppFuse's tutorials last week, I was able to delete a whole tutorial. That's right folks, by removing Tiles and going with SiteMesh - the number of tutorials dropped from 5 to 4. Reduction in code and words needed to explain it is always a good thing.

Furthermore, SiteMesh continues to be evolving and getting better. Good stuff.

BTW, did you know you can use SiteMesh-style templates in your Roller blog? I'm using this feature on JRoller and it works great.

Posted in Java at Oct 03 2004, 11:39:38 AM MDT Add a Comment

AppFuse 1.6 almost done

I spent many hours and quite a few late nights this week working on AppFuse. It's funny how little sleep you can live on when you're working on something you're passionate about. There's only a few items left on the 1.6 roadmap, so I hope to do a release in the next week or so.

The major new feature in 1.6 is WebWork as a web framework choice. If you'd like to dig in and take AppFuse+WebWork for a test-drive, checkout AppFuse from CVS and execute "ant install-webwork". From there, the tutorials are a good place to start. The QuickStart Guide has more detailed instructions.

If you don't want to do the DAO and Manager stuff, and you'd rather just dig into WebWork, you can download the files from the first two tutorials and extract them into your project.

For a complete list of changes (so far) in 1.6, see the README.txt in CVS. You can also checkout the following demos:

I'll try to write up a detailed post about my WebWork experience in the next couple of days. In the meantime, let's just say I dig it.

Posted in Java at Oct 02 2004, 03:45:49 PM MDT 5 Comments

Playing with JDK 5.0 and Tomcat 5.5.2

I did some experimenting this evening with JDK 5.0 and Tomcat 5.5.2. The good news is that AppFuse compiles fine with JDK 5.0 and runs on Tomcat 5.5.2 nicely too. Here's a couple of things I found:

JDK 5.0
I received a number of interesting errors from the new JDK. Here's one of them:

   [javac] Note: Some input files use unchecked or unsafe operations.
   [javac] Note: Recompile with -Xlint:unchecked for details.

I received a few other messages that were deprecation warnings. The wierd thing is that it was telling me what's deprecated in HttpServletResponse, rather than what's deprecated in my code. Huh - what's the point?

Unfortunately, I found that Cactus won't run on JDK 5.0. Too bad, everything else seems to work fine.

Tomcat 5.5.2
I like the speediness of the new Tomcat, but I was disappointed to find out that they changed the DTD for the context.xml file. The old one works fine on Tomcat 4.1.x and 5.0.x, but you have to make some modifications for it to work on 5.5.x. To be fair, the new syntax is shorter and more concise. I've updated AppFuse's build.xml to detect Tomcat 5.5 and swap context files as appropriate.

Because of the Cactus bug, I think I'll be sticking with JDK 1.4.2 and Tomcat 5.0.28 for now - but it's cool to know that everything else will work once Cactus is fixed.

Posted in Java at Sep 30 2004, 11:32:03 PM MDT 6 Comments

[ANN] Struts Menu 2.3 Released

Download · Release Notes. This release's major feature is the complete de-coupling from Struts - so that no struts.jar is required in the classpath anymore. Of course, if you have it in there, it's used as before. This release was primarily motivated by my need to include this in the WebWork version of AppFuse. In addition, I fixed a lot of bugs that I never even realized were entered. I'm monitoring the tracker's now - hopefully the delay won't happen again.

Additional Struts Menu Links:

Posted in Java at Sep 27 2004, 11:08:07 PM MDT 34 Comments

WebWork's Validation and SpringObjectFactory

For the last couple of nights, I've been wresting with WebWork's validation framework and trying to get it's client-side stuff to work with AppFuse. After much frustration, I finally figured it was caused by the SpringObjectFactory class. By using this patch, I was able to get regular client-side validation to work, but not the VisitorFieldValidator - which is what I'm using for almost all validations.

Since I've been done with the WebWork integration into AppFuse for a few days now, I think it's time to cut my losses and start working on other stuff for the 1.6 release. Hopefully someone will figure this out someday, but in the meantime, the server-side validation should satisfy most requirements.

In other words: there will be no client-side validation for WebWork in AppFuse 1.6.

Update: After playing a bit more tonight, I almost added client-side validation by specifying the validation rules per-action rather than per-POJO. Then I discovered that the client-side validation has no way to cancel its invocation. With Commons Validation, you can add an onclick handler to a submit button (onclick="bCancel=true") to cancel client-side validation.

Posted in Java at Sep 27 2004, 06:09:31 PM MDT 2 Comments

An ORM Standard: EJB and JDO cooperating?!

Dion mentioned this might happen: Happy Harmony for EJB3 & JDO. This is very cool IMO - and I hope it works out. I'd love to see a standard way to map POJOs to databases. The best part is both camps hope to move quickly on this.

The technical objective for this new POJO persistence model is to provide a single object/relational mapping facility for all Java application developers that works in both J2SE and J2EE. The work will be done within the J2EE 5.0 time frame.

Posted in Java at Sep 24 2004, 04:29:28 PM MDT 2 Comments

Damn

It's 8:20 a.m. and I still haven't gone to bed yet. The good news is I got a lot done on Spring Live and AppFuse in the last 10 hours. I guess I just lost track of time...

Posted in General at Sep 23 2004, 08:20:02 AM MDT 4 Comments

F3 Kills XP

Here's a good one for you. I've been trying to hack my register on Windows XP to enable InnoDB tables in MySQL (which doesn't seem to be working). When I hit F3 to search for the next instance of "mysqld-nt.exe" - it kills my machine. The screen just goes dark and seemingly shuts down (though the power light is still on). If I press the power button, it'll power off fully. Of course, pressing it again powers it back on again. Wierd - guess it's time to switch to OS X for the day.

Thinking out loud: Maybe I should switch AppFuse to using PostgreSQL by default so users don't have to jump through hoops to get transactional tables.

Posted in Java at Sep 22 2004, 12:51:15 PM MDT 20 Comments

There's a new sorting and paging taglib in town

From the Apache News Blog, I found there's a new sorting and paging taglib in town. We already have the Display Tag and the Value List Handler, but now we have the Data Grid. It looks pretty good too - although it doesn't seem to support/enforce XHTML. For your viewing pleasure, I've setup a demo. To be fair, you can also checkout the Value List Handler Demo and the Display Tag Demo.

Posted in Java at Sep 16 2004, 09:15:54 PM MDT 19 Comments