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 "framework". 558 entries found.

You can also try this same search on Google.

JSF needs better tools

In general, I don't like the fact that JSF is designed for tools vendors. However, after seeing a Visual Studio .NET 2005 demo - I can understand why that's Sun's motivation. Visual Studio is *very* cool and seems to greatly simplify ASP.NET development. That's why it's disturbing to see Why do JSF tools suck so bad?.

If the JSF Tools are going to suck (compared to Visual Studio), why don't we just make it more developer-friendly (instead of being so tools-friendly)? Of course, the better solution is to make the tools better, but that doesn't seem to be happening. Maybe we should just try to get Visual Studio to support JSF. ;-)

Posted in Java at Apr 19 2005, 09:38:07 AM MDT 14 Comments

How do we bake Ajax into Struts and Spring MVC?

I see a trend happening here. The next version of WebWork, as well as Tapestry and JSF are all embracing Ajax technologies. By "embracing", I mean they're not only using them, but they're making it easier for us to use them.

After using XmlHttpRequest in my last two projects, I think this is a must for Struts and Spring MVC as well. The technology is very cool and customers absolutely love it.

The question is how do we bake it in? WebWork makes it easy because its tag libraries are backed by customizable Velocity templates. With Struts and Spring MVC, it seems the best way would be to use tag libraries, but maybe there's better alternatives. Do they each need an AjaxAction/AjaxController or something that allows DWR-type stuff?

What are your thoughts? You might argue that using DWR should suffice, but w/ everyone else (even Rails) baking it into the framework - I see no reason why Spring MVC and Struts shouldn't do the same. You are using these frameworks to develop kick-ass UIs aren't you?

Posted in Java at Apr 15 2005, 06:20:28 AM MDT 13 Comments

Why Wicket looks cool

I like the looks of Wicket for a couple of reasons - without even using the framework yet.

  • Its project homepage looks good. If you're using a Java web framework, chances are you're developing UIs too. If you don't know how to make sites look good - it's time to find a new line of work IMO. Of course, learning how to make good-looking UIs is another option. ;-)
  • Its Wicket Stuff project. It provides Hibernate, fValidate and Spring integration. It also appears to provide an option to use Velocity for your templates. I'm not sure what the Velocity integration provides - since HTML templates (ala Tapestry) should do everything that's needed.

What I don't like about the project:

  • The Buzz page has a quote that's (apparently) from this site. Unfortunately, it looks like I said it - which I didn't.
  • There's no books being written about it. If it's really that good - where's the books? Ruby on Rails will have 3 by the end of this year. Any good framework should inspire books to be written about it.
  • The Wicket Stuff project has no documentation. Javadocs don't cut it. Tutorials are king.

I hope this project succeeds - Tapestry needs some competition and I don't think JSF is providing it. If JSF adds HTML Templates (or I figure out how to use Java Studio Creator to manage an AppFuse+JSF project), that's a different story.

Posted in Java at Apr 14 2005, 08:37:03 AM MDT 12 Comments

Closures with CollectionUtils

Here's a pretty nifty trick for using closure's with Jakarta Commons CollectionUtils:

List list = new ArrayList();
...
CollectionUtils.forAllDo(list, new Closure() {
    public void execute(Object obj) {
    // execute something for each item obj
    }
});

I wonder if there's any performance hit from doing things this way vs. a good ol' Iterator? Hat tip to Anand Subramanian.

Posted in Java at Apr 13 2005, 08:49:07 AM MDT 18 Comments

It's time for some productivity

Just last night I was wondering how I was going to finish up AppFuse 1.8 and Spring Live's April update in the next 1 1/2 weeks. This morning, I got up early (5:00 a.m.) to get back to work on Spring Live, and found that Julie was already up. She was fed up with the fact that Jack was coughing up a storm and both kids are still sick. They've been sick off-and-on since January (but mostly on), and she's had enough.

