Author: dashorst Date: Tue Jul 20 20:40:53 2010 New Revision: 965997 URL: http://svn.apache.org/viewvc?rev=965997&view=rev Log: Added directories
Added: wicket/common/site/trunk/help/ wicket/common/site/trunk/help/email.md wicket/common/site/trunk/help/index.md wicket/common/site/trunk/help/irc.md wicket/common/site/trunk/help/reportabug.md wicket/common/site/trunk/help/support.md wicket/common/site/trunk/meet/ wicket/common/site/trunk/meet/blogs.md wicket/common/site/trunk/meet/buzz.md wicket/common/site/trunk/meet/features.md wicket/common/site/trunk/meet/index.md wicket/common/site/trunk/meet/introduction.md wicket/common/site/trunk/meet/vision.md Added: wicket/common/site/trunk/help/email.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/help/email.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/help/email.md (added) +++ wicket/common/site/trunk/help/email.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,4 @@ +--- +layout: default +title: Get help via email +--- Added: wicket/common/site/trunk/help/index.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/help/index.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/help/index.md (added) +++ wicket/common/site/trunk/help/index.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,69 @@ +--- +layout: default +title: Get help +--- + +There are two types of help available for Apache Wicket: + +1. Support from the Apache Wicket open source project + +2. Commercial Support + +## Support From the Apache Wicket Open Source Project + +If you are experiencing problems using Wicket please report your problem +via the Issue Tracker. You may also find it useful to discuss your issues with +the community on the Discussion Forums or join one of the Mailing Lists. Below +are some resources to check before asking for help: + +* Issue Tracker +* Discussion Forums +* Mailing Lists +* FAQ +* IRC + +Before asking for help with your issue, it's a very good idea to search for +your issue in the mailing list archives (via the Discussion Forums) and the +FAQ. The majority of issues can be solved in this manner without having to +send an email to the mailing list. If you don't find an answer, use the +guidelines below when writing the e-mail. + +### How to Get Help + +Whenever you are reporting a problem, please be sure to include as much +information as possible; the more we know, the better the chance of a quicker +resolution. + +* which version of the software + +* what platform and JDK + +* any particular container being used - if so what version + +* stack traces generally really help! If in doubt include the whole thing; + often exceptions get wrapped in other exceptions and the exception right + near the bottom explains the actual error, not the first few lines at the + top. Its very easy for us to skim-read past unnecessary parts of a stack + trace. + +* log output can be useful too; sometimes enabling DEBUG logging can help your + code & configuration files are often useful + +### How to get help faster + +We can help you much quicker if you try the following + +* provide us with a JUnit test case that demonstrates your issue. e.g. if you + think you've found a bug, can you create a test case to demonstrate the bug? + +* submit a patch fixing the bug! (We also buy you beer when we meet you if you + submit bug fixes for memory leaks or performance related issues, if you can + run a profiler on your test case and attach the output as a file (or zipped + file if its huge) to the JIRA we can normally fix things much faster. e.g. + run JProfiler or YourKit on your code and send us the output. To find memory + leaks its quicker to resolve if you can tell us what classes are taking up + all of the RAM; we can normally figure out whats wrong from that. + +## Commerical Support + +TODO \ No newline at end of file Added: wicket/common/site/trunk/help/irc.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/help/irc.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/help/irc.md (added) +++ wicket/common/site/trunk/help/irc.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,4 @@ +--- +layout: default +title: Get help on IRC +--- Added: wicket/common/site/trunk/help/reportabug.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/help/reportabug.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/help/reportabug.md (added) +++ wicket/common/site/trunk/help/reportabug.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,136 @@ +--- +layout: default +title: Report a bug +--- + +Wicket manages bug reports via the [Apache Jira +site](http://issues.apache.org/jira/browse/WICKET) + +It requires you to register with the site, to avoid spamming, and attribute +credit where its due. It's relatively painless. Much harder is writing a +clear and concise bug report. + +Etiquette for a bug report is: + +1. **Always search for an existing bug report about the issue before adding + your own.** This can be tricky, but several duplicate bug reports just + cause an administration headache for developers. If in doubt you can + always post the details of the bug to the [mailing list](email.html), and + wait to be asked to submit a bug report by a dev. But the jira search + functionality is pretty good, so do have go. +2. **Be clear and concise in your language.** Wording a short but useful + summary, with a description that contains all the steps leading up to the + error plus any extra circumstantial evidence, is not always easy, but its + vital to getting the issue resolved, and really valuable. +3. **Watch the bug.** The developers may ask you for more information via the + issue comments, so its good practices to check in on the issue whilst its + still open. +4. **Don't be shy of maintaining the issue.** If you find its a duplicate of + some other issue that was reported before yours, then mark it as a + duplicate, and watch the original. If you get more info on the bug, add it + as a comment. If it doesnt get noticed by a dev, try submitting a + quickstart or better still a patch. Ask for it to be reviewed via the + mailing list. + +You will be rewarded with [subtle +kudos](https://issues.apache.org/jira/secure/ConfigureReport.jspa?versionId=-1&issueStatus=all&selectedProjectId=12310561&reportKey=com.sourcelabs.jira.plugin.report.contributions%3Acontributionreport&Next=Next) +and the bug is much more likely to be fixed promptly. + +## Build a Quickstart + +See [getting started](/start/quickstart.html) for a good introduction to +building a barebone Wicket project from one command. There is even a tool to +let you customise the command for your project. + +Or you can watch Al Maw's excellent +[screencast](http://herebebeasties.com/2007-10-07/wicket-quickstart) covering +the whole process of installing and running Maven, and getting your Eclipse +workspace set up. + +The Maven command provided there is the quickest way to get a working Wicket +project that you can use to clearly demonstrate a bug. + +Once you have an example that shows the minimum conditions under which the +issue occurs, then you can zip up the project and attach it to the relevant +issue. + +When a Wicket dev [asks you to submit a quickstart](https://issues.apache.org/jira/browse/WICKET-497?focusedCommentId=12521870&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_12521870), +that is what they mean. + +That is far more useful than posting reams of your application code and +telling everyone it doesn't work. The former will help diagnose the problem, +the latter will mainly get you abused on the mailing list. + +## Submit a patch ## + +This is the most involved, but the most rewarding route ;-). +In a nutshell this involves: + * Checking out the Wicket source code from the Subversion repository. + * Building it via mvn or IDE plugin. + * Proving the bug exists, either via a Quickstart, or writing a unit test. + * Submitting your fix as a Subversion patch file. + +This guide will outline how to do it with Eclipse + Subclipse + m2eclipse. +If you prefer the command line, then start here: [http://wicket.apache.org/building-from-svn.html] +If you can provide a walk through for your IDE of choice then please do add it. + +### Setting up ### + +Using an Eclipse 3.4.x flavour of your choice add install the following plugins + +* [Subclipse for accessing Subversion](http://subclipse.tigris.org/) - Eclipse update site URL http://subclipse.tigris.org/update_1.6.x +* [m2eclipse for maven support](http://m2eclipse.sonatype.org/) - Eclipse update site: http://m2eclipse.sonatype.org/update/ + +I usually install the entire Subclipse plugin, and all of m2eclipse except the Project configurators unless I am using a J2EE version of Eclipse. +I had a spurious error when adding the m2eclipse update site, "No repository found at http://www.md.pp.ru/~eu/12/" but it didn't cause any problems with the install. + +### Checking out Wicket from Subversion ### + +* **Add the Wicket Subversion repository** - Navigate to Window > Show + Perspective > Other... > SVN Repository Exploring (eclipse uses the term + perspective to mean a collection of views, and a view is one single panel + with some specific function like the navigator view or the editor view) In + the SVN Repositories tab on the left, right click > New > Repository + Location... and paste in the repository url: + http://svn.apache.org/repos/asf/wicket + +* **Checkout the code** - Click on the new Repository and navigate to: trunk + > right click > checkout as maven project. Some serious churning will now + occur as you download of Wicket source, and then maven crawls the internet + for all the required libraries. Seriously, go for a stroll in the sunshine; + the checkout and build took about 6minutes on my machine, and thats without + maven needing to download anything. + +* **Building Wicket** - All that waiting wasn't in vain, as you should now + have a fully checked out, dependency managed, built, possibly working, + Wicket code base. + +### Kick the tires ### + +* Create a Quickstart via the wicket-archetype-quickstart +* Navigate to the pom.xml in your Quickstart project. +* Set version element to the same value as the one found in the Wicket project pom.xml (e.g. 1.4-SNAPSHOT) +* The plugin should automagically resolve the quickstart's Wicket dependency from the project rather than a .jar +* Find WicketApplication.java +* Click through to WebApplication class from the extends section of the class definition. +* If all is well, you should be taken to the Wicket project .java version of WebApplication rather than a .class file from a .jar + +### Proving a bug exists ### + +* **Writing a unit test with WicketTester** + +### Submitting a patch ### + +* **Extract your changeset into a patch file** - As we don't all have commit + access to the svn repository, we need some other way of getting our changes + to the developers. This is done by making an svn patch file, essentially a + plain text diff, with some subversion specific formatting. With the + Subclipse plug-in creating a patch file is as simple as: + + 1. Right click on the project root (e.g. wicket) + 2. > Team > Create Patch... + 3. Save In File System (and provide a filename, of the form **WICKET-<bug id number>-fix.patch**) + 4. > Next > + 5. Patch Root: Project + 6. Finish, you now have your patch file where you chose to put it in step 3 + 7. Attach it to the relevant bug report with any further information you have Added: wicket/common/site/trunk/help/support.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/help/support.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/help/support.md (added) +++ wicket/common/site/trunk/help/support.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,4 @@ +--- +layout: default +title: Get help from companies +--- Added: wicket/common/site/trunk/meet/blogs.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/meet/blogs.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/meet/blogs.md (added) +++ wicket/common/site/trunk/meet/blogs.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,34 @@ +--- +layout: default +title: Wicket related blogs +--- + +Any (open source) project exists solely because a community wants to support +it. The Wicket community consists of the users and developers. There are many +who want to share their experiences with Wicket and do so on the mailing +lists , on several online media portals (for example The ServerSide and +JavaLobby ), and on their blogs. + +Here is a list of regular Wicket bloggers, consisting of core contributers and enthusiastic users. + +* [Wicket in Action](http://wicketinaction.com/) - Igor Vaynberg, Martijn Dashorst +* [Chillenious!](http://chillenious.wordpress.com/) - Eelco Hillenius +* [Jonathan](http://web.mac.com/jonathan.locke/iWeb/JonathanLocke/Blog/Blog.html) - Jonathan Locke +* [Here be beasties](http://herebebeasties.com/) - Al Maw +* [Jeremy Thomerson](http://www.jeremythomerson.com/blog) - Jeremy Thomerson +* [Codierspiel](http://technically.us/code) - Nathan Hamblen (runs on Wicket) +* [Antwerkz](http://www.antwerkz.com/wp/) - Justin Lee +* [System Mobile](http://www.systemmobile.com/?cat=4) - Nick Heudecker +* [Geertjan](http://blogs.sun.com/geertjan) - Geertjan Wielenga +* [A Wicket Diary](http://martijndashorst.com/blog) - Martijn Dashorst +* [Wicket Praxis](http://www.wicket-praxis.de/blog/) - Michael Mosmann +* [Mystic Coders](http://mysticcoders.com/blog) - Andrew Lombardi +* [Wicket by Example](http://wicketbyexample.com/) - Community driven +* [Yes Wicket!](http://yeswicket.com/) - French Wicket blog + +## Get your blog listed! + +If you think your blog is missing, then please send a message to one of the +core contributors or the mailinglist. In the mean time you can add your blog +to our wiki's [special blog +page](https://cwiki.apache.org/WICKET/wicket-blogs.html). \ No newline at end of file Added: wicket/common/site/trunk/meet/buzz.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/meet/buzz.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/meet/buzz.md (added) +++ wicket/common/site/trunk/meet/buzz.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,154 @@ +--- +layout: default +title: Wicket Buzz +--- + +Wicket has appeared in the press in a variety of industry trade magazines, +including Network World, ComputerWorld, IT World and Information Week. +Presentations on Wicket have been delivered by Wicket team members at JavaOne +in San Francisco, Javapolis and TheServerSide Java Symposium in Europe. The +following are quotes from reviewers and users of Wicket: + +> After working with JSF for almost a year, trying Wicket was like that +> movie scene where the clouds part and this big ray of light hits you +> in the face. I just had this feeling while JSF'ing that certain things +> were harder than they needed to be. Well, I was right, and the Wicket +> people figured it out. +> +> [Kevin Galligan](http://bigheadco.blogspot.com/2007/03/groovy-wicket.html) + +> Wicket (currently undergoing incubation with Apache) is a good +> example of a web framework which throws caution to the wind, and has +> absolutely no XML needed. We here at Mystic have a lot of love for +> Wicket and are actively developing several projects with it currently. +> +> [Mystic Coders](http://www.mysticcoders.com/blog/2007/03/13/the-rise-of-the-xml-backlash/) + + +> Writing a Wicket app is rather more like writing an event-based +> desktop application than a web application. +> +> [LShift](http://www.lshift.net/blog/2006/07/06/wicket) + +> "Wickedly Cool" - I actually managed to whip together a Wicket +> Application in a few days. It is entertaining to work with, adding +> shiny stuff is really easy while you can develop Java code and keep +> those last bits of hair you have saved for ripping out in a CSS +> nightmare that you hopefully after finding Wicket will not have to +> deal with. So I'd go out on a limb and say that Wicket == Rogaine for +> developers. +> +> [Joed](http://blogs.opennms.org/joed/?p=3) + +> "So is Wicket the one true MVC framework that a lot of us have been +> hunting for? At the moment, I tend to think so. [...] If you like Java +> you will really like Wicket." +> +> [Peter Thomas](http://ptrthomas.wordpress.com/2007/03/02/wicket-impressions-moving-from-spring-mvc-webflow/) + +> "I think its an awesome way to deal with this whole web UI framework +> mess. I am happy to see someone take a simple and clean approach to +> the whole problem, and come up with a transparent POJO solution. I +> like the direction the framework is going... Wicket is clean, simple +> and elegant." +> +> Comment on TheServerSide.com + +> "Last week I wrote an article about Wicket and I spent some time +> discovering and taming it. And I have to confess this: I love it. ... +> snip ... Wicket is not a framework, it's a candy bar. And everybody +> loves candy bars..." +> +> Comment made by Romain Guy + +> The issue that impressed me in the Wicket model is that "Wicket does +> not mix markup with Java code and adds no special syntax to your +> markup files." You reference Wicket identities as HTML attributes +> and define component properties in Java, which allows designers and +> programmers to work independently (within the obvious constraint of +> having common goals). There is no need for special tools. +> +> From a Network World editorial entitled "Nothing Sticky about Wicket" + +> In a recent blog post I asked for feedback on what Web frameworks +> folks are using. Well, I got quite a surprise: Wicket was the most +> often recommended framework in reader emails! +> +> From an About.com article entitled And the Winner is...Wicket + +> "I have used Wicket since last Fall for personal projects. I have 3 +> kids and a wife so my free-time is very limited. Given that, I had to +> be very picky about which framework I chose. I've been very impressed +> with how little hassle it has been to start creating powerful, +> reusable components and pages with Wicket even under rather severe +> time constraints." +> +> Comment on TheServerSide.com + +> "...after using web MVC frameworks for a couple of years, building +> ever more complex web applications, I moved to component based +> frameworks. Of these, I think Wicket is by far the best..." +> +> Comment on Manageability.org + +> "... Talk about a mind blowing experience, it literally took me ten +> minutes to have a sample application up and running! The Wicket API is +> very Swing like, which was a welcome change for me, and allowed for a +> very familiar development experience. There is even an extension that +> allows for direct use of a Swing TreeModel. There are so many things +> that I like about this framework ..." +> +> From a blog item by the Code Poet + +> "Wicket has a learning flat." +> +> Al Maw + +> JSF is Cool and young but Wicket is younger and even cooler. Have +> you tried wicket?. I am also building a large CRUD application for +> Job Exchange System in my country using Wicket + JPA + Stateless +> EJB3 + Glassfish (the latest promoted build of glassfish) and we are +> currently in testing phase and I am not having any serious headaches +> as things seems to be under control. All our forms are Ajax. We have +> several concurrent accesses and system is stable. I believe greatly in +> the Wicket Project especially for CRUD cases. +> +> [Dabar Aladejebi](http://www.javalobby.org/java/forums/t90719.html#92132195) + +> "focuses the development efforts in the right place, inside plain Java +> code" !! This was the winning ticket for me. The framework is truly +> amazing. I used ever dang framework in the book and can say that I'm +> most impressed with this one. +> +> [Anonymous on JavaGeek.org](http://javageek.org/2006/03/08/comparing_web_frameworks_wicket.html)-- [Anonymous on JavaGeek.org](http://javageek.org/2006/03/08/comparing_web_frameworks_wicket.html) + +> Shocking simplicity. Back to the roots. Thanks. +> +> [joozsa on JavaGeek.org](http://javageek.org/2006/03/08/comparing_web_frameworks_wicket.html) + +> Wicket as far as I am concerned is the way forward for web development +> in Java. A lot of creativity involved though especially with the loops +> but It makes Web Development so much fun. +> +> [Anonymous on JavaGeek.org](http://javageek.org/2006/03/08/comparing_web_frameworks_wicket.html) + +> "Wicket became my favorite framework in about a 24-hour period, and +> I think it has a very bright future. With most frameworks I see +> limitations, with Wicket I see possibilities. There's your platitude +> for the day :)" +> +> wicket-user mailing list + +> "Count me in... I've only been using Wicket for maybe 2 weeks or so, +> and I'm sold." +> +> Phillip Rhodes + +> Once I grasped the essence of Wicket, everything just started working +> so well. Damn you, Wicket, I said under my breath. I was really +> disappointed that I liked it so much. Damn you Wicket! Suddenly I +> loved all those Wicket developers, because I understood what they +> were trying to say. Web development can be simple, yet have unlimited +> power. +> +> Closet Wicket lover Added: wicket/common/site/trunk/meet/features.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/meet/features.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/meet/features.md (added) +++ wicket/common/site/trunk/meet/features.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,119 @@ +--- +layout: default +title: Features +--- +## Swing-like OO Component Model + +Pages and Components in Wicket are real Java objects that support +encapsulation, inheritance and events. + +## Ease of Development + +Because Wicket is Java and HTML, you can leverage what you know about Java or +your favorite HTML editor to write Wicket applications. + +## Separation of Concerns + +Wicket does not mix markup with Java code and adds no special syntax to your +markup files. The worlds of HTML and Java are parallel and associated only by +Wicket ids, which are attributes in HTML and Component properties in Java. +Since Wicket HTML is just HTML and Wicket Java is just Java, coders and +designers can work independently to a large degree and without relying on any +special tools. + +## Secure + +Wicket is secure by default. URLs do not expose sensitive information and all +component paths are session-relative. Explicit steps must be taken to share +information between sessions. There are plans for the next version of Wicket +to add URL encryption to support highly secure web sites. + +## Transparent, Scalable Clustering Support + +All Wicket applications will work on a cluster automatically and without +additional work. Once bottlenecks are understood, Wicket enables tuning of +page state replication. The next version of Wicket will support client-side +models for zero-state scalability. + +## Transparent Back Button Support + +Wicket supports configurable page version management. When users submit a +form or follow a link from a page they accessed with the back button in their +browser, Wicket is able to revert the page object to the state it was in when +the page was originally rendered. This means you can write web applications +that support the back button with very little work. + +## Reusable Components + +Reusable components in Wicket are particularly easy to create. Not only can +you extend existing components with the Java extends keyword, but you can +also create Panel components which associate a group of components as a +reusable unit. + +## Simple, Flexible, Localizable Form Validation + +It is trivial to write and use validators in Wicket. It is also quite easy to +customize and localize the display and content of validation error messages. + +## Typesafe Sessions + +Wicket eliminates the need to manage HttpSession attributes by hand. Page and +component objects are transparently stored in the session and your +application can create a custom session subclass with typesafe properties as +well. All objects stored in the session can automatically participate in +clustering replication. + +## Factory Customizable + +Wicket is very extensible. Most operations are customizable through factories +or factory methods. + +## Detachable Models + +Model objects in Wicket can be very lightweight in terms of memory and +network use in a cluster. When a model is used, it can "attach", populating +itself with information from persistent storage. When the model is no longer +in use, transient information can be reset, reducing the size of the object. + +## Border Components + +Wicket Border components enable the decoration of pages in a reusable +fashion. This is especially useful for inheritance of common navigational +structures or layout. + +## Support for All Basic HTML Features + +Wicket supports image tags, links, forms and everything else that you're used +to using in your web application development. + +## Programmatic Manipulation of Attributes + +Wicket Components can programmatically change any HTML tag attribute. + +## Automatic Conversions + +Once a Form validates, the model can be updated using Wicket converters. Most +ordinary conversions are built-in and it is easy to write new converters. + +## Dynamic Images + +Wicket makes image use, sharing and generation very easy. Dynamic images can +be created by simply implementing a paint method. + +## Pageable ListView + +ListViews in Wicket are extremely powerful. You can nest any kind of +component in a ListView row, even other ListViews. PageableListView supports +navigation links for large lists. + +## Tree Component + +Out of the box tree component for navigating and selecting nodes. + +## Localization + +HTML pages, images and resource strings can all be localized. + +## Examples + +Wicket has numerous examples showcasing all of the above features. Added: wicket/common/site/trunk/meet/index.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/meet/index.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/meet/index.md (added) +++ wicket/common/site/trunk/meet/index.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,4 @@ +--- +layout: default +title: Meet Apache Wicket +--- Added: wicket/common/site/trunk/meet/introduction.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/meet/introduction.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/meet/introduction.md (added) +++ wicket/common/site/trunk/meet/introduction.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,296 @@ +--- +layout: default +title: Meet Apache Wicket +--- +By Jonathan Locke, original author of Wicket + +## Why Wicket? + +If you are looking to do web application programming in Java, you have a very +large number of choices these days. In fact, there are so many web +application frameworks now that it has become somewhat of a joke. One blog +site on the Internet poses the question: How many Java web frameworks can you +name? The answer they show looks like this: + +## Frameworks, Frameworks Everywhere + +<TABLE class="confluenceTable"><TBODY> +<TR> +<TD class="confluenceTd">Echo</TD> +<TD class="confluenceTd">Cocoon</TD> +<TD class="confluenceTd">Millstone</TD> +<TD class="confluenceTd">OXF</TD> +</TR> +<TR> +<TD class="confluenceTd">Struts</TD> +<TD class="confluenceTd">SOFIA</TD> +<TD class="confluenceTd">Tapestry</TD> +<TD class="confluenceTd">WebWork</TD> +</TR> +<TR> +<TD class="confluenceTd">RIFE</TD> +<TD class="confluenceTd">Spring MVC</TD> +<TD class="confluenceTd">Canyamo</TD> +<TD class="confluenceTd">Maverick</TD> +</TR> +<TR> +<TD class="confluenceTd">JPublish</TD> +<TD class="confluenceTd">JATO</TD> +<TD class="confluenceTd">Folium</TD> +<TD class="confluenceTd">Jucas</TD> +</TR> +<TR> +<TD class="confluenceTd">Verge</TD> +<TD class="confluenceTd">Niggle</TD> +<TD class="confluenceTd">Bishop</TD> +<TD class="confluenceTd">Barracuda</TD> +</TR> +<TR> +<TD class="confluenceTd">Action Framework</TD> +<TD class="confluenceTd">Shocks</TD> +<TD class="confluenceTd">TeaServlet</TD> +<TD class="confluenceTd">wingS</TD> +</TR> +<TR> +<TD class="confluenceTd">Expresso</TD> +<TD class="confluenceTd">Bento</TD> +<TD class="confluenceTd">jStatemachine</TD> +<TD class="confluenceTd">jZonic</TD> +</TR> +<TR> +<TD class="confluenceTd">OpenEmcee</TD> +<TD class="confluenceTd">Turbine</TD> +<TD class="confluenceTd">Scope</TD> +<TD class="confluenceTd">Warfare</TD> +</TR> +<TR> +<TD class="confluenceTd">JWAA</TD> +<TD class="confluenceTd">Jaffa</TD> +<TD class="confluenceTd">Jacquard</TD> +<TD class="confluenceTd">Macaw</TD> +</TR> +<TR> +<TD class="confluenceTd">Smile</TD> +<TD class="confluenceTd">MyFaces</TD> +<TD class="confluenceTd">Chiba</TD> +<TD class="confluenceTd">JBanana</TD> +</TR> +<TR> +<TD class="confluenceTd">Jeenius</TD> +<TD class="confluenceTd">JWarp</TD> +<TD class="confluenceTd">Genie</TD> +<TD class="confluenceTd">Melati</TD> +</TR> +<TR> +<TD class="confluenceTd">Dovetail</TD> +<TD class="confluenceTd">Cameleon</TD> +<TD class="confluenceTd">JFormular</TD> +<TD class="confluenceTd">Xoplon</TD> +</TR> +<TR> +<TD class="confluenceTd">Japple</TD> +<TD class="confluenceTd">Helma</TD> +<TD class="confluenceTd">Dinamica</TD> +<TD class="confluenceTd">WebOnSwing</TD> +</TR> +<TR> +<TD class="confluenceTd">Nacho</TD> +<TD class="confluenceTd">Cassandra</TD> +<TD class="confluenceTd">Baritus</TD> +<TD class="confluenceTd">Stripes</TD> +</TR> +<TR> +<TD class="confluenceTd">Click</TD> +<TD class="confluenceTd">GWT</TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +</TBODY></TABLE> + + +## Why "Reinvent the Wheel"? + +In light of this, you may be wondering "What good is another web application +framework?" Indeed. Why "re-invent the wheel?" One snappy comeback to that +old saw is: because this time we could make it rounder! + +But it was not simply a desire for higher quality that drove the creation of +Wicket. Even with so many options, there really is no web toolkit which fills +exactly the niche that Wicket fills. In fact, Wicket is quite unlike each of +the frameworks above. + +Wicket's closest cousins are probably Tapestry and Echo, but even there the +likeness is very shallow. Like Tapestry, Wicket uses a special HTML attribute +to denote components, enabling easy editing with ordinary HTML editors. Like +Echo, Wicket has a first-class component model. But Wicket applications are +not like applications written in either Tapestry or Echo, because in Wicket +you get the best of both worlds. You get the benefits of a first-class +component model and a non-intrusive approach to HTML. In many situations, +this combination may prove to be a significant development advantage. + +To understand why Wicket is so different, it may help to understand the +motivations that created it. + +## Motivations + +### Most existing web frameworks provide weak to non-existent support in managing server-side state ### + +This normally means lots of ad-hoc code in web applications dealing with the +gory mechanics of state management. While Wicket will not allow you to stop +thinking about server state, it goes a long ways towards making it easy and +often transparent to manage that state. + +In Wicket, all server side state is automatically managed. You will never +directly use an HttpSession object or similar wrapper to store state. +Instead, state is associated with components. Each server-side page component +holds a nested hierarchy of stateful components, where each component's model +is, in the end, a POJO (Plain Old Java Object). Wicket maintains a map of +these pages in each user's session. One purpose of this page map (and the +component hierarchy on each page) is to allow the framework to hide all +details of how your components and models are accessed. You deal with simple, +familiar Java objects and Wicket deals with things like URLs, session ids and +GET/POST requests. + +You will also find that this well-structured server state makes it very easy +to deal with the dreaded "back button problem". In fact, Wicket has a generic +and robust solution which can identify and expire browser-cached pages that +have become stale due to structural changes to the model of a component on +the page. + +Finally, Wicket has been designed to work with POJO persistence frameworks +such as JDO or Hibernate. This can make database driven web applications +quite easy to write. + +For many applications, it will be worth trading off the increased server load +of extra server-side state for decreased development costs, lower maintenance +costs, quicker time-to-market and generally higher quality software. The +basic observation here is that software is expensive and complex while +servers from companies like E-machines and Dell are relatively dirt cheap. + +In terms of efficiency versus productivity, perhaps Wicket is to JSP as Java +is to C. You can accomplish anything in Wicket in JSP. You may even do it +more efficiently in terms of memory or processor consumption. But it may take +you weeks or months longer to develop your application. And in the end, since +state management in JSP is ad-hoc, you are likely find security problems and +bugs popping up everywhere. Most of the other frameworks above will do only a +little more to help you. + +### Most existing frameworks require special HTML code + +JSP is by far the worst offender, allowing the embedding of Java code +directly in web pages, but to some degree almost all of the frameworks from +the list (except Tapestry) above introduce some kind of special syntax to +your HTML code. + +Special syntax is highly undesirable because it changes the nature of HTML +from the kind of pure-and-simple HTML markup that web designers are familiar +with, to some kind of special HTML. This special HTML can be more difficult +to preview, edit and understand. + +Wicket does not introduce any special syntax to HTML. Instead, it extends +HTML in a standards-compliant way via a Wicket namespace that is fully +compliant with the XHTML standard. This means that you can use Macromedia +Dreamweaver, Microsoft Front Page, Word, Adobe Go Live, or any other existing +HTML editor to work on your web pages and Wicket components. To accomplish +this, Wicket consistently uses a single id attribute in the Wicket namespace +("wicket:id") to mark HTML tags that should receive special treatment by the +toolkit. If you prefer not to render Wicket namespaced tags and attributes to +your end-users, Wicket has a simple setting to strip them all out, resulting +in ordinary, standards-compliant HTML. + +No "special sauce" in your HTML means designers can mock up pages that you +can use directly in development. Adding Java components to the HTML is as +simple as setting the component name attribute. And you can then give the +HTML back to your web designers knowing that they can change it with +confidence. + +Wicket, more than any other framework gives you a separation of concerns. Web +designers can work on the HTML with very little knowledge of the application +code (they cannot remove the component name tags and they cannot arbitrarily +change the nesting of components, but anything else goes). Likewise, coders +can work on the Java components that attach to the HTML without concerning +themselves with what a given page looks like. By not stepping on each other's +toes, everyone can get more work done. + +### Existing frameworks are not easy + +Most of the existing toolkits have poorly defined or non-existent object +models. In some cases, the model is defined using special XML syntaxes. The +syntaxes may be so cumbersome that special tools are required to manipulate +all the configuration information. Since these toolkits are not simple Java +libraries you may or may not be able to use your favorite IDE tools such as +editors, debuggers and compilers. + +Wicket is all about simplicity. There are no configuration files to learn in +Wicket. Wicket is a simple class library with a consistent approach to +component structure. In Wicket, your web applications will more closely +resemble a Swing application than a JSP application. If you know Java (and +especially if you know Swing), you already know a lot about Wicket. + +### Existing frameworks inhibit reusability + +Tapestry and JSF at least have component models that allow reuse, but you are +likely to find that it is not particularly trivial to do, at least when +compared with Wicket. Wicket has been explicitly designed to make it very, +very easy to create reusable components. It's surprisingly simple to extend +existing components and to make compound components such as a SignInPanel or +AddressForm. It is also relatively easy to create components that exploit new +features of browsers. Components in Wicket can be packaged up in JAR files +and reused by simply dropping them in your lib folder - no configuration +necessary! + +### Web programming should be fun! + +This is my most personal goal for writing Wicket . None of the existing +frameworks are appealing to me in terms of intuitiveness, quickness, ease of +development, etc. It is my hope that Wicket represents a significant step in +the direction of making web applications easy and fun to write. + +## Goals + +Coming from these motivations, the following goals for Wicket emerged: + +* EASY (SIMPLE / CONSISTENT / OBVIOUS) + * POJO-centric + * All code written in Java ala Swing + * Minimize "conceptual surface area" + * Avoid overuse of XML configuration files + * Fully solve back button problem + * Easy to create bookmarkable pages + * Maximum type safety and compile-time problem diagnosis + * Maximum diagnosis of run-time problems + * Minimum reliance on special tools + * Components, containers and conventions should be consistent + +* REUSABLE + * Components written in Wicket should be fully reusable + * Reusable components should be easily distributed in ordinary JAR files + +* NON-INTRUSIVE + * HTML or other markup not polluted with programming semantics + * Only one simple tagging construct in markup + * Compatible with any ordinary HTML editor + * Easy for graphics designers to recognize and avoid framework tagging + * Easy to add tagging back to HTML if designers accidentally remove it + +* SAFE + * Code is secure by default + * Only explicitly bookmarkable links can expose state in the page or URL + * All logic in Java with maximum type safety + * Easy to integrate with Java security + +* EFFICIENT / SCALABLE + * Efficient and lightweight, but not at the expense of other goals + * Clustering through sticky sessions preferred + * Clustering via session replication is easy to accomplish and easy to tune by working with detachable models. + +* COMPLETE + + * The Wicket team is committed to deliver a feature complete, ready-to-use + framework for developing Java web applications. The core framework was + written and contributed by the author of this introduction, Jonathan + Locke. The current team consists of a group of experienced programmers, + some of which were active on some of the other frameworks stated above, + and all of which have extensive experience building large scale Java web + applications. We eat our own dogfood, and will thus work on Wicket from a + framework user's perspective. Added: wicket/common/site/trunk/meet/vision.md URL: http://svn.apache.org/viewvc/wicket/common/site/trunk/meet/vision.md?rev=965997&view=auto ============================================================================== --- wicket/common/site/trunk/meet/vision.md (added) +++ wicket/common/site/trunk/meet/vision.md Tue Jul 20 20:40:53 2010 @@ -0,0 +1,60 @@ +--- +layout: default +title: The Wicket Vision +--- + +Designing and implementing any framework for use in the real world inevitably +involves compromises and some degree of complexity, and Wicket is no +exception. However, I believe you will find that Wicket is quite compact, +focused and powerful as a framework. If Wicket has these characteristics, it +is because it was designed to solve one very specific problem well: + +> enabling component-oriented, programmatic manipulation of markup + +Wicket does this and very little else, and that is a good thing. + +I once heard Josh Bloch talk about the power to weight ratio of an API. The +highest compliment anyone could make of Wicket would be to suggest that +Wicket has a lot of power and not much conceptual surface area. + +In art, negative space is the part that's not the subject. In music, negative +space is the rest. In software, negative space is all the code that you +managed to avoid writing. In all three disciplines, it's what separates what +is truly excellent from what is merely good. + +Following this metaphor, if Wicket is our foreground object, it is defined in +a negative sense by all the things that it is not (by the background). + +In other words, ideally, Wicket is a web UI framework that delegates as many +areas of responsibility as possible to other, more focused tools and +techniques. It recognizes that Hibernate is good at persistence; that OGNL is +good at string formatting; that Java properties files are good for +localization; that sub-classing is good for creating component types; that +Dreamweaver is good at doing HTML layout; that Beans are good for structuring +properties; and so on. + +The more ways that Wicket can find to offload responsibilities (both now and +in the future), the less it will be. And thus, the more it will be. + +The difficulty moving forward with Wicket will be balancing all the +day-to-day needs people are going to be bringing up with this overall vision +of minimalism. There ultimately will be compromises, and the "trick" to +making the right compromises is simply to agonize over all the options for a +long time and then to only make the compromises that everyone agrees are +really essential to what Wicket needs to be and do. + +A big part of this process of agonizing is to act like doctors and "first, do +no harm". If some issue isn't sitting well with everyone yet, there's +probably a reason for that. So, maybe the near-term solution is to simply do +nothing and let people use the existing functionality until the limits to +that approach (as well as competing ideas) are better understood. + +It's easy to add features. It's often impossible to change or remove them. + +Given this, the Wicket approach to the overall problem of evolving while +keeping a high power to weight ratio will be partitioning off all +controversial new ideas in a "contrib" package until they are broadly +accepted. This way people can experiment and code away and check in lots of +stuff without affecting the main codebase with untested ideas. Then, when +ideas in contrib pan out to everyone's satisfaction, the lead(s) of the +project will move them into the core. \ No newline at end of file