<!DOCTYPE html>
<html>
<head>
    <title>Apache Wicket - Wicket 6.0.0-beta3 released</title>

	<link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen" />

    <!--[if lt ie 7]>
	<link rel="stylesheet" href="/css/ie.css" type="text/css" media="screen" />
    <![endif]-->
    <link rel="shortcut icon" href="/favicon.ico" type="image/vnd.microsoft.icon" />
	<link rel="alternate" type="application/atom+xml" href="/atom.xml" />
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<div id="container">
    <div id="content">
        <div id="header"><a href="/"><h1 id="logo"><span>Apache Wicket</span></h1></a></div>
		<div id="navigation">
	<h5><a name="Navigation-Wicket"></a>Meet Wicket</h5>
	<ul>
		<li>
			<a href="/" title="Index">Home</a>
		</li>
		<li>
			<a href="/meet/introduction.html" title="Introduction">Introduction</a>
		</li>
		<li>
			<a href="/meet/features.html" title="Features">Features</a>
		</li>
		<li>
			<a href="/meet/buzz.html" title="Buzz">Buzz</a>
		</li>
		<li>
			<a href="/meet/vision.html" title="Vision">Vision</a>
		</li>
		<li>
			<a href="/meet/blogs.html" title="Blogs">Blogs</a>
		</li>
	</ul>
	<h5>
		<a name="Navigation-GettingStarted" id="Navigation-GettingStarted"></a>Get Started
	</h5>
	<ul>
		<li>
			<a href="/start/download.html" title="Download Wicket">Download Wicket</a>
		</li>
		<li>
			<a href="/start/quickstart.html" title="Getting started via a Maven Archetype">Quickstart</a>
		</li>
		<li>
			<a href="http://www.jweekend.com/dev/LegUp" rel="nofollow">More archetypes</a>
		</li>
		<li>
			<a href="/help" title="Get help">Get help</a>
		</li>
		<li>
			<a href="/help/email.html" title="Wicket Mailing Lists">Mailing Lists</a>
		</li>
	</ul>
	<h5>
		<a name="Navigation-Documentation" id="Navigation-Documentation"></a>Learn
	</h5>
	<ul>
		<li>
			<a href="/start/userguide.html" title="User Guide">User Guide</a>
		</li>
		<li>
			<a href="/learn/examples" title="Examples">Examples</a>
		</li>
		<li>
			<a href="http://www.wicket-library.com/wicket-examples/compref/">Components</a>
		</li>
		<li>
			<a href="/learn/projects/" title="Projects extending basic Wicket">Projects</a>
		</li>
		<li>
			<a href="https://cwiki.apache.org/confluence/display/WICKET">Wiki</a>
		</li>
		<li>
			<a href="https://cwiki.apache.org/confluence/display/WICKET/Reference+library">Reference guide</a>
		</li>
		<li>
			<a href="/learn/books" title="Books">Books</a>
		</li>
		<li>
			<a href="/learn/ides.html" title="IDEs">IDEs</a>
		</li>
	</ul>
	<h5>
		<a name="Navigation-Releases" id="Navigation-Releases"></a>Releases
	</h5>
	<ul>
		<li>
			<a href="http://www.apache.org/dyn/closer.cgi/wicket/6.20.0">Wicket 6.20</a>
		</li>
		<li>
			<a href="http://www.apache.org/dyn/closer.cgi/wicket/1.5.13">Wicket 1.5</a>
		</li>
		<li>
			<a href="http://www.apache.org/dyn/closer.cgi/wicket/1.4.23">Wicket 1.4</a>
		</li>
		<li>
			<a href="http://www.apache.org/dyn/closer.cgi/wicket/1.3.7">Wicket 1.3</a>
		</li>
		<li>
			<a href="http://wicket.sf.net/wicket-1.2" class="external-link" rel="nofollow">Wicket 1.2</a>
		</li>
		<li>
			<a href="http://wicket.sf.net/wicket-1.1" class="external-link" rel="nofollow">Wicket 1.1</a>
		</li>
		<li>
			<a href="http://wicket.sf.net/wicket-1.0" class="external-link" rel="nofollow">Wicket 1.0</a>
		</li>
	</ul>
	<h5>
		<a name="Navigation-Docs" id="Navigation-Docs"></a>API Docs
	</h5>
	<ul>
		<li>
			<a href="http://ci.apache.org/projects/wicket/apidocs/6.x/" title="JavaDocs of Apache Wicket 6.x">Wicket 6.x</a>
		</li>
		<li>
			<a href="http://ci.apache.org/projects/wicket/apidocs/1.5.x/" title="JavaDocs of Apache Wicket 1.5.x">Wicket 1.5</a>
		</li>
		<li>
			<a href="http://ci.apache.org/projects/wicket/apidocs/1.4.x" title="JavaDocs of Apache Wicket 1.4.x">Wicket 1.4</a>
		</li>
		<li>
			<a href="http://ci.apache.org/projects/wicket/apidocs/1.3.x" title="JavaDocs of Apache Wicket 1.3.x">Wicket 1.3</a>
		</li>
	</ul>
	<h5>Wicket 7.x</h5>
	<ul>
		<li>
			<a href="http://www.apache.org/dyn/closer.cgi/wicket/7.0.0-M6">Download M6</a>
		</li>
		<li>
			<a href="https://cwiki.apache.org/confluence/display/WICKET/Migration+to+Wicket+7.0">Migration guide</a>
		</li>
		<li>
			<a href="http://ci.apache.org/projects/wicket/apidocs/7.x/" title="JavaDocs of Apache Wicket 7.x">API Docs 7.x</a>
		</li>
	</ul>
	<h5>
		<a name="Navigation-Developers" id="Navigation-Developers"></a>Contribute
	</h5>
	<ul>
		<li>
			<a href="/contribute/write.html" title="Writing documentation">Writing docs</a>
		</li>
		<li>
			<a href="/contribute/build.html" title="Building from SVN">Build Wicket</a>
		</li>
		<li>
			<a href="/contribute/patch.html" title="Provide a patch">Provide a patch</a>
		</li>
		<li>
			<a href="/contribute/release.html" title="Release Wicket">Release Wicket</a>
		</li>
		<li>
			<a href="https://fisheye6.atlassian.com/browse/wicket-git" title="Git Overview" class="external-link" rel="nofollow">Fisheye</a>
		</li>
	</ul>
	<h5>
		<a name="Navigation-Apache" id="Navigation-Apache"></a>Apache
	</h5>
	<ul>
		<li>
			<a href="http://www.apache.org/" class="external-link" rel="nofollow">Apache</a>
		</li>
		<li>
			<a href="http://www.apache.org/licenses/" class="external-link" rel="nofollow">License</a>
		</li>
		<li>
			<a href="http://www.apache.org/foundation/sponsorship.html" class="external-link" rel="nofollow">Sponsorship</a>
		</li>
		<li>
			<a href="http://apache.org/foundation/thanks.html" class="external-link" rel="nofollow">Thanks</a>
		</li>
		<li>
			<a href="/apache/friends.html" title="Apache projects using Wicket">Friends</a>
		</li>
	</ul>
