Matt RaibleMatt Raible is a Web Developer and Java Champion. 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.

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
Comments:

Matt did you see the HtmlTemplate stuff for JSF from Hans Bergsten? http://www.onjava.com/pub/a/onjava/2004/06/09/jsf.html?page=2 -Matthias

Posted by Matthias Wessendorf on April 14, 2005 at 09:13 AM MDT #

Yeah, I've read the article and I'm aware it's possible. However, I want it to be a core part of JSF so I don't have to write tag libraries to do everything. Editing Tapestry templates, or even JSPs with Spring/WebWork/Struts, is easier than editing the tagsoup JSF JSPs. If the tools where good enough (and supported my preferred middle-tier/backends), I might think different.

I should mention that even though I hate the tagsoup, learning JSF after using Struts/Spring/WebWork was much easier because I could re-use my JSP knowledge. With Tapestry that wasn't possible. Another thing I find amusing about JSF is that Managed Beans are almost *exactly* the same as WebWork Actions. When I integrated JSF into AppFuse - I was able to copy my WebWork actions and only change a few things.

Posted by Matt Raible on April 14, 2005 at 09:17 AM MDT #

Glad you like it so far.
  • Sorry about the buzz thing; we should have asked you first. We'll remove it this weekend.
  • We are looking for people that want to write a book about Wicket.. interested ;)?
  • There is work in progress on the tutorial on our Wiki. We agree it is by far not sufficient, and we *do* plan to have at least a decent tutorial soon.
The Velocity panel can be used for CMS like applications where part of the content is pulled from the database, and you want to provide the content maintainers with basic scripting and some context objects. I'll use it for a pop venue CMS project (that is used by four dutch pop venues btw)

Posted by Eelco on April 14, 2005 at 09:19 AM MDT #

Try a google search for wicket site:raibledesigns.com and this is the first hit: http://raibledesigns.com/page/rd?anchor=if_you_could_add_another The quote you mention above is in the comments left on your page. The wicket site should state that it is a comment and not from you personally.

Posted by Jeff Sheets on April 14, 2005 at 09:19 AM MDT #

Thanks for your nice comments. I've forwarded this blog entry to the designer responsible for the site look & feel, and he's flattered :). Did you know that the site is generated using Maven? I think this is the first (open source) project actually proving that Maven can be used in a good way. Concerning the lack of a book: the framework is just reaching 1.0, and before that too much was changing for an author to consider writing a book. An article will be available pretty soon giving a more detailed look into Wicket. I am contemplating to write a book for Wicket, however this is a huge undertaking and I think Wicket needs to be final before starting to write one.

Posted by Martijn Dashorst on April 14, 2005 at 09:28 AM MDT #

I hadn't heard of Wicket, I'll definitely go take a look. Thanks for bringing it to my attetion! Also, Ruby on Rails will now have 4 books by the end of the year (Manning now has one in the works, too).

Posted by Curt Hibbs on April 14, 2005 at 09:58 AM MDT #

My first post didn't seem to take. Trying again...

My bad. That quote was my work and nobody else's and I have removed it. When I said "post" I meant "comment". I wasn't trying to imply you said that, Matt... I just wasn't thinking too carefully about how people would read it.

As far as books go, I think often a project's originator writes the book about it. But I'm definitely /not/ going to write a book about Wicket. The reason for that is not that I think Wicket is unworthy of a book. On the contrary, I think it's one of the more interesting new technologies out there (if I do say so myself). The reasons that I don't want to write a Wicket book are that I have no time to do it now, I generally do not enjoy the process, the User's Guide I started 9 months ago has little to do with Wicket today and ultimately the economics of writing a book do not make any sense (to me). I'm definitely hoping someone else will write a book about Wicket and I would certainly support such an effort as much as I can. For myself, I'm hoping to find some work in the next few months doing Wicket consulting somewhere. Ideally, I might like to work overseas on Wicket project. ;-)

Regards,

     Jonathan

Posted by Jonathan Locke on April 14, 2005 at 12:28 PM MDT #

