~~ $Id$
~~
~~ 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.
~~
         -----------
         Home
         -----------

Apache Tiles\u2122


    <<{{{http://tiles.apache.org}Apache Tiles}}>> is a template composition
    framework. Tiles was originally built to simplify the development of web 
    application user interfaces, but it is no longer restricted to the JavaEE
    web environment.

    Tiles allows authors to define page fragments which can be assembled
    into a complete page at runtime.  These fragments, or tiles, can be used
    as simple includes in order to reduce the duplication of common page
    elements or embedded within other tiles to develop a series of reusable
    templates. These templates streamline the development of a consistent
    look and feel across an entire application.

    {{{/download.html}Download Tiles}}

    {{{./security/index.html}Security bulletins}}

* Documentation

    * {{{./whats-new.html}<<What's new in Tiles 3.0>>}}

    * {{{./tutorial/index.html}Tutorial}}

    * {{{http://cwiki.apache.org/TILES/}Wiki}}

    * Reference
    
        ** {{{./getting_started.html}Getting Started}} and installing Tiles
    
        ** {{{./config-reference.html}Configuration Reference}}

        ** {{{./apidocs/index.html}Javadocs}}

        ** {{{./tiles-jsp/tlddoc/index.html}Tag library documentation}}

        ** {{{./tiles-core/dtddoc/index.html}Tiles definition file documentation}}

    * {{{./migration/index.html}Migration}} from previous versions