</div>

		<div id="contentbody">
			<h1>Wicket 6.0.0-beta3 released</h1>
			<p>The Wicket team is proud to announce the third beta release of
the Wicket 6.x series. This release is an intermediary release
just before we give you 6.0.0 final.</p>

<p>There are no more planned API breaks but if you find something
that can be made better now it the time to discuss it! The
next planned release is 6.0.0 final, so speak now or forever
be silenced (or learn to live with it until 7.0.0 comes out).</p>

<p>Any feedback about the new features, their implementation and
their documentation is very welcome!</p>

<h1 id="new-and-noteworthy-in-600-beta3">New and Noteworthy in 6.0.0-beta3</h1>

<p><strong>NOTA BENE:</strong> the use of modules that are marked experimental,
by being part of the sub module ‘wicket-experimental’, are really
that: experimental. These modules can change, disappear or blow up
your computer without notice and you really use/depend on them at
your own risk.</p>

<h2 id="wicket-native-websockets">Wicket Native Websockets</h2>

<p>A new <strong>experimental</strong> module has been added to Wicket 6 - Wicket
Native WebSocket. This module adds support for using HTML5
WebSockets as you may use Ajax in your Wicket applications.</p>

<p>All you have to do is to add a WebSocketBehavior to your page and from
there on you can receive messages from the clients and push messages
back to them.</p>

