<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7116704192081983568</id><updated>2012-03-02T23:18:33.618+05:30</updated><category term='execution environment'/><category term='contributing'/><category term='jazz'/><category term='rational'/><category term='eclipsecon'/><category term='fields'/><category term='static analysis'/><category term='java 7'/><category term='rational rhapsody'/><category term='collaboration'/><category term='jazz.net'/><category term='ADT'/><category term='community'/><category term='annotations'/><category term='classpath'/><category term='PDE'/><category term='preferences'/><category term='jdt'/><category term='indigo'/><category term='null'/><category term='visual studio'/><category term='rational team concert'/><category term='android'/><category term='ibm'/><category term='mobile development'/><category term='agile'/><category term='plugin'/><category term='planeteclipse'/><category term='preferenceTransfer'/><category term='diamond'/><category term='Innovate'/><category term='juno'/><category term='search'/><category term='compliance'/><category term='index'/><category term='application lifecycle management'/><category term='phonegap'/><category term='modeling'/><category term='CLM'/><category term='eclipse'/><category term='eclipseday'/><category term='rational ibm team concert phonegap android agile mobile software'/><category term='API tooling'/><category term='university'/><category term='jazzhub'/><category term='M5'/><title type='text'>Eclipse, Java and all that JAZZ!</title><subtitle type='html'>This blog is about the open world of Eclipse, Jazz and related technologies. Its about new stuff coming your way, old stuff you didn't know existed or simply stuff that we talk about as we enter a new era in software development. All this, straight from the horse's mouth!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-2854128064523665841</id><published>2012-03-02T23:18:00.000+05:30</published><updated>2012-03-02T23:18:33.632+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='contributing'/><category scheme='http://www.blogger.com/atom/ns#' term='community'/><category scheme='http://www.blogger.com/atom/ns#' term='jdt'/><title type='text'>Contributing to Eclipse Java Development Tools project</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In recent times, we've been getting several contributions in the Eclipse JDT project. Thats a great thing and we want to encourage that. However, several times small issues viz. patch not based on latest code, formatting issues, whitespace issues, failing tests etc. delay the process of review and release. It is painful for both the contributor, as well as the JDT committer.&lt;br /&gt;&lt;br /&gt;In order to make sure all JDT contributions go through a standard series of steps before they make it to bugzilla, we've updated the &lt;a href="http://wiki.eclipse.org/JDT_UI/How_to_Contribute"&gt;contributing to JDT/UI&lt;/a&gt; and the &lt;a href="http://wiki.eclipse.org/JDT_Core_Committer_FAQ"&gt;JDT/Core FAQ&lt;/a&gt; page. Please spend a few minutes reading through the steps and go ahead to submit a patch on bugzilla. Looking forward to more community participation in both JDT projects.&lt;br /&gt;&lt;br /&gt;Also, whenever you start working on a bug, please drop a small comment on the bug page to say you intend to submit a patch, to avoid duplication of effort. Thanks! :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-2854128064523665841?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/2854128064523665841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2012/03/contributing-to-eclipse-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/2854128064523665841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/2854128064523665841'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2012/03/contributing-to-eclipse-java.html' title='Contributing to Eclipse Java Development Tools project'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-8963788683354996153</id><published>2012-02-18T13:55:00.000+05:30</published><updated>2012-02-18T18:04:24.190+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='juno'/><category scheme='http://www.blogger.com/atom/ns#' term='M5'/><category scheme='http://www.blogger.com/atom/ns#' term='null'/><category scheme='http://www.blogger.com/atom/ns#' term='static analysis'/><title type='text'>Null analysis for fields in Eclipse JDT withdrawn for Juno</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://eclipseandjazz.blogspot.in/2012/01/null-analysis-for-fields-with-eclipse.html"&gt;Null analysis for fields with Eclipse JDT&lt;/a&gt; , introduced in Juno M5, has been withdrawn and will not be available in the Juno release. Only Juno M5 will contain this feature. The reason for withdrawal is the fact that becuase of implementation constraints, it could not support analysis for alien field references i.e. non-static fields of objects other than 'this'. We will rework the implementation and come back with a full fledged support for fields, including annotations to support null analysis for fields. See&amp;nbsp;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=247564#c176"&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=247564#c176&lt;/a&gt;&amp;nbsp;for more details.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ZQ9V29nonh4/Tz9gRoKRs-I/AAAAAAAACLU/bv6w3aiWHEg/s1600/$1247EA8D0E910407.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="91" src="http://3.bp.blogspot.com/-ZQ9V29nonh4/Tz9gRoKRs-I/AAAAAAAACLU/bv6w3aiWHEg/s320/$1247EA8D0E910407.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Apologies to those who were looking forward to a complete null annotations support for fields as well. We are considering making the current implementation of the feature available as a plugin patch. I will keep you posted.&lt;br /&gt;&lt;br /&gt;Also, even when using annotations for method return and parameters, be careful in dealing with fields because we don't warn there. Eg:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;class A{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Object o = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;void goo(@NonNull Object param) {}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@NonNull Object foo() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; goo(this.o);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this.o;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-8963788683354996153?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/8963788683354996153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2012/02/null-analysis-for-fields-in-eclipse-jdt.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/8963788683354996153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/8963788683354996153'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2012/02/null-analysis-for-fields-in-eclipse-jdt.html' title='Null analysis for fields in Eclipse JDT withdrawn for Juno'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ZQ9V29nonh4/Tz9gRoKRs-I/AAAAAAAACLU/bv6w3aiWHEg/s72-c/$1247EA8D0E910407.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-2126554097822376790</id><published>2012-01-30T01:44:00.002+05:30</published><updated>2012-01-30T13:36:57.237+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='juno'/><category scheme='http://www.blogger.com/atom/ns#' term='fields'/><category scheme='http://www.blogger.com/atom/ns#' term='M5'/><category scheme='http://www.blogger.com/atom/ns#' term='null'/><category scheme='http://www.blogger.com/atom/ns#' term='jdt'/><category scheme='http://www.blogger.com/atom/ns#' term='static analysis'/><title type='text'>Null Analysis for Fields with Eclipse JDT</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;It is common knowledge that Eclipse has an intra-procedural null analysis capability, augmented recently with null annotations for inter-procedural analysis in Juno M4. However, a big flaw and pain point till now was that the anlsysis would only work for local variables/parameters, and NOT for fields! Strange, innit? Well, a bunch of problems with handling fields prevented the initial null analysis implementation to be generic enough to handle fields as well. Access from different threads, through different objects, initialization of even final fields in different constructors were some of the roadblocks because of which this work was put on the backburner. However, even though we haven't found a holy grail to tackle these problems, we've come out with atleast a basic implementation of null analysis for fields! Rejoice!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A. The Problem&lt;/b&gt;&lt;br /&gt;Prior to Juno M5, the following code snippet would raise null warnings only on the local variable, but not on the field.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-WAYG6Z5gP5w/TyZOmZmGxaI/AAAAAAAACLE/crkB4R3Ozm8/s1600/$148A72D2718D5D18.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-WAYG6Z5gP5w/TyZOmZmGxaI/AAAAAAAACLE/crkB4R3Ozm8/s1600/$148A72D2718D5D18.bmp" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;B. The Solution&lt;/b&gt;&lt;br /&gt;See the &lt;a href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.2M5-201201271145/eclipse-news-M5.html"&gt;Juno M5 new and noteworthy page&lt;/a&gt; for the new null analysis for fields.&lt;br /&gt;Note that for non-constant fields, we only raise "potential NPE" warnings even if the field has been assigned null or compared against null because we assume that there's always a chance of another thread modifying it between the assignment/comaparison and the actual reference. So consider the following snippet&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Z_n1Vv9wJEs/TyZPc7nOMkI/AAAAAAAACLM/_CGWY-U8shM/s1600/$7ACE762ED0458596.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="331" src="http://3.bp.blogspot.com/-Z_n1Vv9wJEs/TyZPc7nOMkI/AAAAAAAACLM/_CGWY-U8shM/s640/$7ACE762ED0458596.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;C. Not quite there yet?&lt;/b&gt;&lt;br /&gt;There are a few limitations with the current null analysis for fields:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Yet to be done for final fields that are initialized at the time of declaration. This will be done with the fix for &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=237236"&gt;bug 237236&lt;/a&gt; soon.&lt;/li&gt;&lt;li&gt;The analysis only works for non-static fields of the current object or static fields of the current type ONLY. That means, in the following code snippet. you get null warnings on direct access of field1 or access via "this", but not if field1 is accessed via another object 'test'.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;class Test{&lt;br /&gt;&amp;nbsp; &amp;nbsp;public Object field1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;void foo(Test test) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;if (field1 == null) {&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&amp;nbsp;field1&amp;nbsp;.toString());&amp;nbsp;&amp;nbsp;// "potential" NPE warning&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;} else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // do something&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(field1.toString());&amp;nbsp;&amp;nbsp;// Potential NPE warning here&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if (this.field1 == null) {&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println( this.field1&amp;nbsp;.toString());&amp;nbsp;&amp;nbsp;// "potential" NPE warning&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;} else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // do something&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(this.field1.toString());&amp;nbsp;&amp;nbsp;// Potential NPE warning here&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; // access through object 'test' will raise no warnings. See below&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if (test.field1 == null) {&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println( test.field1&amp;nbsp;.toString());&amp;nbsp;&amp;nbsp;// no warning&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;} else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // do something&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(test.field1.toString());&amp;nbsp;&amp;nbsp;// no warning&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a limitation of the current code analysis infrastructure and we hope to address this sometime soon. The soon to be released&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331649"&gt; null annotations support for fields&lt;/a&gt; will greatly assuage this problem in the short term.&lt;br /&gt;&lt;br /&gt;Please do start using this new feature. Even with its limitations, its quite useful and we've found a long list of unsafe code patterns in the Eclipse SDK itself.&amp;nbsp;&lt;a href="http://blog.deepakazad.com/2012/01/weird-code-pattern-in-eclipse-sdk.html"&gt;Deepak's post here&lt;/a&gt;&amp;nbsp;presents one such example&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-dOp3pEh1YgM/TyGOfUB907I/AAAAAAAAAc0/qVI7xiHEuVw/s1600/weird-code-pattern.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-dOp3pEh1YgM/TyGOfUB907I/AAAAAAAAAc0/qVI7xiHEuVw/s1600/weird-code-pattern.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Apart from this, Juno M5 has more interesting items. See&lt;a href="http://eclipseandjazz.blogspot.com/2012/01/faster-java-search-using-pre-built.html"&gt; my previous post on pre-built indexes&lt;/a&gt;, &lt;a href="http://blog.objectteams.org/2012/01/help-the-jdt-compiler-helping-you-1-resource-leaks/"&gt;Stephan's post on Resource leak warnings&lt;/a&gt; and the &lt;a href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.2M5-201201271145/eclipse-news-M5.html"&gt;Juno M5 new and noteworthy page&lt;/a&gt; for more.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Stay tuned!&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-2126554097822376790?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/2126554097822376790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2012/01/null-analysis-for-fields-with-eclipse.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/2126554097822376790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/2126554097822376790'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2012/01/null-analysis-for-fields-with-eclipse.html' title='Null Analysis for Fields with Eclipse JDT'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-WAYG6Z5gP5w/TyZOmZmGxaI/AAAAAAAACLE/crkB4R3Ozm8/s72-c/$148A72D2718D5D18.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-7261531182909285288</id><published>2012-01-26T18:00:00.000+05:30</published><updated>2012-01-28T18:48:32.387+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='classpath'/><category scheme='http://www.blogger.com/atom/ns#' term='index'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='jdt'/><title type='text'>Faster Java search using pre-built indexes with Eclipse JDT</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;JDT indexes referenced libraries (or JARs) in your projects for use in the Java search. However, in most cases these libraries seldom change, and the indexing may be costly and take time when you invoke search for the first time after adding the JAR on the buildpath.&lt;br /&gt;&lt;br /&gt;From 3.8M5 onwards, you can avoid this redundant indexing by providing a pre-built index for each classpath entry in the classpath container. This feature was recently implemented in &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=356620"&gt;bug&amp;nbsp;356620&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So how do you generate the indexes in the first place?&lt;br /&gt;1. Create the JAR&lt;br /&gt;2. Go to Run Configurations&amp;gt;Eclipse Application. Give a name to the configuration, viz. indexer, and in 'Main' tab choose Run an application, and use the list to select org.eclipse.jdt.core.JavaIndexer&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-qNoS6GY4guk/TyAP_ObmCFI/AAAAAAAACKw/akZjXdPVJDg/s1600/indexer1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="279" src="http://2.bp.blogspot.com/-qNoS6GY4guk/TyAP_ObmCFI/AAAAAAAACKw/akZjXdPVJDg/s400/indexer1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;3. Go to the 'Arguments' tab and use the arguments -option &amp;lt;indexFileLocation&amp;gt; &amp;lt;jarFileLocation&amp;gt; in addition to the existing ones.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-7CSr_vJFr3g/TyAUQfHTTUI/AAAAAAAACK4/rp-1YZJp14g/s1600/indexer2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="92" src="http://3.bp.blogspot.com/-7CSr_vJFr3g/TyAUQfHTTUI/AAAAAAAACK4/rp-1YZJp14g/s320/indexer2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;4. The index file will be generated at the specified location.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now when the JAR in question is being added to the build path of a project, the classpath containers can add the index location to classpath, which will look as follows:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;classpathentry kind="lib" path="C:/Users/IBM_ADMIN/Desktop/TestIndex.jar"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;attributes&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;lt;attribute name="javadoc_location" value="file://C://abc"/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/attributes&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;/classpathentry&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;span style="font-family: Georgia, 'Times New Roman', serif;"&gt;Voila! JDT will no longer index the JAR and even the first search will be lightning fast!&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;i style="font-family: verdana, arial, helvetica, geneva; font-size: 13px; text-align: -webkit-auto;"&gt;Note: This feature is mainly intended for plug-ins that implement their own classpath container, not for the end user.&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-7261531182909285288?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/7261531182909285288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2012/01/faster-java-search-using-pre-built.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/7261531182909285288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/7261531182909285288'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2012/01/faster-java-search-using-pre-built.html' title='Faster Java search using pre-built indexes with Eclipse JDT'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-qNoS6GY4guk/TyAP_ObmCFI/AAAAAAAACKw/akZjXdPVJDg/s72-c/indexer1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-5461254254096195286</id><published>2011-12-06T23:09:00.001+05:30</published><updated>2011-12-10T01:27:10.771+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='juno'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipsecon'/><category scheme='http://www.blogger.com/atom/ns#' term='null'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='jdt'/><category scheme='http://www.blogger.com/atom/ns#' term='static analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='annotations'/><title type='text'>Inter-procedural Null analysis using annotations in Eclipse JDT</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;The JDT team is extremely excited with the release of the new annotation based null analysis. Before writing anything about it I want to thank Stephan Herrmann (JDT committer from Germany) for all the hard work he has put in on this feature! Feel free to drop him a word of appreciation on stephan AT cs.tu-berlin.de&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;What is JDT's annotation based null analysis?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;To give a bit of a background, you must've noticed that JDT java compiler does some static analysis and based on that warns if you deference a variable that has been analysed to be (potentially) null at runtime, or compare a variable against null when its nullness at runtime can be determined at compile time.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[See line numbers to locate error messages]&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dgkrtA_h7AM/Tt5lu6dx-TI/AAAAAAAACKU/6mc2j41vXhE/s1600/snap1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-dgkrtA_h7AM/Tt5lu6dx-TI/AAAAAAAACKU/6mc2j41vXhE/s640/snap1.jpg" width="608" /&gt;&lt;/a&gt;&lt;/div&gt;However, the warnings are only generated for local variables inside a method. There's no way to find out the change of nullness due to a method call, or for parameters of a method. Consider the example on the left. o1 is a parameter and since we don't know how foo(..) will be called and what value will be passed to o1, we can't do any analysis on it unless its state definitely changes inside foo(..). Also note that even though o1 is assigned return value of method &amp;nbsp;bar(), which returns null, the compiler cannot figure that out during static analysis and assumes the return value of bar() to be an unknown value.&lt;br /&gt;&lt;br /&gt;Null annotations offer a solution here. They are a way of enforcing null contracts in your code to make sure you catch such (potential) NPE's before they occur at runtime and become a stop-ship bug for your product.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;How do I use null annotations?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;JDT now comes bundled with a JAR (org.eclipse.jdt.annotation) containing null annotations. The types of annotations offered are:&lt;br /&gt;&lt;u&gt;NonNull annotation&lt;/u&gt;&lt;br /&gt;Default is&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;@org.eclipse.jdt.annotation.NonNull &lt;/span&gt;-&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;when this annotation occurs on a return type, it enforces a non null return value for a method.&lt;/li&gt;&lt;li&gt;when this annotation occurs on a method parameter, it enforces a non null value to be passed to the method call and that only a non null value can be assigned to this parameter inside the method.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;Nullable annotation&lt;/u&gt;&lt;br /&gt;Default is&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;@org.eclipse.jdt.annotation.Nullable&lt;/span&gt;-&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;when this annotation occurs on a method return type or parameter, it says that the returned value can be null, and so can be the argument.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;NonNullByDefault annotation&lt;/u&gt;&lt;br /&gt;Default is&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;@org.eclipse.jdt.annotation.NonNullByDefault&lt;/span&gt;-&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;This can be applied to a package (in package-info.java), class or method to enforce nullability for all enclosed elements. The annotation alone enforces non nullability of enclosed method return value and parameter values.&lt;/li&gt;&lt;li&gt;If applied with a an argument i.e. NonNullBeDefault (false), it will cancel out any global default for the particular element.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To use these annotations in your project, &lt;b&gt;right click Project&amp;gt;Build Path&amp;gt;Add External Archives&lt;/b&gt; and browse to org.eclipse.jdt.annotation JAR in the "plugins" directory of your eclipse install location. (We are working on the UI for this.)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;One can also use their own annotation types as null annotations. Just make sure they are on the project's buildpath.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ZCuVRgvBAa4/Tt8r4DQs98I/AAAAAAAACKc/7xmDVMkdHpE/s1600/null-prefs.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://3.bp.blogspot.com/-ZCuVRgvBAa4/Tt8r4DQs98I/AAAAAAAACKc/7xmDVMkdHpE/s320/null-prefs.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;To enable null annotation based analysis and specify the annotation names, navigate to Preferences&amp;gt;Java&amp;gt;Compiler&amp;gt;Errors/Warning&amp;gt;Null analysis.&lt;br /&gt;&lt;br /&gt;(Note also the "use non-null as default" option, which you can use to set a universal (workspace/project level) default to be applied to all method return types and parameters.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;What new errors/warnings should I expect to see with null annotations enabled?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;As seen in the above dialog, there are two kind of diagnostics of primary importance - violation of null specification and potential violation of null specification. In addition to these the existing null analysis gets enhanced, and now for annotated method parameters a null state is available inside a method.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Violation of null spec&lt;/b&gt; is issued in cases when:&lt;br /&gt;1. You pass a null value as an argument to a method whose corresponding parameter is annotated with @NonNull&lt;br /&gt;2. You assign a @NonNull annotated parameter a null value.&lt;br /&gt;3. You return a null value in a method that is annotated with @NonNull&lt;br /&gt;4. You inherit a method annotated with @NonNull but now loosen the contract by annotating child method as @Nullable.&lt;br /&gt;5.&amp;nbsp;You inherit a method with a parameter annotated with @Null but now tighten the contract by annotating child method's corresponding parameter as @NonNull.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[See line numbers to locate error messages]&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-GtqGgB4F80A/Tt5gvtMbC4I/AAAAAAAACJ0/p0uXvH5uVAQ/s1600/snap3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="636" src="http://3.bp.blogspot.com/-GtqGgB4F80A/Tt5gvtMbC4I/AAAAAAAACJ0/p0uXvH5uVAQ/s640/snap3.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Potential violation of null spec&lt;/b&gt; is issued when:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;1.&amp;nbsp;You pass a value evaluated to be null on some execution path as an argument to a method whose corresponding parameter is annotated with @NonNull&lt;br /&gt;2. You assign a @NonNull annotated parameter a value ascertained to be null on some execution path.&lt;br /&gt;3. You return a possibly null value in a method that is annotated with @NonNull.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[See line numbers to locate error messages]&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8okREA4wOvo/Tt5iXa0iSPI/AAAAAAAACJ8/hx9qf589Zas/s1600/snap4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="604" src="http://2.bp.blogspot.com/-8okREA4wOvo/Tt5iXa0iSPI/AAAAAAAACJ8/hx9qf589Zas/s640/snap4.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Insufficient null info &lt;/b&gt;is issued when there's not sufficient information to evaluate a given value to be (possibly) null and that value is passed as an argument, assigned to a parameter or returned from a method.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[See line numbers to locate error messages]&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-I1AQgdFgKqQ/Tt5jKbMTQrI/AAAAAAAACKE/n11YjYe7Png/s1600/snap5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="556" src="http://4.bp.blogspot.com/-I1AQgdFgKqQ/Tt5jKbMTQrI/AAAAAAAACKE/n11YjYe7Png/s640/snap5.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Redundant null annotation&lt;/b&gt; is issued when an annotation has the same effect as one applied already in an enclosing element.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[See line numbers to locate error messages]&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-s2A6thDfsew/Tt5k4N7ryGI/AAAAAAAACKM/88dzhymTO3o/s1600/snap6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="621" src="http://3.bp.blogspot.com/-s2A6thDfsew/Tt5k4N7ryGI/AAAAAAAACKM/88dzhymTO3o/s640/snap6.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Note that this is a work in progress and we will continue to polish the same for the Juno release. We're also working on ways to help people use this functionality easily (eg.: &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=331651"&gt;Support for nullity profiles for libraries&lt;/a&gt;&amp;nbsp;and &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=337977"&gt;Quick fixes for null annotations&lt;/a&gt;.&amp;nbsp;) .&lt;br /&gt;For a sneak preview of this feature, drop in at the EclipseCon 2012 tutorial - &lt;a href="http://www.eclipsecon.org/2012/sessions/how-train-jdt-dragon"&gt;How To Train the JDT Dragon&lt;/a&gt;.&amp;nbsp;If you find any issues while testing this feature, please open a &lt;a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=JDT"&gt;bug&lt;/a&gt;.&amp;nbsp;I hope you're as excited as we are about this cool new feature!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-5461254254096195286?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/5461254254096195286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/12/inter-procedural-null-analysis-using.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/5461254254096195286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/5461254254096195286'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/12/inter-procedural-null-analysis-using.html' title='Inter-procedural Null analysis using annotations in Eclipse JDT'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-dgkrtA_h7AM/Tt5lu6dx-TI/AAAAAAAACKU/6mc2j41vXhE/s72-c/snap1.jpg' height='72' width='72'/><thr:total>7</thr:total><georss:featurename>Vittal Mallya Rd, SR Nagar, Bengaluru, Karnataka, India</georss:featurename><georss:point>12.9715987 77.5945627</georss:point><georss:box>12.724026199999999 77.2787057 13.2191712 77.91041969999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-4051140954587414299</id><published>2011-11-14T00:46:00.001+05:30</published><updated>2011-11-14T19:42:45.449+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipsecon'/><category scheme='http://www.blogger.com/atom/ns#' term='compliance'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='jdt'/><title type='text'>Of Compliance and Source settings in Eclipse java compiler</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Going through a few stack overflow posts and a few bugs, I realized that there's still a lot of confusion about the &amp;nbsp;source and compliance level settings available in JDT. Well, frankly, almost everyone I know was confused when they started using JDT, even the current JDT committers themselves!&lt;br /&gt;These settings are available in &lt;b&gt;Preferences&amp;gt;Java&amp;gt;Compiler&lt;/b&gt;, or in your project's &lt;b&gt;.settings folder&amp;gt;org.eclipse.jdt.core.prefs&lt;/b&gt; file.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3NRmCWDdf0U/TsAZWmDyDYI/AAAAAAAACIQ/kq-aFzwr4Ew/s1600/shot1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="215" src="http://4.bp.blogspot.com/-3NRmCWDdf0U/TsAZWmDyDYI/AAAAAAAACIQ/kq-aFzwr4Ew/s400/shot1.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;So, what do the settings imply and what do they do?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Source compatibility:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;This setting should be used to select upto which java version the user intends to use the language features. Eg.: setting it to 1.7 means that the user can use strings in switch, the diamond construct, etc. but setting it to 1.6 will mean that the user can not use such 1.7-only language features.&lt;br /&gt;For the JDT compiler itself, we use a compliance of 1.4. Yes, quite old-fashioned you'd say, but this was a conscious choice to enable people to use the JDT compiler even if they dont have a version of java higher than 1.4 installed on their machines. You can also chose a source setting for your project on such considerations.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Compiler Compliance level:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;This setting is a kind of a switch to make the JDT compiler "compliant" to a certain Oracle javac version. This is because not all bugs fixed in the Oracle javac compiler get backported to earlier releases. So, there are many differences between each javac version. There are even cases when only one javac version differs from the others, before and after it. So, we provided the compliance setting for users to replicate that difference in behaviour in the JDT compiler. This is to enable people who compile with ECJ and ship with javac or vice-versa, to see consistent errors (or the lack thereof).&lt;br /&gt;&lt;br /&gt;Take, for example, the following case:&lt;br /&gt;&lt;br /&gt;package com.example;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;import java.util.List;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;public class ErasureBug {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; public String output(List&amp;lt;Integer&amp;gt; integers) {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return "";&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; public void output(List&amp;lt;Double&amp;gt; doubles) {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;This code compiles without error only in javac 6, but fails with a duplicate method erasure in both javac 5 and javac 7.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;So, in Eclipse when the user sets the project "compliance" to 1.6, he/she will be able to compile the code as shown, while in 1.5 and 1.7 modes, the code will fail.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3en4_bvKeDE/TsAfI70uPEI/AAAAAAAACIY/wy2dpYpyHXc/s1600/shot2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://1.bp.blogspot.com/-3en4_bvKeDE/TsAfI70uPEI/AAAAAAAACIY/wy2dpYpyHXc/s400/shot2.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;&lt;i&gt;Generated .class files compatibility:&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;This setting changes the generated bytecode to be compatible to a certain VM version. This is required at runtime when the VM available is lower than the one for which the code is compiled. So, if you set source level at 1.3 , use 1.3 features your code and expect your clients to still be able to use the older 1.2 or lesser VM to execute your code, you should set the .class file compatibility setting to 1.2 or less. This does not work for higher java versions, because suppose you use annotations in your code which only came in 1.5, or instructions such as invokedynamic in 1.7, which introduced a new Bootstrap method attribute, earlier VM's may still not be able to execute the class files. So we cannot guarantee backward compatibility and the UI thus will not allow you to set class file compatibility lower than the source level. However, if you're using features such as generics in 1.5 source level, it's quite safe for a 1.4 VM to execute those. So, you can manually set the&amp;nbsp;org.eclipse.jdt.core.compiler.codegen.targetPlatform property to 1.4 in project&amp;gt;&lt;/span&gt;&lt;b&gt;settings folder&amp;gt;org.eclipse.jdt.core.prefs &lt;/b&gt;file.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;i&gt;Note that the source level cannot be more than the compliance level.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Hope this gives more clarity on the settings.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;u&gt;EclipseCon update:&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I have the following submissions for EclipseCon 2012. Do vote if you find them interesting:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="https://www.eclipsecon.org/2012/sessions/whats-new-jdt"&gt;What's new in JDT&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.eclipsecon.org/2012/sessions/holy-grail-mobile-development"&gt;The holy grail of mobile development&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.eclipsecon.org/2012/sessions/agile-and-collaborative-development-mobile-apps"&gt;Agile and collaborative development of mobile apps&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-4051140954587414299?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/4051140954587414299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/11/of-compliance-and-source-settings-in.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/4051140954587414299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/4051140954587414299'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/11/of-compliance-and-source-settings-in.html' title='Of Compliance and Source settings in Eclipse java compiler'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-3NRmCWDdf0U/TsAZWmDyDYI/AAAAAAAACIQ/kq-aFzwr4Ew/s72-c/shot1.JPG' height='72' width='72'/><thr:total>2</thr:total><georss:featurename>Bengaluru, Karnataka, India</georss:featurename><georss:point>12.9715987 77.5945627</georss:point><georss:box>12.724026199999999 77.2787057 13.2191712 77.91041969999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-2737749613786120493</id><published>2011-10-18T02:11:00.001+05:30</published><updated>2011-10-18T02:13:28.555+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='juno'/><category scheme='http://www.blogger.com/atom/ns#' term='indigo'/><category scheme='http://www.blogger.com/atom/ns#' term='API tooling'/><category scheme='http://www.blogger.com/atom/ns#' term='PDE'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='execution environment'/><title type='text'>Of invalid references to system libraries and execution environments</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Picture this:&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;You have a plugin that is supposed to be compatible with systems running even on 1.4 JRE i.e. your plugin execution environment is 1.4.&lt;/li&gt;&lt;li&gt;An unsuspecting developer unintentionally checks out this plugin project into his workspace where he uses a 1.6 JRE by default.&lt;/li&gt;&lt;li&gt;He starts writing Generics and is even allowed to do so because a 1.6 library is associated with the project in his workspace. The poor guy doesn't yet know what blunder he has done! :)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;See an example below where in a plugin with 1.6 compliance, a developer accidentally used Autocloseable (coming from his workspace default 1.7 JRE).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-T6CkDIgGrhU/TpyPMnezUpI/AAAAAAAACHg/SSUFZfzFNMI/s1600/pic1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="424" src="http://1.bp.blogspot.com/-T6CkDIgGrhU/TpyPMnezUpI/AAAAAAAACHg/SSUFZfzFNMI/s640/pic1.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;API tooling provides a mechanism to figure out such illegal references to system libraries. In order to set up API tooling for your plugin project, &lt;b&gt;right click on the project &amp;gt; PDE tools &amp;gt; API Tooling setup. &lt;/b&gt;Choose your project and click &lt;b&gt;next&lt;/b&gt;. When it shows "Add API nature and API analysis builder", click &lt;b&gt;finish&lt;/b&gt;. Now make sure your project settings for API tooling (&lt;b&gt;right click &amp;gt; Properties &amp;gt; Plug-in development &amp;gt; API errors/warnings&lt;/b&gt;) are set as shown below:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-K0pM75uHG-A/TpyQeMSvUjI/AAAAAAAACHo/nAnyxO3v3Rw/s1600/pic2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="568" src="http://1.bp.blogspot.com/-K0pM75uHG-A/TpyQeMSvUjI/AAAAAAAACHo/nAnyxO3v3Rw/s640/pic2.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By default, the "Supported Environments" will have no Execution Environments descriptions installed (From 3.8 onwards you will get an error whenever no execution environment description is installed). To install these EE descriptions, click on "&lt;b&gt;install them now&lt;/b&gt;" or go to the "I&lt;b&gt;nstall New Software..&lt;/b&gt;" page. Choose the "Eclipse Project update site" if already available or add the URL&amp;nbsp;http://download.eclipse.org/eclipse/updates/&amp;lt;version&amp;gt; , where &amp;lt;version&amp;gt; = 3.6, 3.7, etc.&lt;/div&gt;&lt;div&gt;Uncheck "group by category" option and search for descriptions. Install these descriptions and you're all set to go. (&lt;i&gt;Note: the above steps should be taken if you move to 3.8 Juno and suddenly find the "Missing EE descriptions" error in your project&lt;/i&gt;).&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now with the above "invalid references to system libraries" option set to error/warning, you should get a warning for usage of Autocloseable in the above plugin project, as shown below:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-DWwPBhz2bD8/TpySh4de18I/AAAAAAAACHw/101-Etsarbw/s1600/pic3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="326" src="http://3.bp.blogspot.com/-DWwPBhz2bD8/TpySh4de18I/AAAAAAAACHw/101-Etsarbw/s640/pic3.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These settings when done once on the project level and released into the repository will make sure that nobody accidentally references any API/class one is not supposed to. Read &lt;a href="http://olivier-eclipse.blogspot.com/2010/11/workspace-settings-vs-project-settings.html"&gt;Olivier's post to know more about project vs. workspace settings&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-2737749613786120493?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/2737749613786120493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/10/of-invalid-references-to-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/2737749613786120493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/2737749613786120493'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/10/of-invalid-references-to-system.html' title='Of invalid references to system libraries and execution environments'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-T6CkDIgGrhU/TpyPMnezUpI/AAAAAAAACHg/SSUFZfzFNMI/s72-c/pic1.jpg' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Bengaluru, Karnataka, India</georss:featurename><georss:point>12.9715987 77.5945627</georss:point><georss:box>12.724026199999999 77.2787057 13.2191712 77.91041969999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-200568592194823169</id><published>2011-08-01T23:10:00.002+05:30</published><updated>2011-08-01T23:18:21.095+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='CLM'/><category scheme='http://www.blogger.com/atom/ns#' term='jazz.net'/><category scheme='http://www.blogger.com/atom/ns#' term='application lifecycle management'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='rational ibm team concert phonegap android agile mobile software'/><category scheme='http://www.blogger.com/atom/ns#' term='jazz'/><category scheme='http://www.blogger.com/atom/ns#' term='Innovate'/><title type='text'>Agile Development of mobile applications using IBM Rational Team Concert and Phonegap for Android, iOS and others</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;In earlier articles - &lt;a href="https://jazz.net/library/article/505/"&gt;Developing applications for Android™ using IBM Rational Team Concert in an agile way&lt;/a&gt; and &lt;a href="http://eclipseandjazz.blogspot.com/2011/07/developing-applications-for-android.html"&gt;Developing applications for Android™ using IBM Rational Team Concert andRational Rhapsody in an agile way&lt;/a&gt; we saw how to leverage the power of planning, collaboration, process, source control, build management, etc that IBM Rational Team Concert (RTC) has to offer, to develop and manage Android applications in a team working across geographies and across different platforms. We also saw how a team can model the application, specify UML class diagrams, use case diagrams, and link them with the requirements through Rational Rhapsody. The buck does not stop here. In a world where there are numerous different platforms such as iOS, Windows Mobile, Android, Meego, Blackberry, etc, how does a development team create applications that work seamlessly across different devices supporting different platforms? The brute force approach, ofcourse, is to write fresh code for each platform and then test and manage the application differently for each device or platform configuration. And as it sounds, this approach is not at all scalable and requires immense investment of resources – time, people and money. The other confounding problem that mobile developers can typically come across is how to glue together native and web components into a single mobile application(hybrid application). The way out of this conundrum is offered by new, open source technologies such as &lt;a href="http://phonegap.com/"&gt;PhoneGap&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;In this article, we explore what is PhoneGap and how does one use it. We then see, with the help of a demo, how a team can easily develop, test and maintain a cross-platform application working on Rational Team Concert's Eclipse Client and using PhoneGap APIs. This is facilitated by the MDS Applaud PhoneGap Eclipse plugin.&lt;/span&gt; &lt;/div&gt;&lt;div style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; page-break-before: always;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;hr /&gt;&lt;h2 class="western"&gt;&lt;span style="font-size: large;"&gt;About PhoneGap&lt;/span&gt;&lt;/h2&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;According to the &lt;a href="http://phonegap.com/"&gt;website&lt;/a&gt;, "PhoneGap is an open source solution for building cross-platform mobile apps with modern, standards-based Web technologies. Based on HTML5, PhoneGap leverages web technologies developers already know best... HTML and JavaScript."&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;The definition itself does not make things very clear though. Let us try understand a bit more. So today,&lt;/span&gt; &lt;span style="font-style: normal;"&gt;suppose you have a web application that you want to deploy on multiple platform, say Android, iPhone, etc. In this app, you want to use one or more of the platform services to obtain some kind of data or carry out some kind of processing. Lets take, for example, an application that lets you invite friends to a movie as soon as you book a movie ticket. The app lets you select which friends to invite directly from your phone's contacts book. That means, if you're the developer of such an app, you'll most probably have to deal with consuming the platform's contact book using the phone APIs, for doing which, each platform would obviously have its own different ways. So there are 2 problems here:&lt;br /&gt;&lt;br /&gt;1) How can you query the platform's contact book from within your web application which is being written in javascript and has no knowledge of the platform's APIs.&lt;br /&gt;2) How can you do so in a platform agnostic way, so that your web app works not just on Android but also on iPhone, notwithstanding the different ways of using the contacts book in both.&lt;br /&gt;&lt;br /&gt;PhoneGap aspires to be the answer to both of the above questions, and also allows creation of hybrid applications, consisting of both native and web components. How? It provides APIs which abstract the platform's contact book for you, so that you only deal with the PhoneGap API and let PhoneGap do the rest of the magic for you. &lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;h2 class="western"&gt;&lt;span style="font-size: large;"&gt;Download and installation&lt;/span&gt;&lt;/h2&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;1) &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;OS&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;: Windows x86 / Linux x86 .&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;2) &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;IBM Rational Team Concert:&lt;/i&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;Download/buy from &lt;a href="https://jazz.net/downloads/rational-team-concert/releases/2.0.0.2iFix3"&gt;RTC downloads page&lt;/a&gt;. Note that if you're using an existing Eclipse installation to install RTC, make sure you have Eclipse 3.5 or lower (Eclipse 3.6 is not yet supported for Android development). RTC can also be installed directly on Eclipse 3.5.x (see http://jazz.net/library/techtip/384).&lt;br /&gt;&lt;br /&gt;3) &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Android SDK&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;: Download the SDK from Android website - http://developer.android.com/sdk/index.html.&lt;br /&gt;&lt;br /&gt;4) &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Android Development Tools(ADT)&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;: This is an eclipse plugin- the equivalent of JDT(Java Development Tools)- for Android Development. ADT can be downloaded and installed using instructions given at &lt;a href="http://developer.android.com/sdk/eclipse-adt.html"&gt;http://developer.android.com/sdk/eclipse-adt.html&lt;/a&gt;. Please follow the detailed instructions on this page for installing the ADT plugin, and also for setting the location of Android SDK in Eclipse.&lt;br /&gt;&lt;br /&gt;5) It is a good idea to read through the following step by step guide to set up RTC and prepare it for Android Development: &lt;a href="http://jazzpractices.wordpress.com/2010/08/10/how-to-set-up-rtc-for-android-development/"&gt;http://jazzpractices.wordpress.com/2010/08/10/how-to-set-up-rtc-for-android-development/&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;h2 class="western"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Installing PhoneGap&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 class="western" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;Refer to my earlier &lt;a href="http://eclipseandjazz.blogspot.com/2011/06/using-phonegap-in-eclipse-to-develop.html"&gt;blogpost on developing Phonegap applications using Eclipse&lt;/a&gt; to read about how to install Phonegap&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="font-weight: normal;"&gt;on the RTC Eclipse client.&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 class="western"&gt;&lt;/h2&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;*Note: You can similarly develop Windows mobile applications using &lt;a href="https://jazz.net/downloads/rational-team-concert/betas/VisualStudioClientBeta1"&gt;RTC's Visual Studio client&lt;/a&gt;.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;hr /&gt;&lt;h2 class="western"&gt;&lt;span style="font-size: large;"&gt;Creating a PhoneGap Android project&lt;/span&gt;&lt;/h2&gt;&lt;div style="margin-left: 0in; margin-right: 0in;"&gt;&lt;span style="font-size: small;"&gt;Follow the steps below to create a hello world PhoneGap Android application:&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Create a new PhoneGap project by clicking on the  PhoneGap command you see on the coolbar. &lt;/span&gt;  &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;If you don't have the source code for PhoneGap,  check "Use Built-in PhoneGap" on the project wizard &lt;/span&gt;  &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Click Next and create the new Android project in  the Android project wizard.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Launch the new application as an Android  application and you will get an application as shown below.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://wiki.phonegap.com/f/1258145435/portrait.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://wiki.phonegap.com/f/1258145435/portrait.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="margin-left: 0in; margin-right: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;(Note: For those who do not have the PhoneGap plugin for Eclipse, you can also simply create an Android project, making sure that the android main activity class extends PhoneGap's DroidGap class instead of Activity class. Make sure you add "phonegap.jar" as an external library to the build path.)&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-left: 0in; margin-right: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/span&gt; &lt;/div&gt;&lt;div style="margin-left: 0in; margin-right: 0in;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;You see that a PhoneGap app is nothing but an android app with the main Activity class extending PhoneGap's DroidGap class and it's onCreate() method loading an HTML page instead of performing any native functionality. You can replace this HTML page by one of your own choice in the assets/www folder. Check out &lt;a href="http://mobile.tutsplus.com/tutorials/phonegap/creating-an-android-hello-world-application-with-phonegap/"&gt;this website&lt;/a&gt; for some good examples. Similar applications can also be created on other platforms using the PhoneGap classes specific to that platform. The javascript code can be directly re-used.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;hr /&gt;&lt;h2 class="western"&gt;&lt;span style="font-size: large;"&gt;The Demo&lt;/span&gt;&lt;/h2&gt;&lt;span style="font-size: small;"&gt;The demo showcases how a distributed team working on a cross-platform, hybrid mobile application can leverage PhoneGap APIs, and also the functionality provided by RTC through the complete lifecycle of the application, right from planning to implementation to design and testing, and even defect tracking. &lt;/span&gt; &lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;In the demo, the application to be developed has a native activity to start with, which displays a list of all phone contacts. Clicking a particular contact displays the contact details in another native activity and provides a button to send an email to that contact. Clicking the button launches a web based email client (this is a PhoneGap activity), which has an option to cc more contacts from the phone's contact book. This makes use of the PhoneGap contacts API to fetch a list of the phone contacts from the web based activity.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;Check out the &lt;a href="http://www.youtube.com/watch?v=gNE_g1YR4U0"&gt;video&lt;/a&gt; below:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/gNE_g1YR4U0/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gNE_g1YR4U0?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/gNE_g1YR4U0?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;With the recent release of the Rational's Jazz based solution for Application Lifecycle Management, also called &lt;a href="https://jazz.net/projects/clm"&gt;Collaborative Lifecycle Management or CLM&lt;/a&gt;, it is possible to do much more by integrating multiple tools with RTC. To see Rational Team Concert and CLM live in action, do visit &lt;a href="http://www-01.ibm.com/software/in/rational/innovate/"&gt;IBM Rational Innovate India 2011&lt;/a&gt;, Bangalore. You can catch me there at the RTC solutions center. Also, if you're interested in building JavaME applications, you can also read up &lt;/span&gt;&lt;span style="font-size: small;"&gt;my jazz.net article - &lt;a href="https://jazz.net/library/article/678"&gt;Developing Java ME applications using Rational Team Concert inan agile way&lt;/a&gt; to see how to do so using RTC.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;h2 class="western"&gt;For more information&lt;/h2&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://developer.android.com/"&gt;Android Developer  website&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://jazz.net/library/article/48"&gt;Getting started  with Rational Team Concert&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-androidwidget/authors.html"&gt;Developing  Android applications using Eclipse&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://eclipseandjazz.blogspot.com/2011/06/using-phonegap-in-eclipse-to-develop.html"&gt;Using  PhoneGap in Eclipse to develop Android applications&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.phonegap.com/w/page/30862722/phonegap-android-eclipse-quickstart"&gt;PhoneGap  Android Eclipse quick start&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7116704192081983568&amp;amp;postID=200568592194823169&amp;amp;from=pencil" name="eow-title"&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7116704192081983568&amp;amp;postID=200568592194823169&amp;amp;from=pencil" name="watch-headline-title"&gt;&lt;/a&gt;&lt;a href="http://www.youtube.com/watch?v=35ocy5JKtgk"&gt;Rational  Solution for Android Mobile Application Development&lt;/a&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;   &lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Android is a trademark of Google Inc. Use of this trademark is subject to Google Permissions.&lt;/i&gt;&lt;/span&gt;   &lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 class="western"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-200568592194823169?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/200568592194823169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/08/agile-development-of-mobile.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/200568592194823169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/200568592194823169'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/08/agile-development-of-mobile.html' title='Agile Development of mobile applications using IBM Rational Team Concert and Phonegap for Android, iOS and others'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-3623270603979303296</id><published>2011-07-30T13:50:00.004+05:30</published><updated>2011-07-30T15:07:43.112+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='java 7'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='rational'/><category scheme='http://www.blogger.com/atom/ns#' term='jdt'/><category scheme='http://www.blogger.com/atom/ns#' term='diamond'/><title type='text'>Java 7: Decoding the new Diamond operator with JDT</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://www.oracle.com/us/corporate/press/444374"&gt;Java 7 GA&lt;/a&gt; is officially out. Many people have already been trying their hands on the new features, and blogging/commenting about them at various forums. However, I still believe that people do not understand the real meaning of the diamond operator, which brings in "improved type inference for generic instance creation". Being the guy responsible for implementing this feature in &lt;a href="http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29"&gt;Eclipse JDT's BETA java 7 support&lt;/a&gt;, I had a tough time understanding the specs at first. But now I have greater clarity. I guess everybody knows by now that diamond operator &amp;lt;&amp;gt; can be used in place of re-specifying type arguments in a class instantiation expression / constructor invocation. This makes the following case quite clear:&lt;br /&gt;&lt;br /&gt;Instead of writing the following in java 1.6 and below&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;List &amp;lt;String&amp;gt; list = new ArrayList&amp;lt;String&amp;gt;();&lt;/div&gt;&lt;br /&gt;one can now simply write&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;List&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();&lt;/div&gt;&lt;br /&gt;and the compiler will automatically infer that you meant to write ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;&lt;br /&gt;We also know by now, that this is different from&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;List &amp;lt;String&amp;gt; list = new ArrayList();&lt;/div&gt;&lt;br /&gt;since here ArrayList() instantiates a raw type, and the compiler, with -Xlint:unchecked will warn for an unchecked conversion in the above statement. &lt;br /&gt;&lt;br /&gt;So far, so good. However, it is worth noting that there's more to it than meets the eye, and people often take a simplistic view of the diamond usage. It is worth remembering that the diamond inference works just like type inference for generic methods, where instead of using &amp;lt;&amp;gt;, it is enough to just forget about specifying anything at all, and leave the inference to the compiler. This is unfortunately or fortunately (depending on whether you prefer to lose your hair or not) a consequence of allowing the diamond operator in ANY class instance creation expression.&lt;br /&gt;&lt;br /&gt;Let's take a closer look, and try to understand the various scenarios of diamond usage with the help of Eclipse snippets. The easier part first - let us investigate a couple of cases(i.e. instantiation expressions) where the diamond operator CANNOT be used.&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;i&gt;&lt;u&gt;Anonymous class declarations&lt;/u&gt;&amp;nbsp;&lt;/i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href="http://3.bp.blogspot.com/-v0Fu_IgqzW8/TjOojrIKrNI/AAAAAAAACHI/g4DZ3DQ4C7c/s1600/blog1a.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="91" src="http://3.bp.blogspot.com/-v0Fu_IgqzW8/TjOojrIKrNI/AAAAAAAACHI/g4DZ3DQ4C7c/s400/blog1a.JPG" width="400" /&gt;&lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://4.bp.blogspot.com/-f93nizpyk6U/TjOnmXOvuHI/AAAAAAAACHE/uHMX3eHEfFY/s1600/blog1.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-f93nizpyk6U/TjOnmXOvuHI/AAAAAAAACHE/uHMX3eHEfFY/s1600/blog1.JPG" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;u&gt;&lt;i&gt;Explicit type arguments for the constructo&lt;/i&gt;&lt;/u&gt;r: Lets try to understand this further. A constructor can have two sets of type arguments. A constructor in a parameterized type can have type arguments of the class as its type arguments + it may declare its own. In the example shown below, constructor of Diamond uses T, which is the class type argument and also declares another type argument U. In case the constructor also declares its own type arguments, type parameters will be explicitly specified at the constructor invocation. If this happens, and yet the constructor invocation uses the diamond operator to let the compiler infer the first set of types args (i.e. those coming from the class), then it is a compile time error.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://4.bp.blogspot.com/-MlgKeC79vP8/TjOpgvQGVXI/AAAAAAAACHM/wbJ3-EF0ILw/s1600/blog2.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" src="http://4.bp.blogspot.com/-MlgKeC79vP8/TjOpgvQGVXI/AAAAAAAACHM/wbJ3-EF0ILw/s640/blog2.JPG" width="640" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt;Now comes the trickier part. Lets see the valid use cases of the diamond operator. Consider the following (simplest) case and let us see how the inference of type arguments work. &lt;br /&gt;&lt;img alt="" src="data:image/png;base64,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" /&gt;&lt;br /&gt;&lt;br /&gt;This case is straightforward. The constructors are pretty much chosen by the standard overloading mechanism.&amp;nbsp; However, this might create the simplistic view that the compiler simply substitutes the type from the RHS in place of the &amp;lt;&amp;gt; operator i.e. in the above case, &amp;lt;&amp;gt; is substituted as String and hence T = String. So all constructors are valid. Let us try understand how this works with a tweaked example:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img alt="" height="271" src="data:image/png;base64,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" style="margin-left: auto; margin-right: auto;" width="640" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Oops! This gives a compile error, even though going by the above simplistic view, at line 15, &amp;lt;&amp;gt; should be inferred as Number and hence, T= Number, which means this should be valid. However, even though simple, this is not the way the compiler infers type for the diamond. On the contrary, it tries to :&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;find the matching constructor call with 1 argument, which in the above case, means &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DiamondTest(T t)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;It then substitutes the formal parameters of this constructor with the parameters that have been passed at the call site. So, T becomes &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Integer&lt;/span&gt;. (In case of default constructor, or where no type argument is substituted in the matching constructor, by default T gets inferred as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Object&lt;/span&gt;).&lt;/li&gt;&lt;li&gt;Using the inferred type arguments from 1 and 2, the compiler determines the type of the instantiation expression and the exceptions thrown. Hence in this case, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;new DiamondTest&amp;lt;&amp;gt;(1)&lt;/span&gt; gets translated as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;new DiamondTest&amp;lt;Integer&amp;gt;(1)&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;Hence, the compile error.&amp;nbsp; Now let us see some more use cases of the diamond operator:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Inner classes&lt;/li&gt;&lt;/ul&gt;&lt;img alt="" height="287" src="data:image/png;base64,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" width="640" /&gt;&lt;br /&gt;Note how the statement at line 21 is not allowed since the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;new DiamondTest&amp;lt;&amp;gt;()&lt;/span&gt; is inferred as new &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DiamondTest&amp;lt;Object&amp;gt;(). &lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Also, note that as of today, even statement 20 does not work with Oracle Javac because of a bug in their compiler. However, Eclipse JDT compiler correctly compiles it!&lt;/span&gt; :)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;&lt;li&gt;Non-variable declaration statements&lt;/li&gt;&lt;/ul&gt;&lt;img alt="" src="data:image/png;base64,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" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;&lt;li&gt;Return statements&lt;/li&gt;&lt;/ul&gt;&lt;img alt="" src="data:image/png;base64,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" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;&lt;li&gt;Conditional operators&lt;/li&gt;&lt;/ul&gt;&lt;img alt="" src="data:image/png;base64,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" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;However, note how the following results in an error&lt;/div&gt;&lt;img alt="" src="data:image/png;base64,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" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;We can construct many more scenarios, but in the interest of time (yours and mine ;) ), I'll&amp;nbsp; leave it here. Go ahead, experiment with the diamond with Eclipse. The Eclipse work for JAVA 7 that was being done in the &lt;a href="http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29"&gt;BETA_JAVA 7 branch&lt;/a&gt; has now been merged into the HEAD and R_3_7_maintenance streams and so, you can try next week's builds in either 3.8, 3.7.x or 4.2 streams to get your hands dirty on Java7. Some new JDT features with respect to the diamond operator are:&lt;/div&gt;&lt;ul style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;&lt;li&gt;Content assist is diamond aware. Wherever legal and non-ambiguous, content assist will insert &amp;lt;&amp;gt; and not the type arguments. Ex: List&amp;lt;String&amp;gt; l = new Arra|&amp;nbsp; is completed to List&amp;lt;String&amp;gt; l = new ArrayList&amp;lt;&amp;gt;();&lt;/li&gt;&lt;li&gt;Configurable compiler warning on redundantly specified type arguments.&lt;img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfMAAACqCAIAAAA2mzGXAAASLElEQVR4nO2d228c133H53/wS/OWFyNO6ioGmASQgJgBDFgO+lDFKFGhaQIaigKDDgy1ZgEFdmslqFEbrVU9FAoD2qiKQo4aUVVtr5siqm1BF67kKmnjkIA2kS/URg2t6OJdiqyy5nL6sPZ2Pecyvzk7u/Pj7OeDL4TZ2TPnNnM+OxxSZBQDAEC5iIruAAAA5AxmBwAoG5gdAKBsYHYAgLKB2QEAygZmBwAoG4My+5PRxJPRhOct17sm0Uf036tEJWF15tITAIDBUYyk5GbPV6P9mx2tA4B+UjzVe39t3mt396Tu7H0rlpk9MrC+5TrEWqFwp79XmcoDAAyfdE+5dNz70jS1Z0+mpzGmSV333an345gdAEaEAsxufdfZP01mR+sAsCkQqapr9sTOUTN7QHkAgOEjNXtWU/M0BgCgKMLNHgu+g+p6gCORO99BBQAIY7Q8xc+zA8AoMFqSysXsAADKQW0AAGUDswMAlI1oublBCCGkTMHshBBStmB2QggpWzA7IYSULZidEELKluLN3v1fo54CQ2i6/1YG188Sx3/qB9ci11tAE1zhmygqTlVeV4yknm6Z3sKJpV7IFTyyy2b4A+d6y9r5AvtJwqLiVLmuGNftVeL3yXh2mkfJGzXLd++2rG+Zy6C3vGtc5hAyzZtnvP5x+Q8xf/mP693Ul5JTL5lnyfy7TopZFddb6vXmGpRnFKmnmwwtKk6G/5owL1PXy4DL1LVIXJVkasJqE+vqlc+GcFr6T6+aU7d7NxJlJKNwSUoy/8LrQXidpE7s6FxvmH1TR8XJyLTSljOuEOE1J1mxAf00t/Pts2sqUgunlvfb3Hqfvpyf2TPNv2tcuZh9eVSvt0xmJ9qi4jz5r3L59e0pKRFfauHhrDTh4hHaMDiSe3ZrebnWl90PFuTz7z829ZOD662f2SZqo+I8ZVppwlXquvPyvAyo09Mx17H+PshXTvCBwgjN7nkyk3UIqfOc6hrXh0Q/Zh/Z6y2T2QdxBZJ+UvzJiAxcb3l2mod4muvdkNfjadffT7O2xFuJjgVM3XLeSyvxLVDXy4TiM5ndNT+ueZbMv3Ue/CcrtQlPu+W+3qwFXDtTayNDDuej6BPAkmCGtc6G/zOSGdYcTkkRk+6+Bxyp3Dr3e4Pe7k7yENoqfD5dCb7ehGYnCsOpIsWko8Ly/UuIhmB2UkCGeQdd1DYhBYa/qQQAUDYwOwBA2cDsAABlA7MDAJQNzA4AUDZEZo8iPgAgTyIA6IP0JSZfiv2tZYD/J4qiOF4ihAQEs4NSMDshwcHsoBSb2RMUv34I0Zk8zR4jd8gPw+zxzVcfuvbDL12bu+/aD79089WH4jgufP0QojPcs4NSEmZvvPbN5uu74l+/0snK67sar38zjuNcV8KQjhrQSi68Mxr6QDqJoqjZbK6trbVarXa7vbGxYVliWZYiQD4kHHH9X8fX3zveXv6X7r/Xjo/Hcey6rHt+QkC6EsLWz0DrF1bbW7mwoYBDAgZYGtH3OZDEBemqLcfpiqKoVqvV6/VGo9FqtTA7aCFxld/89/EPbr603pxfb55Zb85/cOOl6z8a7ynuXCEBphvEgh+o4wIqz70/mN11lHns4D5Ke9+tVCrVarVer6+urrbbbcsSE69DgNxIXLg3frz1dvN4e/1a+4Nftdev3W4ev3Fi29WTzy4dnrh6/h/iOHZd9IntxI2852aquyf1KLPm1ALWLvnbch1i3ePpkqsSyShcPXcN0NqKcG4lLVo7n9pcdzt1LMLJdHXVpWCzn4l/PdNi7nR1YHZ2tlKp1Gq1ZrMZbnaAfElcsrcv7b9Z3f7btVNxHP927dTNc9tvv/V3S4cn4vWfLx2eiOM4cVmb29alnsses2n/Ua7Ds7aetbkcRxowwP7n1iwcdnITGzl2LNGrxE5XbwP6I2nxwIEDc3Nzi4uLjUZjfX3dssSGu6IB4tj2szHtd59s/ewbcRz/73/+cfvyd66efPb2xX077opuX9x39eSzcRybC8l115O72TPV7FqT1qM8NQs7GdDDVKHIB+jprWS8mYYgHE5iI+DCsA7WNQmS8xV8IjxTvX///qNHjy4sLGB2UITtCo5/fOzb1cUbr/zgsTiOlw5PdM2euG33uEOup8HtsQpLeFSY2fMahbBCYW+zzpKwewFmz9RW4qwJ9+fSc3lPMDsoxWr2p+b+O47jr0z9zdLLe6+fnLx9cd+bz997++K+669PXn55r2e1BC+hIZi9n3o2l9k9dfbZYl5mz3T6JJ/WwhMddiI8nyKYHZRiNftf/dN/HP+3U3+y56+XDk+03/7u9VPTO+6Krp+abr/13aXDE6lSiD4isTZ6dyb2uD4kgo8y17+nWn+f/Ss/tXKzt2YBj8U8hT2O80++dbyu8q7JdA3Z7GqmgffW4+qh2WH/MK1teVqXTHj3XcwOGrFduPHLJy/8/uS353+yOP/Ulo36wfcvHnjl7x98/+KB+PLB+ae2pK405ZHIYlPHdDHTOKDRYXZQiuMK/pAr1UPzT23pzZXqocJX3XAW7ebNQM0uv5XejMk6OswOSkm7iK0UvwIJ0RDMDkop680XIUMIZgelYHZCgoPZQSmYnZDgYHZQCmYnJDiYHZQSRdHcke8TQgKC2UEpUcSFBxAIZgel8DSGkOBgdlAKZickOJgdlILZCQkOZgelYHZCgoPZQSlDMLunCSW/gcTVB3O/ht4SPcHsoBSrvIKFaz1K4s2ijGn+Qld/zzE76Q1mB6V4fi9gXhaTe7PA9Sncr6fPREMwOyjF/6jE3NN7R+/5awbWYuanSKKM9XPF/BrC9VVFYr+kNk+3zfGm9qpw0ZAhB7ODUlzPT/y3q36zW78OkFRoFvY36llvrvolHc40QNfnFhmFYHZQivyevR+zuz4/JNuJG2dXbYnCnn4maos/bmfzXesAzbbICAazg1KGY3Zzp/Vw/3bi2NTumU37Oxw8QDKyweygFIkfXW9lMrukQrMGYX88Jf3b/ZvdNToyCsHsoBTrrbTrIYP1cYf18YX/mYZr22VMa4uS7sW2DwCzb57hmK27uoHZRzCYHZQS5iMsRkiM2UEtmJ2Q4GB2UAqOJiQ4mB2UgtkJCQ5mB6VgdkKCg9lBKZidkOBgdlAKZickOJgdlILZCQkOZgelYHZCgoPZQSmYnZDgYHZQCmYnJDiYHZQiN3v9zJk3vvblxaefSOxffPqJN7725fqZM4UvM0KGHMwOShGavX7mzBs7768/+Adv7Ly/V+6LTz9xvrP/j+5H7mTUgtlBKUKzX3rh0Pkd963u+8vV7/zF+R33/fTRr1964dBPH/36+R333fpo56UXDtku/X3dFLHwCmiUgYxOMDsoRf40ZvHpJ85tH1957M9vPTb97kNfPb/93ncf+urKn03f+tPp89vHzac0H136+6zbw1p4JRFiaQZSsmB2UEqm76Au7J6ufnHbyjceWdn1yMquqVu7HlnZNVX94taF3dPuS99u9sSNfO/LxA2+WdKs0PVlQaLaxIHWryc8X2FYe2L2IbU5yRg98+PvJBlmMDsoJevPxlTHPn/lC/c2JyabE5PNP5z8ny/cWx37vPfSt4s4sdN8y+PH1D3+1sOqMqv1f94MbYykwGB2UEpms3/6niv3bG08sLP5wM7mAzuv3LO1+ul7vJe+777YvMNNtZ75llmbeYjrQPMtV1XmWII/NsyBSO73E90o1mikE8wOSsn6NGb+k3c3xh/szdlP/q7kaYz/rrNPs6e2nnqg2ZynqtzNnqmt7n78XngwOyhFbvaF3dPzn7irY/OLn/ns2d/51MXPfLYx/uD74185+4lPueSe+9MY+bb5MvXATA92BmF2yR7P6MiQg9lBKUKzv/PckbN33Pmhx++4c2H39DvPHVnYPd27853njtgufbsfI+Nbgp4NyWMW1z1sZDwIMo+y7nRVZX1mYq3NVT51jK6Pw8TTm8K9RjA7KEX+P5XO3nHnu3d/rqP17v6O3N+5e+zsHXfq/59KqXf0g2iFlDiYHZSS6bcLJLTeSUfuLq1HH//2IMk9hdttlIPZQSlysxNCEsHsoBTMTkhwMDsoBbMTEhzMDkrB7IQEB7ODUjA7IcHB7KAUzE5IcDA7KAWzExIczA5KCTD7My++uW3vsbGpmW17j00ePP3yhcv9rQ3fLwAguUzpQBsKa8511OY6+5gdlJLV7Fu/NfO56aMnfnalc3jlJ5e37T323Ku/SF3G8pVsLen57zmF/7edyP3bC/qsrf/+DGHg5unop5OYHSAHMpl98uDpbXuPdQ5cvrnW2aj+4uq2vcdSl3E/Zvfs0SCCfM2eb3+G0BBmx+ygDrnZD52sRRPfe/u9lTiOt+099rcv/XxsauaR58/FcTw2NSNZwwnrJW60PbfkiQIerZitCNtK1Gb2xFWDtUV5zz098fTB08+s8yDpbWo3Eu0KeygsoDmYHZQiN/ujh6pbHp6J43jy4OnJg6fjON76rUCzW6VjVZJZwLrht5Vwj7AG82WimOsjJ1NbWUfhmfZ+6sx0plyHeAr7Z1V/MDsoJcDs0cT3Li03Oxvnfvmbt99bKdbsqVUF7EncllpvWl1N+yv0DDbA7P574bB5SJ0K15lytespbE7O5gpmB6XIzf74kQtds8dxPHOi1tkYm5o598vfePwisYM2s3vGYn3pMbu8raxmt/YqteZMdbom2TNRmcye6aZeYTA7KEVu9qPzb49NzVy5cWvmRG1sauaZF9/c8vDMlodnfvRfv3rmxTfdl75P06mK6X1pfkJY28rX7K7O+EtK3O1/N2yK/H3r5wNVcoh8HuQFlAezg1Iy/WzMk/98Yc8/nn9t4ded76N2eP612syJmvvST9e0a49kzVuPMr9ESG3L7Ke1vPVlqqTM/niO8pRxjUs4OWF1pk6vq13PXKWewc0SzA5KyWT2OF76wdm3Hj9yofNN1MmDpx8/cmFYSyh8/Wf6qNgU2ez9L00wOyglq9mzX/rJ5+yEpKZwZWN22NxE/N4YQkKD2UEpmJ2Q4GB2UApmJyQ4mB2UgtkJCQ5mB6VgdkKCg9lBKZidkOBgdlAKZickOJgdlBJgdv6mkvIMbQIjx++WydTJgB9gN9st6prB7KCUrGbnbyr5h9C/bvofRbFmF7Ye/KlgnWHMDvAxMpmdv6mUOgQdN5KYfWhTjdlBJXKz8zeVrDW4XCPsuacnnj54+pl1HiS9Te1Gol1hDzO1ZXbYtWeYweygFLnZ+ZtKHpskZO0yjrytrKPwTHs/dWY6U65DggtLhozZASwEmJ2/qWTehPrNbtZmHWyA2T1e6/8TzjUVrjPlaje4MGYHCERudv6mksfvHrPL28pqdmuvUmvOVKffpJgds4NS5Gbnbyr5X8q38zW7+VLervwDVXKIfB6CJwqzA4jI9LMx/E0l60u/pKz9SdWZtYxrXMLJCaszdXpd7XrmKnWi/HskF8ZwgtlBKZnMHvM3lXRks/c/r7EXPg+YHZSS1ewB65CQ4QSzA3xIxO+NISQ0mB2UgtkJCQ5mB6VgdkKCg9lBKZidkOBgdlAKZickOJgdlILZCQkOZgelYHZCgoPZQSlRFM0d+T4hJCCYHZQSRVx4AIFgdlAKT2MICQ5mB6VgdkKCg9lBKZidaM6ePbvCiu3Zs0t+rLCkGcwOSsHsJPd0XNmPMXurSlSY2NNbLHGUvP7gYHZQCmYnuadXl32qs+vxTAUwO4w6mJ3kHtPsiX9777Vdt+GuCiVvmdWanfGX7H1pHt59C7ODUjA7yT1Ws7ssaT3KrNDqfdch5lMaq7v9JV1let/C7KAUzE5yjyli8ybd+og81dSpO83mejes32hNLekqE2N2UAtmJ7lHIlBXeaHE/c/HB2327jZmB6VgdpJ7/CJ2PVvP9Jzd9XzG1Zy8Y64Drf3E7KAUzE5IcDA7KAWzExIczA5KiQCgDzA7bAKazWatVqtUKrOzswcOHNgPAF5mZ2crlUqtVms2m+1221xTmB2KZ21trV6vV6vVSqUyNzd3FAC8VCqVarVar9dXV1cxOyil1Wo1Go16vV6r1RYXFxcAwEutVqvX641Go9VqbWxsmGsKs0PxtNvtVqu1urrabDYbAJBGs9lcW1trtVrtdhuzg1I2NjY2Njba7Xa73V4HgDQ6i6WzcKxrCrMDAJQNzA4AUDYwOwBA2cDsAABlA7MDAJQNzA4AUDYwOwBA2fg/eiCQFhZAMNQAAAAASUVORK5CYII=" /&gt;&lt;/li&gt;&lt;li&gt;Quick assist (CTRL+1) to insert type arguments&amp;nbsp; &lt;img alt="" src="data:image/png;base64,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" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;For a preview of more new Java 7 features in Eclipse JDT, check out &lt;a href="http://thecoderlounge.blogspot.com/2011/07/java-7-support-in-eclipse-jdt-beta-part.html"&gt;Deepak's blog&lt;/a&gt;. If you find any bugs, please &lt;a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=JDT&amp;amp;component=UI&amp;amp;short_desc=%5B1.7%5D+"&gt;open a bug&lt;/a&gt; with [1.7] in the summary. Most of the Eclipse JDT team will be at &lt;a href="http://www-01.ibm.com/software/in/rational/innovate/"&gt;IBM Rational Innovate India 2011&lt;/a&gt;, Bangalore on August 10 and 11, 2011. Catch us there!&lt;br /&gt;&lt;div&gt;&lt;ul style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; text-align: left;"&gt;&lt;/ul&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-3623270603979303296?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/3623270603979303296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/07/java-7-decoding-new-diamond-operator.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/3623270603979303296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/3623270603979303296'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/07/java-7-decoding-new-diamond-operator.html' title='Java 7: Decoding the new Diamond operator with JDT'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-v0Fu_IgqzW8/TjOojrIKrNI/AAAAAAAACHI/g4DZ3DQ4C7c/s72-c/blog1a.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-8502223115548037591</id><published>2011-07-24T11:56:00.003+05:30</published><updated>2011-07-25T23:38:57.090+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='rational rhapsody'/><category scheme='http://www.blogger.com/atom/ns#' term='rational'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='CLM'/><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='application lifecycle management'/><category scheme='http://www.blogger.com/atom/ns#' term='ibm'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='Innovate'/><category scheme='http://www.blogger.com/atom/ns#' term='rational team concert'/><title type='text'>Developing applications for Android™ using IBM Rational Team Concert and IBM Rational Rhapsody in an agile way</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;In an earlier &lt;a href="http://jazz.net/"&gt;jazz.net&lt;/a&gt; library article I wrote - &lt;a href="https://jazz.net/library/article/505/"&gt;Developing applications for Android™ using IBM Rational Team Concert in an agile way&lt;/a&gt;, we saw how to leverage the power of planning, collaboration, process, source control, build management, etc that &lt;a href="https://jazz.net/projects/rational-team-concert/"&gt;IBM Rational Team Concert (RTC)&lt;/a&gt; has to offer, to develop and manage Android applications in a team working across geographies and across different platforms. Now what if the team also wants to model the application, specify UML class diagrams, use case diagrams, and link them with the requirements? Such software architecture and modeling capabilities can easily become a part of the development process with &lt;a href="http://www-01.ibm.com/software/awdtools/rhapsody/"&gt;IBM Rational Rhapsody&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: black; font-size: small;"&gt;IBM Rational Rhapsody integrates with Rational Team Concert to offer modeling capabilities for Android applications and the visual representation of the Android framework API that developers can reference from within Rational Rhapsody. The references are then generated into Java code to automate the manual coding task. Additionally, Rational Rhapsody can read the AndroidManifest.xml file to visualize activities, services, broadcast receivers, main activity and content provides specified for better understanding of the application. The Rational Rhapsody Debugger also enables runtime animation of the class diagrams created for an Android application.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-oTYoUaCYqmU/Tiu2b5f4J5I/AAAAAAAACG4/5oFN6CebgiM/s1600/RTCRhap1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://4.bp.blogspot.com/-oTYoUaCYqmU/Tiu2b5f4J5I/AAAAAAAACG4/5oFN6CebgiM/s400/RTCRhap1.JPG" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;This article, with the help of a demo video embedded below, shows how RTC and Rhapsody can be together used to design, model, develop and test a mobile application.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;  &lt;br /&gt;&lt;hr /&gt;&lt;h2 class="western"&gt;&lt;span style="font-size: large;"&gt;Download and installation&lt;/span&gt;&lt;/h2&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;1) &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;OS&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;: Windows x86 / Linux x86 .&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;2) &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;IBM Rational Team Concert:&lt;/i&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;Download/buy from the &lt;a href="https://jazz.net/downloads/rational-team-concert/releases/3.0.1.%20RTC"&gt;jazz.net download page&lt;/a&gt;. RTC can also be installed directly on Eclipse 3.6.x (see &lt;a href="http://jazz.net/library/techtip/384"&gt;http://jazz.net/library/techtip/384&lt;/a&gt;). Note that if you're using an existing Eclipse installation to install RTC, make sure you have Eclipse 3.6 or lower (Eclipse 3.7 is not yet supported for Android development).&lt;br /&gt;&lt;br /&gt;3) &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Android SDK&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;: Download the SDK from &lt;a href="http://developer.android.com/sdk/index.html."&gt;Android developer website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4) &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Android Development Tools(ADT)&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;: This is an eclipse plugin- the equivalent of JDT(Java Development Tools)- for Android Development. ADT can be downloaded and installed using instructions given at &lt;a href="http://developer.android.com/sdk/eclipse-adt.html"&gt;http://developer.android.com/sdk/eclipse-adt.html&lt;/a&gt;. Please follow the detailed instructions on this page for installing the ADT plugin, and also for setting the location of Android SDK in Eclipse.&lt;br /&gt;&lt;br /&gt;5) It is a good idea to read through the following step by step guide to set up RTC and prepare it for Android Development: &lt;a href="http://jazzpractices.wordpress.com/2010/08/10/how-to-set-up-rtc-for-android-development/"&gt;http://jazzpractices.wordpress.com/2010/08/10/how-to-set-up-rtc-for-android-development/&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;6) IBM Rational Rhapsody&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;: Download and install IBM Rational Rhapsody Developer 7.5.3 from the &lt;a href="http://www.ibm.com/developerworks/downloads/r/rhapsodydeveloper/"&gt;Rhapsody Downloads page&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;7) &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Including Rhapsody in the RTC Eclipse workbench&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;:&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;In the IBM Rational Team Concert Eclipse Client, go to &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Help&amp;gt;Install New Software&amp;gt; Add Software Site&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;, and then add the &amp;lt;Rhapsody Installation path&amp;gt;\Eclipse as a local repository.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-RG6WHkC572o/Tiu4M1edqOI/AAAAAAAACG8/Q80qmlkpxY0/s1600/RTCRhap2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://4.bp.blogspot.com/-RG6WHkC572o/Tiu4M1edqOI/AAAAAAAACG8/Q80qmlkpxY0/s400/RTCRhap2.JPG" width="400" /&gt; &lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;8) Once the installation is complete, you should be able to use Rhapsody's capabilities inside the RTC Eclipse client. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;*Note: You can similarly develop Windows mobile applications using &lt;a href="https://jazz.net/downloads/rational-team-concert/betas/VisualStudioClientBeta1"&gt;RTC's Visual Studio client&lt;/a&gt; and &lt;a href="http://www.google.co.in/url?sa=t&amp;amp;source=web&amp;amp;cd=4&amp;amp;sqi=2&amp;amp;ved=0CCwQFjAD&amp;amp;url=http://publib.boulder.ibm.com/infocenter/rhaphlp/v7r6/topic/com.ibm.rhp.integ.ides.doc/topics/rhp_g_int_rhp_and_visual_studio.html&amp;amp;rct=j&amp;amp;q=rational%20rhapsody%20visual%20studio&amp;amp;ei=SWgATpXtHIGmugPlorGhDg&amp;amp;usg=AFQjCNGOV7lCyU5zvpicFaIO8vKq7n2taw&amp;amp;cad=rja"&gt;Rhapsody's Visual Studio integration&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-RG6WHkC572o/Tiu4M1edqOI/AAAAAAAACG8/Q80qmlkpxY0/s1600/RTCRhap2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;hr /&gt;&lt;h2 class="western"&gt;&lt;span style="font-size: large;"&gt;Creating a new Rhapsody Android project and linking it with an Android project&lt;/span&gt;&lt;/h2&gt;&lt;div style="margin-left: 0in; margin-right: 0in;"&gt;&lt;span style="font-size: small;"&gt;This step is necessary to create the model elements for an Android project.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Using the Java perspective, create a new Android  project. In the demo below, the project is called Test1Project.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Switch to the Rhapsody Modeling perspective, and  create a new Rhapsody Android project (You can also read the &lt;a href="http://publib.boulder.ibm.com/infocenter/rhaphlp/v7r5/index.jsp?topic=/com.ibm.rhapsody.developing.doc/topics/rhp_t_dm_creating_rhp_android_proj.html"&gt;Rhapsody Help page&lt;/a&gt; to read about how to work with Android projects).&amp;nbsp; This will become the current  active project. In the demo, this is called Test1Model.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Switch back to the Java package explorer view,  right click on Test1Project, and choose &lt;b&gt;Export....&lt;/b&gt; In the “Export”  dialog, select “Rhapsody Model” and click next. The Export to  Rhapsody Model Dialog is now displayed. You can choose what elements  you want to export into the model. Once this is done, projects  Test1Project and Test1Model are now linked.&lt;/span&gt; &lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;  &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr /&gt;&lt;h2 class="western"&gt;&lt;span style="font-size: large;"&gt;The Demo&lt;/span&gt;&lt;/h2&gt;&lt;span style="font-size: small;"&gt;The demo showcases how a distributed team working on an Android application can leverage the functionality provided by IBM Rational tools, namely IBM RTC and IBM Rational Rhapsody (let's call it the Rational Solution) through the complete lifecycle of the application, right from planning, design to implementation to design and testing, and even defect tracking.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;Using the Rational solution, a development team can work in either or both of the following 2 ways:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 0.49in;"&gt;&lt;span style="font-size: small;"&gt;a. &lt;i&gt;Code centric development&lt;/i&gt;: Ability to generate code from UML abstraction and state charts.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 0.49in;"&gt;&lt;span style="font-size: small;"&gt;b. &lt;i&gt;Model centric developmen&lt;/i&gt;t: Ability to reverse engineer code into UML abstractions without changing the code layout and to synchronize the changes as they're done.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-left: 0.49in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;See the video below: &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/iH7Xp0vyq04/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/iH7Xp0vyq04?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/iH7Xp0vyq04?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;To see IBM Rational Team Concert and IBM Rational Rhapsody in action, and to know more about the rich features they have to offer, do attend &lt;a href="http://www-01.ibm.com/software/in/rational/innovate/"&gt;IBM Rational Innovate India 2011&lt;/a&gt; at The Leela, Bangalore from 9-11 August, 2011. You can catch me at the Rational Team Concert solution center.&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;hr /&gt;&lt;h2 class="western"&gt;For more information  &lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://developer.android.com/"&gt;Android Developer  website&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://jazz.net/library/article/48"&gt;Getting started  with Rational Team Concert&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/opensource/tutorials/os-eclipse-androidwidget/authors.html"&gt;Developing  Android applications using Eclipse&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/rhaphlp/v7r5/index.jsp?topic=/com.ibm.rhapsody.developing.doc/topics/rhp_c_dm_designing_android_apps.html"&gt;IBM  Rhapsody Help – Designing Android Applications&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/offers/lp/demos/summary/r-rhapsodydevelop.html"&gt;Embedded  software development using Rational Rhapsody Architect for Software&lt;/a&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.ibm.com/developerworks/rational/library/model-driven-development-speed-delivery/"&gt;&lt;span style="font-size: small;"&gt;Speed delivery of Android devices and applications with model-driven            development&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7116704192081983568&amp;amp;postID=8502223115548037591&amp;amp;from=pencil" name="eow-title"&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=7116704192081983568&amp;amp;postID=8502223115548037591&amp;amp;from=pencil" name="watch-headline-title"&gt;&lt;/a&gt;&lt;a href="http://www.youtube.com/watch?v=35ocy5JKtgk"&gt;Rational  Solution for Android Mobile Application Development &lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.rationalindia.in/"&gt;Rational India Blog&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: xx-small;"&gt;&lt;i&gt;Android is a trademark of Google Inc. Use of this trademark is subject to Google Permissions.&lt;/i&gt;&lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-8502223115548037591?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/8502223115548037591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/07/developing-applications-for-android.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/8502223115548037591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/8502223115548037591'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/07/developing-applications-for-android.html' title='Developing applications for Android™ using IBM Rational Team Concert and IBM Rational Rhapsody in an agile way'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-oTYoUaCYqmU/Tiu2b5f4J5I/AAAAAAAACG4/5oFN6CebgiM/s72-c/RTCRhap1.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-4170950582573145209</id><published>2011-07-10T20:18:00.002+05:30</published><updated>2011-07-13T00:09:26.745+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='jazz.net'/><category scheme='http://www.blogger.com/atom/ns#' term='university'/><category scheme='http://www.blogger.com/atom/ns#' term='jazz'/><category scheme='http://www.blogger.com/atom/ns#' term='ibm'/><category scheme='http://www.blogger.com/atom/ns#' term='rational team concert'/><category scheme='http://www.blogger.com/atom/ns#' term='jazzhub'/><title type='text'>JazzHub for University - host Rational Team Concert projects on the cloud</title><content type='html'>IBM Rational recently launched their cloud based offering - &lt;a href="https://jazz.net/hub/manager/"&gt;JazzHub&lt;/a&gt; - for hosting research projects using &lt;a href="https://jazz.net/projects/rational-team-concert/"&gt;IBM Rational Team Concert&lt;/a&gt;. JazzHub is a free, public, hosting hub for the open development of academic research and classroom projects. Dan Griffin, &lt;a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/invisiblethread/entry/announcing_jazzhub_rational_team_concert_in_the_cloud_for_academics15?lang=en"&gt;on the Rational Executive blog&lt;/a&gt;, says&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;span style="font-family: verdana;"&gt; &lt;span style="font-size: x-small;"&gt;With &lt;a href="http://jazz.net/hub" target="_blank"&gt;&lt;wbr&gt;&lt;/wbr&gt;JazzHub&lt;/a&gt;&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;,  professors, students, and academic researchers will be able to create  new collaborative programming projects online or join a project they  were invited to - all through a SaaS model with no server install  required.     &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;A lot of blogs and articles out there describe this new offering. However, for an engineering students, the terms are not exactly easy to understand, since most of it is industry jargon. Also, if one doesn't know about Rational Team Concert, the whole idea behind JazzHub is lost. So let me explain how the two connect. &lt;br /&gt;&lt;br /&gt;Software developers mostly need an IDE to help in tasks such as writing code, compiling, running and debugging projects. However, often when development is done in a team, it becomes cumbersome to share code, work simultaneously on a single piece of code and merge it with relevant changes later, track the work being done, plan who will do what, and in what time frame, keep a track on the work being done by the team members in real time. Many times, developers use third party tools along with an IDE, which may not integrate too well and may just be a stop gap solution.&lt;br /&gt;&lt;br /&gt;IBM Rational Team Concert (RTC) is a software development tool that brings together multiple tools that a software developer, working in a team, typically needs into one single IDE. It is built on the Eclipse platform and has two IDE's - one each for Eclipse and Visual Studio, to cater to a developer's need.&amp;nbsp; With RTC, it becomes easy to work in a team, even if the members are located in different geographies. It even has its own version control system that helps team members to easily share and work on the project source code. RTC also has provisions for project planning and using software models such as the agile model, waterfall model, iterative model, etc. depending on the needs and what stage a project is on. Such a software will, thus, be immensely helpful for students and professors working on research projects. Professors can easily administer and evaluate the project and students can work on their own areas without spending lots of time on trivial tasks such as merging code changes. See the Ted developer videos here for more:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/D3S1AOqKIP8/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/D3S1AOqKIP8&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/D3S1AOqKIP8&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Since RTC helps one share source code and project work items, etc., it needs to have a server installed. The RTC folks understand that the setup for the server is not very trivial and hence, JazzHub, a cloud based offering, makes it easy for students to just get started (for free!) without the hassles of a server. &lt;br /&gt;&lt;br /&gt;We are travelling far and wide to educate students about the immense benefits of this new offering. If you are interested to have us organize a workshop about RTC and JazzHub at your college, feel free to contact me ( or drop a comment here) and we'll work out a plan!&lt;br /&gt;&lt;br /&gt;To know more about JazzHub, be there at &lt;a href="http://www-01.ibm.com/software/in/rational/innovate/"&gt;Innovate 2011, Bangalore&lt;/a&gt;. If you're a student, you can also win free passes to Innovate by blogging or tweeting about rational products (use hashtag #innovateindia).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-4170950582573145209?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/4170950582573145209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/07/jazzhub-for-university-host-rational.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/4170950582573145209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/4170950582573145209'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/07/jazzhub-for-university-host-rational.html' title='JazzHub for University - host Rational Team Concert projects on the cloud'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-5193864268959302899</id><published>2011-06-24T14:18:00.000+05:30</published><updated>2011-06-24T14:18:25.939+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='java 7'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='jdt'/><title type='text'>Update Eclipse to use JDT Java 7 features</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In a previous post, &lt;a href="http://eclipseandjazz.blogspot.com/2011/05/eclipse-java-7-support.html"&gt;Eclipse java 7 support&lt;/a&gt;, I talked about the progress of java 7 related work in JDT. However, back then, there was no way of testing/using the java 7 features without downloading the relevant source code and launching another instance of Eclipse from that. The good news now is that it has become easier to use/test the java 7 features by updating Eclipse the P2 way i.e. "Install new software" option.&lt;br /&gt;&lt;br /&gt;A &lt;a href="http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29"&gt;wiki page&lt;/a&gt; tells you how to do that. So, go ahead enjoy JDT's java 7 features. Please file any bugs, or enhancement ideas you find/have in the compiler, content assist, code select and java search &lt;a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=JDT&amp;amp;component=Core&amp;amp;short_desc=%5B1.7%5D+"&gt;here&lt;/a&gt; with the [1.7] tag in the "Summary". This is still a work in progress and even though a lot of work has been done and several new compiler and UI options have been introduced for java 7, we're still working on new features and testing/improving the ones already implemented. More details about the state of the art are available on &lt;a href="http://wiki.eclipse.org/JDT_Core/Java7"&gt;http://wiki.eclipse.org/JDT_Core/Java7&lt;/a&gt; and&lt;a href="http://wiki.eclipse.org/JDT_UI/Java7"&gt; http://wiki.eclipse.org/JDT_UI/Java7.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;b&gt;Note:&lt;/b&gt; This is an implementation of an early-draft specification   developed under the Java Community Process (JCP) and is made available   for testing and evaluation purposes only. The code is not compatible   with any specification of the JCP. &lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-5193864268959302899?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/5193864268959302899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/06/update-eclipse-to-use-jdt-java-7.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/5193864268959302899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/5193864268959302899'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/06/update-eclipse-to-use-jdt-java-7.html' title='Update Eclipse to use JDT Java 7 features'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-3541633513977321779</id><published>2011-06-02T23:37:00.002+05:30</published><updated>2011-06-22T18:30:05.009+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile development'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='ADT'/><category scheme='http://www.blogger.com/atom/ns#' term='phonegap'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Using PhoneGap in Eclipse to develop applications for Android or other mobile platforms</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you have been hearing a lot about this new kid on the mobile development block - PhoneGap (http://phonegap.com), and are as confused as I was when I started diving deeper, you've come to the right place to sort out your understanding a bit.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1)What is phonegap?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;According to the website, "PhoneGap is an open source solution for building cross-platform mobile  apps with modern, standards-based Web technologies. Based on HTML5,  PhoneGap leverages web technologies developers already know best... HTML  and JavaScript."&lt;br /&gt;The definition itself does not make things very clear though. Let me explain a bit more. So today, suppose you have a web application that you want to deploy on multiple platform, say Android, iPhone, etc. In this app, you want to use one or more of the platform services to obtain some kind of data or carry out some kind of processing. Lets take, for example, an application that lets you invite friends to a movie as soon as you book a movie ticket. The app lets you select which friends to invite directly from your phone's contacts book. That means, if you're the developer of such an app, you'll most probably have to deal with consuming the platform's contact book using, for doing which, each platform would obviously have its own different ways. So there are 2 problems here:&lt;br /&gt;&lt;br /&gt;1) How can you query the platform's contact book from within your web application which is being written in javascript(or Dojo) and has no knowledge of the platform's APIs.&lt;br /&gt;2) How can you do so in a platform agnostic way, so that your web app works not just on Android but also on iPhone, notwithstanding the different ways of using the contacts book in both.&lt;br /&gt;&lt;br /&gt;Phonegap aspires to be the answer to both of the above questions. How? It provides APIs which abstract the platform's contact book for you, so that you only deal with the Phonegap API and let phonegap do the rest of the magic for you.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2) How do I set up/install Phonegap on my system?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This one's not as trivial as a setup.exe, sadly! Phonegap requires a bunch of things to be installed on the machine before getting started. I found this document about installing phonegap - &lt;a href="http://wiki.phonegap.com/w/page/16494774/Getting-started-with-Android-PhoneGap-in-Eclipse"&gt;http://wiki.phonegap.com/w/page/16494774/Getting-started-with-Android-PhoneGap-in-Eclipse&lt;/a&gt;. Unfortunately, I sat down doing all the steps and till a few hours, I was not even able to create my first phonegap hello world app.&lt;br /&gt;&lt;br /&gt;So, the right thing to do here is to follow the above document till the "step 1f" i.e. install eclipse, android sdk, android development tools, apache ANT, and ruby. And you're almost done! Yes, don't get intimidated by the remaining steps in the doc. Step 2 onwards is a longer way of installing phoneGap and more relevant when you aren't going to use Eclipse. And that too, doesn't somehow work as stated. :(&lt;br /&gt;&lt;br /&gt;Phonegap can be directly installed on Eclipseas a plugin. All you need to do is go to Help&amp;gt;Install new software&amp;gt;Add and use the download site " &lt;a href="https://svn.codespot.com/a/eclipselabs.org/mobile-web-development-with-phonegap/tags/r1.2/download"&gt;https://svn.codespot.com/a/eclipselabs.org/mobile-web-development-with-phonegap/tags/r1.2/download&lt;/a&gt;". Then making sure "contact all available update sites" is checked, install the phonegap plugin. Voila!&amp;nbsp; No need to download phonegap sources from github.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3) How do I create my first phonegap application?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;On Eclipse, first create a new phonegap project by clicking on the phonegap comnand you see on the coolbar. Then if you don't have downloaded sources for phonegap, check&lt;br /&gt;&lt;br /&gt;"Use Built-in PhoneGap" on the project wizard. Click Next and create the new Android project in the Android project wizard. (Note: You can also simply create an Android project, making sure that the android main activity class extends DroidGap class instead of Activity class. Make sure you add "phonegap.jar" as an external library to the build path.).&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://wiki.phonegap.com/f/1258145435/portrait.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://wiki.phonegap.com/f/1258145435/portrait.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You see that a phonegap app is nothing but an android app with the main activity class extending phoneGap's droidgap class and it's onCreate method loading an html page instead of performing any native functionality. You can replace this html page by one of your own choice in the assets/www folder. Check out &lt;a href="http://mobile.tutsplus.com/tutorials/phonegap/creating-an-android-hello-world-application-with-phonegap/"&gt;http://mobile.tutsplus.com/tutorials/phonegap/creating-an-android-hello-world-application-with-phonegap/&lt;/a&gt; for some good examples.&lt;br /&gt;&lt;br /&gt;You can now use the phonegap APIs such as the contacts API, media player API, geolocation API, etc. &lt;a href="http://ripple.tinyhippos.com/"&gt;Ripple&lt;/a&gt; is a browser based emulator (a chrome extension) that you can use to test the PhoneGap applications. (Testing on the Android emulator is a bit slow with web apps).&lt;br /&gt;&lt;br /&gt;Happy phonegapping!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-3541633513977321779?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/3541633513977321779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/06/using-phonegap-in-eclipse-to-develop.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/3541633513977321779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/3541633513977321779'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/06/using-phonegap-in-eclipse-to-develop.html' title='Using PhoneGap in Eclipse to develop applications for Android or other mobile platforms'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-3111574500824730713</id><published>2011-05-23T22:30:00.001+05:30</published><updated>2011-05-24T11:50:41.705+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='preferenceTransfer'/><category scheme='http://www.blogger.com/atom/ns#' term='preferences'/><category scheme='http://www.blogger.com/atom/ns#' term='jdt'/><title type='text'>Contributing new preference types in the Eclipse export preferences page</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Someone asked me today how he could extend the "Export Preferences" page in Eclipse and add an option to export his own kind of preferences other than whats given in the default. He didn't know the name of the extension, and neither did I at the top of my head. This is what the export preferences page looks like:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-jmfVjznES40/TdqQXMV_7uI/AAAAAAAACFM/GzGWwMjqXvk/s1600/snap1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-jmfVjznES40/TdqQXMV_7uI/AAAAAAAACFM/GzGWwMjqXvk/s320/snap1.jpg" width="262" /&gt;&lt;/a&gt;&lt;/div&gt;This can be opened by right clicking on a project in Package Explorer &amp;gt; Export &amp;gt; Preferences.&lt;br /&gt;&lt;br /&gt;I did some digging around to find out how the Java Development Tools (JDT) project contributes the Java Preference options here. And I found that the extension point "org.eclipse.ui.preferenceTransfer" is actually the one that we need to extend in order to define new preference kinds to export. The following snippet is taken from org.eclipse.jdt.ui project's plugin.xml file:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-XkNjc6YotGQ/TdqRrheQS4I/AAAAAAAACFQ/Ws4k59CMHVw/s1600/snap2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-XkNjc6YotGQ/TdqRrheQS4I/AAAAAAAACFQ/Ws4k59CMHVw/s1600/snap2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;So if you have new preference kinds you want to export, this is the way to go. You can also peek into JDT/UI's plugin file to explore further.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-3111574500824730713?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/3111574500824730713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/05/contributing-new-preference-types-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/3111574500824730713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/3111574500824730713'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/05/contributing-new-preference-types-in.html' title='Contributing new preference types in the Eclipse export preferences page'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-jmfVjznES40/TdqQXMV_7uI/AAAAAAAACFM/GzGWwMjqXvk/s72-c/snap1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-5833614599205823127</id><published>2011-05-20T13:02:00.002+05:30</published><updated>2011-05-24T11:51:25.118+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='java 7'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipseday'/><category scheme='http://www.blogger.com/atom/ns#' term='jdt'/><title type='text'>What's new in Java 7</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In the recently concluded &lt;a href="http://www.eclipseday.in/"&gt;Eclipse Day India 2011&lt;/a&gt; , I gave a talk on the new features of Java 7.&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_7921509" style="width: 425px;"&gt;&lt;b style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/aupsy/whats-new-in-java-7" title="Whats new in Java 7"&gt;Whats new in Java 7&lt;/a&gt;&lt;/b&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/7921509" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/aupsy"&gt;aupsy&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There were many questions and people generally seemed interested in the stuff. I mostly talked about the following features:&lt;br /&gt;&lt;br /&gt;1. Project Coin:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Switch on Strings&lt;/li&gt;&lt;li&gt;Binary literals and underscores in numeral literals.&lt;/li&gt;&lt;li&gt;Improved type inference for generic instance creation - Diamond.&lt;/li&gt;&lt;li&gt;Multi - catch and more precise rethrow.&lt;/li&gt;&lt;li&gt;Try with resources.&lt;/li&gt;&lt;li&gt;@SafeVarargs&lt;/li&gt;&lt;/ul&gt;2. Support for dynamic languages&lt;br /&gt;&lt;br /&gt;Other things also part of java 7 are:&lt;br /&gt;&lt;br /&gt;3. Unicode 6.0 character set&lt;br /&gt;&lt;br /&gt;4. New I/O and concurrent APIs&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-5833614599205823127?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/5833614599205823127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/05/whats-new-in-java-7.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/5833614599205823127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/5833614599205823127'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/05/whats-new-in-java-7.html' title='What&apos;s new in Java 7'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7116704192081983568.post-679439530279052622</id><published>2011-05-20T12:02:00.000+05:30</published><updated>2011-05-20T12:02:10.463+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='planeteclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='indigo'/><category scheme='http://www.blogger.com/atom/ns#' term='java 7'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='jdt'/><title type='text'>Eclipse Java 7 support</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;IF you're wondering what's going on with Java 7 work at Eclipse, here are some insights:&lt;br /&gt;&lt;br /&gt;1. Eclipse 3.7(Indigo release) will not be shipped with Java 7 support. This is not because we folks at JDT are lazy and didn't want to do the whole work by the time 3.7 is wrapped up (Well, it might be true sometimes, but then we have tough taskmasters as well!!). This is mostly because the official release of Java 7 is scheduled on July 28, 2011, and we'd have already wrapped up 3.7 before that. The delay, in part, has also been caused due to the late availability of JSR-292 (Invoke Dynamic) and JSR-334 (Project Coin).&lt;br /&gt;&lt;br /&gt;2. Eclipse folks are busy working overtime to make sure that Java 7 support is in place by the time we ship Eclipse 3.7.1. As per bug &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=288548"&gt;bug 288548&lt;/a&gt;- "The work for the Java 7 features is currently in progress in the 'BETA_JAVA7' branch and we will deliver separate updates for the stable builds in order to provide early access to the Java 7 features for interested parties."&lt;br /&gt;&lt;br /&gt;3. Much of the compiler support is already in place, and some work needs to be done on the UI portion. To check the progress on BETA_JAVA7 branch, you can read through &lt;a href="http://wiki.eclipse.org/JDT_Core/Java7"&gt;JDT Core java 7 wiki page.&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. If you want to test Eclipse's java 7 support, or want to use Eclipse to try out the new java 7 stuff, you can follow the instructions given in the "What to do to set up the IDE" section of the JDT Core java 7 wiki page. We plan to have downloadable builds soon. You can see the list of open bugs against JDT/Core Java 7 support at any point in time &lt;a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=1.7&amp;amp;classification=Eclipse&amp;amp;product=JDT&amp;amp;component=Core&amp;amp;longdesc_type=allwordssubstr&amp;amp;longdesc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;status_whiteboard=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bug_id_type=anyexact&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Importance&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0="&gt;here&lt;/a&gt;. To report new bugs, make sure you use the [1.7] tag.&lt;br /&gt;&lt;br /&gt;Hope this helps!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7116704192081983568-679439530279052622?l=eclipseandjazz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://eclipseandjazz.blogspot.com/feeds/679439530279052622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/05/eclipse-java-7-support.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/679439530279052622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7116704192081983568/posts/default/679439530279052622'/><link rel='alternate' type='text/html' href='http://eclipseandjazz.blogspot.com/2011/05/eclipse-java-7-support.html' title='Eclipse Java 7 support'/><author><name>Aupsy-The cOOlest One!!</name><uri>http://www.blogger.com/profile/00978910362796816675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_aMQNmQNOucs/TKTcdMP8gvI/AAAAAAAAB38/Vt0l1ihUjBM/S220/Picture14aug+032b.jpg'/></author><thr:total>1</thr:total></entry></feed>
