<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>EclipseSource Blog</title>
	<atom:link href="http://eclipsesource.com/blogs/feed/" rel="self" type="application/rss+xml" />
	<link>http://eclipsesource.com/blogs</link>
	<description>Eclipse Equinox OSGi</description>
	<lastBuildDate>Wed, 22 May 2013 08:19:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>EMF Dos and Don´ts #10</title>
		<link>http://eclipsesource.com/blogs/2013/05/21/emf-dos-and-don%c2%b4ts-10/</link>
		<comments>http://eclipsesource.com/blogs/2013/05/21/emf-dos-and-don%c2%b4ts-10/#comments</comments>
		<pubDate>Tue, 21 May 2013 08:18:56 +0000</pubDate>
		<dc:creator>Maximilian Koegel</dc:creator>
				<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[emf]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=15800</guid>
		<description><![CDATA[EMF is a very powerful framework and with power comes&#8230;responsibility. You can achieve great things with a minimum of effort using EMF, but if something goes wrong, you can also spend hours trying to find out why. This blog post is part of a series on things you should do and things you should not <a href="http://eclipsesource.com/blogs/2013/05/21/emf-dos-and-don%c2%b4ts-10/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p dir="ltr">EMF is a very powerful framework and with power comes&#8230;responsibility. You can achieve great things with a minimum of effort using EMF, but if something goes wrong, you can also spend hours trying to find out why. This blog post is part of a <a href="http://eclipsesource.com/blogs/2013/02/26/emf-do%C2%B4s-and-don%C2%B4ts/">series</a> on things you should do and things you should not do when using EMF. You can use the <a href="http://eclipsesource.com/blogs/2013/02/26/emf-do%C2%B4s-and-don%C2%B4ts/">link to the series pilot</a> to navigate to the start and the link below to navigate to the next blog once it is published.</p>
<p><strong>EMF Dos #10: Use EMF ComposedAdapterFactory</strong></p>
<p>In my <a href="http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%C2%B4ts-9/">previous blog post</a>, I discussed AdapterFactoryLabelProvider and AdapterFactoryContentProvider, which can be used to provide labels and children for your entities in viewers. Both require an AdapterFactory in their constructors that will be used to retrieve the actual ItemProviders and their entity-specific implementation.</p>
<p dir="ltr">If you pass in the AdapterFactory of a specific model, the provider will only be able to provide labels for entities of the given model. However, viewers often need to display entities of multiple models. Of course, there is a solution to this with EMF: ComposedAdapterFactory.</p>
<p dir="ltr">A ComposedAdapterFactory is a composition of AdapterFactories, as the name implies. You can construct it with a collection of AdapterFactories, and it will delegate calls to adapt() to the resepective AdapterFactory based on the entity type. If you want to display multiple models in one viewer, you just combine all the models’ AdapterFactories into one ComposedAdapterFactory and pass it to the AdapterFactoryLabelProvider and AdapterFactoryContentProvider.</p>
<p dir="ltr">If you do not want to restrict your viewer to specific models but want to use all models available in your current target platform, you can pass in ComposedAdapterFactory.Descriptor.Registry.INSTANCE, which is the registry of all available AdapterFactories. By default, the  AdapterFactory of a generated Edit-Plugin is registered via the org.eclipse.emf.edit.itemProviderAdapterFactories extension point and thereby added to the aforementioned registry.</p>
<p dir="ltr">If the AdapterFactoryLabelProvider/AdapterFactoryContentProvider and the ComposedAdapterFactory are based on the registry, your viewers can be fully decoupled from the actual models they display while still providing customized icons, labels and content.</p>
<p>Stay tuned for more Dos and Don´ts in my next blog!</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=EMF+Dos+and+Don%C2%B4ts+%2310&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/05/21/emf-dos-and-don%c2%b4ts-10/" target="_blank" title="Share on Twitter" style="margin-right: 5px;"><img title="Twitter" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png" alt="Twitter"/></a><a href="https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/21/emf-dos-and-don%c2%b4ts-10/" target="_blank" title="+1" style="margin-right: 5px;"><img title="Google+" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png" alt="Google+"/></a><a href="http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/21/emf-dos-and-don%c2%b4ts-10/" target="_blank" title="Share on LinkedIn" style="margin-right: 5px;"><img title="LinkedIn" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png" alt="LinkedIn"/></a><a href="https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/21/emf-dos-and-don%c2%b4ts-10/&amp;t=EMF+Dos+and+Don%C2%B4ts+%2310" target="_blank" title="Facebook" style="margin-right: 5px;"><img title="Facebook" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png" alt="Facebook"/></a></div><br/><a href="http://eclipsesource.com/blogs/2013/05/21/emf-dos-and-don%c2%b4ts-10/#comments">2 Comments</a>. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/emf/' title='emf Tag'>emf</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/emf/' title='emf Tag'>emf</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/05/21/emf-dos-and-don%c2%b4ts-10/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>EMF Dos and Don´ts #9</title>
		<link>http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%c2%b4ts-9/</link>
		<comments>http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%c2%b4ts-9/#comments</comments>
		<pubDate>Thu, 16 May 2013 10:54:39 +0000</pubDate>
		<dc:creator>Maximilian Koegel</dc:creator>
				<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[emf]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=15706</guid>
		<description><![CDATA[EMF is a very powerful framework and with power comes&#8230;responsibility. You can achieve great things with a minimum of effort using EMF, but if something goes wrong, you can also spend hours trying to find out why. This blog post is part of a series on things you should do and things you should not <a href="http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%c2%b4ts-9/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p dir="ltr">EMF is a very powerful framework and with power comes&#8230;responsibility. You can achieve great things with a minimum of effort using EMF, but if something goes wrong, you can also spend hours trying to find out why. This blog post is part of a <a href="http://eclipsesource.com/blogs/2013/02/26/emf-do%C2%B4s-and-don%C2%B4ts/">series</a> on things you should do and things you should not do when using EMF. You can use the <a href="http://eclipsesource.com/blogs/2013/02/26/emf-do%C2%B4s-and-don%C2%B4ts/">link to the series pilot</a> to navigate to the start and the link below to navigate to the next blog once it is published.</p>
<p dir="ltr"><strong>EMF Dos #9: Use EMF ItemProviders</strong></p>
<p dir="ltr">To display entities in a tree view or in other views, you need a label provider and a content provider. The label provider provides an icon and a text to display each entity type. The content provider defines the children of an entity. Additionally, the label and content providers need to notify their viewers if the label or content changes due to data changes. The viewers will update only if there are data changes. You could implement the label and content providers manually, which is a lot of work, or you can rely on EMF-generated infrastructure.</p>
<p dir="ltr">For every entity defined in your Ecore, EMF will generate an ItemProvider in the Edit-Plugin. The ItemProvider implements methods to get an icon and a text for the entity (getText() and getImage()). Since you want to display all kinds of entities in a tree view, you need to create a label provider that will know the type of your entity and use the matching ItemProvider to retrieve a text and an icon. This label provider needs to implement  the ILabelProvider interface. Similarly, a content provider would have to implement the ITreeContentProvider interface and define the children for all the different kinds of entities. For this purpose, EMF provides a fully functional label and content providers: AdapterFactoryLabelProvider and AdapterFactoryContentProvider. They both work in the same way,  so I will focus on the AdapterFactoryLabelProvider.</p>
<p dir="ltr">Conceptually, an AdapterFactoryLabelProvider is able to provide labels for all supported entities by delegating to the appropriate generated ItemProviders. Technically, the AdapterFactoryLabelProvider requires an AdapterFactory to do this (see the constructor). An AdapterFactory creates adapters (wrappers) for a given entity. For each EMF model, EMF generates an AdapterFactory for the ItemProviders of its entities. Basically, the adapt() method of the AdapterFactory returns the appropriate ItemProvider for a specific  entity.</p>
<p dir="ltr">To construct an AdapterFactoryLabelProvider,  you can pass in the AdapterFactory of your model, and the label provider will be able to display your entities based on their ItemProviders.</p>
<p dir="ltr">If you want to display entities from multiple models you can use a ComposedAdapterFactory, which I will describe in my next blog.</p>
<p dir="ltr">The AdapterFactoryLabelProvider will &#8212;  with the help of the ItemProviders &#8212; update its viewers if any of the entities it provided a label for change. Furthermore, the AdapterFactoryLabelProvider is very loosely coupled to the ItemProviders that implement entity-specific display behaviour.</p>
<p dir="ltr">Since the ItemProviders are generated (but can be adapted if necessary), the AdapterFactoryLabelProvider and AdapterFactoryContentProvider really are a big productivity boost in displaying EMF-based entities in your viewers.</p>
<p dir="ltr">Stay tuned for more Dos and Don´ts in my <a href="http://eclipsesource.com/blogs/2013/05/21/emf-dos-and-don%C2%B4ts-10/">next blog</a>!</p>
<p>&nbsp;</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=EMF+Dos+and+Don%C2%B4ts+%239&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%c2%b4ts-9/" target="_blank" title="Share on Twitter" style="margin-right: 5px;"><img title="Twitter" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png" alt="Twitter"/></a><a href="https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%c2%b4ts-9/" target="_blank" title="+1" style="margin-right: 5px;"><img title="Google+" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png" alt="Google+"/></a><a href="http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%c2%b4ts-9/" target="_blank" title="Share on LinkedIn" style="margin-right: 5px;"><img title="LinkedIn" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png" alt="LinkedIn"/></a><a href="https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%c2%b4ts-9/&amp;t=EMF+Dos+and+Don%C2%B4ts+%239" target="_blank" title="Facebook" style="margin-right: 5px;"><img title="Facebook" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png" alt="Facebook"/></a></div><br/><a href="http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%c2%b4ts-9/#comments">Leave a Comment</a>. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/emf/' title='emf Tag'>emf</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/emf/' title='emf Tag'>emf</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%c2%b4ts-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Bootstrap a Tabris Application with Maven and Eclipse</title>
		<link>http://eclipsesource.com/blogs/2013/05/14/how-to-bootstrap-a-tabris-application-with-maven-and-eclipse/</link>
		<comments>http://eclipsesource.com/blogs/2013/05/14/how-to-bootstrap-a-tabris-application-with-maven-and-eclipse/#comments</comments>
		<pubDate>Tue, 14 May 2013 13:22:05 +0000</pubDate>
		<dc:creator>Holger Staudacher</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[rap]]></category>
		<category><![CDATA[Tabris]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=15753</guid>
		<description><![CDATA[From my point of view bootstrapping a new application is always tricky. Especially when you want to bootstrap an app that uses technology you are not yet familiar with. With this post I want to give you a step by step tutorial on how to bootstrap a Tabris application using Eclipse and Maven. So, let&#8217;s <a href="http://eclipsesource.com/blogs/2013/05/14/how-to-bootstrap-a-tabris-application-with-maven-and-eclipse/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>From my point of view bootstrapping a new application is always tricky. Especially when you want to bootstrap an app that uses technology you are not yet familiar with. With this post I want to give you a step by step tutorial on how to bootstrap a <a href="http://developer.eclipsesource.com/tabris/">Tabris application</a> using Eclipse and Maven. So, let&#8217;s get our hands dirty!</p>
<p><strong>IDE Setup</strong></p>
<p>The first thing you need to do is to download the latest &#8220;<a href="http://www.eclipse.org/downloads/">Eclipse IDE for Java EE Developers</a>&#8220;. This package contains everything you need to create web applications and deploy them to the application servers of your choice. As we want to bootstrap the application with Maven, we also need to install additional tools called &#8220;<a href="http://www.eclipse.org/m2e/">m2e</a>&#8221; which provide a Maven integration for Eclipse. So, after starting your new IDE, go to</p>
<p>&#8220;Help&#8221; -&gt; &#8220;Install New Software&#8221; and paste the p2 repository url (<em>http://download.eclipse.org/technology/m2e/releases</em>) of m2e into the text box. This should look like the screenshot below.</p>
<p><img class="aligncenter" alt="m2e installation How to Bootstrap a Tabris Application with Maven and Eclipse" src="http://download.eclipsesource.com/~hstaudacher/m2e-tabris/m2e-installation.png" width="686" height="650" title="How to Bootstrap a Tabris Application with Maven and Eclipse" /></p>
<p>After the installation was successful, you need to restart the IDE.</p>
<p><strong>Create a Project</strong></p>
<p>The next step is to create a new project. Tabris applications run on the server side. So, we want to create a Web-application project. For this go to <em>&#8220;File&#8221; -&gt; &#8220;New&#8221; -&gt; &#8220;Dynamic Web Project&#8221;, </em>which basically creates a JavaEE project.</p>
<p><img class="aligncenter" alt="new project How to Bootstrap a Tabris Application with Maven and Eclipse" src="http://download.eclipsesource.com/~hstaudacher/m2e-tabris/new-project.png" width="539" height="532" title="How to Bootstrap a Tabris Application with Maven and Eclipse" /></p>
<p>In my example I have named the project &#8220;com.eclipsesource.hello.world&#8221; but you can choose whatever name you like.</p>
<p><strong>Maven</strong></p>
<p>To make things as easy as possible we want <a href="http://maven.apache.org/">Maven</a> to manage our dependencies. This involves two steps. Firstly, we want to have the dependencies during development time and secondly, we want Eclipse to put those dependencies in our &#8220;lib&#8221; folder during deployment time. The first step can be completed easily. Just right click on the newly created project and press <em>&#8220;Configure&#8221; -&gt; &#8220;Convert to Maven Project&#8221;</em>.</p>
<p><img class="aligncenter" alt="convert project How to Bootstrap a Tabris Application with Maven and Eclipse" src="http://download.eclipsesource.com/~hstaudacher/m2e-tabris/convert-project.png" width="580" height="593" title="How to Bootstrap a Tabris Application with Maven and Eclipse" /></p>
<p>This adds a pom.xml to our project to which we can later add dependencies. The second step is a little bit more complicated. To have the depencies copied into the &#8220;lib&#8221; folder we need to create a &#8220;Deployment Assembly&#8221;. To create this, right click on the project and select <em>&#8220;Properties&#8221;</em>. In the left hand navigation tree, select &#8220;Deployment Assembly&#8221;. Within this page we need to add a new assembly. So, click on <em>Add</em> and choose <em>&#8220;Java Build Path Entries&#8221;</em>.</p>
<p style="text-align: center;"><img class="aligncenter" alt="new assembly How to Bootstrap a Tabris Application with Maven and Eclipse" src="http://download.eclipsesource.com/~hstaudacher/m2e-tabris/new-assembly.png" width="526" height="415" title="How to Bootstrap a Tabris Application with Maven and Eclipse" /></p>
<p style="text-align: left;">After pressing &#8220;Next&#8221; we need to tell Eclipse which build path entry we want to have copied. As we want the Maven dependencies to be copied,  we will choose these.</p>
<p style="text-align: left;"><img class="aligncenter" alt="maven assembly How to Bootstrap a Tabris Application with Maven and Eclipse" src="http://download.eclipsesource.com/~hstaudacher/m2e-tabris/maven-assembly.png" width="528" height="416" title="How to Bootstrap a Tabris Application with Maven and Eclipse" /></p>
<p style="text-align: left;">On your machine the dependency tree may be empty, but this is not a problem. Just select &#8220;Maven Dependencies&#8221; and press &#8220;Finish&#8221;. After this you should see the newly created assembly pointing to the &#8220;lib&#8221; folder.</p>
<p style="text-align: left;"><img class="aligncenter" alt="assembly result How to Bootstrap a Tabris Application with Maven and Eclipse" src="http://download.eclipsesource.com/~hstaudacher/m2e-tabris/assembly-result.png" width="618" height="536" title="How to Bootstrap a Tabris Application with Maven and Eclipse" /></p>
<p style="text-align: left;"><strong>Add Tabris</strong></p>
<p style="text-align: left;">After having completed the Maven setup, we can add  a dependency to Tabris because we want to build a Tabris app, right <img src='http://eclipsesource.com/blogs/wp-includes/images/smilies/icon_smile.gif' alt="icon smile How to Bootstrap a Tabris Application with Maven and Eclipse" class='wp-smiley' title="How to Bootstrap a Tabris Application with Maven and Eclipse" /> ? So, open the &#8220;pom.xml&#8221; of your project and go to the dependency section. Select &#8220;Add&#8221; and search for &#8220;tabris&#8221;. At this point in time <a href="http://developer.eclipsesource.com/tabris/roadmap/">Tabris 1.0</a> is the current version. Before you select it please make sure that the dependency scope is set to &#8220;runtime&#8221;.</p>
<p style="text-align: left;"><img class="aligncenter" alt="tabris dependency How to Bootstrap a Tabris Application with Maven and Eclipse" src="http://download.eclipsesource.com/~hstaudacher/m2e-tabris/tabris-dependency.png" width="482" height="452" title="How to Bootstrap a Tabris Application with Maven and Eclipse" /></p>
<p style="text-align: left;">After pressing OK and saving the pom.xml Eclipse (m2e) will download Tabris and it&#8217;s dependencies for you.</p>
<p style="text-align: left;"><strong>Creating the App</strong></p>
<p style="text-align: left;">To create the hello world application we need just two classes. The first one is a configuration that tells the framework what to do. In our case it should tell the framework that we want a Tabris UI with only one page. This should look like this:</p>



<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Configuration <span style="color: #000000; font-weight: bold;">implements</span> ApplicationConfiguration <span style="color: #009900;">&#123;</span>
&nbsp;
  @Override
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> configure<span style="color: #009900;">&#40;</span>Application application<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    TabrisClientInstaller.<span style="color: #006633;">install</span><span style="color: #009900;">&#40;</span>application<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    application.<span style="color: #006633;">addEntryPoint</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/hello&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> TabrisUIEntrypointFactory<span style="color: #009900;">&#40;</span>createConfiguration<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">private</span> UIConfiguration createConfiguration<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    UIConfiguration uiConfiguration <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> UIConfiguration<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    PageConfiguration startPageConfig <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PageConfiguration<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;root&quot;</span>, StartPage.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    startPageConfig.<span style="color: #006633;">setTopLevel</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    startPageConfig.<span style="color: #006633;">setTitle</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hello World&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    uiConfiguration.<span style="color: #006633;">addPageConfiguration</span><span style="color: #009900;">&#40;</span>startPageConfig<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">return</span> uiConfiguration<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>




<p style="text-align: left;">After the configuration is complete, we will need a page. I decided to go with an easy one <img src='http://eclipsesource.com/blogs/wp-includes/images/smilies/icon_wink.gif' alt="icon wink How to Bootstrap a Tabris Application with Maven and Eclipse" class='wp-smiley' title="How to Bootstrap a Tabris Application with Maven and Eclipse" /> . It&#8217;s just a pink colored page that does nothing.</p>



<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> StartPage <span style="color: #000000; font-weight: bold;">extends</span> AbstractPage <span style="color: #009900;">&#123;</span>
&nbsp;
  @Override
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> createContent<span style="color: #009900;">&#40;</span><span style="color: #003399;">Composite</span> parent, PageData data<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    parent.<span style="color: #006633;">setBackground</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Color</span><span style="color: #009900;">&#40;</span>parent.<span style="color: #006633;">getDisplay</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">255</span>, <span style="color: #cc66cc;">150</span>, <span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>




<p style="text-align: left;">Basically this is the whole application we want to create.</p>
<p style="text-align: left;"><strong>Configure the Web-Application</strong></p>
<p style="text-align: left;">One last step is to configure the Web-Application. We need to tell the Application that it should use the ApplicationConfiguration created in the previous step. We can do this by modifying the web.xml. You can find this file within your project by expanding the <em>&#8220;WebContent/WEB-INF&#8221;</em> folder. The content of the web.xml should look like this:</p>



<div class="wp_syntax"><table><tr><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;web-app</span> <span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://java.sun.com/xml/ns/javaee&quot;</span> <span style="color: #000066;">xmlns:web</span>=<span style="color: #ff0000;">&quot;http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot;</span> <span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">&quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd&quot;</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;3.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;context-param<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.eclipse.rap.applicationConfiguration<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/param-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param-value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.eclipsesource.hello.world.Configuration<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/param-value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/context-param<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listener<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listener-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.eclipse.rap.rwt.engine.RWTServletContextListener<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/listener-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/listener<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>rwtServlet<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.eclipse.rap.rwt.engine.RWTServlet<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>rwtServlet<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/web-app<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>




<p style="text-align: left;"><strong>Export</strong></p>
<p style="text-align: left;">That&#8217;s it! Our application is ready to be exported. You can do this by right clicking on your project and selecting <em>&#8220;Export&#8221; -&gt; &#8220;WAR-file&#8221;</em>.</p>
<p style="text-align: left;"><img class="aligncenter" alt="export How to Bootstrap a Tabris Application with Maven and Eclipse" src="http://download.eclipsesource.com/~hstaudacher/m2e-tabris/export.png" width="495" height="684" title="How to Bootstrap a Tabris Application with Maven and Eclipse" /></p>
<p style="text-align: left;">After you have the .war file ready you can deploy it to whatever servlet container you want.</p>
<p style="text-align: left;"><strong>Access the Application</strong></p>
<p style="text-align: left;">To access the application you need a Tabris mobile client. You can download them from the <a href="http://developer.eclipsesource.com/tabris/downloads/">Tabris download page</a>. I have used the iOS client and the application looks like the one in the screenshot below. You need to point your client to your server, e.g. http://localhost:8080/com.eclipsesource.hello.world/hello (Please Note: Maybe you have to replace localhost with the address of your servlet container. On Android devices localhost points to the device.).</p>
<p style="text-align: left;"><img class="aligncenter" alt="hello How to Bootstrap a Tabris Application with Maven and Eclipse" src="http://download.eclipsesource.com/~hstaudacher/m2e-tabris/hello.png" width="396" height="744" title="How to Bootstrap a Tabris Application with Maven and Eclipse" /></p>
<p style="text-align: left;">If you have any open questions please don&#8217;t hesitate to leave a comment.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=How+to+Bootstrap+a+Tabris+Application+with+Maven+and+Eclipse&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/05/14/how-to-bootstrap-a-tabris-application-with-maven-and-eclipse/" target="_blank" title="Share on Twitter" style="margin-right: 5px;"><img title="Twitter" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png" alt="Twitter"/></a><a href="https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/14/how-to-bootstrap-a-tabris-application-with-maven-and-eclipse/" target="_blank" title="+1" style="margin-right: 5px;"><img title="Google+" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png" alt="Google+"/></a><a href="http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/14/how-to-bootstrap-a-tabris-application-with-maven-and-eclipse/" target="_blank" title="Share on LinkedIn" style="margin-right: 5px;"><img title="LinkedIn" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png" alt="LinkedIn"/></a><a href="https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/14/how-to-bootstrap-a-tabris-application-with-maven-and-eclipse/&amp;t=How+to+Bootstrap+a+Tabris+Application+with+Maven+and+Eclipse" target="_blank" title="Facebook" style="margin-right: 5px;"><img title="Facebook" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png" alt="Facebook"/></a></div><br/><a href="http://eclipsesource.com/blogs/2013/05/14/how-to-bootstrap-a-tabris-application-with-maven-and-eclipse/#comments">2 Comments</a>. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/java/' title='Java Tag'>Java</a>, <a href='http://eclipsesource.com/blogs/tag/maven/' title='maven Tag'>maven</a>, <a href='http://eclipsesource.com/blogs/tag/mobile/' title='mobile Tag'>mobile</a>, <a href='http://eclipsesource.com/blogs/tag/rap/' title='rap Tag'>rap</a>, <a href='http://eclipsesource.com/blogs/tag/tabris/' title='Tabris Tag'>Tabris</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/java/' title='Java Tag'>Java</a>, <a href='http://eclipsesource.com/blogs/tag/maven/' title='maven Tag'>maven</a>, <a href='http://eclipsesource.com/blogs/tag/mobile/' title='mobile Tag'>mobile</a>, <a href='http://eclipsesource.com/blogs/tag/rap/' title='rap Tag'>rap</a>, <a href='http://eclipsesource.com/blogs/tag/tabris/' title='Tabris Tag'>Tabris</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/05/14/how-to-bootstrap-a-tabris-application-with-maven-and-eclipse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to use multiple browser tabs in your RAP 2.1 Application</title>
		<link>http://eclipsesource.com/blogs/2013/05/10/rap-2-1-m2-multi-browser-tabs/</link>
		<comments>http://eclipsesource.com/blogs/2013/05/10/rap-2-1-m2-multi-browser-tabs/#comments</comments>
		<pubDate>Fri, 10 May 2013 09:26:37 +0000</pubDate>
		<dc:creator>Tim Buschtöns</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[kepler]]></category>
		<category><![CDATA[new and noteworthy]]></category>
		<category><![CDATA[rap]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=15710</guid>
		<description><![CDATA[You can now download RAP 2.1 M2, the final milestone of RAP before the 2.1 (Kepler) release in June. This milstone adds quite a few nice features like bézier curves for Canvas, background-position and -repeat for CSS theming, and (especially) improved multi-tab browsing: It is now possible to host multiple UI-Sessions within the same HTTP-Session, <a href="http://eclipsesource.com/blogs/2013/05/10/rap-2-1-m2-multi-browser-tabs/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>You can now <a href="http://eclipse.org/rap/downloads/">download RAP 2.1 M2</a>, the final milestone of RAP before the 2.1 (Kepler) release in June.</p>
<p>This milstone adds quite a few <a href="http://eclipse.org/rap/noteworthy/2.1/?build=M2">nice features</a> like bézier curves for Canvas, background-position and -repeat for CSS theming, and (especially) improved <b>multi-tab browsing</b>: It is now possible to host multiple UI-Sessions within the same HTTP-Session, meaning that there are no more tricks required to use multiple tabs with RAP applications in the same browser. Lets look at an example how multiple browser tabs can be used within a RAP application by integrating it with the <a href="http://eclipse.org/rap/developers-guide/devguide.php?topic=markup.html&#038;version=2.0#markup">markup</a> and <a href="http://eclipse.org/rap/developers-guide/devguide.php?topic=navigation.html&#038;version=2.0">BrowserNavigation</a> features. </p>
<p>Assuming our application lets the user select a person from a database to edit, the typical setup would be a TableViewer that opens a Dialog on a DefaultSelection event. We want to give the user the additional option to open this dialog in a new browser tab. This tab may run the same EntryPoint, or in this case one designed for this specific purpose only. </p>
<p><img src="http://download.eclipsesource.com/~tbuschto/multitab.png" title="How to use multiple browser tabs in your RAP 2.1 Application" alt="multitab How to use multiple browser tabs in your RAP 2.1 Application" /></p>
<p>We create a TableViewer with markup support:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;">viewer <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> TableViewer<span style="color: #009900;">&#40;</span> parent <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
viewer.<span style="color: #006633;">getTable</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">setData</span><span style="color: #009900;">&#40;</span> RWT.<span style="color: #006633;">MARKUP_ENABLED</span>, <span style="color: #003399;">Boolean</span>.<span style="color: #000066; font-weight: bold;">TRUE</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Then we insert a link in the last cell of each row, whereby &#8220;edit&#8221; is the name of another EntryPoint:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;">viewer.<span style="color: #006633;">setLabelProvider</span><span style="color: #009900;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> CellLabelProvider<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  @Override
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> update<span style="color: #009900;">&#40;</span> ViewerCell cell <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Person person <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span> Person <span style="color: #009900;">&#41;</span>cell.<span style="color: #006633;">getElement</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">switch</span><span style="color: #009900;">&#40;</span> cell.<span style="color: #006633;">getColumnIndex</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">case</span> COLUMN_FIRST_NAME<span style="color: #339933;">:</span>
        cell.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span> person.<span style="color: #006633;">name</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">case</span> COLUMN_PLACE_OF_BIRTH<span style="color: #339933;">:</span>
        cell.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span> person.<span style="color: #006633;">nation</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">case</span> COLUMN_LINKS<span style="color: #339933;">:</span>
        <span style="color: #003399;">String</span> url <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;edit#person/&quot;</span> <span style="color: #339933;">+</span> persons.<span style="color: #006633;">indexOf</span><span style="color: #009900;">&#40;</span> person <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        cell.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>  
          <span style="color: #0000ff;">&quot;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> 
          <span style="color: #339933;">+</span> url 
          <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> target=<span style="color: #000099; font-weight: bold;">\&quot;</span>_blank<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;edit&lt;/a&gt;&quot;</span> 
        <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>In the other EntryPoint, we add deep-link support like this:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="java" style="font-family:monospace;">BrowserNavigation bn 
  <span style="color: #339933;">=</span> RWT.<span style="color: #006633;">getClient</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getService</span><span style="color: #009900;">&#40;</span> BrowserNavigation.<span style="color: #000000; font-weight: bold;">class</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
bn.<span style="color: #006633;">addBrowserNavigationListener</span><span style="color: #009900;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> BrowserNavigationListener<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  @Override
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> navigated<span style="color: #009900;">&#40;</span> BrowserNavigationEvent event <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">String</span> state <span style="color: #339933;">=</span> event.<span style="color: #006633;">getState</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> state.<span style="color: #006633;">startsWith</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;person/&quot;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">int</span> index <span style="color: #339933;">=</span> <span style="color: #003399;">Integer</span>.<span style="color: #006633;">parseInt</span><span style="color: #009900;">&#40;</span> state.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">7</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      editPerson<span style="color: #009900;">&#40;</span> persons.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span> index <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Done. You could also use the <a href="http://eclipse.org/rap/developers-guide/devguide.php?topic=navigation.html&#038;version=2.0#launcher">URLLauncher</a> service to open the tab without using a &#8220;real&#8221; link.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=How+to+use+multiple+browser+tabs+in+your+RAP+2.1+Application&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/05/10/rap-2-1-m2-multi-browser-tabs/" target="_blank" title="Share on Twitter" style="margin-right: 5px;"><img title="Twitter" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png" alt="Twitter"/></a><a href="https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/10/rap-2-1-m2-multi-browser-tabs/" target="_blank" title="+1" style="margin-right: 5px;"><img title="Google+" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png" alt="Google+"/></a><a href="http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/10/rap-2-1-m2-multi-browser-tabs/" target="_blank" title="Share on LinkedIn" style="margin-right: 5px;"><img title="LinkedIn" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png" alt="LinkedIn"/></a><a href="https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/10/rap-2-1-m2-multi-browser-tabs/&amp;t=How+to+use+multiple+browser+tabs+in+your+RAP+2.1+Application" target="_blank" title="Facebook" style="margin-right: 5px;"><img title="Facebook" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png" alt="Facebook"/></a></div><br/><a href="http://eclipsesource.com/blogs/2013/05/10/rap-2-1-m2-multi-browser-tabs/#comments">2 Comments</a>. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/kepler/' title='kepler Tag'>kepler</a>, <a href='http://eclipsesource.com/blogs/tag/new-and-noteworthy/' title='new and noteworthy Tag'>new and noteworthy</a>, <a href='http://eclipsesource.com/blogs/tag/rap/' title='rap Tag'>rap</a>, <a href='http://eclipsesource.com/blogs/tag/tutorial/' title='tutorial Tag'>tutorial</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/kepler/' title='kepler Tag'>kepler</a>, <a href='http://eclipsesource.com/blogs/tag/new-and-noteworthy/' title='new and noteworthy Tag'>new and noteworthy</a>, <a href='http://eclipsesource.com/blogs/tag/rap/' title='rap Tag'>rap</a>, <a href='http://eclipsesource.com/blogs/tag/tutorial/' title='tutorial Tag'>tutorial</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/05/10/rap-2-1-m2-multi-browser-tabs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>EMF Dos and Don´ts #8</title>
		<link>http://eclipsesource.com/blogs/2013/05/06/emf-dos-and-don%c2%b4ts-8/</link>
		<comments>http://eclipsesource.com/blogs/2013/05/06/emf-dos-and-don%c2%b4ts-8/#comments</comments>
		<pubDate>Mon, 06 May 2013 13:11:36 +0000</pubDate>
		<dc:creator>Maximilian Koegel</dc:creator>
				<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[emf]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=15523</guid>
		<description><![CDATA[EMF is a very powerful framework and with power comes&#8230;responsibility. You can achieve great things with a minimum of effort using EMF, but if something goes wrong, you can also spend hours trying to find out why. This blog post is part of a series on things you should do and things you should not <a href="http://eclipsesource.com/blogs/2013/05/06/emf-dos-and-don%c2%b4ts-8/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p dir="ltr">EMF is a very powerful framework and with power comes&#8230;responsibility. You can achieve great things with a minimum of effort using EMF, but if something goes wrong, you can also spend hours trying to find out why. This blog post is part of a <a href="http://eclipsesource.com/blogs/2013/02/26/emf-do%C2%B4s-and-don%C2%B4ts/">series</a> on things you should do and things you should not do when using EMF. You can use the <a href="http://eclipsesource.com/blogs/2013/02/26/emf-do%C2%B4s-and-don%C2%B4ts/">link to the series pilot</a> to navigate to the start and the link below to navigate to the next blog once it is published.</p>
<p dir="ltr"><strong>EMF Dos #8: Use EContentAdapters Carefully</strong></p>
<p dir="ltr">In <a href="http://eclipsesource.com/blogs/2013/04/23/emf-dos-and-don%C2%B4ts-7/">my previous blog post</a>,I talked about the EMF notification mechanism and the need to dispose of Adapters correctly. Instead of a simple AdapterImpl receiving notifications from only one EObject, you might want to receive notifications from multiple EObjects. For example, you might want to receive notifications for all EObjects in a ResourceSet, a Resource or a containment tree of a specific EObject. While you could implement this manually quite easily by walking the containment tree and attaching an Adapter to every EObject in the tree, it would be more complicated to update your registered Adapter when the containment tree changes. Imagine that EObjects are disconnected from or added to the containment tree. Every time, you would have to add or remove your Adapter as appropriate. To make this task very simple for you, there is a more powerful adapter in EMF: EContentAdapter.</p>
<p dir="ltr">An EContentAdapter can be attached to a ResourseSet, a Resource or an EObject. If attached to ResourceSet, it will behave as if it is attached to all its Resources and attach to newly added Resources as appropriate. If attached to a Resource, it will behave as if it is attached to all EObjects at the root of the Resource (including newly added EObjects). If it is attached to an EObject, EContentAdapter will attach to it and to all its contained EObjects following the containment tree. Furthermore, it will remove and add itself if EObjects are removed from or added to the containment tree. If any of the EObjects the EContentAdapter is attached to changes it will receive a notification in its notify() method.</p>
<p dir="ltr">In conclusion, adding an EContentAdapter to an EObject with a huge containment tree is an expensive operation in terms of time. Maintaining multiple EContentAdapters is even more time-consuming. If you add a slow operation to the notify method of the EContentAdapter (e.g., refreshing views on each notification), your application might slow down considerably. Of course, there are good use-cases for EContentAdapter but, in general, you should try to limit yourself to adding Adapters to only the EObjects that are of interest for a specific update operation to avoid overhead.</p>
<p dir="ltr">Stay tuned for more Dos and Don´ts in my <a href="http://eclipsesource.com/blogs/2013/05/16/emf-dos-and-don%C2%B4ts-9/">next blog</a>!</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=EMF+Dos+and+Don%C2%B4ts+%238&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/05/06/emf-dos-and-don%c2%b4ts-8/" target="_blank" title="Share on Twitter" style="margin-right: 5px;"><img title="Twitter" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png" alt="Twitter"/></a><a href="https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/06/emf-dos-and-don%c2%b4ts-8/" target="_blank" title="+1" style="margin-right: 5px;"><img title="Google+" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png" alt="Google+"/></a><a href="http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/06/emf-dos-and-don%c2%b4ts-8/" target="_blank" title="Share on LinkedIn" style="margin-right: 5px;"><img title="LinkedIn" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png" alt="LinkedIn"/></a><a href="https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/06/emf-dos-and-don%c2%b4ts-8/&amp;t=EMF+Dos+and+Don%C2%B4ts+%238" target="_blank" title="Facebook" style="margin-right: 5px;"><img title="Facebook" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png" alt="Facebook"/></a></div><br/><a href="http://eclipsesource.com/blogs/2013/05/06/emf-dos-and-don%c2%b4ts-8/#comments">Leave a Comment</a>. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/emf/' title='emf Tag'>emf</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/emf/' title='emf Tag'>emf</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/05/06/emf-dos-and-don%c2%b4ts-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox OS Peak &#8211; First Impressions (Part 1)</title>
		<link>http://eclipsesource.com/blogs/2013/05/06/firefox-os-peak-first-impressions-part-1/</link>
		<comments>http://eclipsesource.com/blogs/2013/05/06/firefox-os-peak-first-impressions-part-1/#comments</comments>
		<pubDate>Mon, 06 May 2013 11:54:37 +0000</pubDate>
		<dc:creator>Jochen Krause</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=15678</guid>
		<description><![CDATA[On April 23rd, the Firefox OS developer preview phones became available in Europe &#8211; and were sold out in a few hours. The demand was so overwhelming that the supplier geeksphone had to shut down their online shop completely for a week. Now they are back online and have been busy delivering the phones &#8211; <a href="http://eclipsesource.com/blogs/2013/05/06/firefox-os-peak-first-impressions-part-1/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/IMG_0362.jpg"><img class="size-medium wp-image-15683 alignright" alt="IMG 0362 300x224 Firefox OS Peak   First Impressions (Part 1)" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/IMG_0362-300x224.jpg" width="300" height="224" title="Firefox OS Peak   First Impressions (Part 1)" /></a>On April 23rd, the <a title="Firefox OS - Partner pages" href="http://www.mozilla.org/en-US/firefox/partners/">Firefox OS</a> developer preview phones became available in Europe &#8211; and were sold out in a few hours. The demand was so overwhelming that the supplier <a title="Geeksphone - Firefox OS developer phones" href="http://geeksphone.com">geeksphone</a> had to shut down their online shop completely for a week. Now they are back online and have been busy delivering the phones &#8211; our&#8217;s arrived on Friday.</p>
<p>I will share my experience with the phone in a couple of blog entries, from first impressions to user experience topics, to trying <a title="Eclipse RAP homepage" href="http://eclipse.org/rap">Eclipse RAP</a> and various mobile frameworks on the peak phone. Obviously I am also interested if Firefox OS should be a target for our <a title="Tabris framework" href="http://developer.eclipsesource.com/tabris/">Tabris framework</a>. However, that will have to wait, lets get started with the first impressions:</p>
<p><strong>Packaging</strong><br />
The packaging is made of recycled cardboard &#8211; good. Geeks care about the environment.</p>
<p><strong>Contents</strong><br />
Phone, earphones (including microphone), USB-cable and USB-charger. For my taste they could have saved both the earphones and the charger, or do you know any developers that don&#8217;t have at least a couple of these items anyway?</p>
<p><strong>The Phone: Peak</strong><br />
<em>Case</em><br />
Makes a good impression at first sight, although it does not look &#8220;expensive&#8221;. The haptic perception is slick, with a tendency to slippery. I find it annoying that the back of the phone is uneven &#8211; the camera lens sticks out on one side of the upper half of the case. This makes it hard to type when you lay down the phone on its back, not  really ideal for a development phone.</p>
<p><em>Display</em><br />
The display is ok, but the viewing angle is very narrow and the reflexions can be quite disturbing. Good that geeks love dimmed rooms &#8230;</p>
<p><em>Firefox OS</em><br />
Unlocking and browsing the main screens is easy, swiping between multiple panes with Apps is the established standard that Firefox OS is sticking to.<br />
Setting up accounts for mail and calendar worked well (Google Apps), only data entry is annoying. The on-screen keyboard is far from the responsiveness I am used to from my iOS / Android devices. Because the keyboard did not accept some of my strokes I had to try and put the cursor at a specific position in the text field, which is really a pain. Especially if the text is longer than the space available it is almost impossible to get to the position at the end of the entry. Not that I am very fond of the iOS magnifying glass or Android Cursor / Range Selection mechanism, but this is close to completely unusable.</p>
<p>When testing the mobile browser I almost gave up on entering a somewhat longer URL. Beside the problems described above, the browser started to load the URL while I was still typing, so I had to go and try to add something at the end of the URL multiple times.<br />
Calendar and Mail that are coming with Firefox OS show that there is potential for a browser-based operating system, but Palm OS has been there as well, with even sleeker apps and did not quite make it.</p>
<p>I am going to use the phone over the next couple of days &#8211; I will write about the browser in the next post as it is at the core of the entire system.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=Firefox+OS+Peak+%26%238211%3B+First+Impressions+%28Part+1%29&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/05/06/firefox-os-peak-first-impressions-part-1/" target="_blank" title="Share on Twitter" style="margin-right: 5px;"><img title="Twitter" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png" alt="Twitter"/></a><a href="https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/06/firefox-os-peak-first-impressions-part-1/" target="_blank" title="+1" style="margin-right: 5px;"><img title="Google+" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png" alt="Google+"/></a><a href="http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/06/firefox-os-peak-first-impressions-part-1/" target="_blank" title="Share on LinkedIn" style="margin-right: 5px;"><img title="LinkedIn" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png" alt="LinkedIn"/></a><a href="https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/06/firefox-os-peak-first-impressions-part-1/&amp;t=Firefox+OS+Peak+%26%238211%3B+First+Impressions+%28Part+1%29" target="_blank" title="Facebook" style="margin-right: 5px;"><img title="Facebook" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png" alt="Facebook"/></a></div><br/><a href="http://eclipsesource.com/blogs/2013/05/06/firefox-os-peak-first-impressions-part-1/#comments">1 Comment</a>. Tagged with <a href='http://eclipsesource.com/blogs/tag/mobile/' title='mobile Tag'>mobile</a>, <a href='http://eclipsesource.com/blogs/tag/mobile/' title='mobile Tag'>mobile</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/05/06/firefox-os-peak-first-impressions-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eclipse Kepler Milestone 7, available for download</title>
		<link>http://eclipsesource.com/blogs/2013/05/03/eclipse-kepler-milestone-7-available-for-download/</link>
		<comments>http://eclipsesource.com/blogs/2013/05/03/eclipse-kepler-milestone-7-available-for-download/#comments</comments>
		<pubDate>Fri, 03 May 2013 21:57:17 +0000</pubDate>
		<dc:creator>Ian Bull</dc:creator>
				<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[kepler]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=15663</guid>
		<description><![CDATA[Spring has certainly sprung on the west coast of Canada, and that means we are into the Eclipse Kepler endgame. Milestone 7 is the last Kepler milestone before we start rolling out release candidates &#8212; with a scheduled release on June 26th 2013.  There are a number of new and noteworthy things from the Eclipse and Equinox <a href="http://eclipsesource.com/blogs/2013/05/03/eclipse-kepler-milestone-7-available-for-download/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Spring has certainly sprung on the west coast of Canada, and that means we are into the Eclipse Kepler endgame.</p>
<p><a href="http://www.butchartgardens.com/"><img class="aligncenter size-full wp-image-15666" alt="gardens2 Eclipse Kepler Milestone 7, available for download" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/gardens2.jpg" width="600" height="422" title="Eclipse Kepler Milestone 7, available for download" /></a></p>
<p>Milestone 7 is the last Kepler milestone before we start rolling out release candidates &#8212; with a scheduled release on June 26th 2013.  There are a number of new and noteworthy things from the Eclipse and Equinox teams in this milestone, including:</p>
<p><strong>A p2 Remediation Wizard</strong> to help you move past p2 errors. If an install fails, p2 will look for other solutions such as upgrading or removing blocking components. The results of the remediation will be presented and you can choose the path that makes sense for you.</p>
<p><strong><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/remediation.png"><img class="aligncenter size-full wp-image-15667" alt="remediation Eclipse Kepler Milestone 7, available for download" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/remediation.png" width="593" height="494" title="Eclipse Kepler Milestone 7, available for download" /></a></strong><strong>Open Resource improvements:</strong></p>
<p><em id="__mceDel"><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/open-resource-buttons.png"><img class="aligncenter size-full wp-image-15668" alt="open resource buttons Eclipse Kepler Milestone 7, available for download" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/open-resource-buttons.png" width="462" height="427" title="Eclipse Kepler Milestone 7, available for download" /></a>and you can now use <strong>Content-Assist</strong> without a prefix<br />
</em></p>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/content-assist.png"><img class="aligncenter size-full wp-image-15669" alt="content assist Eclipse Kepler Milestone 7, available for download" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/content-assist.png" width="359" height="263" title="Eclipse Kepler Milestone 7, available for download" /></a>Also, the first set of Eclipse 4.x API has also been released.</p>
<p>If you are planning on building on, or even just using Eclipse Kepler, now would be a great time to download this milestone and help out with the testing. Less than 2 months to go!</p>
<p>Checkout the entire <a href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.3M7-201305020800/news/">New and Noteworthy</a>, or download milestone and try it out yourself.</p>
<p><a href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.3M7-201305020800/">http://download.eclipse.org/eclipse/downloads/drops4/S-4.3M7-201305020800/</a></p>
<p>&nbsp;</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=Eclipse+Kepler+Milestone+7%2C+available+for+download&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/05/03/eclipse-kepler-milestone-7-available-for-download/" target="_blank" title="Share on Twitter" style="margin-right: 5px;"><img title="Twitter" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png" alt="Twitter"/></a><a href="https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/03/eclipse-kepler-milestone-7-available-for-download/" target="_blank" title="+1" style="margin-right: 5px;"><img title="Google+" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png" alt="Google+"/></a><a href="http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/03/eclipse-kepler-milestone-7-available-for-download/" target="_blank" title="Share on LinkedIn" style="margin-right: 5px;"><img title="LinkedIn" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png" alt="LinkedIn"/></a><a href="https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/03/eclipse-kepler-milestone-7-available-for-download/&amp;t=Eclipse+Kepler+Milestone+7%2C+available+for+download" target="_blank" title="Facebook" style="margin-right: 5px;"><img title="Facebook" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png" alt="Facebook"/></a></div><br/><a href="http://eclipsesource.com/blogs/2013/05/03/eclipse-kepler-milestone-7-available-for-download/#comments">1 Comment</a>. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/kepler/' title='kepler Tag'>kepler</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/kepler/' title='kepler Tag'>kepler</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/05/03/eclipse-kepler-milestone-7-available-for-download/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How high can you raise the bar?</title>
		<link>http://eclipsesource.com/blogs/2013/05/03/dont-raise-the-bar-too-high/</link>
		<comments>http://eclipsesource.com/blogs/2013/05/03/dont-raise-the-bar-too-high/#comments</comments>
		<pubDate>Fri, 03 May 2013 08:28:37 +0000</pubDate>
		<dc:creator>Matthias Kempka</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software craftsmanship]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=15645</guid>
		<description><![CDATA[You have read the books. You are a clean coder. You know your language, your tools and libraries  and you know exactly what matters: Well crafted software, steadily adding value, and of course you are part of a community of professionals. There was something about productive partnerships, too, but that was a bit hard do <a href="http://eclipsesource.com/blogs/2013/05/03/dont-raise-the-bar-too-high/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>You have read the books. You are a clean coder. You know your language, your tools and libraries  and you know exactly what matters: Well crafted software, steadily adding value, and of course you are part of a community of professionals. There was something about productive partnerships, too, but that was a bit hard do understand. Anyway, the <a href="http://agilemanifesto.org/">Agile Manifesto</a> made quite an impact by clearly stating its values, but the <a href="http://manifesto.softwarecraftsmanship.org/">Software Craftsmanship Manifesto</a> raised the bar again. (<a href="http://search.dilbert.com/comic/Buzzword%20Bingo">BINGO</a>, right?)</p>
<p><img class="alignright" alt="4713156011 87732e1749 n How high can you raise the bar?" src="http://farm5.staticflickr.com/4013/4713156011_87732e1749_n.jpg" width="320" height="214" title="How high can you raise the bar?" />Who would not want to be part of such a movement? &#8211; So now we are a community of professionals who value well-crafted software (BINGO again). And the first time after reading Robert Martins books you&#8217;ll have some clear impressions that tests are the one thing that make the difference. Everything else follows &#8211; eventually even the understanding what kind of tests the dear uncle is talking about.</p>
<p>The manifestos are referred to often enough, and I&#8217;m sure you are at least somewhat familiar with them. Still I want to repeat them again, but to not get boring, let me combine them to make it clear that one Manifesto is the extension of the other.</p>
<ul>
<li><strong>We find working software more important than comprehensive documentation.</strong> <em>In pursuit of this, we also practice crafting software well and and help others in doing so.</em></li>
<li><strong>We find individuals and interactions more important than processes and tools.</strong> <em>In pursuit of this, we form  a community of professionals and invite others joining in.</em></li>
<li><strong>We find customer collaboration more important than contract negotiation.</strong> <em>In pursuit of this, we find productive partnerships indispensible.</em></li>
<li><strong>We find responding to change more important than following a plan.</strong> <em>In pursuit of this, we strive for steadily adding value.</em></li>
</ul>
<p>The <strong>Agile Manifesto</strong> and the <em>Software Craftsmanship Manifesto</em> are quite concise and carry a lot of values. Together they provide a high standard anyone involved in Software Development can adhere to. I find that many developers who follow the craftsmanship movement focus too tightly on the <em>italic</em> part.</p>
<p>It&#8217;s important to note that the Agile Manifesto gives priorities. It states that working software is valued higher than comprehensive documentation. However, the Software Craftsmanship manifesto is an addition. It reads &#8220;<em>but also well-crafted software&#8221;</em>. Where the Agile Manifesto used the word &#8220;<strong>over</strong>&#8221; to tie the right and the left side of the priorities together, the Software Craftsmanship Manifesto uses a &#8220;<em>but also</em>&#8220;. Well-crafted software means nothing if it is not the working software that the customer wants.</p>
<p>So remember, before you raise the bar, make sure you jumped over it at least once before.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=How+high+can+you+raise+the+bar%3F&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/05/03/dont-raise-the-bar-too-high/" target="_blank" title="Share on Twitter" style="margin-right: 5px;"><img title="Twitter" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png" alt="Twitter"/></a><a href="https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/03/dont-raise-the-bar-too-high/" target="_blank" title="+1" style="margin-right: 5px;"><img title="Google+" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png" alt="Google+"/></a><a href="http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/03/dont-raise-the-bar-too-high/" target="_blank" title="Share on LinkedIn" style="margin-right: 5px;"><img title="LinkedIn" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png" alt="LinkedIn"/></a><a href="https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/03/dont-raise-the-bar-too-high/&amp;t=How+high+can+you+raise+the+bar%3F" target="_blank" title="Facebook" style="margin-right: 5px;"><img title="Facebook" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png" alt="Facebook"/></a></div><br/><a href="http://eclipsesource.com/blogs/2013/05/03/dont-raise-the-bar-too-high/#comments">Leave a Comment</a>. Tagged with <a href='http://eclipsesource.com/blogs/tag/agile/' title='Agile Tag'>Agile</a>, <a href='http://eclipsesource.com/blogs/tag/software-craftsmanship/' title='Software craftsmanship Tag'>Software craftsmanship</a>, <a href='http://eclipsesource.com/blogs/tag/agile/' title='Agile Tag'>Agile</a>, <a href='http://eclipsesource.com/blogs/tag/software-craftsmanship/' title='Software craftsmanship Tag'>Software craftsmanship</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/05/03/dont-raise-the-bar-too-high/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>State of the Android Gradle Build System</title>
		<link>http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/</link>
		<comments>http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/#comments</comments>
		<pubDate>Thu, 02 May 2013 11:48:28 +0000</pubDate>
		<dc:creator>Moritz Post</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[Gradle]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=15607</guid>
		<description><![CDATA[Building an Android project can be challenging at times. The Android SDK ships with a set of helpful ant scripts, but has its shortcomings. It mainly lacks a well-populated dependency infrastructure similar to what maven offers (ivy doesn&#8217;t count). Hence, the natural evolution of build process spawned the maven android plugin. The plugin allows you to infuse <a href="http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Building an Android project can be challenging at times. The <a href="http://developer.android.com/sdk/index.html">Android SDK</a> ships with a set of helpful <a href="http://developer.android.com/tools/building/building-cmdline.html#ReleaseMode">ant scripts</a>, but has its shortcomings. It mainly lacks a well-populated dependency infrastructure similar to what <a href="http://search.maven.org/">maven offers</a> (ivy doesn&#8217;t count). Hence, the natural evolution of build process spawned the <a href="https://code.google.com/p/maven-android-plugin/">maven android plugin</a>. The plugin allows you to infuse maven artifacts and perform the necessary build steps to package your app. Although maven has a great artifact repository, it has a pretty rigid set of configuration settings. The pom files tend to get verbose and interfering with the designated build process lacks flexibility.</p>
<div align="center"><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/gardle-android.png"><img class="size-full wp-image-15613 aligncenter" alt="gardle android State of the Android Gradle Build System" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/gardle-android.png" width="575" height="251" title="State of the Android Gradle Build System" /></a></div>
<h2>The &#8220;New Build System&#8221;</h2>
<p>Entering the &#8220;<a href="http://tools.android.com/tech-docs/new-build-system">New Build System</a>&#8221; based on <a href="http://www.gradle.org/">Gradle</a>. The new build system is supposed to become the official mechanism for building Android applications. The gradle-based build combines some of the strengths of ant and maven (flexible architecture with a lot of custom tweaking opportunities), whilst at the same time providing reasonable default configurations to keep the build scripts small. Maven dependencies can be consumed from maven central, while it is also easy to consume &#8220;local file&#8221; dependencies.</p>
<p>Okay, but how does the &#8220;New Build System&#8221; prevail in practice?</p>
<h2>Using the Gradle Android Build</h2>
<p>DISCLAIMER: We are only a few days away from Google IO 2013 so the points raised here might have already changed when you read this.</p>
<p>Basic build scripts can be really really small when you rely on the default folder structure for your project. Your basic gradle build script can look like this:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="groovy" style="font-family:monospace;">buildscript <span style="color: #66cc66;">&#123;</span>
  repositories <span style="color: #66cc66;">&#123;</span>
    mavenCentral<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#125;</span>
&nbsp;
  dependencies <span style="color: #66cc66;">&#123;</span>
    classpath <span style="color: #ff0000;">'com.android.tools.build:gradle:0.3'</span>
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
apply plugin: <span style="color: #ff0000;">'android'</span></pre></td></tr></table></div>

<p>In fact the buildscript{} element is only required to bootstrap the script itself. The actual content is the lonely <code>apply plugin: 'android'</code>. Running this script produces a fully runnable unsigned apk.</p>
<p>The basics are simple but what about dependencies? As I mentioned, you can easily add dependencies from <a href="http://search.maven.org/">maven central</a> or a local file. In fact, the buildscript downloads its own android tasks from maven central.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="groovy" style="font-family:monospace;">repositories <span style="color: #66cc66;">&#123;</span>
    mavenCentral<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
dependencies <span style="color: #66cc66;">&#123;</span>
    compile <span style="color: #ff0000;">'com.google.guava:guava:11.0.2'</span>
    compile files <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'libs/gcm.jar'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>The <code>compile</code> directive is similar to mavens <code>compile</code> scope in that the dependency will be bundled into your packaged .apk.</p>
<p>Gradle also supports Android library projects. The &#8220;New Build System&#8221; compiles library projects into .aar packages, which can be consumed by the main project. The main advantage of the .aar format is its ability to handle dynamic Android resource ids. You will be able to ship an *.aar archive and consume it in your main project without having to create all of its ids during compile time of the main project.</p>
<p>Library projects have to be listed in a <code>settings.gradle</code> file and all projects taking part in the build can reference any other project listed in that file.</p>
<p>Where the gradle build has its real strength is in creating multiple versions of the same app. For example, a free and a paid version, or different versions for various cpu architectures. I won&#8217;t go into detail but you should read all about it <a href="http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants">here</a>.</p>
<h2>Shortcomings</h2>
<p>Now that we have discussed some of the strengths of the gradle build system, lets discuss some of the pitfalls:</p>
<p>The gradle build is not yet able to deal with the most common dependency format for library projects: the maven apklib. Currently you can only consume maven artifacts that are packaged as jars. This rules out a lot of high profile dependencies such as the <a href="http://actionbarsherlock.com/">actionbarsherlock</a> or the <a href="http://viewpagerindicator.com/">viewpagerindicator</a>. If you want to depend on these resources you will have to keep a source reference in your project (or package them as an .aar).</p>
<p>The gradle build system offers good support for instrumentation tests you run on your device, but it is currently very hard to run standalone <a href="http://pivotal.github.io/robolectric/">robolectric</a> tests. The main problem is that robolectric does not understand the gradle dependencies so that it cannot gather sub-dependencies, and so on.</p>
<p>Support for the <a href="http://developer.android.com/tools/sdk/eclipse-adt.html">Android Development Tools (ADT)</a> is currently non-existent although this is very likely to change with future releases. The ADT cannot deal with the default folder layout by gradle, nor can it deal with declared dependencies. Therefore, you have to maintain two build infrastructures: one for Eclipse (project.properties etc) and one for the gradle build.</p>
<h2>Wrap Up</h2>
<p>The &#8220;New Build System&#8221; build sounds awesome! As long as it can deliver on all its promises. At the moment, I can not recommend it for larger projects due to the lack of robolectric support and problems with maven dependencies.  I have discussed the issues raised here with <a href="https://plus.google.com/u/0/109385828142935151413/posts">+Xavier Ducrohet</a>, the lead architect of the build system, and he assured me that most of the issues will be addressed. At the <a href="http://de.droidcon.com/">Droidcon Berlin</a> I spoke to <a href="http://www.gradleware.com/team">Hans Dockter</a>, the CEO of <a href="http://www.gradleware.com/">Gradleware</a> and co-architect of the &#8220;New Build System&#8221;, and once gradle becomes the driving engine for the ADT the entire toolchain should be covered. If the Android library ecosystem were to adapt gradle, it would have a very bright future.</p>
<p>&nbsp;</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=State+of+the+Android+Gradle+Build+System&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/" target="_blank" title="Share on Twitter" style="margin-right: 5px;"><img title="Twitter" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png" alt="Twitter"/></a><a href="https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/" target="_blank" title="+1" style="margin-right: 5px;"><img title="Google+" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png" alt="Google+"/></a><a href="http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/" target="_blank" title="Share on LinkedIn" style="margin-right: 5px;"><img title="LinkedIn" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png" alt="LinkedIn"/></a><a href="https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/&amp;t=State+of+the+Android+Gradle+Build+System" target="_blank" title="Facebook" style="margin-right: 5px;"><img title="Facebook" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png" alt="Facebook"/></a></div><br/><a href="http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/#comments">2 Comments</a>. Tagged with <a href='http://eclipsesource.com/blogs/tag/android/' title='android Tag'>android</a>, <a href='http://eclipsesource.com/blogs/tag/build/' title='build Tag'>build</a>, <a href='http://eclipsesource.com/blogs/tag/gradle/' title='Gradle Tag'>Gradle</a>, <a href='http://eclipsesource.com/blogs/tag/android/' title='android Tag'>android</a>, <a href='http://eclipsesource.com/blogs/tag/build/' title='build Tag'>build</a>, <a href='http://eclipsesource.com/blogs/tag/gradle/' title='Gradle Tag'>Gradle</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/05/02/state-of-the-android-gradle-build-system/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java, Equinox and EclipseRT on the Raspberry Pi</title>
		<link>http://eclipsesource.com/blogs/2013/05/02/java-equinox-and-eclipsert-on-the-raspberry-pi/</link>
		<comments>http://eclipsesource.com/blogs/2013/05/02/java-equinox-and-eclipsert-on-the-raspberry-pi/#comments</comments>
		<pubDate>Thu, 02 May 2013 05:12:15 +0000</pubDate>
		<dc:creator>Ian Bull</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[Planet OSGi]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[eclipseRT]]></category>
		<category><![CDATA[Raspberry Pi]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=15586</guid>
		<description><![CDATA[Earlier this week I ordered a Raspberry Pi and it arrived today. For those of you who haven&#8217;t heard of the Raspberry Pi, it&#8217;s a low cost computer that includes HDMI (1080p) output, USB, Ethernet, an ARM processor (700Mhz) and 512Mb (or 256Mb) of RAM. The entire computer is the size of a credit card <a href="http://eclipsesource.com/blogs/2013/05/02/java-equinox-and-eclipsert-on-the-raspberry-pi/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Earlier this week I ordered a <a href="http://www.raspberrypi.org/">Raspberry Pi</a> and it arrived today.</p>
<p style="text-align: center;"><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/raspberry-pi.jpg"><img class="aligncenter  wp-image-15587" alt="raspberry pi Java, Equinox and EclipseRT on the Raspberry Pi" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/raspberry-pi.jpg" width="480" height="360" title="Java, Equinox and EclipseRT on the Raspberry Pi" /></a></p>
<p>For those of you who haven&#8217;t heard of the <a href="http://www.raspberrypi.org/">Raspberry Pi</a>, it&#8217;s a low cost computer that includes HDMI (1080p) output, USB, Ethernet, an ARM processor (700Mhz) and 512Mb (or 256Mb) of RAM. The entire computer is the size of a credit card (or an <a href="http://www.mnr.gov.on.ca/en/Business/LetsFish/2ColumnSubPage/STEL02_164832.html">Ontario Fishing License</a> if you prefer), and can be purchased for as little as $25 ($35 for the 512Mb version). The board also includes 26 pins, allowing you to connect it to all sorts of <a href="http://www.raspberrypi.org/archives/3818">crazy hardware</a> &#8212; treating the little computer more like an embedded controller.</p>
<p>Backing up a decade, <a href="http://en.wikipedia.org/wiki/OSGi">OSGi</a> (the underlying modularity system used for Eclipse) was originally designed for embedded systems such as set-top boxes. The EclipseRT (Runtime Project) extended this work by bringing high quality runtime components to this programming model. EclipseRT includes components such as: a powerful webserver (<a href="http://www.eclipse.org/jetty/">Jetty</a>), a provisioning platform (<a href="http://wiki.eclipse.org/Equinox_p2_Getting_Started">p2</a>), persistence technology (<a href="http://www.eclipse.org/eclipselink/">EclipseLink</a>), a rich widget toolkit for Ajax based applications (<a href="http://eclipse.org/rap/">RAP</a>), and more. The idea that you could create a full software stack based on Eclipse and deploy it on a stick has been on our minds for years, but a we lacked a low cost (and generally available) computing platform to deploy it too. With a Raspberry Pi in hand, I decided to revisit this vision.</p>
<h3>The Setup</h3>
<p>To get started, you need an OS and a JVM. There is a Debian based distribution for the Raspberry Pi (<a href="http://www.raspbian.org/">Raspbian</a>) and <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html">Oracle has a JVM</a> for the ARM processor. Unfortunately the most common setup doesn&#8217;t work. The Oracle JVM does not support the <a href="http://www.raspbian.org/RaspbianFAQ#What_do_you_mean_by_.22soft_float_ABI.22_and_.22hard_float_ABI.22.3F">hard-float ABI</a> used by Raspbian. Lucky for us, there is a <a href="http://www.raspberrypi.org/downloads">Raspbain image</a> that supports soft-float ABI. Download this image and write it to an SD card (there are several good <a href="http://www.andrewmunsell.com/blog/getting-started-raspberry-pi-install-raspbian/#.UYHj6StAQ3Y">tutorials</a> out there on how to do this). Once the image is on the card, you can start your Pi and install the JVM.</p>
<h3><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/Screen-Shot-2013-05-01-at-9.01.16-PM.png"><img class="aligncenter size-full wp-image-15588" alt="Screen Shot 2013 05 01 at 9.01.16 PM Java, Equinox and EclipseRT on the Raspberry Pi" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/Screen-Shot-2013-05-01-at-9.01.16-PM.png" width="464" height="124" title="Java, Equinox and EclipseRT on the Raspberry Pi" /><br />
</a> The RT Stack</h3>
<p>The application I used was a simple web based mail client that leverages RAP (for the widgets) Jetty (for the webserver), Apache Felix Gogo shell, and Equinox. The entire application was designed as an  &#8217;Eclipse Product&#8217; and built with Tycho. Because Raspberry Pi is not a supported architecture, we targeted Linux/x86 (knowing full well that no native libraries would work). Once the build was completed, the product was copied to the Pi.</p>
<h3 style="text-align: left;"><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/Screen-Shot-2013-05-01-at-9.12.07-PM.png"><img class="aligncenter  wp-image-15590" alt="Screen Shot 2013 05 01 at 9.12.07 PM Java, Equinox and EclipseRT on the Raspberry Pi" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/Screen-Shot-2013-05-01-at-9.12.07-PM.png" width="663" height="292" title="Java, Equinox and EclipseRT on the Raspberry Pi" /><br />
</a>The Launch</h3>
<p>The launchers that you get when you build a product are <strong><em>native</em></strong>, that is, binary executables for the particular platform. Because Raspberry Pi is not a support platform (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=406749">yet</a>), you cannot use the native launcher. Instead, you need to start your product by invoking Java and specifying the launcher jar.</p>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/Screen-Shot-2013-05-01-at-9.23.23-PM.png"><img class="aligncenter size-full wp-image-15591" alt="Screen Shot 2013 05 01 at 9.23.23 PM Java, Equinox and EclipseRT on the Raspberry Pi" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/Screen-Shot-2013-05-01-at-9.23.23-PM.png" width="785" height="232" title="Java, Equinox and EclipseRT on the Raspberry Pi" /></a></p>
<h3> The Result</h3>
<p>With the runtime stack and mail application running on the Raspberry Pi, testing the setup is as simple as navigating to the Pi with a web browser.</p>
<p style="text-align: center;"><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/Screen-Shot-2013-05-01-at-9.25.54-PM.png"><img class="aligncenter  wp-image-15592" alt="Screen Shot 2013 05 01 at 9.25.54 PM Java, Equinox and EclipseRT on the Raspberry Pi" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/05/Screen-Shot-2013-05-01-at-9.25.54-PM.png" width="503" height="454" title="Java, Equinox and EclipseRT on the Raspberry Pi" /></a></p>
<p>While this is just an example, it does show that you can get a non-trivial OSGi application (46 bundles) running on a Raspberry Pi without much work. It also opens the door to a large collection of Eclipse based runtimes (including the <a href="http://www.eclipse.org/modeling/">modelling technologies</a>, <a href="http://www.eclipse.org/ecf/">ECF</a> and more) running on the Pi. Having the EclipseRT projects running on a Pi is a great addition to the other <a href="http://m2m.eclipse.org/">M2M (Machine-to-Machine)</a> work that is happening at Eclipse.org.</p>
<p>For more information on what I&#8217;m doing with Eclipse, Equinox, p2 and the Raspberry Pi, feel free to follow me on Twitter (<a href="https://twitter.com/irbull">@irbull</a>).</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=Java%2C+Equinox+and+EclipseRT+on+the+Raspberry+Pi&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/05/02/java-equinox-and-eclipsert-on-the-raspberry-pi/" target="_blank" title="Share on Twitter" style="margin-right: 5px;"><img title="Twitter" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/twitter.png" alt="Twitter"/></a><a href="https://plus.google.com/share?url=http://eclipsesource.com/blogs/2013/05/02/java-equinox-and-eclipsert-on-the-raspberry-pi/" target="_blank" title="+1" style="margin-right: 5px;"><img title="Google+" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/google_plus.png" alt="Google+"/></a><a href="http://www.linkedin.com/cws/share?url=http://eclipsesource.com/blogs/2013/05/02/java-equinox-and-eclipsert-on-the-raspberry-pi/" target="_blank" title="Share on LinkedIn" style="margin-right: 5px;"><img title="LinkedIn" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/linkedin.png" alt="LinkedIn"/></a><a href="https://www.facebook.com/sharer/sharer.php?u=http://eclipsesource.com/blogs/2013/05/02/java-equinox-and-eclipsert-on-the-raspberry-pi/&amp;t=Java%2C+Equinox+and+EclipseRT+on+the+Raspberry+Pi" target="_blank" title="Facebook" style="margin-right: 5px;"><img title="Facebook" src="http://eclipsesource.com/blogs/wp-content/plugins/custom-about-author/images/social_media/facebook.png" alt="Facebook"/></a></div><br/><a href="http://eclipsesource.com/blogs/2013/05/02/java-equinox-and-eclipsert-on-the-raspberry-pi/#comments">6 Comments</a>. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/eclipsert/' title='eclipseRT Tag'>eclipseRT</a>, <a href='http://eclipsesource.com/blogs/tag/raspberry-pi/' title='Raspberry Pi Tag'>Raspberry Pi</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/eclipsert/' title='eclipseRT Tag'>eclipseRT</a>, <a href='http://eclipsesource.com/blogs/tag/raspberry-pi/' title='Raspberry Pi Tag'>Raspberry Pi</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/05/02/java-equinox-and-eclipsert-on-the-raspberry-pi/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