<p>At <a href="https://cwiki.apache.org/confluence/x/0vSoAQ">our wiki</a> you may 
find the documentation and a link to a demo application.</p>

<p>If something is not clear feel free to ask your question in the
mailing lists and we will improve the documentation.</p>

<h2 id="wicket-bootstrap">Wicket Bootstrap</h2>

<p>The <strong>experimental</strong> modules now contain a new module for integration
with Twitter’s Bootstrap. Currently this module only provides a
central way of using the Bootstrap resources. In the future we
will provide proper components and behaviors for the Bootstrap
concepts.</p>

<p>To use this new <strong>experimental</strong> module, add this to your pom:</p>

<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-bootstrap&lt;/artifactId&gt;
    &lt;version&gt;0.1&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>

<p>To add Bootstrap support to your pages, add this in the <code>renderHead</code>
method:</p>

<pre><code>@Override
public void renderHead(IHeaderResponse response) {
    super.renderHead(response);

    Bootstrap.renderHead(response);
}
</code></pre>

<p>This will render a dependency to the Twitter bootstrap CSS and JS files,
including the required dependency to JQuery.</p>

<h2 id="new-wicket-examples">New Wicket Examples</h2>
<p>We have started an effort to revamp the tried and tested Wicket Examples
and bring them into 2012. The new examples are located in the
<strong>experimental</strong> module.</p>

<p>It is currently a copy of Twitter Bootstrap’s design but with Wicket
specific filling.</p>

<p>You can test the examples by running the</p>

<pre><code>wicket-examples-jar/src/test/java/Start.java
</code></pre>

<p>class in the default package.</p>

<p>The examples will feature a component reference with typical use
cases, full examples such as Hello, World, and descriptions of the
code in play.</p>

<h2 id="wicket-atmosphere">Wicket Atmosphere</h2>

<p>Wicket Atmosphere in the experimental modules has seen an upgrade of
the Atmosphere dependency to 1.0.0-beta3. This has caused an
incompatibility with Jetty 7.6.3 (used with Wicket and the examples). To
mitigate this, you need to override either:</p>

<ul>
  <li>the dependency on Jetty to 8.1.3 or newer, or</li>
  <li>the dependency on Atmosphere to 0.9.5 (0.9.6 and 0.9.7 are broken as
well)</li>
</ul>

<p>See <a href="https://issues.apache.org/jira/browse/WICKET-4656">WICKET-4656</a> for 
more information regarding this issue.</p>

<h1 id="this-release">This release</h1>

<ul>
  <li>Check the roadmap  with a list of the major
goals: <a href="https://cwiki.apache.org/confluence/display/WICKET/Wicket+6.0+Roadmap">6.0 roadmap</a></li>
  <li>And the migration guide with all major and some minor changes
between 1.5.x and 6.x series: <a href="http://s.apache.org/wicket-6.0-migration">migration guide</a></li>
  <li>The Jira changelog of all closed ticket at
Jira: <a href="http://s.apache.org/wicket-6.0.0-beta3-changelog">changelog</a></li>
</ul>

<p>To use it in Maven:</p>

<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;org.apache.wicket&lt;/groupId&gt;
    &lt;artifactId&gt;wicket-core&lt;/artifactId&gt;
    &lt;version&gt;6.0.0-beta3&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>

<p>If you don’t use a dependencies management build tool then you
can download the full distribution (including source) and build from
source yourself.</p>

<p>Have fun,</p>

<p>The Wicket team!</p>

		</div>
        <div id="clearer"></div>
		<div id="footer"><span>
Copyright &copy; 2015 &mdash; The Apache Software Foundation. Apache Wicket,
Wicket, Apache, the Apache feather logo, and the Apache Wicket project logo
are trademarks of The Apache Software Foundation. All other marks mentioned
may be trademarks or registered trademarks of their respective owners.
</span></div>

    </div>
</div>
</body>
</html>
