<?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
 */
 ?>
<div id="topper" class="clearfix">
  <div class="logo" style="margin-top: 40px;"></div>
  <div class="topDesc">
    <h1>Eclipse SDK 4.0</h1>
    <p class="subHeading">Early Adopter Release</p>
    <p class="description">Eclipse SDK 4.0 (based on e4 technology) 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 class="description">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>
    <p><a href="#" style="font-size: 16px; color: #333;">Download</a> - <a
      href="http://wiki.eclipse.org/Eclipse/Eclipse_SDK_4.0_FAQ"
      style="font-size: 16px; color: #333;">FAQ</a> - <a
      style="font-size: 16px; color: #333;" href="#">Get involved</a></p>
  </div>
</div>
<hr class="clearer" />
<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 CSS-based declarative mechanism for application styling
        and a model-based user interface. These facilities make it
        easier to design and customize an application user interface.
        This also adds greater flexibility to UI layout, making it
        easier to make a user interface look different from an IDE</li>
      <li>a new services-oriented 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 />
    <h4>Getting Started for RCP Developers</h4>
    <ul>
      <li>Roadmap</li>
      <li>Tutorials</li>
    </ul>
  </div>
  <div class="col-sm-12">
    <h3>For Tool Developers</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>The Eclipse SDK 4.0 supports all of the same APIs and
        functionality as the 3.6 (Helios) release, but the
        implementation of the user interface has changed.</li>
      <li>You should install and run your existing tools on 4.0 to
        ensure they continue to function as expected.</li>
      <li>Explore the preliminary e4 APIs and provide feedback to the
        development team to help shape the future of the platform</li>
    </ul>
    <br />
    <h4>Getting Started for Tools Developers</h4>
    <ul>
      <li>Roadmap</li>
      <li>Tutorials</li>
    </ul>
  </div>
</div>