<?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'

	#*****************************************************************************
	#
	# sample_list.php
	#
	# Author: 		Denis Roy
	# Date:			2005-11-07
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse SDK 4.0: The Next Generation Eclipse Platform  (Early Adopter Release)";
	$pageKeywords	= "Eclipse SDK 4.0, e4";
	$pageAuthor		= "Nathan Gervais";
		
	# Paste your HTML content between the EOHTML markers!	
	ob_start();
	?>
<div id="fullcolumn">
	<div id="container">
	
		<h1>Eclipse SDK 4.0: The Next Generation Eclipse Platform  (Early Adopter Release)</h1>
		<div class="twocolumn">
			<img align="center" src="images/e4.png"/>
		</div>
		<div class="twocolumn" style="margin-top:40px;">
			<a href="#"><img style="position:relative;top:20px;" src="http://dev.eclipse.org/huge_icons/actions/go-down.png" /></a>
			<a href="#" style="font-size:30px;">Download Now</a>
		</div>
		<hr class="clearer"/>
		<p>Eclipse SDK 4.0  (formerly called e4) 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>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>
		
		<div class="twocolumn">
		<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 declarative and visual definition for user interfaces, making it easier and more flexible to design and change an application user interface.  Also, making it easier to make a user interface look less like an IDE.</li>
			<li>a new services-orient 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/>
		<h3>Getting Started for RCP Developers</h3>
		<ul>
			<li>Roadmap</li>
			<li>Tutorials</li>
		</ul>		
		</div>
		
		<div class="twocolumn ">
		<h3>How Tool Developers Benefit</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>a model-based workbench makes it easier to integrate your tool into the Eclipse workbench </li>
			</ul>
			<br/>
		<h3>Getting Started for Tools Developers</h3>
		<ul>
			<li>Roadmap</li>
			<li>Tutorials</li>
		</ul>			
		</div>
	</div>
</div>

	
	<?
	$html = ob_get_clean();
	$App->AddExtraHtmlHeader('<link type="text/css" href="style.css" rel="stylesheet"/>');
	# Generate the web page
	$App->generatePage('Nova', $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>