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 "jsf". 312 entries found.

You can also try this same search on Google.

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

Going to work for Microsoft

I received a fair amount of feedback from yesterday's post. A few folks sent e-mails asking me to partner with them to start a company, and a couple of companies called claiming they could set me up with my "dream job". The call I didn't expect was from Ashwin Karuhatty of Microsoft. Ashwin is the Developer Evangelist that invited me to the Developer Summit in Redmond a few weeks ago.

He offered me a position with Microsoft being a Developer/Evangelist working on the Visual Studio Team to integrate Ajax-ish components into .NET. I've been doing a lot with Ajax stuff lately, and really enjoying myself, so I've accepted the position. I just submitted my two-weeks notice to my Project Manager and will become a Microsoftee on April 11. For the first 2 months, they're going to let me work out of my house, with an eventual move to Redmond, WA. I'm pretty excited about the move - both my parents and my sister live w/in 4 hours of Redmond. Sure it rains a lot there, but having family so close should make up for that.

If you have any suggestions for Ajax Components in Visual Studio, let me know!

Posted in Java at Apr 01 2005, 05:56:41 AM MST 35 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

Ditchnet.org: JavaScript tips and a cool Tabs Tag Library

Thanks to a post to the Struts Menu Mailing List, I discovered a nice blog about JavaScript and DHTML. Not only does it seem to have lots of good tips and tricks, but its author also has a couple of cool menu examples:

Nice work Todd!

Posted in Java at Mar 24 2005, 09:58:46 AM MST 7 Comments

Trim Spaces in your JSP's HTML

One of the annoying things about JSPs is all of the dynamic (non-rendered) parts of the page still produce line breaks. This means that if you do a view-source, you'll likely see large blocks of whitespace.

The good news is you can get rid of this whitespace if you're using Tomcat 5.5.x. Just locate the "jsp" servlet in $CATALINA_HOME/conf/web.xml and add the following <init-param>:

    <init-param>
        <param-name>trimSpaces</param-name>
        <param-value>true</param-value>
    </init-param>

I tested it and it works great. This begs the question - why isn't this on by default? Source: Struts Mailing List.

Update: JSP 2.1 adds the ability to trim whitespaces.

Posted in Java at Mar 23 2005, 10:24:58 PM MST 39 Comments

David Geary won't learn Tapestry, but he'll write a book about Rails

Sorry David, but I have to call you out on this one. Yesterday, you wrote a long post about how you won't use Tapestry b/c you have bills to pay.

Do I use Tapestry? Heck no. I have a mortgage to pay. Besides, I'm so comfortable with JSF that I don't know if it'd be worth the investment for me to switch to Tapestry. Also, JSF already enjoys more industry support and that gap will widen considerably over the next couple years as Tapestry maintains a small but rabid group of followers in a niche market, whereas JSF will dethrone Struts as the reigning king of Java-based WAFs. JSF will eventually have support for HTML views and custom components devoid of Java code, in addition to many other cool features such as built-in AJAX support and client-side validation.

Today we find that you're writing a book on Rails. So rather than spending the time to learn Tapestry b/c it doesn't pay the bills - you're going to learn Rails? What makes you think it will pay the bills better than Tapestry? Is Shale still the next big thing for you - or do you just like writing books? ;-)

Posted in Java at Mar 22 2005, 10:48:21 AM MST 14 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

Spring MVC vs. WebWork Smackdown at OSCON

Matthew Porter and I are going to try something a bit different at this year's OSCON. Rather than just getting up in front of the crowd and spewing our technical know-how, we're actually going to make a go at providing some entertainment. I've been to a lot of conferences and I'm tired of just watching someone talk - I'd rather see a good presenter over a knowledgeable presenter. This has inspired our OSCON 2005 talk:

This presentation has a unique delivery style. Rather than one person doing a comparison, there are two presenters - each which is an expert in the framework they're defending. The presentation is delivered as a friendly comparison/debate, which hopes to add some humor in to make it fun for the audience.

Java web developers often have a difficult choice when choosing a web framework these days. There are currently more than 35 open-source Java web frameworks available. How do you which one to use for your project? This presentation picks two of the most popular frameworks, Spring MVC and WebWork and compares and contrasts their features. Topics will include:

1. View options - i.e. Velocity, JSP, HTML Templates (ala XMLC), etc.
2. Testability - How easy is it to unit test with JUnit, with examples
3. Type conversion - i.e. Date, Integer, etc.
4. Validation - How do do it, stengths and weaknesses
5. Tools Support
6. Strengths and Weaknesses

Now the pressure's on - we have to both teach and entertain the audience. Please feel free to post your experiences with Spring or WebWork and why you think one is better than the other.

Posted in Java at Mar 09 2005, 09:31:36 AM MST 25 Comments

Simple Web Framework

You gotta admit, the Simple Web Framework does look interesting with all of the recent Ajax talk:

The Simple Web Framework (SWF) is an event based framework targeting Struts developers who want to build rich Web applications but do not want to migrate to JSF. The SWF is built upon the same Jakarta commons basis as Struts, but uses a different request processor (front controller.) The SWF event model supports form/submit style event posting, similar to VB.NET or JSF, as well as XmlHttpRequest based event posting with In place Page Updating (IPU) rather than page reloading, similar to the techniques underlying gMail. Read the SWF Overview for additional information.

My hope is that all web frameworks have some support for IPU by the end of the year. Then I won't have to build it into AppFuse. ;-)

Posted in Java at Mar 07 2005, 07:57:56 AM MST 3 Comments