<?php
/*******************************************************************************
 * Copyright (c) 2014 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:
 *    Christopher Guindon (Eclipse Foundation) - Initial implementation
 *******************************************************************************/
?>
<!--
<div class="toolbar-menu breadcrumbs-offset">
		<div class="container">
		  <div class="row">
		    <div class="col-md-24">
		  		<ol class="breadcrumb">
						<li><i class="fa fa-star orange fa-fw"></i> <a href="//projects.eclipse.org/releases/luna">Projects</a></li>
					  <li><i class="fa fa-download orange fa-fw"></i> <a href="/downloads/">Downloads</a></li>
						<li><i class="fa fa-gears orange fa-fw"></i> <a href="//wiki.eclipse.org/Eclipse_DemoCamps_Luna_2014">Demo Camp</a></li>
						<li><i class="fa fa-users orange fa-fw"></i> <a href="/donate/">Friends of Luna</a></li>
					</ol>
				</div>
		  </div>
		</div>
</div>
 -->
<div class="container">

  <div class="col-md-15">

		<h1>Are you ready for <span class="fw-600">Java&trade; 8?</span></h1>
	  <p>Eclipse Luna is now the default platform for building rich client applications.
		Learn how to migrate your existing RCP application and benefit from the new Eclipse Luna features.</p>
		<ul class="second-level-menu list-inline clearfix">
		  <li class="col-md-12"><i class="fa fa-star orange fa-fw"></i> <a href="//projects.eclipse.org/releases/luna">Projects</a></li>
			<li class="col-md-12"><i class="fa fa-download orange fa-fw"></i> <a href="/downloads/">Downloads</a></li>
			<li class="col-md-12"><i class="fa fa-gears orange fa-fw"></i> <a href="//wiki.eclipse.org/Eclipse_DemoCamps_Luna_2014">Demo Camp</a></li>
			<li class="col-md-12"><i class="fa fa-users orange fa-fw"></i> <a href="/donate/">Friends of Luna</a></li>
		</ul>
		<div class="block-box">
	    <h3>Hightlights</h3>
	      <div class="content">
	      <ul class="fa-ul">
	        <li><i class="fa fa-li fa-chevron-circle-right orange"></i> Eclipse Luna includes official support for <a href="http://wiki.eclipse.org/JDT_Core/Java8"></a>Java&trade; 8</a> in the Java development tools, <a href="/pde/">Plug-in Development Tools</a>, <a href="/objectteams/">Object Teams</a>, <a href="/ecf/">Eclipse Communication Framework</a>,
	        <a href="/m2e/">Maven integration</a>, <a href="/Xtext/">Xtext</a> and <a href="/xtend/">Xtend</a>. The Eclipse compiler includes language enhancements, search and refactoring, Quick Assist and Clean Up to migrate anonymous classes to lambda expressions and back, and new formatter options for lambdas.</li>
					<li><i class="fa fa-li fa-chevron-circle-right orange"></i> The Eclipse workbench provides a new dark theme which includes syntax highlighter settings for several programming languages.</li>
					<li><i class="fa fa-li fa-chevron-circle-right orange"></i> <a href="/paho/">Paho</a> provides open source implementations of open and standard messaging protocols that support current and emerging requirements of M2M integration with Web and Enterprise middleware and applications.</li>
					<li><i class="fa fa-li fa-chevron-circle-right orange"></i> The <a href="/ecf/">Eclipse Communication Project's (ECF)</a> specification-compliant implementation of OSGi Remote Service/Remote Service Admin has been enhanced to support the use of Java 8's CompletableFuture for asynchronous remote services.</li>
					<li><i class="fa fa-li fa-chevron-circle-right orange"></i> <a href="/sirus/">Sirius</a> allows architects to easily create their own graphical modeling workbenches by leveraging the Eclipse modeling technologies, including <a href="/emf">Eclipse Modeling Framework (EMF)</a> and <a href="/gmf/">Graphical Modeling Framework (GMF)</a>. <a href="/ecoretools/">EcoreTools</a>, the graphical modeler for Ecore, has been completely re-implemented based on Sirius.</li>
			  </ul>
	    </div>
		</div>
		<p><a href="/home" class="btn btn-warning">Go to Eclipse.org</a></p><br/><br/>
  </div>

  <div class="col-md-8 col-md-offset-1">
    <div style="text-align: center;padding:25px 0;">
      <h3>Become a <span class="fw-600">Friend of Eclipse</span></h3>
      <p><a href="/donate" class="btn btn-warning">Donate now</a></p>
    </div>
	  <div class="block-box">
		 <h3><i class="fa fa-twitter"></i>  Recent <span class="fw-700">#eclipseluna</span> tweets</h3>
		   <div class="content">
	     <a class="twitter-timeline"  href="https://twitter.com/search?q=%23eclipseluna"  data-widget-id="470988115096510464" data-chrome="noheader noscrollbar transparent">Tweets about "#eclipseluna"</a>
       <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
	     </div>
		  </div>
	  </div>
  </div>
</div>