<?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 class="bar">&nbsp;</div>
<div id="fullcolumn">

	<div id="container">
	
		<div id="topper" class="clearfix">
			<div class="logo" style="margin-top:40px;">
	
			</div>
			<div class="topDesc">
						<h1>Eclipse SDK 4.0</h1>
			<p class="subHeading">Early Adopter Release</p>
			<p class="description">Eclipse SDK 4.0  (based on e4 technology) 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 class="description">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>
				<a href="#" style="font-size:16px;color:#333;">Download</a> - <a href="http://wiki.eclipse.org/Eclipse/Eclipse_SDK_4.0_FAQ" style="font-size:16px;color:#333;">FAQ</a> - <a style="font-size:16px;color:#333;" href="#">Get involved</a>
			</div>
		</div>
		<hr class="clearer"/>
		
		<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 CSS-based declarative mechanism for application styling and a model-based user interface. These facilities make it easier to design and customize an application user interface. This also adds greater flexibility to UI layout, making it easier to make a user interface look different from an IDE</li>
			<li>a new services-oriented 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/>
		<h4>Getting Started for RCP Developers</h4>
		<ul>
			<li>Roadmap</li>
			<li>Tutorials</li>
		</ul>		
		</div>
		
		<div class="twocolumn ">
		<h3>For Tool Developers</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>The Eclipse SDK 4.0 supports all of the same APIs and functionality as the 3.6 (Helios) release, but the implementation of the user interface has changed.</li>
				<li>You should install and run your existing tools on 4.0 to ensure they continue to function as expected.</li>
				<li>Explore the preliminary e4 APIs and provide feedback to the development team to help shape the future of the platform</li> 
			</ul>
			<br/>
		<h4>Getting Started for Tools Developers</h4>
		<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);
?>