Learning JSF from scratch – best articles and resources

I’ve been looking around for JSF Tutorial resources and books to get up to speed with JSF. There are a number of articles on sites, but the majority are tied to wizard-based approaches in various IDEs – the problem with these is once you’ve clicked through the wizards and generated the code you realy are stilll none the wiser – what does the generated code do? (One of the most impressive wizards has to be the Netbeans 5.5 wizard – JSF Pages from Entities, which generates JSP pages and Controllers from EJB3.0 Entity beans, which can also be generated from a database schema – very impressive).

I know the point of JSF is that it is intended to be used in conjunction with an IDE to paint the components on your pages etc, but I like to have a deeper understanding of what is going on under the covers.

The best tutorial resource I’ve found so far is this tutorial on the Exadel site. Exadel have a fullfeatured Java IDE, but this tutorial can be followed without the need for using their (or any) IDE to generate any code. The article is in two parts – firstly it covers a brief into to JSF, then walks you through a simple 2 page JSF app, using Managed Beans. The second part of the app introduces validation in JSF. It’s a shame the tutorial does not go any further than this as it is very well written and easy to follow (without a lot of the fluff in some other tutorials).

I’ll be adding some additional resources here in the next couple of weeks.

“What’s the greatest software ever written?” – InformationWeek

This article was mentioned on this week’s JavaPosse podcast, and is an interesting ‘top 12’ of the most influential software systems ever written, according to their historical impact and longevity.

Interesting to note, the author ranks Java in the top 5, for it’s use of the Virtual Machine giving platform independence, the concepts of the Applet sandbox, and the fact that imitation is the sincerest form of flattery – Microsoft borrowed the concepts of the Java Platform by implementing their own virtual machine as an integral part of the .NET platform (the Common Language Runtime), and then developed their own Java-like language, C#. Interestingly enough though, Microsoft seems to have missed the whole point about platform independence by only developing .NET for the Windows platform, but then when you control the desktop world with Windows why would you want to support any other platform?

Check out the rest of the list for some interesting computing history.

Open Source Java to have little impact on end-user developers

Since Sun’s announcement this week of their concrete plans to Open Source the javac compiler and the HotSpot VM, I expect there has been some panic in some circles discussing what this means for current and future Java developers and projects.

As summarized in this news item on news.com, the impact is likely to be neglible to end-user developers, and current and/or future projects using Java. The main difference will be that you have the option to commit features and/or bug fixes back to the source. In reality, a much higher percentage of users of open-sourced software just use the software as it is – only a small number ever get involved in the ‘nuts ‘n bolts’ and become code submitters.

This should be seen as a good thing for Java as it will increase choice (who’s VM implemenation do I want to use?), and through competition keep people from becoming halfhearted about their VM implementation. Even up until now there have been commercial VM implementations from different vendors (BEA’s JRockit, IBMs VM), as well as ‘based-on’ Java implementations, which for legal reasons are not allowed to call themselves ‘Java’, but are definitely based on the language (eg Waba VM for handheld devices) and even based on the Java platform such as Microsoft’s Common Language Runtime (CLR), which is arguably the same concept as the Java VM, together with the C# language and a number of other languages which can be compiled to run on the same CLR.