Julie tooks Jack to the doctor a month ago and his recommendation was a warm and humid climate. She asked him, "like Florida?" - to which responded, "Yes! That's a great idea!" Since then, she's bought a humidifier, taken showers with Jack every morning and even hit him with the nebulizer a few times. No dice, he's still coughing and wheezing. At 5:00 a.m. this morning, she was fed up and said "I'm going to Florida." 20 minutes later, she'd bought her tickets and we left for the airport around 6:30.

While I'll certainly miss everyone, it's a golden opportunity for me to work on AppFuse and Spring Live and get caught up this weekend. Of course, I have to work an extra day in the mix to pay for the (spendy) flights, but it's nice being a contractor and having that as an option. Now the problem is I find an empty house often leaves me with little motivation. I tend to enjoy renting movies and going to bed early when the family is gone. Of course, with DU being in the Frozen Four tomorrow (and hopefully Saturday) - there's even more motivation for more fun and less work.

Regardless of the motivation I have to take part in my extra-curricular obligations (AppFuse and Spring Live), it's nice to know I have a great opportunity to work on them this weekend. Staying up late to work on this stuff just isn't any fun.

Posted in General at Apr 06 2005, 04:10:05 PM MDT 7 Comments

Open Source CMS based on AppFuse

If you're looking for AppFuse examples or a Java-based CMS (Content Management System) - you might want to checkout AtLeap.

Blandware AtLeap is a multilingual free Java CMS (Content Management System) with full-text search engine. Blandware AtLeap is a framework which allows you to rapidly start your own Web application.

