//  ========================================================================
//  Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd.
//  ========================================================================
//  All rights reserved. This program and the accompanying materials
//  are made available under the terms of the Eclipse Public License v1.0
//  and Apache License v2.0 which accompanies this distribution.
//
//      The Eclipse Public License is available at
//      http://www.eclipse.org/legal/epl-v10.html
//
//      The Apache License v2.0 is available at
//      http://www.opensource.org/licenses/apache2.0.php
//
//  You may elect to redistribute this code under either of these licenses.
//  ========================================================================

[[jetty-downloading]]
=== Downloading Jetty

==== Downloading the Jetty Distribution

The standalone Jetty distribution is available for download from the Eclipse Foundation:
____
*Jetty*
http://download.eclipse.org/jetty
____

It is available in both zip and gzip formats; download the one most appropriate for your system. 
Notice that there are a number of other files with extensions of .sha or .md5 which are checksum files. 
When you download and unpack the binary, it is extracted into a directory called `jetty-distribution-VERSION.` 
Put this directory in a convenient location. 
The rest of the instructions in this documentation refer to this location as either `JETTY_HOME` or as `$(jetty.home).`

[[distribution-content]]
==== Distribution Content

A quick rundown of the distribution's contents follows. The top-level directory contains:

.Contents
[width="80%",cols="40%,60%",options="header"]
|=======================================================================
|Location |Description |license-eplv10-aslv20.html |License file for Jetty
|README.txt |Useful getting started information
|VERSION.txt |Release information
|bin/ |Utility shell scripts to help run Jetty on Unix systems
|demo-base/ |A Jetty base directory to run a Jetty server with demonstration webapps
|etc/ |Directory for Jetty XML configuration files
|lib/ |All the JAR files necessary to run Jetty
|logs/ |Directory for request logs
|modules/ |Directory of module definitions
|notice.html |License information and exceptions
|resources/ |Directory containing additional resources for classpath, activated via configuration
|start.d/ |Directory of *.ini files containing arguments that are added to the effective command line (see start.ini)
|start.ini |File containing the arguments that are added to the effective command line (modules, properties and XML configuration files)
|start.jar |Jar that invokes Jetty (see also xref:quickstart-running-jetty[])
|webapps/ |Directory containing webapps that run under the default configuration of Jetty
|=======================================================================
