<?php
/**
 * Copyright (c) 2015, 2018 Eclipse Foundation.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 * Nathan Gervais (Eclipse Foundation) - Initial implementation
 * Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<h1><?php print $pageTitle; ?></h1>
<div class="row">
  <div class="col-sm-12">
    <img align="center" src="images/e4.png" />
  </div>
  <div class="col-sm-12" style="margin-top: 40px;">
    <a href="#"><img style="position: relative; top: 20px;"
      src="http://dev.eclipse.org/huge_icons/actions/go-down.png"
    /></a> <a href="/downloads/packages/release/helios/sr2"
      style="font-size: 30px;"
    >Download Now</a>
  </div>
</div>
<hr class="clearer" />
<p>Eclipse SDK 4.0 (formerly called e4) is the next generation platform for
  building Eclipse-based rich client desktop applications. This new release
  makes it easier for developers to develop and assemble application and tools
  based on the Eclipse platform.</p>
<p>The 4.0 release is for early adopters that want to begin taking advantage of
  the new api's and services. Eclipse tool users are urged to wait for future
  releases.</p>
<div class="row">
  <div class="col-sm-12">
    <h3>How RCP Developers Benefit</h3>
    <p>Developers who use the Eclipse Rich Client Platform (RCP) will find
      Eclipse SDK 4.0 makes it easier to build great looking rich client
      applications. Eclipse SDK 4.0 introduces the following:</p>
    <ul>
      <li>a new declarative and visual definition for user interfaces, making it
        easier and more flexible to design and change an application user
        interface. Also, making it easier to make a user interface look less
        like an IDE.</li>
      <li>a new services-orient programming model that makes it easier to use
        discreet application services of the Eclipse platform.</li>
      <li>better support for integrating web UI components into Eclipse-based
        applications, including support for OpenSocial gadgets.</li>
    </ul>
    <br />
    <h3>Getting Started for RCP Developers</h3>
    <ul>
      <li>Roadmap</li>
      <li>Tutorials</li>
    </ul>
  </div>
  <div class="col-sm-12">
    <h3>How Tool Developers Benefit</h3>
    <p>Developers that have built Eclipse tools and plugins will want to start
      migrating these tools to Eclipse SDK 4.0. Developers will benefit from the
      following Eclipse SDK 4.0 features:</p>
    <ul>
      <li>a model-based workbench makes it easier to integrate your tool into
        the Eclipse workbench</li>
    </ul>
    <br />
    <h3>Getting Started for Tools Developers</h3>
    <ul>
      <li>Roadmap</li>
      <li>Tutorials</li>
    </ul>
  </div>
</div>