<?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/category/syndicate/feed/?author_name=jordi" rel="self" type="application/rss+xml" />
	<link>http://eclipsesource.com/blogs</link>
	<description>Eclipse Equinox OSGi</description>
	<lastBuildDate>Fri, 17 May 2013 13:50:55 +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>Top 10 EclipseSource Blog Posts of 2012</title>
		<link>http://eclipsesource.com/blogs/2013/01/31/top-10-eclipsesoure-blog-posts-of-2012/</link>
		<comments>http://eclipsesource.com/blogs/2013/01/31/top-10-eclipsesoure-blog-posts-of-2012/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 20:21:15 +0000</pubDate>
		<dc:creator>Jordi Böhme López</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[e4]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[eclipse juno]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[Tabris]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=13904</guid>
		<description><![CDATA[Here at EclipseSource we like top 10 blog posts. So here is our top 10 of 2012 &#8211; the posts most viewed or created the most buzz. 1. Top 10 Eclipse Juno Features Eclipse Juno has been released this year and it was the first simultaneous release built on Eclipse 4. In preparation of the <a href="http://eclipsesource.com/blogs/2013/01/31/top-10-eclipsesoure-blog-posts-of-2012/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Here at EclipseSource we like <a href="http://developer.eclipsesource.com/search/index.html?q=top+10" title="Eclipse Source Top 10 Blog Posts">top 10</a> blog posts. So here is our top 10 of 2012 &#8211; the posts most viewed or created the most buzz.</p>
<h4>1. Top 10 Eclipse Juno Features</h4>
<p>Eclipse Juno has been <a href="http://eclipse.org/juno/" title="Eclipse Juno">released</a> this year and it was the first simultaneous release built on Eclipse 4. In preparation of the release, <a href="http://eclipsesource.com/blogs/author/irbull/">Ian</a> has been counting down the <a href="http://eclipsesource.com/blogs/2012/06/27/top-10-eclipse-juno-features/">Top 10 Eclipse Juno Features</a>.</p>
<h4>2. Eclipse 4 (e4) Tutorial</h4>
<p><a href="http://eclipsesource.com/blogs/author/jhelming/">Jonas Helming</a> wrote a tutorial series for the new core platform of the Juno release. It introduces the new concepts in the Eclipse 4 Application Platform, aka RCP 2.0. The Eclipse 4 (e4) Tutorial has 4 parts: <a href="http://eclipsesource.com/blogs/2012/05/10/eclipse-4-final-sprint-part-1-the-e4-application-model/">Part 1</a>, <a href="http://eclipsesource.com/blogs/2012/06/12/eclipse-4-e4-tutorial-part-2/">Part 2</a>, <a href="http://eclipsesource.com/blogs/2012/06/26/eclipse-4-e4-tutorial-part-3-extending-the-application-model/">Part 3</a> and <a href="http://eclipsesource.com/blogs/2012/09/18/eclipse-4-e4-tutorial-part-4-dependency-injection-basics/">Part 4</a>.</p>
<h4>3. Ups and Downs with Continuous Integration for iOS Apps (Jenkins, Xcode, Cobertura and Testflight)</h4>
<p><a href="http://eclipsesource.com/blogs/author/hstaudacher/">Holger Staudacher</a> blogged about the <a href="http://eclipsesource.com/blogs/2012/06/01/ups-and-downs-with-continuous-integration-for-ios-apps-jenkins-xcode-cobertura-and-testflight/">Ups and Downs with Continuous Integration for iOS Apps</a>. He built a full CI system for <a href="http://developer.eclipsesource.com/tabris/">Tabris</a> including automated test execution, code coverage and publishing to Testflight. In his post he detailed the steps to create the system. This can be quite helpful for you when you plan to build your own iOS app.</p>
<h4>4. Must-reads for Java Developers: From Beginner to Professional</h4>
<p><a href="http://eclipsesource.com/blogs/author/hstaudacher/">Holger</a> has been recommending the same books again and again to fellow developers &#8211; for different experience levels. Finally he has put together a list of <a href="http://eclipsesource.com/blogs/2012/09/18/must-reads-for-java-developers-from-beginner-to-professional-2/">must-reads for Java Developers</a>.</p>
<h4>5. My Top 10 Tips on how to be more productive with the Eclipse IDE</h4>
<p><a href="http://eclipsesource.com/blogs/author/jordi/">I</a> wrote about my top 10 recommendations that will make your programming life easier and make you more productive with Eclipse in &#8220;<a href="http://eclipsesource.com/blogs/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/">my top 10 tips on how to be more productive with Eclipse</a>&#8220;</p>
<h4>6. Tabris – iOS and Android apps written in Java</h4>
<p><a href="http://eclipsesource.com/blogs/author/jkrause/">Jochen</a> announced <a href="http://developer.eclipsesource.com/tabris/">Tabris</a> (called RAP mobile at the time), an interesting approach for writing multi-platform mobile apps: <a href="http://eclipsesource.com/blogs/2012/01/31/rap-mobile-ios-and-android-apps-written-in-java/">Tabris – iOS and Android apps written in Java</a></p>
<h4>7. Serial Communication in Java with Raspberry Pi and RXTX</h4>
<p>Raspberry Pi is the darling of many developers. <a href="http://eclipsesource.com/blogs/author/jeick/">Johannes Eickhold</a> wrote an introduction on dealing with <a href="http://eclipsesource.com/blogs/2012/10/17/serial-communication-in-java-with-raspberry-pi-and-rxtx/">serial communication in Java with Raspberry Pi</a>.</p>
<h4>8. An OSGi JAX-RS connector Part 1: Publishing REST services</h4>
<p>Interested in publishing OSGi services as REST services? Then <a href="http://eclipsesource.com/blogs/author/hstaudacher/">Holgers</a> blog <a href="http://eclipsesource.com/blogs/2012/01/23/an-osgi-jax-rs-connector-part-1-publishing-rest-services/">on the OSGi JAX-RS connector</a> is a must read for you. More interesting reads and updates are available using the <a href="http://eclipsesource.com/blogs/tag/rest/">REST tag</a>.</p>
<h4>9. Loading, caching and displaying images in Android</h4>
<p>Efficiently displaying an image from a remote server in a mobile application can be quite challenging on Android. <a href="http://eclipsesource.com/blogs/author/mpost/">Moritz</a> provides a conceptual walk through of several established <a href="http://eclipsesource.com/blogs/2012/07/31/loading-caching-and-displaying-images-in-android-part-1/">patterns to load, cache and display images</a>.</p>
<h4>10. Mobile Select-O-Matic</h4>
<p><a href="http://eclipsesource.com/blogs/author/jkrause/">Jochen</a> blogged about <a href="http://eclipsesource.com/blogs/2012/10/11/mobile-select-o-matic-find-the-right-mobile-technology/">finding the right mobile development technology for businesses</a> with the <a href="http://developer.eclipsesource.com/mobile-select-o-matic/start.html">Mobile Select-O-Matic</a>.</p>
<p>If you have feedback or a favorite post you would like to have mentioned, feel free to leave a comment below.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=Top+10+EclipseSource+Blog+Posts+of+2012&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/01/31/top-10-eclipsesoure-blog-posts-of-2012/" 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/01/31/top-10-eclipsesoure-blog-posts-of-2012/" 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/01/31/top-10-eclipsesoure-blog-posts-of-2012/" 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/01/31/top-10-eclipsesoure-blog-posts-of-2012/&amp;t=Top+10+EclipseSource+Blog+Posts+of+2012" 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/>Comments are off for this post.. Tagged with <a href='http://eclipsesource.com/blogs/tag/android/' title='android Tag'>android</a>, <a href='http://eclipsesource.com/blogs/tag/e4/' title='e4 Tag'>e4</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/juno/' title='eclipse juno Tag'>eclipse juno</a>, <a href='http://eclipsesource.com/blogs/tag/ios/' title='iOS Tag'>iOS</a>, <a href='http://eclipsesource.com/blogs/tag/java/' title='Java Tag'>Java</a>, <a href='http://eclipsesource.com/blogs/tag/mobile/' title='mobile Tag'>mobile</a>, <a href='http://eclipsesource.com/blogs/tag/rest/' title='rest Tag'>rest</a>, <a href='http://eclipsesource.com/blogs/tag/tabris/' title='Tabris Tag'>Tabris</a>, <a href='http://eclipsesource.com/blogs/tag/tips/' title='tips Tag'>tips</a>, <a href='http://eclipsesource.com/blogs/tag/android/' title='android Tag'>android</a>, <a href='http://eclipsesource.com/blogs/tag/e4/' title='e4 Tag'>e4</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/juno/' title='eclipse juno Tag'>eclipse juno</a>, <a href='http://eclipsesource.com/blogs/tag/ios/' title='iOS Tag'>iOS</a>, <a href='http://eclipsesource.com/blogs/tag/java/' title='Java Tag'>Java</a>, <a href='http://eclipsesource.com/blogs/tag/mobile/' title='mobile Tag'>mobile</a>, <a href='http://eclipsesource.com/blogs/tag/rest/' title='rest Tag'>rest</a>, <a href='http://eclipsesource.com/blogs/tag/tabris/' title='Tabris Tag'>Tabris</a>, <a href='http://eclipsesource.com/blogs/tag/tips/' title='tips Tag'>tips</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/01/31/top-10-eclipsesoure-blog-posts-of-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lean OSGi Launch Configurations with Jetty</title>
		<link>http://eclipsesource.com/blogs/2013/01/28/lean-osgi-launch-configurations-with-jetty/</link>
		<comments>http://eclipsesource.com/blogs/2013/01/28/lean-osgi-launch-configurations-with-jetty/#comments</comments>
		<pubDate>Mon, 28 Jan 2013 10:44:10 +0000</pubDate>
		<dc:creator>Jordi Böhme López</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[Planet OSGi]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[equinox]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[rap]]></category>
		<category><![CDATA[Tabris]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=13016</guid>
		<description><![CDATA[Over the last years I have seen many OSGi project, and while I am pretty happy with most of them there is a tendency to oversized launch configurations. Keeping the launch configs lean is not easy because the automatic dependency resolver can not always pick the smallest set possible. And maybe even worse it is <a href="http://eclipsesource.com/blogs/2013/01/28/lean-osgi-launch-configurations-with-jetty/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/01/osgi.png"><img src="http://eclipsesource.com/blogs/wp-content/uploads/2013/01/osgi.png" alt="osgi Lean OSGi Launch Configurations with Jetty" width="144" height="145" class="alignright size-full wp-image-13804" title="Lean OSGi Launch Configurations with Jetty" /></a>Over the last years I have seen many OSGi project, and while I am pretty happy with most of them there is a tendency to oversized launch configurations. Keeping the launch configs lean is not easy because the automatic dependency resolver can not always pick the smallest set possible. And maybe even worse it is not always obvious which bundles you need to select to make a configuration complete.</p>
<p>I recently developed a <a title="Tabris demo sources on github" href="https://github.com/eclipsesource/tabris-demos/tree/master/com.eclipsesource.tabris.demos/src/com/eclipsesource/tabris/demos/entrypoints">small mobile app for iOS and Android</a> with <a href="http://developer.eclipsesource.com/tabris/">Tabris</a> and <a title="Eclipse Remote Application Platform" href="http://eclipse.org/rap/">RAP</a> and want to share my way of creating a minimal launch config with you.</p>
<p>There are basically 3 categories of bundles in the launch configuration that my app relies on which I use as a &#8220;mind hook&#8221;:</p>
<p>1. OSGi and Eclipse Code Bundles<br />
2. Bundles for the embedded Jetty server<br />
3. Bundles for the Remote Application Platform (RAP)</p>
<p>So this is how my launch configuration looks like:</p>
<h3>1. OSGi and Eclipse Core</h3>
<p><code>org.eclipse.osgi</code> (Level:-1, Auto:true)<br />
<code>org.eclipse.equinox.ds</code> (Level:1, Auto:true)<br />
<code>org.eclipse.osgi.services</code><br />
<code>org.eclipse.equinox.console</code><br />
<code>org.apache.felix.gogo.command</code><br />
<code>org.apache.felix.gogo.runtime</code><br />
<code>org.apache.felix.gogo.shell</code><br />
<code>org.eclipse.equinox.util</code><br />
<code>org.eclipse.equinox.http.servlet</code></p>
<p><code>org.eclipse.equinox.common</code> (Level:2, Auto:true)<br />
<code>org.eclipse.core.commands</code></p>
<h3>2. Jetty Webserver</h3>
<p><code>javax.servlet</code><br />
<code>org.eclipse.equinox.http.jetty</code><br />
<code>org.eclipse.jetty.continuation</code><br />
<code>org.eclipse.jetty.http</code><br />
<code>org.eclipse.jetty.io</code><br />
<code>org.eclipse.jetty.security</code><br />
<code>org.eclipse.jetty.server</code><br />
<code>org.eclipse.jetty.servlet</code><br />
<code>org.eclipse.jetty.util</code></p>
<h3>3. Remote Application Platform (RAP)</h3>
<p><code>org.eclipse.rap.rwt</code><br />
<code>org.eclipse.rap.rwt.osgi</code><br />
<code>org.eclipse.rap.jface</code><br />
<code>com.eclipsesource.tabris</code> (optional bundle to enable <a href="http://developer.eclipsesource.com/tabris/">native mobile apps</a>)</p>
<h3>Configuration Arguments</h3>
<p>Program arguments:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #660033;">-os</span> <span style="color: #800000;">${target.os}</span> <span style="color: #660033;">-ws</span> <span style="color: #800000;">${target.ws}</span> <span style="color: #660033;">-arch</span> <span style="color: #800000;">${target.arch}</span> <span style="color: #660033;">-nl</span> en <span style="color: #660033;">-consoleLog</span> <span style="color: #660033;">-console</span> <span style="color: #660033;">-clean</span></pre></td></tr></table></div>

<p>VM arguments:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">-Declipse.ignoreApp=<span style="color: #c20cb9; font-weight: bold;">true</span>
-Dosgi.noShutdown=<span style="color: #c20cb9; font-weight: bold;">true</span>
-Dorg.osgi.service.http.port=<span style="color: #000000;">9090</span>
-Dorg.eclipse.equinox.http.jetty.context.sessioninactiveinterval=<span style="color: #000000;">0</span>
<span style="color: #660033;">-Xmx700m</span></pre></td></tr></table></div>

<h2>Semi-automatic Bundle Selection</h2>
<p>Select the following bundle and &#8220;Add Required Bundles&#8221; to obtain a working Jetty:</p>
<p><code>org.eclipse.equinox.http.jetty</code></p>
<p>For a minimal RAP you only need:</p>
<p><code>org.eclipse.rap.rwt.osgi</code><br />
<code>org.eclipse.equinox.ds</code></p>
<p>Don&#8217;t forget to &#8220;Add Required Bundles&#8221;</p>
<p>If you would like to use the Felix OSGi Shell you have to add the &#8220;<code>-console</code>&#8221; Program Argument and select all Bundles starting with:</p>
<p><code>org.apache.felix.gogo.*</code></p>
<p><strong>Please note:</strong><br />
1. You should not forget to add your own project(s) to your launch configuration!<br />
2. Setting <code>sessioninactiveinterval</code> to <code>0</code> forces sessions to never time out. This can be handy for debugging purposes.<br />
3. At the RAP Developer&#8217;s Guide you find a <a href="http://eclipse.org/rap/developers-guide/devguide.php?topic=getting-started/launcher.html&#038;version=1.5">detailed listing of all RAP related bundles</a>.</p>
<p>If you have feedback or something to add, please feel free to leave a comment below.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=Lean+OSGi+Launch+Configurations+with+Jetty&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/01/28/lean-osgi-launch-configurations-with-jetty/" 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/01/28/lean-osgi-launch-configurations-with-jetty/" 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/01/28/lean-osgi-launch-configurations-with-jetty/" 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/01/28/lean-osgi-launch-configurations-with-jetty/&amp;t=Lean+OSGi+Launch+Configurations+with+Jetty" 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/>Comments are off for this post.. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/equinox/' title='equinox Tag'>equinox</a>, <a href='http://eclipsesource.com/blogs/tag/java/' title='Java Tag'>Java</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/equinox/' title='equinox Tag'>equinox</a>, <a href='http://eclipsesource.com/blogs/tag/java/' title='Java Tag'>Java</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/01/28/lean-osgi-launch-configurations-with-jetty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Effective Java Debugging with Eclipse</title>
		<link>http://eclipsesource.com/blogs/2013/01/08/effective-java-debugging-with-eclipse/</link>
		<comments>http://eclipsesource.com/blogs/2013/01/08/effective-java-debugging-with-eclipse/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 10:48:50 +0000</pubDate>
		<dc:creator>Jordi Böhme López</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=12407</guid>
		<description><![CDATA[Learning to write code efficiently is only one step towards becoming a coding master. Another step is learning to debug. When it comes to legacy or 3rd party code you will need to debug in order to understand how the code behaves. In this post I will give you some basic tips on how to <a href="http://eclipsesource.com/blogs/2013/01/08/effective-java-debugging-with-eclipse/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Learning to write code efficiently is only one step towards becoming a coding master. Another step is learning to debug. When it comes to legacy or 3rd party code you will need to debug in order to understand how the code behaves. In this post I will give you some basic tips on how to master your debugger and become more efficient.</p>
<p>This is a follow up to <a title="My Top 10 Tips on how to be more productive with the Eclipse IDE" href="http://eclipsesource.com/blogs/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/">My Top 10 Tips on how to be more productive with the Eclipse IDE</a> (which you should read before this one). I&#8217;ll assume you already know how to launch a Debug configuration for your project in your Workspace.</p>
<p><em>Note: Click on the images to reveal a larger screenshot.</em></p>
<h2>1. Breakpoints</h2>
<p><strong>Basic Breakpoints</strong><br />
<a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/Breakpoint.png"><img class="size-full wp-image-13220" alt="Breakpoint s Effective Java Debugging with Eclipse" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/Breakpoint-s.png" width="206" height="64" title="Effective Java Debugging with Eclipse" /></a><br />
This is essential and you probably already know how to use it &#8211; the Breakpoint.</p>
<p>In case you&#8217;re not familiar with them, you create a breakpoint by double-clicking on the left side of a line of code. The execution of your application will then halt at that point so you can analyze the state and hopefully find the cause of your misbehaving code.</p>
<p><strong>Exception Breakpoints</strong><br />
<a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/ExceptionBreakpoint.png"><img class="size-full wp-image-13225" alt="ExceptionBreakpoint s Effective Java Debugging with Eclipse" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/ExceptionBreakpoint-s.png" width="219" height="86" title="Effective Java Debugging with Eclipse" /></a><br />
Sometimes an exception occurs, but you are not sure where (e.g. no stack trace available) or the exception is not logged and not visible. This is the right time to create a global breakpoint that pulls the hand brake if a certain exception occurs.</p>
<p>You&#8217;ll find this in the <code>Breakpoints</code> view of the <code>Debug</code> perspective.</p>
<p><strong>Conditional Breakpoints</strong><br />
<a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/ConditionalBreakpoint.png"><img class="alignnone size-full wp-image-13234" alt="ConditionalBreakpoint s Effective Java Debugging with Eclipse" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/ConditionalBreakpoint-s.png" width="199" height="92" title="Effective Java Debugging with Eclipse" /></a><br />
To speed up debugging by not stopping at a breakpoint everytime, you can add a condition. The breakpoint will only stop your application if the condition is fulfilled &#8211; and will not unnecessarily disturb your hunt for the bug.</p>
<p>You can get there with a <code>right-click</code> on your break point &gt; <code>Breakpoint Properties...</code></p>
<h2>2. Detail Formatter</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/DetailFormatter.png"><img class="size-full wp-image-13242" alt="DetailFormatter s Effective Java Debugging with Eclipse" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/DetailFormatter-s.png" width="199" height="169" title="Effective Java Debugging with Eclipse" /></a><br />
While debugging and inspecting variables/objects in your debug perspective, you might encounter textual representations of objects that are not really meaningful. Usually the <code>.toString()</code> method on an object is used for the debug UI. It&#8217;s not the greatest idea to implement the <code>.toString()</code> method just for debugging purposes. Instead you can set up a detail formatter that takes care of the textual representation of your object.</p>
<p>You can get there by <code>right-click</code>ing on the variable in the <code>Variables</code> view, then selecting <code>New Detail Formatter...</code>.</p>
<h2>3. Logic Structure</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/LogicStructure.png"><img class="alignnone size-full wp-image-13248" alt="LogicStructure s Effective Java Debugging with Eclipse" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/LogicStructure-s.png" width="600" height="166" title="Effective Java Debugging with Eclipse" /></a><br />
Here you can see what a difference a small click can make. Both Views show the same <code>Map</code> object. By activating <code>Logic Structure</code> in your <em>Variables</em> view, you get the &#8220;contents&#8221; and structure of objects presented as you would expect it for a human reader.</p>
<h2>4. Drop To Frame</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/DropToFrame.png"><img class="alignnone size-full wp-image-13281" alt="DropToFrame s Effective Java Debugging with Eclipse" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/12/DropToFrame-s.png" width="297" height="92" title="Effective Java Debugging with Eclipse" /></a><br />
In case your application stopped at your break point and the interesting things had already happened, you can &#8220;Drop To Frame&#8221;. This means you can jump back in your stack and then start debugging from there&#8230;</p>
<h2>5. Inspect and Watch</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/01/Watch.png"><img class="alignnone size-full wp-image-13302" alt="Watch s Effective Java Debugging with Eclipse" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/01/Watch-s.png" width="267" height="89" title="Effective Java Debugging with Eclipse" /></a><br />
<code>Inspect</code> provides you basically with the same functionality as the <code>Variables</code> View &#8211; you can unfold and inspect the various values of the object. <code>Watch</code> on the other hand enables you to observe a specific Object and see how it changes over time.</p>
<h2>6. Change Variable Values</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/01/ChangeVariable.png"><img class="alignnone size-full wp-image-13309" alt="ChangeVariable s Effective Java Debugging with Eclipse" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/01/ChangeVariable-s.png" width="452" height="136" title="Effective Java Debugging with Eclipse" /></a><br />
The Variables View can do more than just display values. You can also edit values. I don&#8217;t think there is much more to say about it <img src='http://eclipsesource.com/blogs/wp-includes/images/smilies/icon_wink.gif' alt="icon wink Effective Java Debugging with Eclipse" class='wp-smiley' title="Effective Java Debugging with Eclipse" /> </p>
<h2>7. Step Into, Over and Return &#8211; Shortcuts</h2>
<p>Try to memorize the following function keys. They will greatly speed up your debugging by avoiding constantly having to use your mouse.</p>
<ul>
<li><strong>F5</strong> – Step Into</li>
<li><strong>F6</strong> – Step Over</li>
<li><strong>F7</strong> – Step Return</li>
<li><strong>F8</strong> – Run until next breakpoint is reached</li>
</ul>
<h2>8. Step Filtering</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/stepfilters.png"><img class="alignnone size-full wp-image-11953" title="Step Filtering" alt="stepfilters s Effective Java Debugging with Eclipse" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/stepfilters-s.png" width="134" height="68" /></a><br />
With &#8220;Step Filters&#8221; you can filter out types that you do not wish to see or step through while debugging. This helps you to stay focused on the actual code and does not expose you to the inner workings where you might not even have the source. Have a look at <a title="Effective Mockito Part 4" href="http://eclipsesource.com/blogs/2011/10/17/effective-mockito-part-4/">Holger&#8217;s Effective Mockito post</a> about Step Filtering in conjunction with Mockito.</p>
<p>You&#8217;ll find this in: <code>Preferences &gt; Java &gt; Debug &gt; Step Filtering</code></p>
<h2>9. Remote Debugging</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2013/01/RemoteDebug.png"><img class="alignnone size-full wp-image-13315" alt="RemoteDebug s Effective Java Debugging with Eclipse" src="http://eclipsesource.com/blogs/wp-content/uploads/2013/01/RemoteDebug-s.png" width="308" height="149" title="Effective Java Debugging with Eclipse" /></a><br />
With Remote Debugging you can debug an application running on a different machine. The debugging itself is like any other app that you usually launch from within Eclipse. This is what you need to do:</p>
<ol>
<li>Make sure the source code on your machine and the application on the other machine are in sync.</li>
<li>Start the application on the other machine with the following command line parameters:

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">java <span style="color: #660033;">-Xdebug</span> <span style="color: #660033;">-Xnoagent</span> -Djava.compiler=NONE -Xrunjdwp:<span style="color: #007800;">transport</span>=dt_socket,<span style="color: #007800;">server</span>=y,<span style="color: #007800;">suspend</span>=y,<span style="color: #007800;">address</span>=<span style="color: #000000;">5005</span></pre></td></tr></table></div>

<p><b>suspend=y/n</b> declares whether the JVM of the application you want to debug will wait for Eclipse to connect or if it will start right away.<br />
<b>address=5005</b> configures the TCP port to use for remote debugging.</li>
<li>Create a <strong>Remote Java Application</strong> Debug Launch Configuration.</li>
<li>Specify the Host and Port for your remote application.</li>
<li>Add all the source projects of the application you want to debug to the <strong>Source</strong> tab.</li>
</ol>
<h2>10. Heap dump + Memory Analyzer</h2>
<p>Sometimes you need a bigger picture of the inner workings of your application than you can get with line-by-line debugging &#8211; especially for finding memory leaks. In this case you are better off with the <a title="Eclipse Memory Analyzer Download" href="https://yoxos.eclipsesource.com/places/node/org.eclipse.mat.feature.feature.group" target="_blank">Eclipse Memory Analyzer (MAT)</a>. My colleague <a title="Ian Bull" href="http://eclipsesource.com/blogs/author/irbull/">Ian</a> wrote a <a href="http://eclipsesource.com/blogs/2009/06/20/eclipse-galileo-feature-top-10-list-number-5/">blog post</a> about how to create a heap dump and analyze it.<br /><strong>Update 21.01.2013:</strong> <a title="Ian Bull" href="http://eclipsesource.com/blogs/author/irbull/">Ian</a> just published an other more detailed article about the Eclipse Memory Analyzer: &quot;<a href="http://eclipsesource.com/blogs/2013/01/21/10-tips-for-using-the-eclipse-memory-analyzer/" title="10 Tips for using the Eclipse Memory Analyzer">10 Tips for using the Eclipse Memory Analyzer</a>&quot;</p>
<p>These are just a few tips regarding debugging. If you have feedback or something to add, please feel free to leave a comment below.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=Effective+Java+Debugging+with+Eclipse&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2013/01/08/effective-java-debugging-with-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/01/08/effective-java-debugging-with-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/01/08/effective-java-debugging-with-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/01/08/effective-java-debugging-with-eclipse/&amp;t=Effective+Java+Debugging+with+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/>Comments are off for this post.. 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/tips/' title='tips Tag'>tips</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/tips/' title='tips Tag'>tips</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2013/01/08/effective-java-debugging-with-eclipse/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>My Top 10 Tips on how to be more productive with the Eclipse IDE</title>
		<link>http://eclipsesource.com/blogs/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/</link>
		<comments>http://eclipsesource.com/blogs/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/#comments</comments>
		<pubDate>Fri, 26 Oct 2012 07:40:41 +0000</pubDate>
		<dc:creator>Jordi Böhme López</dc:creator>
				<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=11870</guid>
		<description><![CDATA[I&#8217;ve met many programmers over the years who had just started using Eclipse or already had &#8220;some experience&#8221; &#8212; but they used Eclipse just as a text editor or handled it in a very cumbersome way. The main problem was that they hadn&#8217;t yet learned about Eclipse&#8217;s capabilities and how to leverage its powerful features. <a href="http://eclipsesource.com/blogs/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-11986" title="Eclipse Productivity" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/eclipseSpeed-150x150.jpg" alt="eclipseSpeed 150x150 My Top 10 Tips on how to be more productive with the Eclipse IDE" width="150" height="150" />I&#8217;ve met many programmers over the years who had just started using <a title="Eclipse Download" href="http://eclipsesource.com/en/downloads/overview/">Eclipse</a> or already had &#8220;some experience&#8221; &#8212; but they used Eclipse just as a text editor or handled it in a very cumbersome way. The main problem was that they hadn&#8217;t yet learned about Eclipse&#8217;s capabilities and how to leverage its powerful features.</p>
<p>So, I thought I would write about my top 10 recommendations that will make your programming life easier and make you more productive.</p>
<p><em>Note: Click on the images to reveal a larger screenshot.</em></p>
<h2>1. Text File Encoding</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/1.png"><img class="size-full wp-image-11884" title="Text File Encoding Preference (thumbnail)" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/1s.png" alt="1s My Top 10 Tips on how to be more productive with the Eclipse IDE" width="216" height="89" /></a><br />
The default setting for saving files in your Eclipse workspace is to use the file encoding of the underlying operating system. However, you usually want to create a platform independent application. To accomodate this,  set the file encoding to <code>UTF-8</code>. Using UTF-8 will prevent problems with special characters if you deploy to a system that runs a different OS, <a title="Tips for Successful PDE Product Builds" href="http://eclipsesource.com/blogs/2009/11/07/pde-product-build-tips/">run your build</a> on a UNIX machine or if somebody else works on the code using a different OS. You&#8217;ll find the settings in: <code>Preferences &gt; General &gt; Workspace</code> or in your <a title="http://eclipsesource.com/blogs/2008/09/09/tip-project-level-settings/" href="http://eclipsesource.com/blogs/2008/09/09/tip-project-level-settings/">project specific settings</a>.</p>
<h2>2. Save automatically before build</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/2.png"><img class="size-full wp-image-11888" title="Save automatically before build" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/2s.png" alt="2s My Top 10 Tips on how to be more productive with the Eclipse IDE" width="314" height="72" /></a><br />
One thing I noticed is that people (including me) are constantly hitting <code>Ctrl+S</code> to save or even worse &#8212; grabbing the mouse to hit the <em>Save</em> action in the toolbar. This behavior seems to originate from experiences where an application was started from the workspace without saving and of course, changes were then lost. You can save some keystrokes and mouse clicks by enabling <em>Save automatically before build</em>.  This is in: <code>Preferences &gt; General &gt; Workspace</code></p>
<h2>3. Type Filters (for PDE / RCP developers)</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/3.png"><img class="alignnone size-full wp-image-11892" title="Type Filters" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/3s.png" alt="3s My Top 10 Tips on how to be more productive with the Eclipse IDE" width="456" height="77" /></a><br />
<em>Type Filters</em> remove suggestions for certain types (e.g. classes, interfaces) from the &#8220;Open Type&#8221; dialog, content assist and quick fix proposals. Especially as an RCP / SWT developer you most likely don&#8217;t want suggestions for Swing components like Button, Label, etc.</p>
<p>You&#8217;ll find this setting in: <code>Preferences &gt; Java &gt; Appearance &gt; Type Filters</code></p>
<h2>4. Use &#8220;Step Filtering&#8221; for Debugging</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/stepfilters.png"><img class="alignnone size-full wp-image-11953" title="Step Filtering" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/stepfilters-s.png" alt="stepfilters s My Top 10 Tips on how to be more productive with the Eclipse IDE" width="134" height="68" /></a><br />
With &#8220;Step Filters&#8221; you can filter out types that you do not wish to see, or step through while debugging. This helps you to stay focused on the actual code and does not expose you to the inner workings where you might not even have the source. Have a look at <a title="Effective Mockito Part 4" href="http://eclipsesource.com/blogs/2011/10/17/effective-mockito-part-4/">Holger&#8217;s Effective Mockito post</a> about Step Filtering in conjunction with Mockito.</p>
<p>You&#8217;ll find this in: <code>Preferences &gt; Java &gt; Debug &gt; Step Filtering</code></p>
<h2>5. Always launch the previously launched application</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/5.png"><img class="alignnone size-full wp-image-11898" title="Always launch previously launched application" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/5s.png" alt="5s My Top 10 Tips on how to be more productive with the Eclipse IDE" width="402" height="72" /></a><br />
This option will ensure your last launched configuration is used. In the default setting, Eclipse tries to determine the most appropriate configuration for the currently selected resource &#8212; which can be quite annoying. Set this under: <code>Preferences &gt; Run/Debug &gt; Launching</code></p>
<p>If you want to automatically stop running instances when you start a new one, have a look at <a title="Launch an OSGi app and automatically kill its running instance" href="http://eclipsesource.com/blogs/2011/05/04/launch-an-osgi-app-and-automatically-kill-its-running-instance/">Launch an OSGi app and automatically kill its running instance</a>.</p>
<h2>6. Store your Launch Configuration in a Project</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/6.png"><img class="alignnone size-full wp-image-11900" title="Store your Launch Configuration in a Project" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/6s.png" alt="6s My Top 10 Tips on how to be more productive with the Eclipse IDE" width="307" height="138" /></a><br />
You probably spend a good amount of time crafting your launch configuration. You can actually store it as a file in one of your projects so you can <a title="Revision Control System" href="http://en.wikipedia.org/wiki/Revision_control">check it in</a>. This way you can share it with colleagues and save them from reinventing the wheel.</p>
<p>You&#8217;ll find this Preference in: <code>Menu: <strong>Run</strong> &gt; <strong>Run Configurations...</strong> &gt; Launch Configuration Tab: <strong>Common</strong></code></p>
<p>Hint: You can access the <em>Launch Configurations</em> dialog by clicking the Launch/Debug action in the Toolbar while holding the <code>ctrl</code> key or <code>cmd</code> on a Mac.</p>
<h2>7. Make a Launch Configuration always appear in the Menu</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/7.png"><img class="alignnone size-full wp-image-11902" title="Make a Launch Configuration always appear in the Menu" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/7s.png" alt="7s My Top 10 Tips on how to be more productive with the Eclipse IDE" width="188" height="77" /></a><br />
If you have multiple Launch Configurations, you can choose your favorite ones and stick them permanently to your Launch/Debug menu.</p>
<p>Go to: <code>Menu: <strong>Run</strong> &gt; <strong>Run Configurations...</strong> &gt; Launch Configuration Tab: <strong>Common</strong></code></p>
<h2>8. Organize imports on save</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/8.png"><img class="alignnone size-full wp-image-11904" title="Organize imports on save" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/8s.png" alt="8s My Top 10 Tips on how to be more productive with the Eclipse IDE" width="249" height="151" /></a><br />
Java developers really don&#8217;t need to worry about imports in Eclipse. The imports are automatically added to the class file. But, changing or removing code might make some imports obsolete. To fix that, you can <em>Organize Imports</em> by hitting <code>shift+crtl+o</code> or <code>shift+cmd+o</code> on a Mac and your imports will be cleaned up. Or you can enable <em>Organize imports on save</em> and Eclipse will take care of that automatically.<br />
You&#8217;ll find this in: <code>Preferences &gt; Java &gt; Editor &gt; Save Actions</code> or in your <a title="http://eclipsesource.com/blogs/2008/09/09/tip-project-level-settings/" href="http://eclipsesource.com/blogs/2008/09/09/tip-project-level-settings/">project specific settings</a>.</p>
<h2>9. Format edited lines on save</h2>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/9.png"><img class="alignnone size-full wp-image-11906" title="Format edited lines on save" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/10/9s.png" alt="9s My Top 10 Tips on how to be more productive with the Eclipse IDE" width="223" height="91" /></a><br />
The code formatter in Eclipse is a very useful thing. It ensures that the code looks consistent in your projects &#8212; no matter who wrote it &#8212; and can be easily read and understood by anyone else. But, formatting the whole file can seriously mess up a <a title="Java Compare Editor" href="http://eclipsesource.com/blogs/2009/06/16/eclipse35-my-top-10-list-number-10/">diff between two versions of the file</a>. So &#8216;format only edited lines on save&#8217; might be the right choice if you want the have your code formatted and still be able to see what was changed in your code later on.</p>
<p>You&#8217;ll find this in: <code>Preferences &gt; Java &gt; Editor &gt; Save Actions</code> or in your <a title="http://eclipsesource.com/blogs/2008/09/09/tip-project-level-settings/" href="http://eclipsesource.com/blogs/2008/09/09/tip-project-level-settings/">project specific settings</a>.</p>
<p>You might also want to take a look at the <a title="The Checkstyle Plug-In fo Eclipse" href="http://eclipse-cs.sourceforge.net">Eclipse Checkstyle Plug-In</a>. This will help you to enforce your coding guidelines.</p>
<h2>10. Let Eclipse do the typing</h2>
<p>A good IDE should support the developer in writing his code at nearly the speed of thought. And Eclipse comes quite close to this with Refactorings, Quick Fixes, Code Assist/Code completion and more. So don&#8217;t type too much yourself &#8212; you will, here and there, type something wrong, overlook something, scroll through code, which costs a lot of time. Force yourself to use shortcuts!</p>
<p>Here is an example. If you want to store a method parameter in a field, just set the cursor on the parameter name, hit the <em>Quick Fix</em> shortcut and select <em>Assign parameter to new field</em>. And poof, you&#8217;re done. If you need a getter, type <code>get</code> somewhere in your class (outside of a method declaration) and use <em>Content Assist</em> to let Eclipse create the method for you. The same applies for creating setters, the main method, the constructor and more.</p>
<ul>
<li>Quick Fix: <code>ctrl+1</code> or <code>cmd+1</code> on a Mac</li>
<li>Content Assist: <code>ctrl+space</code> (for Mac and PC)</li>
<li>Quick Access: <code>ctrl+3</code> or <code>cmd+3</code> on a Mac</li>
<p> aka <code>ctrl+awesome</code>&#8482;</p>
<li>Open Type: <code>shift+ctrl+T</code> or <code>shift+cmd+T</code> on a Mac</li>
</ul>
<p>Use the <a href="http://www.robertwloch.net/category/downloads/software/mousefeed-plug-in/">Mousefeed Plug-In</a>, to learn keyboard shortcuts.  It gives you a message showing the keyboard shortcut for the action you just performed with the mouse.</p>
<h2>11. (Bonus Tip) Get a Solid-State Drive</h2>
<p>Eclipse has to handle many small files: source code, compiled files, metadata, local history, git, etc.  And, the hard drive you use has a massive impact on most of the actions you perform throughout the day. A major performance boost , and therefore a productivity boost, can be achieved by upgrading to an SSD. Here is an <a title="Solid-State Drives From a Developer's Perspective" href="http://www.drdobbs.com/tools/solid-state-drives-from-a-developers-per/224000196">article from Dr. Dobb&#8217;s</a> on that topic.</p>
<p>If you have feedback or something to add, please feel free to leave a comment below.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=My+Top+10+Tips+on+how+to+be+more+productive+with+the+Eclipse+IDE&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/" 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/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/" 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/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/" 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/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/&amp;t=My+Top+10+Tips+on+how+to+be+more+productive+with+the+Eclipse+IDE" 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/>Comments are off for this post.. 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/tips/' title='tips Tag'>tips</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/tips/' title='tips Tag'>tips</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2012/10/26/top-10-tips-how-to-be-more-productive-with-the-best-ide/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Turbocharged RAP</title>
		<link>http://eclipsesource.com/blogs/2012/06/21/turbocharged-rap/</link>
		<comments>http://eclipsesource.com/blogs/2012/06/21/turbocharged-rap/#comments</comments>
		<pubDate>Thu, 21 Jun 2012 06:00:57 +0000</pubDate>
		<dc:creator>Jordi Böhme López</dc:creator>
				<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[Planet OSGi]]></category>
		<category><![CDATA[protocol]]></category>
		<category><![CDATA[rap]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=8248</guid>
		<description><![CDATA[The release of the RAP protocol is an important milestone. The protocol enables native mobile client Apps (in addition to the existing browser client) to connect to the RAP server. In other words, the data is now sent over the network by using JSON instead of proprietary JavaScript. One thing we noticed, was that the <a href="http://eclipsesource.com/blogs/2012/06/21/turbocharged-rap/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>The release of the <a title="JSON based RAP Protocol" href="http://wiki.eclipse.org/RAP/Protocol" target="_blank">RAP protocol</a> is an important milestone. The protocol enables <a href="http://developer.eclipsesource.com/tabris/" target="_blank">native mobile client Apps</a> (in addition to the existing browser client) to connect to the <a title="Eclipse RAP" href="http://eclipse.org/rap/" target="_blank">RAP server</a>. In other words, the data is now sent over the network by using <a href="http://json.org/" target="_blank">JSON</a> instead of proprietary JavaScript.</p>
<p>One thing we noticed, was that the server responses were not compressed anymore by the server. On company networks this might not really matter, but if you&#8217;re using 3G or an unreliable WiFi connection, package drops might cause frustration among users.</p>
<p>To solve this issue you need to reduce the data that is transferred or even better, fit it into one IP package. You can do this by enabling <strong>GZip compression</strong> on the server.</p>
<p>There are two important things to watch for -</p>
<ol>
<li>Make sure the server compresses the JSON responses. RAP uses the mime type &#8220;application/json&#8221; for the protocol messages.</li>
<li>Depending on your server you need to explicitly turn on compression and/or configure when to compress the content (ie. if the content is bigger then a specified size).</li>
</ol>
<p>For Tomcat, the configuration looks like this:</p>
<p><code>&lt;Connector port="8080" protocol="HTTP/1.1"<br />
connectionTimeout="20000"<br />
redirectPort="8443"<br />
<strong>compressableMimeType</strong>="text/html,text/xml,text/plain,<strong>application/json</strong>"<br />
<strong>compression</strong>="<strong>1200</strong>" /&gt;</code></p>
<p>For Apache, the configuration (/etc/apache2/mods-enabled/deflate.conf) looks like this:<code></code></p>
<p><code>&lt;IfModule mod_deflate.c&gt;<br />
# these are known to be safe with MSIE 6<br />
AddOutputFilterByType DEFLATE text/html text/plain text/xml<br />
# everything else may cause problems with MSIE 6<br />
<strong>AddOutputFilterByType DEFLATE application/json</strong><br />
AddOutputFilterByType DEFLATE text/css<br />
AddOutputFilterByType DEFLATE application/x-javascript application/jav<br />
ascript application/ecmascript<br />
AddOutputFilterByType DEFLATE application/rss+xml<br />
&lt;/IfModule&gt;</code></p>
<p>In our case we added the &#8220;<code>application/json</code>&#8221; <strong>mime type</strong> and configured our server to compress responses with 1200 bytes and more. If you&#8217;re considering having compression always on, think again. Most data under 1000 bytes will become bigger when it is compressed. And, if the data &#8211; compressed or not &#8211; is not bigger then 1500 bytes, it will fit in one IP package (see <a href="http://en.wikipedia.org/wiki/Maximum_transmission_unit">MTU</a>). In fact, this will speed up the client-server communication. Your users will experience less latency and less impact from package drops.</p>
<p>In one test run, we created an<strong> initial</strong> JSON response with about 20.000 bytes. With compression enabled, we reduced that to only 2.000 bytes that were transferred! The result was 10x less data or a transfer that was roughly 10x faster.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=Turbocharged+RAP&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2012/06/21/turbocharged-rap/" 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/2012/06/21/turbocharged-rap/" 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/2012/06/21/turbocharged-rap/" 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/2012/06/21/turbocharged-rap/&amp;t=Turbocharged+RAP" 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/>Comments are off for this post.. Tagged with <a href='http://eclipsesource.com/blogs/tag/protocol/' title='protocol Tag'>protocol</a>, <a href='http://eclipsesource.com/blogs/tag/rap/' title='rap Tag'>rap</a>, <a href='http://eclipsesource.com/blogs/tag/tips/' title='tips Tag'>tips</a>, <a href='http://eclipsesource.com/blogs/tag/protocol/' title='protocol Tag'>protocol</a>, <a href='http://eclipsesource.com/blogs/tag/rap/' title='rap Tag'>rap</a>, <a href='http://eclipsesource.com/blogs/tag/tips/' title='tips Tag'>tips</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2012/06/21/turbocharged-rap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Xcode insights of an Eclipse/Java developer</title>
		<link>http://eclipsesource.com/blogs/2012/06/13/getting-started-with-xcode-as-an-eclipsejava-developer/</link>
		<comments>http://eclipsesource.com/blogs/2012/06/13/getting-started-with-xcode-as-an-eclipsejava-developer/#comments</comments>
		<pubDate>Wed, 13 Jun 2012 13:15:42 +0000</pubDate>
		<dc:creator>Jordi Böhme López</dc:creator>
				<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=8012</guid>
		<description><![CDATA[For over 8 years I&#8217;ve used Java, the Eclipse IDE and many other Eclipse technologies to get my work done. But when RAP switched to the new protocol to enable all kinds of clients to connect to the RAP server, I had to face Objective-C and Xcode to develop a native RAP client for iOS <a href="http://eclipsesource.com/blogs/2012/06/13/getting-started-with-xcode-as-an-eclipsejava-developer/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>For over 8 years I&#8217;ve used Java, the Eclipse IDE and many other Eclipse technologies to get my work done. But when RAP switched to the <a title="Eclipse Juno M4: RAP speaks JSON" href="http://eclipsesource.com/blogs/2011/12/16/eclipse-juno-m4-rap-speaks-json/">new protocol</a> to enable all kinds of clients to connect to the <a title="Rich Ajax Platform (RAP)" href="http://eclipse.org/rap/">RAP server</a>, I had to face Objective-C and Xcode to develop a <a title="rap mobile - Secure Mobile Apps. Native Performance. Multi-Platforms" href="http://rapmobile.eclipsesource.com/">native RAP client for iOS</a> devices.</p>
<p>In this post I&#8217;d like to show you my Xcode experiences and how they compare to the Eclipse IDE we all know and love.</p>
<p><strong>Installation</strong></p>
<p>First of all you need a Mac. It should be at least a Core 2 Duo machine with OS X Lion (10.7) installed. You can download <a title="Xcode 4" href="https://developer.apple.com/xcode/">XCode 4</a> for free at the <a title="Mac App Store - Xcode" href="http://itunes.apple.com/de/app/xcode/id497799835?mt=12">Mac App Store</a>. Make sure you have enough spare time and bandwidth. Once Xcode is downloaded, installed and started, it will continue to download and install other components like SDKs, iOS Simulators, Documentation, &#8230;</p>
<p>For my source code repository, although Git support is integrated in Xcode, I prefer the more powerful (but commercial) Git client <a title="Tower - The most powerful Git client for Mac" href="http://www.git-tower.com/">Tower</a>. The <a title="GitHub for Mac" href="http://mac.github.com/">free Git client from GitHub</a> is ok, too <img src='http://eclipsesource.com/blogs/wp-includes/images/smilies/icon_wink.gif' alt="icon wink Xcode insights of an Eclipse/Java developer" class='wp-smiley' title="Xcode insights of an Eclipse/Java developer" /> </p>
<p><strong>Some Stuff to Blow Up</strong></p>
<p>In order to get to know Xcode better, you need a project to mess around with. To find an example project, just have a look at the <a title="iOS Developer Library" href="http://developer.apple.com/library/ios/navigation/#section=Resource%20Types&amp;topic=Sample%20Code">hundreds Apple Sample Projects</a>. In a later blog post I will show you how to create your own project and write some Objective-C.</p>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/XcodeProject.png"><img class="aligncenter size-full wp-image-8063" title="Xcode Project" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/XcodeProject.png" alt="XcodeProject Xcode insights of an Eclipse/Java developer" width="195" height="249" /></a></p>
<p>A nice, small example to start with is the <a title="Reachability" href="http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html">Reachability sample</a>. You can browse and download the sample code by clicking on the &#8220;Download Sample Code&#8221; button on the top part of the webpage. The downloaded ZIP will contain an Xcode project (folder with resources and classes and a <em>.xcodeproj</em> file) which you can open by double-clicking the <em>Reachability.xcodeproj</em>. The differences in the source code aside, you can browse and edit the same as in the Eclipse IDE.</p>
<p>There are four key aspects of an Xcode project you should know:</p>
<ol>
<li><strong>Project Info</strong><br />
<a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/ProjectInfo.png"><img class="aligncenter size-medium wp-image-8060" title="Project Info" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/ProjectInfo-300x152.png" alt="ProjectInfo 300x152 Xcode insights of an Eclipse/Java developer" width="300" height="152" /></a><br />
Here you configure the version of iOS  your App should work on. This will affect the APIs you will have available.</li>
<li><strong>Target</strong><br />
A Target is more or less a collection of resources and code that is built against a set of frameworks (libraries or parts of iOS) and other Targets.</li>
<li><strong>Target Summary</strong><br />
<a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/TargetSummary.png"><img class="aligncenter size-medium wp-image-8071" title="Target Summary" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/TargetSummary-300x252.png" alt="TargetSummary 300x252 Xcode insights of an Eclipse/Java developer" width="300" height="252" /></a><br />
This is a bit like a mix of an Eclipse Bundle+Feature+Product configuration. The key aspects of your Target are defined here: A <em>Bundle Identifier</em>, <em>Version</em> and other configurations such as on which device class it should run, the splash screen, App icon and the entry point of the App.</li>
<li><strong>Target Build Phases</strong><br />
<a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/TargetBuildPhases.png"><img class="aligncenter size-medium wp-image-8074" title="Target Build Phases" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/TargetBuildPhases-300x198.png" alt="TargetBuildPhases 300x198 Xcode insights of an Eclipse/Java developer" width="300" height="198" /></a><br />
This is the equivalent of the Eclipse <em>build.properties</em>. This configuration part contains the resources to include, the classes to compile and the dependencies on other Targets or frameworks.</li>
</ol>
<p><strong>Features</strong></p>
<p>The Xcode IDE contains most of the things you need for iOS development: writing code and unit tests, and analyzing, debugging and deploying your application.</p>
<p>Xcode 4 features a single window layout, called the workspace window, that looks very similar to Eclipse. Besides editing code, there are five actions that you can perform with Xcode:<br />
<a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/RunDebugTest.png"><img class="aligncenter size-medium wp-image-8013" title="Xcode Actions" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/RunDebugTest-300x148.png" alt="RunDebugTest 300x148 Xcode insights of an Eclipse/Java developer" width="300" height="148" /></a></p>
<ul>
<li><strong>Run</strong> (To run and debug your App)</li>
<li><strong>Test</strong> (Execute your Unit Tests)</li>
<li><strong>Profile</strong> (Memory Analyzer and other Instruments)</li>
<li><strong>Analyze</strong> (Static Code Analysis)</li>
<li><strong>Archive</strong> (This is the first step to deploying your App to a device or to the App Store)</li>
</ul>
<p><strong>Run</strong></p>
<p>Like the Run &amp; Debug actions in Eclipse those actions are performed on Launch Configurations &#8211; in Xcode they are called &#8220;Scheme with Destination&#8221;.</p>
<p>You‘ll find Actions and Schemes with Destination on the top left of the IDE.<br />
<a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/LaunchConfig.png"><img class="aligncenter size-medium wp-image-8014" title="LaunchConfig" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/LaunchConfig-300x84.png" alt="LaunchConfig 300x84 Xcode insights of an Eclipse/Java developer" width="300" height="84" /></a><br />
Usually you select your Scheme (Launch Configuration for your App) and choose your Destination. The Destinations range from iPad / iPhone Simulators in different iOS versions to the devices that are currently connected to your machine.</p>
<p>Executing the &#8220;Run&#8221; action will run the selected Scheme on the selected Destination.</p>
<p>In Eclipse, Run and Debug are separate actions. In Xcode, on the other hand, you can debug with the Run Action. The default settings will compile and run all the code launched from within Xcode in debug mode. If you don&#8217;t want to include debug instructions,  <em>Archiving</em> will compile your App for distribution. It is a good idea to create some test distributions as the debug instructions may be affecting your App&#8217;s performance.</p>
<p>To close on the Run&amp;Debug topic, along the way, you may encounter some problems with your code&#8217;s memory management. Make sure you always have a breakpoint on <code>objc_exception_throw</code> and enable the options</p>
<p><code>NSZombieEnabled = YES;<br />
NSDeallocateZombies = NO;<br />
</code><br />
in your Scheme to debug <em>retain</em> and <em>release</em> problems. For more information, see the &#8220;<a title="Finding Memory Leaks" href="https://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/FindingLeaks.html">Finding Memory Leaks</a>&#8221; section in Apple&#8217;s Debugging Applications document.</p>
<p><strong>Test</strong></p>
<p>Test driven development in Xcode is quite similar to Eclipse with JUnit. Just import SenTest (included in Xcode 4) in your test classes:<br />
<code>#import &lt;SenTestingKit/SenTestingKit.h&gt;</code><br />
Then create your setUp and tearDown methods. Test case methods are prefixed with test and if you need a mocking framework, I suggest taking a look at <a title="OCMock is an Objective-C implementation of mock objects" href="http://ocmock.org/">OCMock</a>.</p>
<p>The IDE integration and support of test driven behavior is sort of suboptimal. There are no Quick-Fixes like in Eclipse to create classes, methods and etc. from within your test classes. And the result of your tests are displayed as compile errors in the Xcode UI. There is also no real test reporting UI or a red/green indicator.  When your tests are successful, an overlay will be displayed for a couple of seconds saying &#8220;Test Succeeded&#8221;.<br />
<a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/tests.png"><img class="aligncenter size-medium wp-image-8020" title="XcodeTestReport" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/tests-300x118.png" alt="tests 300x118 Xcode insights of an Eclipse/Java developer" width="300" height="118" /></a></p>
<p><strong>Profile &amp; Analyze</strong></p>
<p>For more advanced analysis of your code, the Analyze action does a really good job with static code analysis in finding common coding mistakes. The Profile action provides you with a set of tools to find issues in your app &#8211; ranging from memory to performance problems.<br />
<a href="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/profile.png"><img class="aligncenter size-medium wp-image-8021" title="ProfileAnalyze" src="http://eclipsesource.com/blogs/wp-content/uploads/2012/06/profile-300x154.png" alt="profile 300x154 Xcode insights of an Eclipse/Java developer" width="300" height="154" /></a></p>
<p><strong>Archive (aka Deployment)</strong></p>
<p>Archive can be compared the the Eclipse Product Export. To enable the Archive action and export your App, you need to have ‘ iOS Device‘ or a real device selected as Destination. Then you can use the Archive action from the menu: Product -&gt; Archive. Your archived App will now appear in the Organizer. From here you can export the .ipa to install it to a device or send it to the App Store.</p>
<p>Apple provides you with two ways to distribute your Apps. The <a title="iOS Developer Program" href="https://developer.apple.com/programs/ios/">iOS Developer Program</a> for Individuals and Companies ($99 / Year) is used to distribute your Apps via the App Store and up to 100 test devices. The <a title="iOS Developer Enterprise Program" href="https://developer.apple.com/programs/ios/enterprise/">iOS Developer Enterprise Program</a> allows you to create proprietary in-house Apps for an unlimited number of users within your company (not via the App Store). Of course you can always start coding without subscribing to a Developer Program, but then you will be limited to the Simulator.</p>
<p>To provide the App .ipa to your 100 testers, you can host your own ad-hoc installation website or just use the free <a title="TestFlight - iOS beta testing on the fly" href="http://testflightapp.com/">TestFlight</a> service.</p>
<p><strong>Refactorings</strong></p>
<p>Check. Well, kind of&#8230; Refactorings can be done to a certain extent. You can rename local variables, extract methods, &#8230; but it is by far not comparable to what Eclipse JDT offers.</p>
<p><strong>Continuous Integration</strong></p>
<p>Continuous Integration (CI) is also possible with Xcode. Most of Xcode&#8217;s functionality is accessible from the command line to automate building, testing, etc. with the common tools like Hudson/Jenkins. Have a look at <a title="Holger Staudacher" href="http://eclipsesource.com/blogs/author/hstaudacher/">Holger&#8217;s</a> blog entry about <a title="Ups and Downs with Continuous Integration for iOS Apps (Jenkins, Xcode, Cobertura and Testflight)" href="http://eclipsesource.com/blogs/2012/06/01/ups-and-downs-with-continuous-integration-for-ios-apps-jenkins-xcode-cobertura-and-testflight/">Continuous Integration for iOS Apps</a>.</p>
<p><strong>Keyboard Shortcuts</strong></p>
<p>In the Eclipse IDE I use shortcuts all the time. I compiled a list of Xcode Hotkeys for the most common actions I also use in Eclipse:</p>
<ul>
<li>Switch between the Header and Source file
<ul>
<li><code>Control + Command  + Up Arrow</code></li>
</ul>
</li>
<li>Display documentation
<ul>
<li><code>Option + Click</code></li>
</ul>
</li>
<li>Jump to definition
<ul>
<li><code>Command + Click</code></li>
</ul>
</li>
<li>Autocomplete
<ul>
<li><code>Control + Space</code></li>
</ul>
</li>
<li>Rename in File
<ul>
<li><code>Control + Command + E</code></li>
</ul>
</li>
<li>Beginning and end of a line
<ul>
<li><code>Command + Left Arrow</code></li>
<li><code>Command + Right Arrow</code></li>
</ul>
</li>
<li>Jump between words of a line
<ul>
<li><code>Option + Left Arrow</code></li>
<li><code>Option + Right Arrow</code></li>
</ul>
</li>
<li>Open Type
<ul>
<li><code>Command + Shift + o</code></li>
</ul>
</li>
<li>Outline
<ul>
<li><code>Control + 6</code></li>
</ul>
</li>
<li>Comment Selection
<ul>
<li><code>Command + /</code></li>
</ul>
</li>
<li>Kill line to the end of line
<ul>
<li><code>Control + K</code></li>
</ul>
</li>
<li>Run
<ul>
<li><code>Command + R</code></li>
</ul>
</li>
<li>Test
<ul>
<li><code>Command + U</code></li>
</ul>
</li>
<li>Clean
<ul>
<li><code>Shift + Command + K</code></li>
</ul>
</li>
<li>Switch to the previous opened file
<ul>
<li><code>Option + Shift + Left Arrow</code></li>
</ul>
</li>
<li>Switch to the next opened file
<ul>
<li><code>Option + Shift + Right Arrow</code></li>
</ul>
</li>
</ul>
<p><strong>Interested?</strong></p>
<p>Once you know how things compare to Eclipse it should not be too hard to find your way around Xcode. Especially in the beginning, the Apple Documentation (<a title="Write Objective-C Code" href="https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/Languages/WriteObjective-CCode/WriteObjective-CCode/WriteObjective-CCode.html">Objective-C</a>, <a title="Start Developing iOS Apps Today" href="https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/Introduction/Introduction.html">iOS</a>) helped me a lot. Honestly, it&#8217;s the best documentation I&#8217;ve ever seen. And on iTunes U, you have free access to <a title="Developing Apps for iOS (Fall 2010)" href="http://itunes.apple.com/de/course/developing-apps-for-ios-fall/id495054839">iOS development lectures</a> in video podcasts for free from Stanford University.</p>
<p>Of course <a title="Objective-C FAQ" href="http://stackoverflow.com/questions/tagged/objective-c">StackOverflow</a> is also a great community to get answers and hints on problems you may encounter. If you have other tips for Eclipse developers getting started in Xcode, it would be great to see your comments here.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=Xcode+insights+of+an+Eclipse%2FJava+developer&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2012/06/13/getting-started-with-xcode-as-an-eclipsejava-developer/" 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/2012/06/13/getting-started-with-xcode-as-an-eclipsejava-developer/" 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/2012/06/13/getting-started-with-xcode-as-an-eclipsejava-developer/" 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/2012/06/13/getting-started-with-xcode-as-an-eclipsejava-developer/&amp;t=Xcode+insights+of+an+Eclipse%2FJava+developer" 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/>Comments are off for this post.. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/ios/' title='iOS Tag'>iOS</a>, <a href='http://eclipsesource.com/blogs/tag/objective-c/' title='objective-c Tag'>objective-c</a>, <a href='http://eclipsesource.com/blogs/tag/tips/' title='tips Tag'>tips</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/ios/' title='iOS Tag'>iOS</a>, <a href='http://eclipsesource.com/blogs/tag/objective-c/' title='objective-c Tag'>objective-c</a>, <a href='http://eclipsesource.com/blogs/tag/tips/' title='tips Tag'>tips</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2012/06/13/getting-started-with-xcode-as-an-eclipsejava-developer/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Accessing a very large data set with mobile devices</title>
		<link>http://eclipsesource.com/blogs/2012/02/02/accessing-a-very-large-data-set-with-mobile-devices/</link>
		<comments>http://eclipsesource.com/blogs/2012/02/02/accessing-a-very-large-data-set-with-mobile-devices/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 06:58:34 +0000</pubDate>
		<dc:creator>Jordi Böhme López</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[rap]]></category>
		<category><![CDATA[rap mobile]]></category>
		<category><![CDATA[Tabris]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=7006</guid>
		<description><![CDATA[A few months ago my colleague, Ralf Sternberg, wrote an article on &#8220;how to access a huge dataset with the web browser&#8220;.  Now, if it&#8217;s possible to access very large datasets with a browser, wouldn&#8217;t it be really cool to access it in the same way with mobile devices? As you may have heard, we <a href="http://eclipsesource.com/blogs/2012/02/02/accessing-a-very-large-data-set-with-mobile-devices/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>A few months ago my colleague, Ralf Sternberg, wrote an article on &#8220;<a href="http://eclipsesource.com/blogs/2011/08/15/accessing-a-huge-data-set-with-the-web-browser/">how to access a huge dataset with the web browser</a>&#8220;.  Now, if it&#8217;s possible to access very large datasets with a browser, wouldn&#8217;t it be really cool to access it in the same way with mobile devices?</p>
<p>As you may have heard, we launched <a href="http://rapmobile.eclipsesource.com">RAP mobile</a> two days ago. And, we did just that. With RAP mobile you can access exactly the same dataset with exactly the same code as in Ralf&#8217;s post. The dataset contains over 500,000 emails totaling over 2GB of space. Check out the <a href="http://vimeo.com/36021442">screencast below</a> and the <a href="https://github.com/eclipsesource/rap-mobile-demos/blob/master/com.eclipsesource.rap.mobile.demos/src/com/eclipsesource/rap/mobile/demos/entrypoints/VirtualTreeDemo.java">source code on github</a>.</p>
<p>What I find intriguing about this framework is that it is fast. There is no data on the phone. The information displayed in the UI is retrieved asynchronously from the server while the user is scrolling through this enormous set of data. The native iOS client takes care of the proper preloading, caching and memory management.</p>
<p style="text-align: center;">&nbsp;</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=Accessing+a+very+large+data+set+with+mobile+devices&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2012/02/02/accessing-a-very-large-data-set-with-mobile-devices/" 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/2012/02/02/accessing-a-very-large-data-set-with-mobile-devices/" 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/2012/02/02/accessing-a-very-large-data-set-with-mobile-devices/" 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/2012/02/02/accessing-a-very-large-data-set-with-mobile-devices/&amp;t=Accessing+a+very+large+data+set+with+mobile+devices" 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/>Comments are off for this post.. Tagged with <a href='http://eclipsesource.com/blogs/tag/android/' title='android Tag'>android</a>, <a href='http://eclipsesource.com/blogs/tag/ios/' title='iOS Tag'>iOS</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/rap-mobile/' title='rap mobile Tag'>rap mobile</a>, <a href='http://eclipsesource.com/blogs/tag/tabris/' title='Tabris Tag'>Tabris</a>, <a href='http://eclipsesource.com/blogs/tag/android/' title='android Tag'>android</a>, <a href='http://eclipsesource.com/blogs/tag/ios/' title='iOS Tag'>iOS</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/rap-mobile/' title='rap mobile Tag'>rap mobile</a>, <a href='http://eclipsesource.com/blogs/tag/tabris/' title='Tabris Tag'>Tabris</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2012/02/02/accessing-a-very-large-data-set-with-mobile-devices/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Yoxos, Galileo SR1, TÜV and a Contest</title>
		<link>http://eclipsesource.com/blogs/2009/10/01/yoxos-galileo-sr1-tuv-and-a-contest/</link>
		<comments>http://eclipsesource.com/blogs/2009/10/01/yoxos-galileo-sr1-tuv-and-a-contest/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 21:49:16 +0000</pubDate>
		<dc:creator>Jordi Böhme López</dc:creator>
				<category><![CDATA[EclipseSource News]]></category>
		<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[galileo]]></category>
		<category><![CDATA[Planet OSGi]]></category>
		<category><![CDATA[yoxos]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=3109</guid>
		<description><![CDATA[New Yoxos release includes Galileo SR1 (Eclipse 3.5.1) and TÜV certified SecureSource repository offering  ...and a contest.]]></description>
			<content:encoded><![CDATA[<p>The Yoxos team has been really busy as of late. The free <a href="http://ondemand.yoxos.com/">Yoxos OnDemand</a> download service is getting lots of new function and with the release of <a href="http://eclipsesource.com/en/downloads/eclipse-galileo-download/">Galileo SR1</a> last week, the OnDemand repositories have been updated to include all the latest Eclipse bundles.  Thousands of people use the free Yoxos service to reliably get and maintain their Eclipse tooling.  Now they can get the latest Eclipse and thousands of compatible components in one spot!</p>
<p>At the same time as doing all that, we worked to get the Yoxos SecureSource validation process <a href="http://eclipsesource.com/en/about/press-releases/en/eclipsesource-completes-tuev-certification-for-secure-eclipse-plug-in-repository/">certified by TÜV</a>. Turns out that the TÜV certification is perhaps the news of biggest impact to the community. It means that you can now get thousands of OSGi and Eclipse components that have been validated as trustworthy using a process certified by an internationally recognized standards body.</p>
<p>Most Germans will know TÜV from the inspection they have to do for their cars every two years. TÜV engineers certify cars as roadworthy and safe. But TÜV does way more than that. It is a global organization specialized in testing, inspecting and certifying product safety, quality and usability in many areas. We looked around the office and found the all of these everyday TÜV certified things.</p>
<p>In addition to things impacting your physical safety, TÜV certifies all manner of software including virus checkers and now software component validation processes. </p>
<p>Why is this interesting? </p>
<p>Basically there are whole industries out there that cannot use Eclipse and open source because it&#8217;s seen as untrusted. This certification of Yoxos SecureSource means that Eclipse and OSGi can be used in security critical applications or mission critical toolchains where trust and validation are key concerns. More users of Eclipse in more domains means a bigger ecosystems and more adoption. Good news for everyone!</p>
<p>For fun, we looked around the office and found the all of these everyday TÜV certified things and thought it would be cool to run a contest. The first person to correctly identify 5 of the pictured TÜV certified products wins a free lifetime subscription to our new super secret Yoxos product coming out by the end of the year.</p>
<p><a href="http://eclipsesource.com/blogs/wp-content/uploads/2009/10/tuev-certs.jpg"><img class="aligncenter size-medium wp-image-3113" title="tuev-certs" src="http://eclipsesource.com/blogs/wp-content/uploads/2009/10/tuev-certs-300x125.jpg" alt="tuev certs 300x125 Yoxos, Galileo SR1, TÜV and a Contest" width="300" height="125" /></a></p>
<p>Submit your entry by commenting on this post.</p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=Yoxos%2C+Galileo+SR1%2C+T%C3%9CV+and+a+Contest&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2009/10/01/yoxos-galileo-sr1-tuv-and-a-contest/" 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/2009/10/01/yoxos-galileo-sr1-tuv-and-a-contest/" 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/2009/10/01/yoxos-galileo-sr1-tuv-and-a-contest/" 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/2009/10/01/yoxos-galileo-sr1-tuv-and-a-contest/&amp;t=Yoxos%2C+Galileo+SR1%2C+T%C3%9CV+and+a+Contest" 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/>Comments are off for this post.. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/galileo/' title='galileo Tag'>galileo</a>, <a href='http://eclipsesource.com/blogs/tag/osgi/' title='Planet OSGi Tag'>Planet OSGi</a>, <a href='http://eclipsesource.com/blogs/tag/yoxos/' title='yoxos Tag'>yoxos</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/galileo/' title='galileo Tag'>galileo</a>, <a href='http://eclipsesource.com/blogs/tag/osgi/' title='Planet OSGi Tag'>Planet OSGi</a>, <a href='http://eclipsesource.com/blogs/tag/yoxos/' title='yoxos Tag'>yoxos</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2009/10/01/yoxos-galileo-sr1-tuv-and-a-contest/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>All systems go</title>
		<link>http://eclipsesource.com/blogs/2009/01/13/all-systems-go/</link>
		<comments>http://eclipsesource.com/blogs/2009/01/13/all-systems-go/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 22:16:09 +0000</pubDate>
		<dc:creator>Jordi Böhme López</dc:creator>
				<category><![CDATA[Planet Eclipse]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[eclipsecon]]></category>

		<guid isPermaLink="false">http://eclipsesource.com/blogs/?p=204</guid>
		<description><![CDATA[I just recieved my EclipseCon 2009 Registration confirmation. Here are my talks that were accepted: My workbench on your desktop? The Yoxos OnDemand free download configurator. Down with WAR. Server-side deployment with p2 EPP Wizard &#8211; The Future for Custom Eclipse Downloads I&#8217;m looking forward to meet you all there at the conference. Don&#8217;t forget to <a href="http://eclipsesource.com/blogs/2009/01/13/all-systems-go/" style="text-decoration: none;">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I just recieved my EclipseCon 2009 Registration confirmation.</p>
<p>Here are my talks that were accepted:<img class="alignright" title="speaking at EclipseCon 2009" src="http://www.eclipsecon.org/2009/static/image/130x100_speaking.gif" alt="130x100 speaking All systems go" width="130" height="100" /></p>
<ol>
<li><a href="http://www.eclipsecon.org/2009/sessions?id=425" target="_blank">My workbench on your desktop? The Yoxos OnDemand free download configurator.</a></li>
<li><a href="http://www.eclipsecon.org/2009/sessions?id=423" target="_blank">Down with WAR. Server-side deployment with p2</a></li>
<li><a href="http://www.eclipsecon.org/2009/sessions?id=426" target="_blank">EPP Wizard &#8211; The Future for Custom Eclipse Downloads</a></li>
</ol>
<p>I&#8217;m looking forward to meet you all there at the conference.</p>
<p>Don&#8217;t forget to vote for the <a href="http://www.eclipse.org/community/tshirt/eclipsecon09.php" target="_blank">committer shirt contest</a>, book your <a href="http://www.eclipsecon.org/2009/hotels/" target="_blank">Hotel</a> and bring your power outlet adapters&#8230;</p>
<p> </p>
<p><span style="color: #0000ee; text-decoration: underline;"><br />
</span></p>
<p><br/><div style="display: inline-block"><a href="https://twitter.com/intent/tweet?source=webclient&amp;text=All+systems+go&amp;via=eclipsesource&amp;url=http://eclipsesource.com/blogs/2009/01/13/all-systems-go/" 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/2009/01/13/all-systems-go/" 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/2009/01/13/all-systems-go/" 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/2009/01/13/all-systems-go/&amp;t=All+systems+go" 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/>Comments are off for this post.. Tagged with <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/eclipsecon/' title='eclipsecon Tag'>eclipsecon</a>, <a href='http://eclipsesource.com/blogs/tag/eclipse/' title='eclipse Tag'>eclipse</a>, <a href='http://eclipsesource.com/blogs/tag/eclipsecon/' title='eclipsecon Tag'>eclipsecon</a></p>]]></content:encoded>
			<wfw:commentRss>http://eclipsesource.com/blogs/2009/01/13/all-systems-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
