<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>

<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Web Toolkit - Getting Started Guide</title>
<link href="../css/base.css" rel="stylesheet" type="text/css">
<link href="./doc.css" rel="stylesheet" type="text/css">
<link href="../css/print.css" rel="stylesheet" media="print" type="text/css">

<style type="text/css">

#footer .text {
  padding-top: 5px;
}

.documentation {
  margin-left: 0.25in;  
}

.documentation h1 {
  margin-left: -0.25in;
}

.documentation h2 {
  margin-left: -0.25in;
  margin-top: 1.5em;
}

.documentation h3 {
  margin-left: -0.125in;
}

.documentation ul.toc {
  margin: 0;
  padding: 0;
  margin-left: 2em;
}

</style>

    <style type="text/css">

    ol.instructions {
      margin: 0;
      padding: 0;
      margin-left: 2em;
    }

    .instructions .header {
      font-weight: bold;
    }

    .instructions li {
      margin-bottom: 1em;
    }

    div.screenshot {
      text-align: center;
      margin: 1em;
    }

    </style>
  </head>
  <body>
    
<div id="gaia">
  &nbsp;
</div>

<div id="header">
  <div id="logo"><a href="http://code.google.com/"><img src="http://code.google.com/images/code_sm.png" alt="Google"/></a></div>
  <div id="title">
      Google Web Toolkit
  </div>
  <div id="breadcrumbs">
    
      <span class="item"><a href="http://code.google.com">Google Code Home</a></span> &gt;
      
<span class="item"><a href="http://code.google.com/webtoolkit">Google Web Toolkit</a></span> &gt;
<span class="item"><a href="">Getting Started Guide</a></span>
    
  </div>
</div>

<div id="side" dir="ltr">
  <div id="menu">
    
      
<h4><a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a></h4>
<ul>
  <li><a href="http://code.google.com/webtoolkit/download.html">Download GWT</a></li>
</ul>
<ul>
  <li><a href="http://code.google.com/webtoolkit/overview.html">Product Overview</a></li>
  <li><a href="">Getting Started Guide</a></li>
  <li><a href="http://code.google.com/webtoolkit/documentation/examples/">Example Projects</a></li>
</ul>
<ul>
  <li><a href="./com.google.gwt.doc.DeveloperGuide.html">Developer Guide</a></li>
  <li><a href="./gwt.html">Class Reference</a></li>
  <li><a href="http://code.google.com/p/google-web-toolkit/issues/list">Issue Tracking</a></li>
  <li><a href="http://groups.google.com/group/Google-Web-Toolkit">Developer Forum</a></li>
</ul>
<ul>
  <li><a href="http://googlewebtoolkit.blogspot.com/">GWT Blog</a></li>
  <li><a href="http://code.google.com/webtoolkit/faq.html">GWT FAQ</a></li>
  <li><a href="http://code.google.com/webtoolkit/makinggwtbetter.html">Making GWT Better</a></li>
</ul>
<ul>
  <li><a href="http://code.google.com/webtoolkit/thirdparty.html">Third Party Tools</a></li>
</ul>
    
  </div>

  <div id="search">
    <form id="searchbox_015986126177484454297:pfmwlvdl42y" action="http://www.google.com/cse">
      <input type="hidden" name="cx" value="015986126177484454297:pfmwlvdl42y" />
      <input type="hidden" name="cof" value="FORID:0" />
	  <div class="header">Search Google Code:</div>
      <input name="q" type="text" size="20" />
      <input type="submit" name="sa" value="Search" /><br/>
    </form>
    <script type="text/javascript" src="http://google.com/coop/cse/brand?form=searchbox_015986126177484454297:pfmwlvdl42y"></script>
  </div>

</div>


<script type="text/javascript">
//<![CDATA[

function walk(element, condition, operation) {
  if (!element) return;
  if (condition(element)) {
    operation(element);
    return;
  }
  for (var e = element.firstChild; e != null; e = e.nextSibling) {
    walk(e, condition, operation);
  }
}

function isCurrentLink(e) {
  return e.tagName == "A" && e.href == window.location.href;
}

function makeSelected(e) {
  e.className = "selected";
}

walk(document.getElementById("breadcrumbs"), isCurrentLink, makeSelected);
walk(document.getElementById("menu"), isCurrentLink, makeSelected);

//]]>
</script>

<div id="body">



<div class="documentation">

<h1>Google Web Toolkit Getting Started Guide</h1>

<h2>Table of Contents</h2>

<ul class="toc">
  <li><a href="#Install">Installing Google Web Toolkit</a></li>
  <li><a href="#Sample">Building a Sample Application</a></li>
  <li><a href="#New">Creating an Application from Scratch (without Eclipse)</a></li>
  <li><a href="#NewEclipse">Creating an Application from Scratch (with Eclipse)</a></li>
