<?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 Camps</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" style="padding-top:1.5em;">
  <div class="col-md-15">
		<h1>Are you ready for <span class="fw-600">Java&trade; 8?</span></h1>
	  <p class="projects">Eclipse Luna includes official support for Java 8 in the 
	  <a href="/jdt">Java development tools</a>, 
	  <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>, 
	  <a href="/xtend">Xtend</a>, 
	  <a href="/webtools">Web Tools Platform</a>, and 
	  <a href="/mat">Memory Analyzer</a>.</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 Camps</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>Highlights</h3>
	      <div class="content">
	      <ul class="fa-ul">
	        <li><i class="fa fa-li fa-chevron-circle-right orange"></i> Java 8 support including 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="/sirius/">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>