The screenshot looks pretty cool. According to Andrey Grebnev (the project's owner), this project is based on AppFuse 1.5 with pieces from 1.6.

Posted in Java at Apr 05 2005, 02:54:52 PM MDT 1 Comment

Upgrading to Spring 1.2 RC1 and Hibernate 3.0

I spent an hour or so on Friday upgrading Equinox and AppFuse to use Spring 1.2 RC1 and Hibernate 3.0. The upgrade for AppFuse was relatively painless, but the upgrade for Equinox failed. Equinox uses HSQLDB version 1.7.1. The main reason I use the 1.7.1 version is to avoid the infamous "lock exception" that the new HSQL version throws in standalone mode. With version 1.7.1, it seems you could have more than one connection open to the file-based database w/ no problem. I really like this feature in 1.7.1 b/c it means you can run the app in Tomcat and browse the database at the same time.

So what's the problem? Why can't I just use Hibernate 3.0 with HSQL 1.7.1? The problem is I like using the following setting as part of my "sessionFactory" bean:

<prop key="hibernate.hbm2ddl.auto">update</prop>

This setting will update the schema when you change mapping files, but otherwise leave the data intact. Furthermore, it'll actually create the tables if they don't exist. Not so with Hibernate 3. With Hibernate 3, using "update" doesn't create the tables. Of course, upgrading to a newer version of HSQL fixes the problem, but then I get the lock problem. My eventual solution will probably be to hack Hibernate or HSQL, but for now I just won't upgrade Equinox. Another solution might be to look at some other embedded databases. Of course, I could also require users to install a database to run Equinox - but I like having the "no setup required" feature.

Regardless of the problems I experienced with HSQL and Hibernate 3, upgrading AppFuse was pretty painless. Here's the set of instructions I sent to the mailing list:

  1. Download Hibernate 3.0 and Spring 1.2 RC1.
  2. Create a lib/spring-1.2-rc1 and put the following files in it (NOTE: spring.jar now contains aopalliance.jar):
        acegi-security-0.8.1.jar
        commons-codec.jar
        ehcache-1.1.jar
        license.txt
        spring-mock.jar
        spring.jar
  3. Create a lib/hibernate-3.0 and put the following files in it:
        hibernate3.jar
        lgpl.jar
        lib/antlr-2.7.5H3.jar
            antlr.license.txt
            asm.jar
            c3p0-0.8.5.jar
            c3p0.license.txt
            cglib-2.1.jar
            dom4j-1.5.2.jar
            jta.jar
            jta.licence.txt
            oscache-2.1.jar
            swarmcache-1.0rc2.jar
  4. Change the versions for Hibernate and Spring in lib/lib.properties. Also, change the hibernate.jar property to reference hibernate3.jar instead of hibernate2.jar.
  5. In build.xml, change the "package-web" target to include all the Hibernate JARs instead of just specific ones:
    <lib dir="${hibernate.dir}/lib" includes="*.jar" excludes="jta.jar"/>
  6. Change web/common/taglibs.jsp to use uri="/oscache" for the oscache taglib.
  7. Search for "net.sf.hibernate" and replace it with "org.hibernate".
  8. Search for "orm.hibernate" and replace it with "orm.hibernate3" (for Spring).

The major difference for Hibernate is you no longer need odmg-3.0.jar, but you do need asm.jar and antlr-2.7.5H3.jar. Let me know if you find any issues with these instructions. You could also just download AppFuse from CVS.

NOTE: The CVS version of AppFuse has an XDoclet version that only supports generating Hibernate 2.x mapping files. I believe there is support for Hibernate 3 in XDoclet's CVS - but I haven't had a chance to upgrade yet.

Update: Here's more on the HSQL bug that's not really a bug (according to a comment on the post). Regardless of whether it's a bug or not, it'd be nice to have the 1.7.1 behavior as an option - it's a great feature for get-started-quick apps like Equinox.

Posted in Java at Apr 03 2005, 06:52:52 PM MDT 9 Comments

Ajax components with Tapestry

From the Tapestry User Mailing List, I discovered a cool example of integrating an Ajax component in Tapestry. The code needed to add it looks nice and easy too. Hopefully this will set the groundwork for a plethora of Tapestry/Ajax components.

Posted in Java at Mar 25 2005, 10:06:54 AM MST 4 Comments

Tapestry is the best Java framework available today

David Geary:

So what's the best Java-based framework available today? It's a very close call, IMO, but I'd have to give the nod to Tapestry at the moment. I really like Tapestry's pure separation of HTML and components and the ability to create custom components without any Java code. That gives it an edge on JSF, which, like Tapestry is one of what I refer to as 3rd generation WAFs, that support components and a server-side event model.

He goes on to say that he'll likely continue to use JSF (with Shale) because it pays the bills and will dethrone Struts as the most popular - which will obviously lead to more gigs. I especially like this part of his post:

After I get client-side validation and file uploads added to Shale I want to turn my attention to Tiles integration, AJAX support and exploring Tapestry-like views that strictly separate HTML and component definitions. For me, those are the most exciting areas of Shale.

I agree that JSF definitely needs Tapestry-like HTML Templates. Shale definitely sounds cool, but I find it funny that it takes yet another framework to make JSF usable. ;-) Hopefully Shale will prove a lot of ideas worthwhile and end up as features in JSF 2.0.

Posted in Java at Mar 21 2005, 09:00:52 AM MST 9 Comments

[Microsoft] Day 2 Morning

Looks like I'm going to miss the good stuff today. There's a Company Store visit this afternoon at 5:00 - and they're giving us $120 in credit. Damn, apparently the games are pretty cheap there. They've also arranged for a Longhorn Demo during the company store visit. I did manage to get internet access with my phone and Ben's charger - so I should be able to do some real-time updating this morning.

I think one of the coolest things about this conversation is we're learning about how software is developed on a huge scale. These guys develop more software than anyone else and they do it on a very large scale. Can you imagine developing software for 90% of the computer users out there?! That would be nuts.

Oh boy - now we have an audience member ragging on the guy for Windows. He thinks it should be open source because OSes are going to be commodities soon. Personally, I don't think there's anything wrong with having a closed-source Windows. But I also don't see a problem with closed-source Java. What's wrong with companies making money? The main reason I'm in this industry is to make money - so what's wrong with the corporations doing the same thing?

.NET CLR Architecture

Started work on the Component Object Runtime (COR) back in '97. It was a small incubation project in the MTS group round metadata and compiler integration. Several API's still use the "Cor" prefix and engine DLLs are named MSCOR???.DLL. Apparently, this was all announced at the '98 PDC in Denver. Lots of code/marketecture names to follow: COM3, COM+ Runtime, NGWS Runtime, Universal Runtime (URT) and finally the Common Language Runtime. The big unveiling of CLR was at PDC 2000 in Orlando.

