<?php
/*******************************************************************************
 * Copyright(c) 2015 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Nathan Gervais (Eclipse Foundation) - Initial implementation
 *    Eric Poirier (Eclipse Foundation)
 *******************************************************************************/
?>
<div id="juno">
  <div class="juno frontpage">
    <h1>Eclipse.org - Juno Simultaneous Release</h1>
    <a href="/juno/"><img id="junoLogo" src="/juno/images/juno-logo.png" /></a>
    <!--  <span id="release-date">Coming June 27, 2012</span>-->
    <div id="container">

      <div id="nav">
        <ul>
          <li><a class="textshadow"
            href="/downloads/packages/release/juno/sr2">Downloads</a></li>
          <li><a class="textshadow" href="/juno/projects.php">Projects</a></li>
          <li><a class="textshadow"
            href="http://wiki.eclipse.org/Eclipse_DemoCamps_Juno_2012">DemoCamps</a></li>
          <li class="last"><a class="textshadow"
            href="/juno/friends.php">Friends of Juno</a></li>
        </ul>
      </div>
      <div id="window">
        <div id="sidebar">
          <h2>Are you ready for Eclipse 4?</h2>
          <p class="tagline">
            <a href="http://www.eclipse.org/eclipse4"">Eclipse 4</a> is
            now the default platform for building rich client
            applications.<br />Learn how to migrate your existing RCP
            application and benefit from the new <a
              href="http://www.eclipse.org/eclipse4">Eclipse 4</a>
            features.
          </p>
          <div class="darkbg r-rounded  shadow" id="friend_box">
            <h3>
              <a href="/juno/friends.php">Become a Friend of Juno</a>
            </h3>
            <!--  <p>Friends of Juno<br/> <strong>15</strong> friends of Eclipse.</p>-->
            <div class="progress-bar rounded shadow">
              <div class="progress-current l-rounded" style="width: 15%">
                <div class="progress-text textshadow">
                  75</strong> friends of Juno
                </div>
              </div>
            </div>
          </div>
          <a class="button" href="/donate/donorlist.php?showAll=0">More</a>
        </div>
        <div id="main">
          <h2>Highlights</h2>
          <ul id="ticker">
            <li><a href="http://www.eclipse.org/eclipse4">Eclipse 4.2</a>
              is now the default platform for the Eclipse community.</li>
            <li>New <a href="http://www.eclipse.org/koneki/">Koneki</a>
              project provides world-class Lua development tools for M2M
              application development.
            </li>
            <li><a href="http://www.eclipse.org/equinox/">Equinox</a>
              provides the reference implementation for the new OSGi R5
              specification.</li>
            <li><a href="http://www.eclipse.org/virgo/">Eclipse Virgo
                3.5</a> will deliver the new Virgo Nano which allows
              developers to deploy very small and fast OSGi-based
              applications.</li>
            <li><a href="http://www.eclipse.org/xtend/">Xtend</a>, a new
              language for Java developers, will introduce support for
              debugging, improved IDE support and new language features,
              including properties, data classes and type inference for
              fields.</li>
            <li><a href="http://www.eclipse.org/Xtext/">Xtext 2.3</a>
              will now support integrated debugging of JVM-based DSLs
              created using Xtext and tighter integration with the Java
              Development Tools (JDT).</li>
            <li><a href="http://www.eclipse.org/recommenders/">Eclipse
                Code Recommenders</a> makes developers smarter about
              using APIs. Based on a knowledge-based and advanced
              analytics of existing API usage, Code Recommenders
              provides intelligent API recommendations to Eclipse
              developers building Java applications.</li>
          </ul>
        </div>
      </div>
    </div>
  </div>
  <img src="/juno/images/eclipse-sm-logo.png" id="eclipse-logo-sm" /> <a
    class="button rounded shadow" id="btn_continue" href="/home">Click
    here to continue to Eclipse.org</a>
  <script type="text/javascript" src="/juno/scripts/ticker.js"></script>