</ul>


<a name="Install"></a>
<h2>Installing Google Web Toolkit</h2>

<ol class="instructions">
  <li>
    <div class="header">Install the Java SDK.</div>
    <div class="details">If you don't have a recent version of the Java SDK installed, download and install <a href="http://java.sun.com/javase/downloads/" rel="nofollow">Sun Java Standard Edition SDK</a>.</div>
  </li>
  <li>
    <div class="header">Download Google Web Toolkit.</div>
    <div class="details">Download the <a href="http://code.google.com/webtoolkit/download.html">Google Web Toolkit package</a> for your operating system.</div>
  </li>
  <li>
    <div class="header">Unzip the Google Web Toolkit package.</div>
    <div class="details">On Windows, extract the files from <code>gwt-windows-@GWT_VERSION@.zip</code> with a program like <a 
href="http://www.winzip.com/" rel="nofollow">WinZip</a>.  On Mac and Linux, you can 
unpack the package with a command like <pre class="code">tar xvzf gwt-mac-@GWT_VERSION@.tar.gz</pre></div>
  </li>
  <li>
    <div class="header">Done! Start using Google Web Toolkit.</div>
    <div class="details">GWT doesn't have an installer application.  All the files you need to run and use GWT are located in the extracted directory. The main application you'll need to use GWT is <code>applicationCreator</code>, which is <a href="#New">described below</a>. It may be easiest to start out by building one of the <a href="#Sample">sample applications</a> shipped with GWT.</div>
  </li>
</ol>



<a name="Sample"></a>
<h2>Building a Sample Application</h2>

<p>All the sample applications are in the <code>samples/</code> directory in your GWT package. Each sample has a script you can run to start it in <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.HostedMode.html">hosted mode</a> and a script you can use to compile it into JavaScript and HTML to run it <a href="com.google.gwt.doc.DeveloperGuide.Fundamentals.WebMode.html">web mode</a>.</p>

<h3>Running in Hosted Mode</h3>

<p>To run the Mail sample in <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.HostedMode.html">hosted mode</a>, navigate to the <code>samples/Mail/</code> directory and run the <code>Mail-shell</code> script. This will open the GWT browser with the Mail application running inside:</p>

<div class="screenshot"><img src="./mail-hosted.png" alt="Screenshot"/></div>

<p>Since you're running in <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.HostedMode.html">hosted mode</a>, the application is running in the Java Virtual Machine (JVM).  This is typically the mode you'll use to debug your applications.</p>

<h3>Running in Web Mode</h3>

<p>To run the application in <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.WebMode.html">web mode</a>, compile the application by running the <code>Mail-compile</code> script. The GWT compiler will generate a number of JavaScript and HTML files from the Mail Java source code in the <code>www/</code> subdirectory.  To see the application, open the file <code>www/com.google.gwt.sample.mail.Mail/Mail.html</code> in your favorite web browser.</p>

<div class="screenshot"><img src="./mail-web.png" alt="Screenshot"/></div>

<p>Since you've compiled the project, you're now running pure JavaScript and HTML that should work in IE, Firefox, or Safari. If you were to deploy the Mail example project in production, you would distribute the files in your <code>www/com.google.com.google.gwt.sample.mail.Mail/</code> directory to your web servers.</p>

<h3>Make a Few Changes</h3>

<p>The source code for Mail sample is in the <code>src/</code> subdirectory. Try closing your browser windows, and open the file 
<code>src/com/google/gwt/sample/mail/client/Shortcuts.java</code> in a text editor.  Line 55 of the file adds a new &quot;Tasks&quot;
section to the main StackPanel on the left side of the application:</p>

<pre class="code">add(images, new Tasks(), images.tasksgroup(), &quot;Tasks&quot;);</pre>

<p>Change the string from <code>&quot;Tasks&quot;</code> to <code>&quot;To-Do List&quot;</code>:</p>

<pre class="code">add(images, new Tasks(), images.tasksgroup(), &quot;To-Do List&quot;);</pre>

<p>Now, save the file and simply click "Refresh" in the hosted mode application to see your recent change (if you previously closed 
hosted mode, go ahead and re-run the <code>Mail-shell</code> script). The second item in the main StackPanel should now say
&quot;To-Do List&quot; instead of &quot;Tasks&quot;:</p>

<div class="screenshot"><img src="./mail-modified.png" alt="Screenshot" style="border: 1px solid silver"/></div>

<a name="New"></a>
<h2>Creating an Application from Scratch (without Eclipse)</h2>