I have used Tapestry, and I do hate that it has a high learning curve. since wicket seems so simple, so i take a loot at wicket. but while I have looked wicket, there is some problems I do Hate. first since the form rendering and submit all happen in one page, it seems also use form rewind like tapestry(correct me if I'm wrong,I have looked at source and it seems like that), but *Form Rewind* idea is really bad ever since it's in Tapestry, b/c it's too unintuive and it's really easy to make mistake when you're constructing a list in a page.

And also the state in session stuff.I try out wicket demo and find that it's really irritating to stale page.say, sign in page. when I'm signing, and click back button, and it won't let me sign in again, it always say the page's stale.(and also the list page) , try click edit/remove and click back button.I guess it's too irritating and unfriendly to behave like that.

Third, compared to the templating stuff, it's more rigid to use listener method in Java , templating stuff can make more dynamic page than this. for example, in webwork, you can put some template in database and render it, constructing a highly dynamic page( very useful in portal/portlet developing), and since its form action url is just string, you can put it in template.but if you use Listener stuff, you can't construct that b/c you have nowhere to dynamic construct some listener method.

Yes, I admit the component approach is really appealing, but I guess it has some drawbacks when comparing to classic way . so I'm sticking with webwork now ,which is really really a great web framework.

  femto
  http://femto.blogdriver.com

Posted by femto on April 14, 2005 at 10:24 PM MDT #

Why do you assume we do anything like Tapestry's form rewind? Wicket does not take this approach. Can you submit a bug describing how to reproduce the stale page problems you're seeing in the demo? I tried logging into the library and going back to the sign in page and it worked fine for me. I don't really see why it's either/or with templating. We have a VelocityPanel in the wicket-stuff project on sourceforge. I don't see why we couldn't also have a WebWorkPanel as well, if it's a well behaved and modular templating engine. Best, Jonathan

Posted by Jonathan Locke on April 15, 2005 at 12:07 AM MDT #

I guess you mean by the 'form rewind' what we call the 'undo' recording. This undo feature IMO is good as it is relatively cheap (compared to serializing your whole component tree), and it is quite configurable; as a user you can decide whether it happens at all, and if the recording is supposed to happen, you can customize the way that it is done.

Agreed that if you use large list, recording is not allways what you want. You can turn it off (and stop supporting the back button), or you can externalize the state of your component by having everything you need in your URL. The latter is what you are used to by using web mvc frameworks. You can do that now in Wicket with some work, but it is on our todo list for 1.1 to make this easier.

I wonder what part of the demo you are talking about. With Wicket, pages are only marked 'stale' when the were explicitly set to that state. Since we use the 'undo' recording as the default, you should normally be able to use the back button transparently.

It is very easy to get around what you call the rigid structure. We even provide an out-of-the-box component for it (Velocity Panel), but if you look at that code, you'll see how easy it is. In case you want to make your custom templates actually *listen* to e.g. form changes, you could quite easily use bookmarkable pages (which take in any number of request parameters) for that.

Sure, there's pro's and con's to everything. I know, some things *at first sight* are easier using a web mvc framework. However, I know now from experience that that approach is just not suited for developing complex user interfaces with large teams. I want a framework that enables me to write good OO code and not have me ending up in a nightmare of chaining commands/ using interceptors to do stuff the framewok should have done for me in the first place. Also, not being able to reuse components has been a major disadvantage for some of our projects. That is just something you need on large projects, especially when you have several projects which share commons business funcionality. Finally, we give transparent clustering support special attention, which is something that will allways be difficult to manage (especially in large teams) with (web mvc) frameworks that don't shield you from the gory details of state management.

Posted by Eelco on April 15, 2005 at 12:35 AM MDT #

after hours of downloading many files, I try out the rc1 example. the stale page behavior has change to another behavior while still irritating. in signup page, if you sign in and click back , then whatever you put in the form will sign in you again. and the list page, if you remove one book, and click back , and then click that remove again, it will remove other book.so you can remove one specific book to remove all book. surely this behavior is very dangerous if user suddenly click back button.

Posted by femto on April 15, 2005 at 02:42 AM MDT #

Ah, that was a bug in the example (bad usage pattern, which should have been shielded for by better documentation), thanks for finding it. I'll fix it in a minute. Anyway, if you're happy with your current framework, that's fine right? I/ we are not looking to bash other frameworks. We are just trying to get developing webapplications to the next level, just as Echo, JSF and Tapestry are doing. And as long as the model for developing web applications doesn't change (and as long as there will be bookmarks and back buttons!) there will be tradeoffs between different ways of creating webapplications.

Posted by Eelco on April 15, 2005 at 03:35 AM MDT #

Post a Comment:
  • HTML Syntax: Allowed