<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-->
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
 <meta name="Author" content="Malcolm Edgar"/>
 <meta name="description" lang="en" content="Apache Click Java web application framework"/>
 <meta name="keywords" lang="en" content="Apache Click, Click, Click Framework, Java, JEE, J2EE, web application framework, open source"/>
 <title>Apache Click</title>
 <link rel="stylesheet" type="text/css" href="../help.css"/>
 <style type="text/css">
  .item {
    margin-bottom: 0.75em;
  }
  .action-container a {
      text-decoration:none;
  }
  div.action {
    text-shadow: #fff 1px 1px 1px;
    font-size: larger;
    padding: 5px;
    background-color: #D0D0D0;
    background: -moz-linear-gradient(-90deg, #FFFFFF, rgba(255, 255, 255, 0.5) 5%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0)) repeat scroll 0 0 #D0D0D0;
    background: #D0D0D0 -webkit-gradient(linear, 0% 0%, 0% 100%, from(white), color-stop(0.05, rgba(255, 255, 255, 0.496094)), color-stop(0.50, rgba(255, 255, 255, 0.199219)), to(rgba(255, 255, 255, 0)));
    width: 140px;
    text-align: center;
    color: #000;
    float: left;
    border: 1px solid #444444;
    cursor: pointer;
    margin: 10px 10px 10px 0px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
  }
  div.action:hover {
    text-shadow: #000 1px 1px 1px;
    -moz-box-shadow: 1px 1px 20px #888;
    -webkit-box-shadow: 1px 1px 20px #888;
    background-color: #3350AF;
    background: -moz-linear-gradient(-90deg, #FFFFFF, rgba(255, 255, 255, 0.5) 5%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0)) repeat scroll 0 0 #3350AF;
    background: #3350AF -webkit-gradient(linear, 0% 0%, 0% 100%, from(white), color-stop(0.05, rgba(255, 255, 255, 0.6)), color-stop(0.50, rgba(255, 255, 255, 0.19)), to(rgba(255, 255, 255, 0)));
    color: #fff;
  }

 </style>
</head>
<body>

<h1>Welcome</h1>

<p/>

Apache Click&trade; is a modern JEE web application framework, providing a natural rich
client style programming model. Apache Click is designed to be very easy to learn
and use, with developers getting up and running within a day.
<p/>
<h3 style="margin-bottom:0em;">Highlights</h3>
<ul class="items">
 <li class="item">Very easy to learn</li>
 <li class="item">Component and Page Oriented design</li>
 <li class="item">Event base programming model</li>
 <li class="item">Stateless (with support for light-weight stateful components)</li>
 <li class="item">Server-side Ajax support</li>
 <li class="item">Exceptional performance</li>
 <li class="item">Automatic form rendering and client/server side validation</li>
 <li class="item">Supports Velocity, JSP or FreeMarker page rendering</li>
 <li class="item">Supports Java 1.5 and up</li>
</ul>

<div class="action-container">
  <a target="_blank" href="http://click.avoka.com/click-examples/">
    <div class="action">Examples</div>
  </a>
  <a target="topic" href="downloads.html">
    <div class="action">Download</div>
  </a>
  <a target="topic" href="user-guide.html">
     <div class="action">User Guide</div>
  </a>
  <div style="clear:both"></div>
</div>

<p/>
The design philosophy behind Click is best summarized in the Swedish word
<b>lagom</b> which translates to <i>not too little or too much, but optimal</i>.
<p/>
If you want to dive straight into some code examples see the User Guide <a href="user-guide/html/ch01.html">Introduction</a>.
<p/>
For those interested in the design philosophy and background of the framework read <a href="why-click.html">Why Click?</a>.

<p>Apache Click is a project of the <a target="_blank" href="http://www.apache.org/" class="external-link">
        Apache Software Foundation</a> and released under the
        <a target="_blank" href='http://www.apache.org/licenses/LICENSE-2.0.html'>Apache License, Version 2.0</a>.
</p>

<h3 style="margin-top:25px">Latest News</h3>

<div class="news">
    <div class="news-header">5 April 2011 - ClickIDE 2.3.0.0 released</div>
    <div class="news-item">
        The latest version of ClickIDE, v2.3.0.0, is available for
        <a class="external" target="_blank" href="http://www.apache.org/dyn/closer.cgi/click/clickide/2.3.0.0/clickide-2.3.0.0.zip">download</a>.
        ClickIDE 2.3.0.0 supports Apache Click 2.3.0 and Eclipse 3.6.
        <p/>
        Installation instructions can be found
        <a href="click-ide.html">here</a>.
    </div>
</div>

<div class="news">
    <div class="news-header">27 March 2011 - Apache Click 2.3.0 final is now available</div>
    <div class="news-item">
        We are pleased to announce the release of Click 2.3.0.
        <p/>
                Download is available <a class="external" target="_blank" href="http://www.apache.org/dyn/closer.cgi/click/click/2.3.0/click-2.3.0.zip">here</a>.
        <p/>
        Highlights of this release include:
        <ul class="news-items">
            <li class="news-item">
                <a href="user-guide/html/ch04.html">Ajax</a> support.
            </li>
            <li class="news-item">
                <a href="user-guide/html/ch02s07.html">Page Action</a> support.
            </li>
            <li class="news-item">Light-weight
                <a href="click-api/org/apache/click/Stateful.html">Stateful</a> Controls.
                <b>Note:</b> <a href="click-api/org/apache/click/Page.html#setStateful(boolean)">stateful page</a>
                support has been deprecated in favor of
            stateful controls. <a href="upgrade-path.html#deprecated-stateful-pages">Here</a> is an outline
            of the issues presented by stateful pages.
            </li>
         </ul>

        <p/>
        Please see the official <a class="external" target="_blank" href="https://blogs.apache.org/click/entry/apache_click_v2_3_02">announcement</a>
        and <a href="roadmap-changes.html#2.3.0">changelog</a> for more details.
        <p/>
        If you are upgrading from 2.2.0 or earlier, please refer to the
        <a href="upgrade-path.html#2.3.0">upgrade path</a>.
    </div>
</div>
<div class="news">
    <div class="news-header">30 January 2011 - Apache Click 2.3.0 Release Candidate 1 is now available</div>
    <div class="news-item">
        We are pleased to announce the latest development release, Click 2.3.0 RC1.
        <p/>
        Download is available <a class="external" target="_blank" href="http://www.apache.org/dyn/closer.cgi/click/click/2.3.0-RC1/click-2.3.0-RC1.zip">here</a>.
        <p/>
        This release provides full server-side Ajax support and
        Stateful pages have been deprecated in favour of light-weight Stateful
        controls.

        <p/>
        Please see the official <a class="external" target="_blank" href="https://blogs.apache.org/click/entry/apache_click_v2_3_01">announcement</a>
        and <a href="roadmap-changes.html#2.3.0">changelog</a> for more details.
        <p/>
        If you are upgrading from 2.2.0 or earlier, please refer to the
        <a href="upgrade-path.html#2.3.0">upgrade path</a>.
    </div>

</div>
<div class="news">
    <div class="news-header">5 January 2010 - Click Book now available</div>
    <div class="news-item" style="height: 170px">
        <a target='topic' href="click-online.html#gswac">
        <img class="image" align="left" src="../images/click-book.jpg" alt="Getting started with Apache Click" style="margin-right: 10px"/>
        </a>
        2010 started with a bang as <a class="external" target="_blank" href="http://www.stripesbook.com/blog/">Freddy Daoud</a>
        announced his new book:
        <a class="external" target="_blank" href="http://www.fdaoud.com/clickbook/">Getting Started With Apache Click</a>.
        <p/>
        Finally, a book is available on Apache Click which is a great
        way for getting started quickly.
        <p/>
        The book targets Click 2.1.0.
    </div>
</div>

<!-- FOOTER -->
<div id="footer">
    <hr/>
    <p>
    <a target='_blank' href='http://www.apache.org' title='Apache Software Foundation'>
        <img id="asf-logo" src="http://www.apache.org/images/asf-logo.gif" alt="Apache Software Foundation"/>
    </a>
    Copyright &copy; 2001-2010 Apache Software Foundation. Apache Click,
    Click, Apache, the Apache feather logo, and the Apache Click project logo are
    trademarks of The Apache Software Foundation.
    <a href="http://cayenne.apache.org/privacy-policy.html">Privacy policy.</a>
    </p>
</div>

</body>
</html>