<p>GWT ships with a command line utility called <code>applicationCreator</code> that automatically generates all the files you'll need in order to start a GWT project.  It can also generate <a href="http://www.eclipse.org/" rel="nofollow">Eclipse</a> project files and launch config files for easy hosted mode debugging, as <a href="#NewEclipse">described below</a>.</p>

<p>Based on the <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.ProjectStructure.html">recommended GWT project structure</a>, your main GWT application class should be in a subpackage <code>client</code>.  You can create a new application called MyApplication with the command:</p>

<pre class="code">applicationCreator com.mycompany.client.MyApplication</pre>

<p>The <code>applicationCreator</code> script will generate a number of files in <code>src/com/mycompany/</code>, including some basic &quot;Hello, world&quot; functionality in the class <code>src/com/mycompany/client/MyApplication.java</code>.  The script also generates a <a href="overview.html#Modes">hosted mode</a> launch script called <code>MyApplication-shell</code> and a compilation script called <code>MyApplication-compile</code>, just like the <a href="#Sample">sample application</a> above.</p>

<p>To run your newly created application in hosted mode, run the <code>MyApplication-shell</code> script:</p>

<div class="screenshot"><img src="./myapplication-hosted.jpg" alt="Screenshot"/></div>

<p>Try editing the files <code>src/com/mycompany/client/MyApplication.java</code> and <code>src/com/mycompany/public/MyApplication.html</code> to see how it changes your application.</p>


<a name="NewEclipse"></a>
<h2>Creating an Application from Scratch (with Eclipse)</h2>

<p>GWT includes a command line utility called <code>applicationCreator</code> that automatically generates all the files you'll need in order to start a GWT project.  It can also generate <a href="http://www.eclipse.org/" rel="nofollow">Eclipse</a> project files and launch config files for easy hosted mode debugging.  To generate an Eclipse project for a new application, first use the <code>projectCreator</code> script to generate a shell Eclipse project for your application:</p>

<pre class="code">projectCreator -eclipse MyProject</pre>

<p>Then generate your GWT application as <a href="#New">described above</a>, but with an additional <code>-eclipse</code> flag specifying the name of your Eclipse project:</p>

<pre class="code">applicationCreator -eclipse MyProject com.mycompany.client.MyApplication</pre>

<p>When you're done with these scripts, in addition to the <code>MyApplication-shell</code> and <code>MyApplication-compile</code> scripts, you should see <code>.project</code>, <code>.classpath</code>, and <code>MyApplication.launch</code> files in your current directory.</p>

<p>To open your project in Eclipse, launch Eclipse and click the File -> Import menu.  Choose &quot;Existing Projects into Workspace&quot; in the first screen of the wizard, and enter the directory in which you genetrated the <code>.project</code> file in the next screen of the wizard.  When you are complete, you should see your GWT project loaded into your Eclipse workspace:</p>

<div class="screenshot"><img src="./myapplication-eclipse.jpg" alt="Screenshot" style="border: 1px solid silver"/></div>

<p>Just click the green &quot;Run&quot; button at the top of the window to start your project in <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.HostedMode.html">hosted mode</a>.</p>

</div>

    



</div> 

<div id="footer" dir="ltr">
  
  <div class="text">
  
    
<div style="margin-bottom: 0.5em">Java&trade; is a trademark of Sun Microsystems.</div>
<div style="margin-bottom:0.5em">
  &copy;2007 Google -
  <a href="http://www.google.com/">Google Home</a> -
  <a href="http://www.google.com/jobs/">We're Hiring</a> -
  <a href="/webtoolkit/terms.html">Terms and Conditions</a> -
  <a href="http://groups.google.com/group/Google-Web-Toolkit">Developer Forum</a>
</div>
<div id="notice" style="text-align: center; border: 1em 0em 1em 0em">
  Except as otherwise <a
  href="http://code.google.com/policies.html#restrictions">noted</a>,
  the content of this page is licensed under the <a rel="license"
  href="http://creativecommons.org/licenses/by/2.5/">Creative Commons
  Attribution 2.5 License</a>.
<!-- <rdf:RDF xmlns="http://web.resource.org/cc/" 
              xmlns:dc="http://purl.org/dc/elements/1.1/"
              xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <Work rdf:about="">
    <license rdf:resource="http://creativecommons.org/licenses/by/2.5/" />
  </Work>
  <License rdf:about="http://creativecommons.org/licenses/by/2.5/">
    <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
    <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
    <requires rdf:resource="http://web.resource.org/cc/Notice"/>
    <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
    <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
  </License>
</rdf:RDF> -->
</div>



  
  </div>
</div>

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>


<script type="text/javascript">
  _uacct="UA-18071-1"; // code.google.com site-wide tracking
  _uanchor=1;
  _uff=0;
  urchinTracker();
</script>


  </body>
</html>