CLR Design Goals: Simplify development and deployment for classic Win32 programmers. Unify programming models, provide managed environment and support multiple languages.

The CRL is Language Neutral and has a commons set of features (i.e. Generics) guaranteed to be in all languages. Supports strongly typed languages, dynamic languages and functional languages. Because compilers are always targeting MSIL and the metadata, you get for free: shared object layouts and cross-language inheritance, exception handling, reflection, remoting and integrated tools for debugging and profiling. MS is very excited about having Jim Hugunin and IronPython on board and they expect to add even more killer features for dynamic language authors in the future. I wouldn't be suprised to see an IronRuby implementation in the next year or two.

CRL Version 2.0: More class libraries: collection classes, serial port, etc. Generics, 64-bit support (IA64, x64). RAD support: Edit and Continue, Just My Code, single-click deployments. SQL Server: fiber mode, integrated security, loading. Avalon, Indigo and Windows Longhorn.

Is this a boring session? Yes, but I'm sitting in the front row today, so it's a bit easier to pay attention and take notes. I'm doing AppFuse development for the most part and taking notes while AppGen tests are running in the background.

The CLR will be hostable in numerous environments: ASP.NET, VSTO for Office, DB/2 Stinger, Oracle 11g and SQL Server 2005. Oracle and DB2 are out-of-process with v1.1, SQL Server will be in-process with v2.0.

ASP.NET 2.0 by Scott Gu

  • ASP.NET 2.0 Application Services APIs: Membership, Role Manager, Personalization, Site Navigation (XML and CMS-based), Database Caching, Health Monitoring. These are all based on a new "Provider Model Design Pattern" that seems to be a set of interfaces that you can easily switch or implement yourself. Out of the box providers: Windows, SQL Server, Access (ha!).
  • ASP.NET 2.0 "Page Framework" Features: Master Pages (like Tiles, moreso than SiteMesh), Themes/Skins, Localization, Client-Scripting (using XMLHttpRequest). Holy shit - the guy said that they're testing their controls, particularly the scripting ones on IE, Safari and Firefox! That's pretty surprising to me.

VS 2005 has a new feature - where you don't need to have a web server installed, it'll work off the file-system. A new project doesn't have any files in its directory - which is definitely an improvement. VS definitely looks pretty slick - you can switch the "compliance-mode" of your page from IE6 to XHTML Transitional. When you switch modes, it changes the code completion attributes - so you'll get much more options for IE6 than you will for XHTML. It also has full code-completion for JavaScript - and the options are based on your mode of operation. Accessibility checking is also included - you'll actually get underlines for elements that don't have all the required attributes. Java needs an IDE like this soooo bad it's not even funny. Can you imagine having full page/HTML validation and code-completion based on doctype?!

Scott did a master/detail screen with VS and made it look damn easy. Most of the audience oohed and aawed. It's cool and all, but the code in the .aspx pages is a lot like JSF - there's hardly any HTML in the pages! It does seem to have much better support for skins and themes - you can easily change the look and feel right in the IDE and there's a whole bunch of built-in themes. The one thing I really like is the page-backing classes have a pre-init() method that can use to initialize properties. JSF really needs something like this. It's a shame that frameworks like Shale have to provide this and it's not a part of the core JSF framework.

ASP 2.0 Beta 2 will ship in the next month. Heh, Scott just gave a demo adding security and authentication in about 20 seconds - complete with Remember Me. There's actually a "Login" control that doesn't everything for you, including validation. The membership system (database) will actually get generated on-the-fly. He follows it up by creating a signup page that creates new accounts in under a minute. I can't really bash on this, writing authentication for Java webapps is definitely harder than it needs to be. Of course, if you use AppFuse, you don't have to write it at all. ;-)

Time to run and catch up with my sister - have a good weekend y'all!

Posted in Java at Mar 17 2005, 09:08:33 AM MST 10 Comments