<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
/*******************************************************************************
 * Copyright (c) 2009-2010 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://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors: Christopher Guindon (Eclipse Foundation)
 * Nathan Gervais (Eclipse Foundation)
 *    
 *******************************************************************************/

	#
	# Begin: page-specific settings.  Change these. 
	$page           = "Highlights";
	$pageTitle 		= "Eclipse.org - Kepler Simultaneous Release : " . $page;
	$pageKeywords	= "eclipse kepler, release, simultaneous, release train, kepler";
	$pageAuthor		= "Christopher Guindon";
	
	# Paste your HTML content between the EOHTML markers!	
	ob_start();	
	?>
	<div id="fullcolumn" class="kepler subpage highlights">
		<?php include_once('includes/nav.php');?>
		<div id="mini-hightlights">
			<h2 id="h2_highlights">Highlights</h2>
				<ul class="ul_highlights">
					<li><a title="Eclipse Web Tools Platform Project website" href="http://www.eclipse.org/webtools/">Eclipse Web Tools Project (WTP) 3.5</a> now supports the development of Java EE 7 applications.</li>			
					<li><a title="Stardust website" href="http://www.eclipse.org/stardust/">Stardust 1.0</a> provides a complete Business Process Management (BPM) suite of tools and runtimes.</li>
					<li><a title="Orion website" href="http://www.eclipse.org/orion">Orion 3.0</a> includes significant usability features and easier deployment to Java applications servers.</li>
					<li><a title="Business Intelligence and Reporting Tools (BIRT) website" href="http://www.eclipse.org/birt/">Business Intelligence and Reporting Tools (BIRT)</a> support for big data reporting now includes support for MongoDB and Cassandra.</li>
					<!--  <li><a title="Hudson website" href="http://www.eclipse.org/hudson/">Hudson 3.1</a> feature improvements focused on scalability for large deployments, including multi-tenancy for Hudson jobs.</li>-->
					<li><a title="Mylyn website" href="http://www.eclipse.org/mylyn/">Mylyn</a> now includes better support for code reviews through a navigator view and integration with Gerrit.</li>
					<li><a title="Maven Integration for Web Tools Platform website" href="http://www.eclipse.org/m2e-wtp/">Maven Integration for WTP</a> now makes it easier to use Maven for Java EE projects in Eclipse.</li>
				
				</ul>
		</div>
	</div>
	<?
	$html = ob_get_clean();
	# Generate the web page
	$App->Promotion = TRUE;
	$App->AddExtraHtmlHeader('<link href="http://fonts.googleapis.com/css?family=EB+Garamond" rel="stylesheet" type="text/css"/>');
	$App->AddExtraHtmlHeader('<link type="text/css" href="/kepler/css/styles.min.css" rel="stylesheet"/>');	
	$App->AddExtraHtmlHeader('<!--[if IE 7]><link rel="stylesheet" type="text/css" href="/home/content/ie7_nova.css" media="screen"/><![endif]-->');
	$App->generatePage('Nova', $Menu, NULL , $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
