<?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-17681521</id><updated>2011-12-11T13:59:10.828+01:00</updated><category term='Eric Evens'/><category term='p2'/><category term='Domain Driven Design'/><category term='slides'/><category term='link file'/><category term='bloggers.com'/><category term='wrong plugins'/><category term='Martin Fowler'/><category term='junit'/><category term='Alan Cooper'/><category term='links directory'/><category term='full screen'/><category term='extension location'/><category term='fullscreen'/><category term='open source'/><category term='Interaction design'/><category term='CDT'/><category term='update manage'/><category term='future of eclipse'/><category term='download'/><category term='The Good Parts'/><category term='protoypte based language'/><category term='plugin'/><category term='java memory model'/><category term='robust iterators'/><category term='spam'/><category term='spammers'/><category term='eclipse plugin'/><category term='launches'/><category term='eclipse'/><category term='DDD'/><category term='closures'/><category term='learning'/><category term='CDT buch'/><category term='fragment'/><category term='C/C++ entwicklung'/><category term='Crevasse of Doom'/><category term='break into blog'/><category term='runtime application'/><category term='Yawning Dan North'/><category term='diversity'/><category term='IxD'/><category term='eclipsecon2008'/><category term='Douglas Crockford'/><category term='sample projects'/><category term='peep pressure'/><category term='emfatic plugin'/><category term='blog'/><category term='dpunkt'/><category term='Dreyfus model of skill acquisition'/><category term='databinding'/><category term='EMF text editor'/><category term='IllegalAccessError'/><category term='ConcurrentModificationException'/><category term='JavaScript'/><category term='hijack'/><category term='pde'/><category term='google'/><title type='text'>Eclipse and Java Blog by Michael Scharf</title><subtitle type='html'>Here I collect interesting links and findings about eclipse and java...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>96</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17681521.post-801343787487272782</id><published>2009-12-20T19:37:00.004+01:00</published><updated>2009-12-20T22:24:35.009+01:00</updated><title type='text'>Contradicting myself with my eclipsecon submissions....</title><content type='html'>If you look at my EclipseCon 2010 submissions:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="https://www.eclipsecon.org/submissions/2010/view_talk.php?id=1443"&gt;1443&lt;/a&gt; Declarative UI sucks? Create your own!&lt;br /&gt;&lt;li&gt; &lt;a href="https://www.eclipsecon.org/submissions/2010/view_talk.php?id=1480"&gt;1480&lt;/a&gt; Extensible EMF Switches&lt;br /&gt;&lt;li&gt; &lt;a href="https://www.eclipsecon.org/submissions/2010/view_talk.php?id=1483"&gt;1483&lt;/a&gt; Annoyed by all those similar looking interfaces: IMemento, IConfigurationElement, IPreferenceStore, IDialogSettings, ILaunchConfiguration...&lt;br /&gt;&lt;li&gt; &lt;a href="https://www.eclipsecon.org/submissions/2010/view_talk.php?id=1484"&gt;1484&lt;/a&gt; JFace/SWT Tables turned upside down&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;It seems that I am contradicting myself, because in &lt;a href="https://www.eclipsecon.org/submissions/2010/view_talk.php?id=1443"&gt;1443&lt;/a&gt; I propose to create your own (copy) of a declarative UI and in &lt;a href="https://www.eclipsecon.org/submissions/2010/view_talk.php?id=1483"&gt;1483&lt;/a&gt; I whine about all those similar looking interfaces. How does this go together? &lt;br /&gt;&lt;br /&gt;Well, in the case of all the different property stores, they all do the same and having 10 different classes/interfaces is indeed annoying. On the other hand. I simply do not believe that there is "the" declarative UI that solves everybody's problems. &lt;b&gt;Whenever you try to create the ultimate declarative UI you are doomed to fail because it is either simple but too restrictive or powerful but too complicated&lt;/b&gt; (I'd be very happy if someone could prove me wrong).&lt;br /&gt;&lt;br /&gt;The idea of a domains specific language is to be Domain Specific! One could argue that UI is a domain and a (e.g. xml based) declarative UI is a domain specific language for creating UI. But, in reality UI is not UI. It's like creating a domain specific language for programming. You end up creating a Turing complete general purpose language. OTOH, if you want to create a domain specific language for form based UI on top of EMF you have a good chance it becomes a good abstractions. But do not expect this language to be used to create something like JDT or PDE. &lt;br /&gt;&lt;br /&gt;I do not believe there is the ultimate declarative UI language. But I believe that saving properties is so universal (and simple) that one 'language' should be sufficient.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-801343787487272782?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/801343787487272782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=801343787487272782' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/801343787487272782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/801343787487272782'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/12/contradicting-myself-with-my-eclipsecon.html' title='Contradicting myself with my eclipsecon submissions....'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-3130553693105827912</id><published>2009-10-24T04:38:00.002+02:00</published><updated>2009-10-24T15:15:56.255+02:00</updated><title type='text'>Future of eclipse: The Road Construction Analogy</title><content type='html'>&lt;a href="http://www.gerhardtinformatics.com/"&gt;Frank Gerhard&lt;/a&gt; will host a session at ESE called &lt;a href="http://www.eclipsecon.org/summiteurope2009/sessions?id=1037"&gt;Symposium on Eclipse Foundation 2.0&lt;/a&gt;. Half a year ago I burned my fingers with my &lt;a href="http://michaelscharf.blogspot.com/2009/04/eclipse-freeloader-award.html"&gt;"Eclipse Freeloader Award"&lt;/a&gt; blog entry. I got lots of negative comments and mails. I also got a few positive reactions. I decided not to continue talking about the future of eclipse.&lt;br /&gt;&lt;br /&gt;Today, half a year later I look back and one interesting mail I wrote at that time is an email press interview. I decided to post it as I wrote it and I use it as my position paper for the symposium. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;If this blog is to long just read the &lt;a href="#RC"&gt;"The road construction analogy"&lt;/a&gt; section.&lt;/b&gt; This is the part of the interview I am most proud of....&lt;br /&gt;&lt;br /&gt;The last months I have been heavily involved in an internal Wind River project based on eclipse and modeling, especially &lt;a href="http://www.eclipse.org/Xtext/"&gt;Xtext&lt;/a&gt; and I have not had too much time to work on eclipse except bug reporting and asking stupid questions on the tmf newsgroup. &lt;br /&gt;&lt;br /&gt;I have no idea how the community will react on that (very long) post. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Disclaimer&lt;/b&gt;: The text below was written half a year ago. It expresses my personal opinion at that time. I have not followed the recent developments and I might change my mind at any time... ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;My reply to an e-mail interview on April 18. 2009:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q:&lt;/b&gt;&lt;i&gt; If you were ready to give the freeloader award, who would be the three finalists for the "honor." Why these guys?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A:&lt;/b&gt; I had no particular company in mind. However, it is the general mentality of the industry that frustrates me: the attitude to take advantage of something like open source and not give back anything to the system. This is also known as the &lt;a href="http://en.wikipedia.org/wiki/Tragedy_of_the_commons"&gt;"Tragedy of the Commons"&lt;/a&gt;: Scott Lewis pointed out that the bigger a community is the less people participate: &lt;a href="http://eclipsesource.com/blogs/2009/04/07/the-logic-of-collective-action/"&gt;"The Logic of Collective Action"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From an architectural perspective, there are things to be done in eclipse that should not been driven by direct interests of some companies but in the common interest of the community. IBM somehow took this role for a while, when they put some of their best people on the core of eclipse. At that time they were interested in the overall success of eclipse. Since some years they started removing quite some developers from eclipse (and put them on the Jazz/RTC project).&lt;br /&gt;&lt;br /&gt;I believe there should be an independent group of developers driving eclipse. In my opinion it would be best if they would be paid by the community but act independently in the best interest of eclipse.&lt;br /&gt;&lt;br /&gt;Now the questions is: why should companies put money into something that is free? If they put money in the system and their competitors do not, they have a competitive disadvantage. They support the community but they have no direct advantage. And in fact the company I work for (Wind River) just ended their membership (which is a sponsorship of the foundation) just recently.&lt;br /&gt;&lt;br /&gt;That is why I was brainstorming about ideas how to stimulate companies to contribute. I am really afraid that eclipse will suffer in the future because the architecture degenerates over time and there is not enough manpower to keep modernize the architecture. Yes, there is e4 (the next generation of eclipse), but I am not 100% convinced that this is the solution.&lt;br /&gt;&lt;br /&gt;To stimulate companies to give money/resources to support the &lt;a href="http://en.wikipedia.org/wiki/Commons"&gt;commons&lt;/a&gt; there has to be a benefit. If there is no positive benefit why would a company do that? So, my idea was to create peer pressure. One way to create peer pressure for companies to make them avoid negative press. A freeloader award would create negative pressure. No company would like to win the freeloader award.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q:&lt;/b&gt;&lt;i&gt; Other people I've spoken to, include Mike M. at Eclipse are much less concerned about the problem. Why do you see it as so serious?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A:&lt;/b&gt; Well, I probably have a different perspective than Mike. Mike sees the eco system and the new companies joining eclipse. My focus is more on the architecture of eclipse. So, the irony is that although eclipse is widely successful the underlying architecture ages and dissolves slowly. Partly because eclipse is stretched into so many different directions. It is never good for an architecture to go into too many directions at the same time. When eclipse started it was a platform for IDE like applications. It was later retro fitted to be the basis for rich client applications. The people ported eclipse to embedded systems. Then the it was used for the web and for servers.... All this is good for the short term success but I am afraid that the long term impact on the architecture could be disastrous. The architecture council is not really focusing on architecture. Partly because the members have never been the ones that created and drove the original architecture. And partly because architecture by committee is doomed to fail. &lt;br /&gt;&lt;br /&gt;&lt;a name="RC"&gt;&lt;b&gt;The road construction analogy&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One analogy for the general eclipse community problem I have been thinking about recently is road infrastructure in a country. Suppose a big company (=IBM) created a basic road infrastructure and decided to make this available to the public for free (=original eclipse).&lt;br /&gt;&lt;br /&gt;In the beginning, the big company somehow drove the journey and continued building the free infrastructure. They also had some interest in this infrastructure because they wanted to have a well accepted public road system to deliver their products. But over time they gave the roads to the public and let the other companies continue building the roads. The hope is that the market is self regulating and it would continue maintaining the road infrastructure and new roads would be build by other companies.&lt;br /&gt;&lt;br /&gt;In the beginning the companies understood the plan of the big company and continued building in that spirit. But some companies realized that it is not in their interest to build roads for their competitors. And it makes no sense for them to maintain the highways in general. They might build junctions to their private road network but hope that others maintain the net of highways created by the big company long ago. Sure they would fix some obvious holes on the roads. One could argue that roads build like that really reflect the needs of the community. But some of companies make sure the competitors do not get access to their key roads. What happens is: many private roads are be build in parallel, instead of some new highways. Companies would build "public roads" that connect their private roads. If the companies would understand that they all would benefit form good public roads, then they could come together and hire an independent road building organization and give them money (a kind of tax) to build the roads that are in the interest of the entire eco system. But at the moment there is no authority to enforce the tax payment. Lots of the roads are public and some companies donate "public roads" to the system. Who could blame those companies? They give something free to the community but also act in their own interest. They are much better than companies that use the public roads without contributing back. But something is wrong here. The nicely designed infrastructure degenerates over time. Can we blame the ones who contribute for that? That is the key to the problem: companies are contributing, but the contributions are not really in the best interest of the eco system.&lt;br /&gt;&lt;br /&gt;How to solve the problem? How to make sure that roads are build that are in the common interest? Would it make sense to have a "tax paid" independent organization build and maintain the infra structure? How can we motivate the community to pay the taxes? Can we blame the companies that fix the roads and add now ones?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q:&lt;/b&gt;&lt;i&gt; Any suggestions, besides public disgrace, to ease the problem?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A:&lt;/b&gt; The questions boils down to: how can we motivate companies to maintain and enhance the common infra structure?&lt;br /&gt;&lt;br /&gt;Positive motivation: all participants understand that they have to invest into the system beyond direct interests. But do all participants understand that? And how to deal with community members that do not want to pay their taxes? If someone can get away not paying the taxes the others who pay the taxes are the stupid ones. So, positive motivation works if all participants understand that they depend on the system. It essentially requires a certain level of moral. The bigger the community (and the more anonymous) the easier it is to get away without paying the tax. And in a capitalist world companies act in their own interest. Who can blame them for doing so? How else can they survive?&lt;br /&gt;&lt;br /&gt;Negative motivation: have a police, a pillory, public opinion (press), a freeloader award. Something that puts pressure on members that do not want to pay their "taxes"...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q:&lt;/b&gt;&lt;i&gt; I always prefer to quote people by name, but if you like, I can withhold yours.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A:&lt;/b&gt; You can quote me. Those who know me know that I can change my mind very quickly. Partly because I simply forget what I say and partly because I like to look at problems from very different angles. Therefore, I could never ever become a politician because you could find lots of statements where I contradict myself.&lt;br /&gt;&lt;br /&gt;If I look into the eclipse world, I see that the number of people warning about the future problems is underrepresented. That is why I raised my voice. If everybody would scream and warn about the future of eclipse, I would certainly find a lot of good arguments why eclipse has a bright future and why the current eclipse eco system works so exceptionally well and why eclipse is a great example of a successful open source project. &lt;br /&gt;&lt;br /&gt;But at the moment I think there is not enough awareness of the problems of the tragedy of the commons. And that companies think they act in their own interest, but in the long term and from an higher level, they do not act in their own interest because they "ultimately destroy a shared limited resource".&lt;br /&gt;&lt;br /&gt;[sorry for the long reply, but this is a topic that upsets me at the moment because I can see the disaster coming]&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-3130553693105827912?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/3130553693105827912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=3130553693105827912' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/3130553693105827912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/3130553693105827912'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/10/future-of-eclipse-road-construction.html' title='Future of eclipse: The Road Construction Analogy'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-4105882749636744253</id><published>2009-09-17T21:05:00.008+02:00</published><updated>2009-09-17T22:09:42.957+02:00</updated><title type='text'>Never put things above a user specified path</title><content type='html'>If you tell a program to use a path to store something you normally expect that the program puts its data &lt;span style="font-weight:bold;"&gt;inside&lt;/span&gt; that path and not into the parent. Sounds simple, but in the last 24 hours I ran two times into violations of this basic principle.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. For the next release of our Wind River Workbench product we will use p2. We have thought our customers to use the &lt;a href="http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.user/tasks/running_eclipse.htm"&gt;&lt;code&gt;-configuration&lt;/code&gt; option&lt;/a&gt; to redirect the place where eclipse puts its "stuff" if they use a shared installation. If they have different installations or different versions installed, that worked nicely (before p2): for version 3.0 they would use &lt;code&gt;-configuration /someplace/wrwb3.0&lt;/code&gt; and for version 3.1 they would use &lt;code&gt;-configuration /someplace/wrwb3.1&lt;/code&gt;. Unfortunately since version 3.4 eclipse violates the principle "&lt;span style="font-weight:bold;"&gt;never put things above a user specified path&lt;/span&gt;" (&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=230384"&gt;bug 230384&lt;/a&gt;) and puts things like artifacts.xml and the p2 directory above the directory specified. If customers mix different versions of our product the old way, then they get a mess because two configurations that are supposed to live side by side suddenly share the potentially incompatible information in the parent. We are thinking to change the behavior of -configuration to add implicitly one more directory (to turn a user specified &lt;code&gt;-configuration /someplace/wrwb3.0&lt;/code&gt; into &lt;code&gt;-configuration /someplace/wrwb3.0&lt;b&gt;/configuration&lt;/b&gt;&lt;/code&gt;) so that the two configurations &lt;code&gt;-configuration /someplace/wrwb3.0&lt;/code&gt; and &lt;code&gt;-configuration /someplace/wrwb3.1&lt;/code&gt; do not infer with each other.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. I am really excited about &lt;a href="http://www.eclipse.org/Xtext"&gt;Xtext&lt;/a&gt;! Yesterday I created a new Xtext language project (let's call it  &lt;code&gt;gr.scharf.mylanguage&lt;/code&gt;). The wizard suggests to call my language &lt;code&gt;gr.scharf.MyLanguage&lt;/code&gt;. Sounds good, but it puts its files into the package &lt;code&gt;gr.scharf&lt;/code&gt; which is not such a good idea, because it pollutes the parent name space (see &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=289780"&gt;bug 289780&lt;/a&gt;) and therefore violates the principle "&lt;span style="font-weight:bold;"&gt;never put things above a user specified path&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusion: if the user gives you a path put things underneath the path and do not touch the parent!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...think twice to make sure not to violate this simple principle....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-4105882749636744253?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/4105882749636744253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=4105882749636744253' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/4105882749636744253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/4105882749636744253'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/09/never-put-things-above-user-specified.html' title='Never put things above a user specified path'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-2879527076994813712</id><published>2009-06-13T19:13:00.012+02:00</published><updated>2009-06-14T03:41:18.563+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='full screen'/><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='fullscreen'/><title type='text'>Every pixel counts! The new eclipse fullscreen plugin...</title><content type='html'>A few days ago &lt;a href="http://dev.eclipse.org/blogs/kevinmcguire/"&gt;Kevin McGuire&lt;/a&gt; blogged with the title &lt;a href="http://dev.eclipse.org/blogs/kevinmcguire/2009/06/05/every-pixel-is-sacred-not-any-more/"&gt;Every pixel is sacred (not any more!)&lt;/a&gt; and a follow up &lt;a href="http://dev.eclipse.org/blogs/kevinmcguire/2009/06/12/eclipse-ui-real-estate-wasters/"&gt;Eclipse UI Real Estate Wasters!&lt;/a&gt;. I still believe that every pixel counts and I often wanted to have eclipse in full screen mode to save a few pixel. I use full screen mode in the browser and with pdf files a lot and I really love it. I remembered that there is a new &lt;a href="http://help.eclipse.org/stable/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Shell.html#setFullScreen(boolean)"&gt;Shell.setFullScreen&lt;/a&gt; method in SWT. During a boring meeting, I decided to create a small plugin that would add a toolbar button and a menu entry to toggle eclipse in to fullscreen. I started with the "New Plugin wizard" and choose the &lt;i&gt;Hello, World Command&lt;/i&gt; example and replace the handleCommand line with one line:&lt;code&gt;&lt;br /&gt;window.getShell().setFullScreen(!window.getShell().getFullScreen());&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I changed the labels in the &lt;code&gt;plugin.xml&lt;/code&gt; and &lt;b&gt;I was done, in less than 10 munites.....&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I should know that &lt;a href="http://michaelscharf.blogspot.com/2009/05/why-is-rcp-emf-p2-databinding-so-hard.html"&gt;even "simple" things can be quite complicated&lt;/a&gt;.&lt;br /&gt;&lt;b&gt;I wanted to make the plugin nice and share it but that was the start of a nightmare.....&lt;/b&gt;  but that is another story. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Download/update&lt;/h2&gt;&lt;br /&gt;You can use &lt;a href="http://www.scharf.gr/eclipse/fullscreen/update/"&gt;this site as update site&lt;/a&gt; or download the plugin from here: &lt;a href="http://www.scharf.gr/eclipse/fullscreen/update/gr.scharf.fullscreen.zip"&gt;gr.scharf.fullscreen.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Functionality&lt;/h2&gt;&lt;br /&gt;The plugin has been written for eclipse 3.5 but it works also for eclipse 3.4 although there are some problems with the handling of the toggle state of the commands...&lt;br /&gt;&lt;br /&gt;The plugin adds a &lt;i&gt;Fullscreen&lt;/i&gt; command to the &lt;i&gt;Windows&lt;/i&gt; menu and a Keybinding &lt;i&gt;M3+F11&lt;/i&gt; which translates on windows to &lt;i&gt;Alt+F11&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://scharf.gr/eclipse/fullscreen/update/images/WindowNotFullscreen.gif"&gt;&lt;br /&gt;&lt;br /&gt;When fullscreen mode is active all (main) windows are in full screen mode:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://scharf.gr/eclipse/fullscreen/update/images/WindowFullscreen.gif"&gt;&lt;br /&gt;&lt;br /&gt;There is also a Toolbar button that can be enabled. Because the plugin uses the &lt;a href="http://wiki.eclipse.org/Platform_Command_Framework"&gt;Commands Framework&lt;/a&gt; there are some unfortunate restrictions (&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=280033"&gt;bug 280033&lt;/a&gt;):&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;When you go to &lt;i&gt;Window-&gt;Customize Perspective-&gt;Tool Bar Visibility&lt;/i&gt;, you will &lt;b&gt;not&lt;/b&gt; find the Fullscreen tool bar unless you have enabled it in &lt;i&gt;Window-&gt;Customize Perspective-&gt;Command Groups Availability&lt;/i&gt;&lt;br /&gt;&lt;br /&gt; &lt;li&gt;The &lt;i&gt;Toolbar details&lt;/i&gt; are empty, although the toolbar contains a command:&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;  &lt;img src="http://scharf.gr/eclipse/fullscreen/update/images/FullscreenCustomizePerspective.gif"&gt;&lt;br /&gt;&lt;br /&gt;Once you have succeeded enabling the toolbar button, it will look like this:&lt;br /&gt;&lt;br /&gt;  &lt;img src="http://scharf.gr/eclipse/fullscreen/update/images/ToolbarButtonNoFullscreen.gif"&gt; and &lt;img src="http://scharf.gr/eclipse/fullscreen/update/images/ToolbarButtonFullscreen.gif"&gt;&lt;br /&gt;&lt;br /&gt;I decided to hide the button by default, because in most cases the shortcut and the windows menu command should be enough.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-2879527076994813712?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/2879527076994813712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=2879527076994813712' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/2879527076994813712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/2879527076994813712'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/06/every-pixel-counts-new-eclipse.html' title='Every pixel counts! The new eclipse fullscreen plugin...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-890961488084298865</id><published>2009-05-12T02:28:00.007+02:00</published><updated>2009-05-12T03:30:37.508+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='p2'/><category scheme='http://www.blogger.com/atom/ns#' term='Dreyfus model of skill acquisition'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF text editor'/><title type='text'>Why is RCP, EMF, p2, databinding... so hard to learn?</title><content type='html'>There are some interesting discussions on my recent blog entry on "&lt;i&gt;&lt;a href="http://michaelscharf.blogspot.com/2009/04/how-to-explain-emf.html"&gt;How to explain EMF?&lt;/a&gt;&lt;/i&gt;". The debate is between those who find it hard to learn EMF and those who have a hard time seeing the difficulty. I think there is a general pattern behind this debate. The same arguments could be made for almost any non trivial technology/framework inside and outside eclipse (EMF, RCP, p2, databinding, [&lt;i&gt;your "favorite" hard to learn technology&lt;/i&gt;],...). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why do many people really suffer form the steep learning curve and others master the same technology easily&lt;/b&gt;?&lt;br /&gt;&lt;br /&gt;I think we have to step back for a moment from any concrete technology and we should to look at how the technology gets created and how learning and applying of the technology works. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;The creators of the technology/framework have a deep knowledge in the particular domain the framework solves.&lt;/b&gt; They have created several software systems where they saw some reoccurring patterns. They realize by putting the common parts into a framework they can dramatically increase their productivity, because the work is then reduced to assemble the pieces and write some "glue code" (in some sense they create a kind of domain specific language for that problem). As long as the creator(s) of the abstraction are the only users of the system, there is no real problem and they can show dramatic increase of productivity, because they can focus on the business relevant part of the system.&lt;br /&gt;&lt;br /&gt;Now comes the next phase, where others adopt the technology. Those early adopters are usually people with a similar experience background as the original authors of the framework. They have typically written such systems by hand or created their own framework and they see the value of the technology. For them, learning the system is almost effortless because they understand the underlying problems and the solution provided by the cool technology. &lt;b&gt;Good candidates of successful adopters are typically consultants using the technology in multiple projects.&lt;/b&gt; They report impressive increase of productivity. Let's call them &lt;i&gt;expert users&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Now another category of users, the &lt;i&gt;normal users&lt;/i&gt; wants to use the technology. They see the impressive results created by the expert users. The expert users tell them how effortless this is and how quickly you can create solutions.&lt;b&gt;This is where the problem starts!&lt;/b&gt; The expert users understood the problem before they started, they understand the solution in depth and they reapply the technology to many projects. &lt;b&gt;The normal users typically have a single project where they want to apply the technology.&lt;/b&gt; They might have a vague understanding that the new technology fits to their problem. The "documentation" build from expert users for expert users make no sense, because there is a lot of background knowledge and experience missing. Normal users have to put a lot of effort into learning and understanding a complicated system just to apply it once. &lt;br /&gt;&lt;br /&gt;If the &lt;i&gt;normal user&lt;/i&gt; manages to use the technology to solve his problem, his solution is often "suboptimal", because he might be happy to have found just &lt;i&gt;one&lt;/i&gt; solution. The expert would see that it is by far not the best possible solution, because he has a much deeper understanding of the solution space. OTOH, the normal user might have a much better understanding of his specific problem domain and the expert might propose a bad solution, because his limited understanding of the problem domain.&lt;br /&gt;&lt;br /&gt;Let me give you an analogy: Some weeks ago, my mother told me that she has a serious problem, because her old typewriter broke. She explained me how they do their tax-declaration: my father hand-writes tables with income and expenses and my mother types them with the typewriter. Well, they have a computer (which they use to read email and browsing). The solution is clear: a spreadsheet is all the technology they need to optimize the process. Me "the expert", could just tell them that they can be much more productive by using this "new and cool" technology. All, they'd have to do is to enter the numbers directly into a spreadsheet and with a few more mouse-clicks and a bit of excel programming he would even get some cool graphics and analysis.... Do you think I did that? No way. They are in their mid 70ies, they have done it "their way" all their life. How steep would their learning curve be? Does that mean they are stupid? My father is extremely good with his hand written tables, he uses colors and creates cool graphs by hand. He has an extremely good understanding of the money flow. He even knows exactly how much money they spend on me and my brothers from our birth to now. I wish I would have 10% of his knowledge on where my money flows. &lt;br /&gt;&lt;br /&gt;In this example we see very well the difference between "expert users" and "normal users" of the technology. This technology would work really well for me and would not work at all for my parents. And even if I would try to teach them, I would have to use a very different language to explain it to them than I would use it explaining it to you. I would have to explain them what a spreadsheet is and so on. Then I could ask them if they prefer open-office or Microsoft office. Because they have absolutely no idea, even this simple this choice would stress them a lot.... Once they would start with an empty spreadsheet, there would be so much choices and decisions to make that they would be totally paralyzed. Would examples or documentation help? Well somehow, if an example does exactly what they want to do, but then it is almost the solution. Does that mean that spreadsheets are complicated technology? Well, it depends on your background. I think it would be more efficient for me to help them doing their tax declaration and prepare a spreadsheet and every time they do it, sit with them and help them. But I think the way they do it is OK for them, all I need to do is to fix my mothers typewriter.... If they were young and they had a lot of numbers for their tax declaration, it would make sense for them to learn the technology....&lt;br /&gt;&lt;br /&gt;OK, I stressed this example enough... What does this mean for the "complicated" technologies around eclipse? &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;There is a big danger that a great technology gets a "bad reputation", just because "normal users" want to apply it and they find it the technology incredibly hard to learn and to apply. &lt;br /&gt;&lt;li&gt;As expert user, you can cause a lot of damage it you tell some unexperienced users to use a technology without guiding them. And in some cases &lt;b&gt;it might be better to tell them &lt;i&gt;not&lt;/i&gt; to use the technology if they are not "ready"&lt;/b&gt;. For you it might be the right choice, for them it would cause disasters at all levels.&lt;br /&gt;&lt;li&gt;Learning "complicated" technologies might not be worth the effort if you want to apply it once. &lt;br /&gt;&lt;li&gt;Ask yourself if it is more efficient to hire an expert than to learn the technology. Especially if you want to apply the technology only once in a relatively simple way. In this case the expert can be 10-100 times more efficient than you.&lt;br /&gt;&lt;li&gt;If you are a &lt;i&gt;normal user&lt;/i&gt; and you still want to learn the technology, be prepared that is takes time and it is a painful process. In order to make educated decisions you have to become at least "Competent" (see &lt;a href="http://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition"&gt;the Dreyfus model of skill acquisition&lt;/a&gt;) or needs "Conscious competence" (see &lt;a href="http://en.wikipedia.org/wiki/Four_stages_of_competence"&gt;Four stages of competence&lt;/a&gt;).&lt;br /&gt;&lt;li&gt;Maybe &lt;i&gt;expert user&lt;/i&gt; and &lt;i&gt;normal user&lt;/i&gt; should team up to write documentation and create example. For experts it is often very difficult to understand the problems of normal users and for normal users it is impossible to come up with good examples and documentation.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;This post is a bit longer than my normal posts and I kept is as draft for a while but I decided to post it. It is a bit like with complicated technology: you can't explain it in two sentences ;-)....&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-890961488084298865?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/890961488084298865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=890961488084298865' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/890961488084298865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/890961488084298865'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/05/why-is-rcp-emf-p2-databinding-so-hard.html' title='Why is RCP, EMF, p2, databinding... so hard to learn?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-5995843669684290882</id><published>2009-04-23T03:51:00.003+02:00</published><updated>2009-04-23T05:36:18.892+02:00</updated><title type='text'>How to explain EMF?</title><content type='html'>Have you ever tried to explain EMF to &lt;i&gt;nonbelievers&lt;/i&gt;? I find it difficult to explain what EMF is and why it makes sense to use it. I had this a few times in my career: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;In the mid 80ies when I started with object oriented programming. For procedural programmers (modula2/pascal/C/Fortran) it sounded like a lot of buzzwords and seemed to add no real value...&lt;br /&gt;&lt;li&gt; End of 80ies and in the beginning of the 90ies (before the &lt;a href="http://en.wikipedia.org/wiki/Gang_of_Four_(software)"&gt;GOF book&lt;/a&gt; was out), patterns seemed to be quite fuzzy and it was hard to explain what the value of describing "patterns" is.&lt;br /&gt;&lt;li&gt;Around the same time I discovered scripting languages (starting with (g)awk-&gt;TCL-&gt;perl and ending with python, which I used for a decade). It was hard to motivate why those "slow" languages are in any way useful.&lt;br /&gt;&lt;li&gt;Aspect oriented programming is still in the "hard to explain/motivate" phase.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The common pattern with those "hard to explain" new technologies is that they are incremental changes to existing stuff but once you understand and use them, they change the way you are thinking. If you adopt the "new technology" you feel a boost in productivity and you see better ways to solve old problems. The level of abstraction raises and you can focus more on the problem instead of dealing with low level implementation details (or reinventing the wheel). And then comes the time when you think all problems can be solved with the new "hammer"....&lt;br /&gt;&lt;br /&gt;It is similar to converting to a new &lt;i&gt;religion&lt;/i&gt;. For the &lt;i&gt;believers&lt;/i&gt; it changes their life. It changes the way they see, experience and interact with the world. For the &lt;i&gt;nonbelievers&lt;/i&gt; it looks like a stupid set of paradigms that make no sense. They learn how to block the arguments of missioners of the &lt;i&gt;new religion&lt;/i&gt; and the more missionary the believers are the more skeptical the &lt;i&gt;nonbelievers&lt;/i&gt; get.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So, how do you explain the benefit of EMF?&lt;/b&gt; &lt;br /&gt;What is the best strategy to &lt;i&gt;evangelize nonbelievers&lt;/i&gt;?&lt;br /&gt;What is the best way to get the &lt;i&gt;converts&lt;/i&gt; over the initial pain of change?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What are the typical questions and problems with EMF?&lt;/b&gt; &lt;br /&gt;Here is a list of things I hear often:&lt;br /&gt;Why to use EMF for my DSLs instead of some hand-written well tuned Java?&lt;br /&gt;It generates lots of code and bloats my project.&lt;br /&gt;EMF is so complicated, it takes a long time to learn -- in that time I have solved my problem twice without EMF.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What are scenarios where EMF increases productivity and where is it the wrong tool?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I have seen &lt;a href="https://www.eclipsecon.org/submissions/2009/view_talk.php?id=358"&gt;Peter Frieses talk at eclipsecon&lt;/a&gt;. I really liked it but I am not sure it helps &lt;i&gt;nonbelievers&lt;/i&gt; to understand what EMF (and modeling in general) is. I think what is needed is a hands-on way with some real examples that show step by step how modeling and EMF can be applied to real problems.  &lt;br /&gt;&lt;br /&gt;I will post some of my experience with EMF in this blog in the next weeks and months.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-5995843669684290882?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/5995843669684290882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=5995843669684290882' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/5995843669684290882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/5995843669684290882'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/04/how-to-explain-emf.html' title='How to explain EMF?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-1302279719165988019</id><published>2009-04-07T21:18:00.003+02:00</published><updated>2009-04-07T22:36:30.184+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='peep pressure'/><category scheme='http://www.blogger.com/atom/ns#' term='future of eclipse'/><title type='text'>The Eclipse Freeloader Award</title><content type='html'>&lt;span style="font-weight:bold;"&gt;The future of eclipse in in danger&lt;/span&gt;: The problem is that there is no real pressure for companies to contribute back to the community and it is easy to use the eclipse "for free" for the own products. There are some interesting blogs on this topic by &lt;a href="http://cdtdoug.blogspot.com/2009/04/another-great-post-by-bjorn-on-life-at.html"&gt;Doug Schaefer on the future of eclipse&lt;/a&gt; and &lt;a href="http://eclipse-projects.blogspot.com/2009/04/its-new-world.html"&gt;Bjorn on life at Eclipse in the new world&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;According to wikipedia, this is called &lt;a href="http://en.wikipedia.org/wiki/Freeloader"&gt;free loading&lt;/a&gt;: &lt;span style="font-style:italic;"&gt;"choosing not to do work and letting others do it"&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;Eclipse is open source and companies can take advantage of the open source work. There is nothing legally that can prevent them from doing so. But &lt;span style="font-weight:bold;"&gt;the eclipse community should create peer pressure to prevent the freeloaders and parasites from getting away without punishment.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;A few ideas to increase the pressure for freeloaders:&lt;ul&gt;&lt;li&gt; Create an eclipse freeloader award&lt;br /&gt;&lt;li&gt; Have an "eclipse supporter" logo&lt;br /&gt;&lt;li&gt; Have a list of of freeloaders prominently on the eclipse page&lt;br /&gt;&lt;li&gt; Create an eclipse &lt;a href="http://en.wikipedia.org/wiki/Pillory"&gt;pillroy&lt;/a&gt;&lt;/ul&gt;&lt;br /&gt;Is this too harsh? Well, it is less harsh than to take advantage of the work of others and letting eclipse die. It seems that positive stimulus is not enough. I want eclipse to succeed in the future. But if everybody is only thinking about his own agenda the entire system will die. Eclipse has to defend itself. The eclipse foundation is to polite to upset some companies. That has to change. It has to be an honor being part of eclipse, and is has to be crystal clear that eclipse is not for free! &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Disclaimer &lt;/span&gt;(not sure if this helps, but it seems common to add a disclaimer to anything that could potentially upset an employer): &lt;span style="font-style:italic;"&gt;This is my personal opinion and not the opinion of my employer&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-1302279719165988019?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/1302279719165988019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=1302279719165988019' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/1302279719165988019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/1302279719165988019'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/04/eclipse-freeloader-award.html' title='The Eclipse Freeloader Award'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-75167705210737025</id><published>2009-04-07T17:03:00.010+02:00</published><updated>2009-04-08T02:54:28.418+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='diversity'/><category scheme='http://www.blogger.com/atom/ns#' term='future of eclipse'/><title type='text'>Good versus evil diversity - why the foundation must hire developers</title><content type='html'>In German we have two contradiction proverbs: &lt;span style="font-style: italic;"&gt;"Gleich und Gleich gesellt sich gern"&lt;/span&gt; (&lt;span style="font-style: italic;"&gt;"birds of a feather flock together"&lt;a href="http://herzeleid.com/en/lyrics/rosenrot/mann_gegen_mann"&gt; *&lt;/a&gt;&lt;/span&gt;) and &lt;span style="font-style: italic;"&gt;"Gegensätze ziehen sich an&lt;/span&gt;" (&lt;span style="font-style: italic;"&gt;"opposites attract"&lt;a href="http://www.dict.cc/german-english/Gegens%C3%A4tze+ziehen+sich+an.html"&gt; *&lt;/a&gt;&lt;/span&gt;). &lt;br /&gt;&lt;br /&gt;When applied to couples, I think both are true but for different aspects: for social status, education, religion etc, coming form similar background makes things easy. But when it comes to character, being of different kind is good because my partner might have something I don't have and together we are more "complete".&lt;br /&gt;&lt;br /&gt;Diversity in open source is similar. There are areas where diversity is absolutely vital and other areas where diversity has a very negative impact.&lt;br /&gt;&lt;br /&gt;Bjorn criticized the "&lt;a href="http://eclipse-projects.blogspot.com/2009/03/diversity.html"&gt;lack of diversity&lt;/a&gt;" in the eclipse community because &lt;span style="font-weight:bold;"&gt;most projects are "mono-vendor"&lt;/span&gt;. He is right, &lt;span style="font-weight:bold;"&gt;we need more diversity here!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But there is another kind of &lt;span style="font-weight:bold;"&gt;diversity that is bad: if there are many ways of doing the same thing&lt;/span&gt;. Excellent system are not designed by committee, but by a few people (often a single person) with strong ideas about architecture, design and the "right way of doing things" (&lt;a href="http://en.wikipedia.org/wiki/Fred_Brooks"&gt;Frederick Brooks&lt;/a&gt; calls this "&lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month#Conceptual_Integrity"&gt;Conceptual Integrity&lt;/a&gt;"). This leads to excellent systems. From my experience I learned that it does not matter much, which set of rules are applied, as long as the rules are consistent and everybody in the team believes in them and follows them.&lt;br /&gt;&lt;br /&gt;Startup companies often get this kind of consistency "for free", because they grow form a small set of people and they hire only new people that fit into the "mind set" of the team. Open source projects, created by some enthusiasts, get it, because they attract people who believe in the system. The (original) eclipse platform is an example of such a consistent system. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;I am afraid that the future of eclipse is in danger if this wrong type of diversity (I call it chaos) increases&lt;/span&gt;. (I wish the architecture council could help to defeat this kind of diversity, but I am afraid that the council is already way too diverse when it comes to "architecture")&lt;br /&gt;&lt;br /&gt;It would help a lot if there would be a set of developers paid by the foundation coming form different backgrounds but with a common mind set when it comes to technology. &lt;span style="font-weight:bold;"&gt;If the foundation would hire people, I am sure we could find a great team of people that would be able make eclipse ready for the future.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Having a "vendor neutral" team of developers dedicated to the future of eclipse would give eclipse a boost. Else, I am afraid, eclipse is &lt;span style="font-style:italic;"&gt;"auf dem absteigenden Ast"&lt;/span&gt; (&lt;span style="font-style:italic;"&gt;"heading south"&lt;/span&gt;&lt;a href="http://www.dict.cc/?s=auf+dem+absteigenden+ast"&gt; *&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-75167705210737025?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/75167705210737025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=75167705210737025' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/75167705210737025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/75167705210737025'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/04/good-versus-evil-diversity-why.html' title='Good versus evil diversity - why the foundation must hire developers'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-7977112597894442339</id><published>2009-03-20T03:18:00.006+01:00</published><updated>2009-03-29T19:14:01.122+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++ entwicklung'/><category scheme='http://www.blogger.com/atom/ns#' term='CDT'/><category scheme='http://www.blogger.com/atom/ns#' term='dpunkt'/><category scheme='http://www.blogger.com/atom/ns#' term='CDT buch'/><title type='text'>New Book: Eclipse für C/C++-Programmierer</title><content type='html'>I just got a copy of &lt;a href="http://www.dpunkt.de/buecher/2828.html"&gt;Eclipse für C/C++-Programmierer&lt;/a&gt; by &lt;a href="http://www.sebastianbauer.info"&gt;Sebastian Bauer&lt;/a&gt;, the first German CDT book. The first impression is very good. This book is ideal for C/C++ developers who are new to eclipse and new to CDT, but it also has a few gems for more experienced users. It covers a wide range of topics (see the &lt;a href="http://www.dpunkt.de/leseproben/2828/Inhaltsverzeichnis.pdf"&gt;table of contents&lt;/a&gt;), it is well written and takes a very good route to get started with CDT. Although it has a lot of screen shots, I don't have the impression there are too many, because they complement the written text in a very good way. It has a very good balance between practical tips and explaining the concepts and ideas behind CDT.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;This book is the missing manual for CDT!&lt;/span&gt; It should be delivered with each copy of CDT. I wish it would be available in English because it deserves a wide audience.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-7977112597894442339?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/7977112597894442339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=7977112597894442339' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/7977112597894442339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/7977112597894442339'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/03/new-book-eclipse-fur-cc-programmierer.html' title='New Book: Eclipse für C/C++-Programmierer'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-1590298851289199132</id><published>2009-03-15T17:02:00.008+01:00</published><updated>2009-03-16T17:13:44.789+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='p2'/><category scheme='http://www.blogger.com/atom/ns#' term='update manage'/><category scheme='http://www.blogger.com/atom/ns#' term='extension location'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='links directory'/><category scheme='http://www.blogger.com/atom/ns#' term='link file'/><title type='text'>eclipse 3.5M6: linked extension locations now require a .eclipseextenison file</title><content type='html'>&lt;b&gt;UPDATE: the problems have been solved/explained (see below)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;There is a &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=224145"&gt;hot debate&lt;/a&gt; between the community and the p2 team on supporting extension locations. A few weeks ago I described &lt;a href="http://michaelscharf.blogspot.com/2009/02/p2-how-i-install-plugins-in-extension.html"&gt;a simple procedure to use and maintain extension locations with p2&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;In eclipse 3.5M6 links file do not work anymore, unless you add a &lt;code&gt;.eclipseextension&lt;/code&gt; marker file next to the &lt;code&gt;plugins&lt;/code&gt; and &lt;code&gt;features&lt;/code&gt; directories of the extensions location&lt;/b&gt; (see &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=268673"&gt;bug 268673&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;This marker file was required by the classical update manager in order to be able to add a directory as &lt;a href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/product_extension.htm"&gt;product extension&lt;/a&gt;  from the UI. Until 3.5M6 link files just worked when pointing to a directory containing a &lt;code&gt;plugins&lt;/code&gt; directory (or a &lt;code&gt;eclipse&lt;/code&gt; directory containing a &lt;code&gt;plugins&lt;/code&gt; directory). No &lt;code&gt;.eclipseextension&lt;/code&gt; file was needed.&lt;br /&gt;&lt;br /&gt;Ironically, the classical update manager in M6 &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=268674"&gt;cannot be used to add extension locations anymore&lt;/a&gt;. (To enable the classical update manager: &lt;i&gt;Preferences...-&gt;General-&gt;Capabilities-&gt;Classical Update&lt;/i&gt;) &lt;br /&gt;&lt;br /&gt;Is this a sign that the p2 team wants to discourage extension locations and link files? Or am I believing in a stupid conspiracy theory?&lt;br /&gt;&lt;br /&gt;-------------------&lt;br /&gt;&lt;b&gt;Update! Both problems have been solved&lt;/b&gt;&lt;br /&gt;1. &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=268673"&gt;bug 268673&lt;/a&gt;: p2 tries to be clever: when it detects a &lt;code&gt;artifacts.xml&lt;/code&gt; in the extension location it needs a &lt;code&gt;.eclipseextension&lt;/code&gt; marker file to believe that this is really an extension location. Normal extension locations are not affected by this bug.&lt;br /&gt;&lt;br /&gt;2. &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=268674"&gt;bug 268674&lt;/a&gt;: This happens only if you &lt;b&gt;never&lt;/b&gt; have started eclipse from the installation location (and always start with the &lt;code&gt;-configuration&lt;/code&gt; option.&lt;br /&gt;&lt;br /&gt;==&gt; &lt;span style="font-weight:bold;"&gt;no conspiracy :-)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-1590298851289199132?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/1590298851289199132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=1590298851289199132' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/1590298851289199132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/1590298851289199132'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/03/eclipse-35m6-linked-extension-locations.html' title='eclipse 3.5M6: linked extension locations now require a .eclipseextenison file'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-2620160996527649216</id><published>2009-02-20T15:34:00.012+01:00</published><updated>2009-03-15T17:54:56.969+01:00</updated><title type='text'>p2: how I install plugins in extension locations...</title><content type='html'>The following procedure explains how I &lt;b&gt;install plugins into different extension locations and share those extension locations&lt;/b&gt; between different eclipse installations &lt;b&gt;using the p2 update manager and link files&lt;/b&gt;. For a lengthly discussion see bug &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=224145"&gt; bug 224145&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I keep a set of different extensions locations in &lt;code&gt;C:\eclipse\extensions&lt;/code&gt; (each extension location is in a subdirectory of that directory). Suppose I want to install &lt;i&gt;foo&lt;/i&gt; into the new extension location &lt;code&gt;C:\eclipse\extensions&lt;b&gt;\foo&lt;/b&gt;&lt;/code&gt;. &lt;br /&gt;&lt;OL&gt;&lt;br /&gt;&lt;LI&gt;I start eclipse with: &lt;pre&gt;-configuration C:\eclipse\extensions&lt;b&gt;\foo\eclipse\configuration&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;&lt;LI&gt;I install &lt;i&gt;foo&lt;/i&gt; using the update manager.&lt;br /&gt;&lt;br /&gt;&lt;LI&gt;Now I can use the extension by creating a &lt;code&gt;foo.link&lt;/code&gt; file inside the &lt;code&gt;links&lt;/code&gt; directory of an eclipse installation (you might have to create the &lt;code&gt;links&lt;/code&gt; directory) containing: &lt;pre&gt;path=C:/eclipse/extensions/foobar&lt;/pre&gt; &lt;br /&gt;&lt;/OL&gt;&lt;b&gt;That's it :-)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; You have to the forward slashes on windows in the links file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; This procedure works for eclipse 3.4 and 3.5.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; You don't have to create any directory specified by the &lt;code&gt;-configuration&lt;/code&gt; parameter. Eclipse will do that for you.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; It is important to follow the pattern &lt;code&gt;EXTENSION_NAME/eclipse/configuration&lt;/code&gt; for the &lt;code&gt;-configuration&lt;/code&gt; parameter because p2 will put the plugins one directory above the &lt;code&gt;configuration&lt;/code&gt; directory and link files require that the directory that contains the plugins is called &lt;code&gt;eclipse&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; With this structure I can update plugins into the extension locations by running eclipse with the &lt;code&gt;-configuration&lt;/code&gt; and then do the update.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Advanced use&lt;/b&gt;: If I want to install &lt;i&gt;bar&lt;/i&gt; based on my &lt;i&gt;foo&lt;/i&gt; extension, I create a link file to &lt;i&gt;foo&lt;/i&gt; in the &lt;i&gt;bar&lt;/i&gt; extension location &lt;code&gt;links&lt;/code&gt; directory:&lt;pre&gt;C:\eclipse\extensions\&lt;b&gt;bar&lt;/b&gt;\eclipse\links\&lt;b&gt;foo.link&lt;/b&gt;&lt;/pre&gt; and follow my standard procedure described above (the links directory can be populated before the first run of eclipse)...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note for eclipse 3.4:&lt;/b&gt; If you are using eclipse 3.4 and you want to use the eclipse default update sites, you have to run eclipse without &lt;code&gt;-configuration&lt;/code&gt; and export them (Help-&gt;Software Updates-&gt;Available Software (tab)-&gt;Manage Sites-&gt;Export), so you can import them into the &lt;code&gt;-configuration&lt;/code&gt; eclipse.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note for eclipse 3.5M6:&lt;/b&gt; You have to add an (empty) &lt;code&gt;.eclipseextension&lt;/code&gt; file &lt;a href="http://michaelscharf.blogspot.com/2009/03/eclipse-35m6-linked-extension-locations.html"&gt;next to the plugins and features directory&lt;/a&gt; of the extension location.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-2620160996527649216?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/2620160996527649216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=2620160996527649216' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/2620160996527649216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/2620160996527649216'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/02/p2-how-i-install-plugins-in-extension.html' title='p2: how I install plugins in extension locations...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-1976164258582012451</id><published>2009-02-03T04:17:00.014+01:00</published><updated>2009-02-03T06:14:29.135+01:00</updated><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='wrong plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='runtime application'/><category scheme='http://www.blogger.com/atom/ns#' term='launches'/><title type='text'>When the runtime Application uses the wrong plugins...</title><content type='html'>Today I run into a problem that can cause a lot of frustration: a runtime eclipse launch that runs with he wrong plugins. The frustration comes form the fact that your application behaves strangely and it is hard to guess that this is caused by loading some worng plugins. Those plugins might even be closed or deleted from your workspace!&lt;br /&gt;&lt;br /&gt;Here is what happens: PDE (eclipse 3.4) does some hidden magic when you run an eclipse application (lets call the launch configuration &lt;code&gt;foo&lt;/code&gt;): it creates a directory in &lt;code&gt;.metadata/.plugins/org.eclipse.pde.core/&lt;b&gt;foo&lt;/b&gt;&lt;/code&gt;. This directory is used with the &lt;code&gt;-configuration&lt;/code&gt; flag when running the application to store the runtime configuration of your application. But, there can be cases when this directory is not updated correctly, like when you switch between "&lt;i&gt;launch with all enabled and workspace plug-ins&lt;/i&gt;" and "&lt;i&gt;plug-ins selected below&lt;/i&gt;". It can happen that the runtime application still uses all plugins although you have selected to run with some specific plugins. I have not tested the exact conditions when this happens, but it happened several times to me in the last months.&lt;br /&gt;&lt;br /&gt;Unfortunately the "Clear workspace" flag does not help, because it clears the workspace but not the configuration area! It took me several hours to figure that out.... &lt;br /&gt;&lt;br /&gt;As Chris points out in the first comment, here is &lt;b&gt;the solution: On the "&lt;i&gt;Configuration&lt;/i&gt;" tab of the launch configuration check the option "&lt;i&gt;Clear configuration area before launching&lt;/i&gt;".&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Chris also recommends to use &lt;b&gt;&lt;code&gt;-clean -consoleLog -debug -console&lt;/code&gt;&lt;/b&gt; as arguments for plugin development launch configurations. In this case, the &lt;code&gt;-clean&lt;/code&gt; option takes care of cleaning the configuration area.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tip&lt;/b&gt;: you can set  &lt;b&gt;&lt;code&gt;-clean -consoleLog -debug -console&lt;/code&gt;&lt;/b&gt; as default in &lt;i&gt;Preferences-&gt;Plug-In Development-&gt;Target Platform-&gt;Launching Arguments-&gt;Program Arguments&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I hope this tip saves someone some wasted time...&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-1976164258582012451?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/1976164258582012451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=1976164258582012451' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/1976164258582012451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/1976164258582012451'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/02/whe-runtime-application-uses-wrong.html' title='When the runtime Application uses the wrong plugins...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-5705821240604259734</id><published>2009-01-22T17:10:00.008+01:00</published><updated>2009-01-22T18:15:00.123+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='protoypte based language'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='The Good Parts'/><category scheme='http://www.blogger.com/atom/ns#' term='closures'/><category scheme='http://www.blogger.com/atom/ns#' term='Douglas Crockford'/><title type='text'>Finally, I found a good book on JavaScript!</title><content type='html'>For some years I have been looking for a book on &lt;a href="http://en.wikipedia.org/wiki/JavaScript"&gt;JavaScript &lt;/a&gt;that would explain the language to someone who already knows programming. But all I have seen until recently are books for beginners or books that talk a lot about web programming, web browsers, DOM, XML, HTML etc, or books that explain all the different versions of JavaScript implemented in different browsers (many of these books have 1000 pages or more). &lt;br /&gt;&lt;br /&gt;The book I read is a 180 page book called &lt;a href="http://oreilly.com/catalog/9780596517748/"&gt;JavaScript: The Good Parts by Douglas Crockford&lt;/a&gt;. The idea of the book is: JavaScript is a messy language but here is a subset and some best practices how to use JavaScript in a manageable way. And that is done on 100 pages (the rest are interesting appendices). I read it last week on a flight and it was a kind of eye opener for me.&lt;br /&gt;&lt;br /&gt;I finally understood that the object system of JavaScript is not &lt;a href="http://en.wikipedia.org/wiki/Class_(programming)"&gt;class based&lt;/a&gt; like in C++/Java/Python/Ruby but it is &lt;a href="http://en.wikipedia.org/wiki/Prototype-based_programming"&gt;prototype based&lt;/a&gt; like in Self/Perl/Lua. This prototype based approach is not supported by a special syntax. There are many ways of creating and dealing with objects. But be book makes some suggestions and explains some best practices for creating objects.&lt;br /&gt;&lt;br /&gt;The other eye opener was how &lt;a href="http://en.wikipedia.org/wiki/Closure_(computer_science)"&gt;closures&lt;/a&gt; can be used to build objects with private information.&lt;br /&gt;&lt;br /&gt;An interesting design decision of JavaScript is that there is essentially one data structure, called Object, with string keys and any object as value. It can be used as hash map, array or object. Even functions are objects and you can associate information with them or add methods to one or all functions. &lt;br /&gt;&lt;br /&gt;If an object is used as array, the index is converted to a string key -- I find this very strange -- but it seems to work. The array.lenght attribute is defined as the "largest integer property name plus one", which means it looks for string keys that look like positive integers and takes biggest one, provided it is less than 4294967295.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;If you want to learn JavaScript as a language I would highly suggest to read &lt;a href="http://oreilly.com/catalog/9780596517748/"&gt;JavaScript: The Good Parts&lt;/a&gt;.&lt;/span&gt; After you finished the book, you might not be able to read any bad JavaScript programm, but you might be able to write your own "clean" scripts. I really like that approach.&lt;br /&gt;&lt;br /&gt;If you are interested in &lt;a href="http://wiki.eclipse.org/E4"&gt;E4&lt;/a&gt;, knowing JavaScript might be useful, because E4 will be scriptable with JavaScript.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-5705821240604259734?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/5705821240604259734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=5705821240604259734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/5705821240604259734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/5705821240604259734'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2009/01/finally-i-found-good-book-on-javascript.html' title='Finally, I found a good book on JavaScript!'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-8992301013288170794</id><published>2008-11-16T16:51:00.002+01:00</published><updated>2008-11-16T17:14:39.257+01:00</updated><title type='text'>Eclipse summit europe -- no more hotels</title><content type='html'>OK, I admit, it is a bit late to look for a hotel for &lt;a href="http://www.eclipsecon.org/summiteurope2008"&gt;Eclipse Summit Europe 2008&lt;/a&gt;. Today I tried about 30 hotels. It seems all hotels in Ludwigsburg are booked out. Well, I thought no big deal: I would follow the S-Train line and book a hotel close to any S-train station. Well, all hotels are booked out along the S-train lines, including the hotel close to the Stuttgart main station!? I finally found a hotel not far from Ludwigsburg, next to the S-Train station in Asperg, but it turned out that the address was listed wrongly in google maps and the hotel is not even close to any train station....&lt;br /&gt;&lt;br /&gt;It's not that bad -- with public traffic it is 1h30 to 1h45 from my home in &lt;a href="http://en.wikipedia.org/wiki/Heidelberg"&gt;Heidelberg&lt;/a&gt; to the &lt;a href="http://www.eclipsecon.org/summiteurope2008/venue"&gt;"Forum am Schlosspark"&lt;/a&gt;. The only bad thing is that my latest train is around 9:30PM, and the good discussions are usually late in the bar....&lt;br /&gt;&lt;br /&gt;That means waking up early (it's really early for me, since I "virtually" live in the EST time zone -- I go to bed at 6AM and wake up at 1:30PM)... &lt;br /&gt;&lt;br /&gt;If you found a hotel in &lt;30 min distance to summit, let me know.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-8992301013288170794?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/8992301013288170794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=8992301013288170794' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/8992301013288170794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/8992301013288170794'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2008/11/eclipse-summit-europe-no-more-hotels.html' title='Eclipse summit europe -- no more hotels'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-8608897426625425229</id><published>2008-10-10T19:41:00.008+02:00</published><updated>2008-10-14T16:20:33.431+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robust iterators'/><category scheme='http://www.blogger.com/atom/ns#' term='ConcurrentModificationException'/><title type='text'>ConcurrentModificationException: Why do Java collections not have robust iterators?</title><content type='html'>Ever got a ConcurrentModificationException? It just hit me. How does this happen? &lt;span style="font-weight:bold;"&gt;It happens when one method iterates over a collection while another method (that bis recursively called from the for loop) modifies the collection&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;Note: &lt;code&gt;ConcurrentModificationException&lt;/code&gt; has nothing to do with threading! (Well, this is a bit too strong statement, as &lt;a href="http://the.modelprogrammer.com/rafael.chaves/"&gt;Rafael&lt;/a&gt; points point out in a comment: it &lt;b&gt;might&lt;/b&gt; occur due to a threading race condition (but in such cases you probably have other problems as well)). &lt;span style="font-weight:bold;"&gt;A &lt;code&gt;ConcurrentModificationException&lt;/code&gt; may have nothing to do with threading!&lt;/span&gt;. Here I am talking about about the non threading related case.&lt;br /&gt;&lt;br /&gt;Here's a simple example to show the problem. We have a class that can register new listeners and when &lt;code&gt;fireChange&lt;/code&gt; is called it calls &lt;code&gt;changed&lt;/code&gt; on the listeners. So the test listener here removes itself on the change call and &lt;span style="font-style:italic;"&gt;boom&lt;/span&gt;, we get the ConcurrentModificationException:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class IteratorTest {&lt;br /&gt; final Collection&lt;Listener&gt; fListeners;&lt;br /&gt; public IteratorTest(Collection&lt;Listener&gt; listeners) {&lt;br /&gt;  fListeners = listeners;&lt;br /&gt; }&lt;br /&gt; static class Listener {&lt;br /&gt;  public void changed(IteratorTest subject) {&lt;br /&gt;   &lt;span style="font-weight:bold;"&gt;subject.removeListener(this);&lt;/span&gt;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; public void addListener(Listener listener) {&lt;br /&gt;  fListeners.add(listener);&lt;br /&gt; }&lt;br /&gt; public void removeListener(Listener listener) {&lt;br /&gt;  fListeners.remove(listener);&lt;br /&gt; }&lt;br /&gt; public void fireChange() {&lt;br /&gt;  for (Listener listener : fListeners) {&lt;br /&gt;   listener.changed(this);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; static void test(Collection&lt;Listener&gt; coll) {&lt;br /&gt;  IteratorTest t = new IteratorTest(coll);&lt;br /&gt;  t.addListener(new Listener());&lt;br /&gt;  t.fireChange();&lt;br /&gt; }&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  test(new ArrayList&lt;Listener&gt;());&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;   &lt;br /&gt;The problem can happen if you call out to "other code" (code someone else has written) and "other code" can change the collection while you are iterating. &lt;span style="font-weight:bold;"&gt;One solution is to iterate over a copy of the collection&lt;/span&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; public void fireChange() {&lt;br /&gt;  Listener[] listeners=(Listener[]) fListeners.toArray();&lt;br /&gt;  for (Listener listener : listeners) {&lt;br /&gt;   listener.changed(this);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That helps. But there is a lot of code out there that iterates over a collection and calls "other code" and there is always a chance that the "other code" calls back to modify your collection and you get a ConcurrentModificationException....&lt;br /&gt;&lt;br /&gt;The good news is: Unlike threading race conditions it happens deterministically. The bad news is: if you are the client it is often not easy to find a way out. &lt;br /&gt;&lt;br /&gt;15 years ago, &lt;a href="http://www.ubilab.org/publications/wei94.html"&gt;ET++&lt;/a&gt; (the cool framework created by Erich Gamma and Andree Weinand in the 80ies) suffered form missing &lt;span style="font-style:italic;"&gt;robust iterators&lt;/span&gt;. "Robust iterators" means robust to changes of the underlying collection. At that time, making a copy of a collection seemed an unacceptable overhead. So, Thomas Kofler added &lt;a href="http://www.ubilab.org/publications/kof93.html"&gt;robust iterators to ET++&lt;/a&gt; (the PDF has the pages on reverse order -- here is a &lt;a href="http://scharf.gr/eclipse/blog/robust_iterators/Robust%20Iterators%20in%20ET.pdf"&gt;readable version&lt;/a&gt;). The implementations are  efficient and robust.&lt;br /&gt;&lt;br /&gt;Robust iterators are so fundamental, I am really surprised that Java does not have them....&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-8608897426625425229?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/8608897426625425229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=8608897426625425229' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/8608897426625425229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/8608897426625425229'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2008/10/concurrentmodificationexception-why-do.html' title='ConcurrentModificationException: Why do Java collections not have robust iterators?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-858559839880676016</id><published>2008-10-10T17:30:00.007+02:00</published><updated>2008-10-13T18:18:40.910+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IxD'/><category scheme='http://www.blogger.com/atom/ns#' term='Yawning Dan North'/><category scheme='http://www.blogger.com/atom/ns#' term='Domain Driven Design'/><category scheme='http://www.blogger.com/atom/ns#' term='DDD'/><category scheme='http://www.blogger.com/atom/ns#' term='Eric Evens'/><category scheme='http://www.blogger.com/atom/ns#' term='Alan Cooper'/><category scheme='http://www.blogger.com/atom/ns#' term='Martin Fowler'/><category scheme='http://www.blogger.com/atom/ns#' term='Interaction design'/><category scheme='http://www.blogger.com/atom/ns#' term='Crevasse of Doom'/><title type='text'>The bridge between Interaction Design (IxD) and Domain Driven Design (DDD)</title><content type='html'>Some time ago I read &lt;a href="http://en.wikipedia.org/wiki/Alan_Cooper"&gt;Alan Cooper's&lt;/a&gt; book on &lt;a href="http://www.amazon.com/About-Face-Essentials-Interaction-Design/dp/0470084111"&gt;About Faces 3&lt;/a&gt;. I am currently reading his book "&lt;a href="http://www.amazon.com/Inmates-Are-Running-Asylum-Products/dp/0672326140"&gt;The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity&lt;/a&gt;". He makes a strong point that interaction design has to be based on research and that is has to be made by interaction designers and not engineers. Engineers think too technical and therefore will create too complicated solutions. &lt;b&gt;Engineers don't know how "normal users" think&lt;/b&gt;. And he is right! But I think, &lt;b&gt;it's not enough&lt;/b&gt; to have some "interaction designers" designing the interactions and then let the programmers write the code. That might be important. But it is equally important if not more important &lt;span style="font-weight:bold;"&gt;that the the developers deeply understands the problems domain and goals the users have&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;There is a great one hour talk I really enjoyed: &lt;a href="http://www.infoq.com/presentations/Fowler-North-Crevasse-of-Doom"&gt;Martin Fowler and Dan North Point Out a Yawning Crevasse of Doom&lt;/a&gt;&lt;/span&gt; (I had to look up the words &lt;a href="http://en.wikipedia.org/wiki/Yawning"&gt;Yawning&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Crevasse"&gt;Crevasse&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Doom"&gt;Doom&lt;/a&gt; -- those British guys speak hard to understand English ;-)). Their point is that &lt;span style="font-weight:bold;"&gt;there has to be a &lt;span style="font-weight:bold;"&gt;bridge&lt;/span&gt; between developers and users in order to communicate&lt;/span&gt; as apposed to a &lt;span style="font-style:italic;"&gt;ferry&lt;/span&gt;, where information is transported from one side to the other by someone like the interaction designer, marketing person or analyst. &lt;br /&gt;&lt;br /&gt;The solution requires what &lt;a href="http://domaindrivendesign.org/about/index.html#eric"&gt;Eric Evens&lt;/a&gt; describes in his book as &lt;a href="http://domaindrivendesign.org/books/index.html#DDD"&gt;Domain Driven Design (DDD)&lt;/a&gt; (BTW: &lt;a href="http://www.infoq.com/minibooks/domain-driven-design-quickly"&gt;Domain Driven Design Quickly&lt;/a&gt; is a 100 page book available online describing the essentials). One of the central ideas is to have a dialog between the developers and users to come up with a "ubiquitous language" to describe the "core domain". That is: use the same language when talking to the users as when talking about the code. Create classes and methods that model the domain using the same terminology used by the users when they talk about the problem domain. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;To get better software we have apply the techniques of interaction design &lt;span style="font-style:italic;"&gt;and&lt;/span&gt; we have to have a dialog with our users to be able to create models that match their mind sets.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yes, I am guilty myself of not doing this. So, this post is a reminder for myself....&lt;br /&gt;&lt;br /&gt;P.S.: After writing this post, I did some search on ("&lt;a href="http://www.google.com/search?q=IxD+DDD"&gt;DDD and IxD&lt;/a&gt;") and I figured that about a year ago I started a &lt;a href="http://www.ixda.org/discuss.php?post=17617"&gt;discussion on this topic&lt;/a&gt; on the IxD mailing list. I wish I would have a better memory....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-858559839880676016?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/858559839880676016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=858559839880676016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/858559839880676016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/858559839880676016'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2008/10/bridge-between-interaction-design-ixd.html' title='The bridge between Interaction Design (IxD) and Domain Driven Design (DDD)'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-7070261490571258025</id><published>2008-08-01T01:39:00.007+02:00</published><updated>2008-08-01T02:12:45.350+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='emfatic plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF text editor'/><title type='text'>Emfatic downlowad and update site available...</title><content type='html'>I like &lt;a href="http://wiki.eclipse.org/Emfatic"&gt;Emfatic&lt;/a&gt; a lot. It is a very cool textual representation of EMF ecore files. The Emfatic has a nice text editor for .emf files. Much easier to edit than the graphical ecore editor. It was originally created by Chris Daly and made &lt;a href="http://www.alphaworks.ibm.com/tech/emfatic"&gt;available at IBM alphaworks&lt;/a&gt; under a restrictive license. Some time ago it became an eclipse project.&lt;br /&gt;&lt;br /&gt;Unfortunately, I could not find a download or update site for the open source emfatic (which has quite some enhancements over the alphaworks version). Only some &lt;a href="http://wiki.eclipse.org/Emfatic#Where_to_download_Emfatic_from"&gt;build instruction&lt;/a&gt;. I build it following the "instructions" (which is a simple &lt;a href="http://wiki.eclipse.org/Image:Emfatic-in-CVS.PNG"&gt;screen-shot of the projects in cvs&lt;/a&gt;, enough for "experts"). Then I realized it also needs &lt;a href="http://www.antlr2.org/download.html"&gt;org.antlr-2.7.7&lt;/a&gt;, which cannot be hosted at eclipse.org because of IP (copyright) issues. I could not find the org.antlr-2.7.7 plugin. I had to create it. &lt;br /&gt;&lt;br /&gt;I am sure I am not the only one who simply wants to download emfatic. So, I decided to make my build available.&lt;br /&gt;&lt;br /&gt;Here is my &lt;b&gt;&lt;a href="http://scharf.gr/eclipse/emfatic/download/"&gt;emfatic download site&lt;/a&gt;&lt;/b&gt; it has &lt;a href="http://scharf.gr/eclipse/emfatic/download/org.eclipse.emf.emfatic_latest.zip"&gt;a zip with emfatic and antlr&lt;/a&gt; file that can be dropped into an p2 drop-in folder or used as extension location (it already contains the .eclipseextension file). &lt;br /&gt;&lt;br /&gt;And for those who like to use the update manager, I created an &lt;b&gt;update site with emfatic and antlr&lt;/b&gt;: &lt;code&gt;&lt;a href="http://scharf.gr/eclipse/emfatic/update/"&gt;http://scharf.gr/eclipse/emfatic/update/&lt;/a&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note the emfatic plugins it require Java 1.5!&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-7070261490571258025?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/7070261490571258025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=7070261490571258025' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/7070261490571258025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/7070261490571258025'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2008/08/emfatic-downlowad-and-update-site.html' title='Emfatic downlowad and update site available...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-3410869108991821166</id><published>2008-06-07T03:33:00.006+02:00</published><updated>2008-06-07T04:49:49.928+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java memory model'/><title type='text'>Looking for a JavaVM with the weakest possible memory model</title><content type='html'>The Java Memory Model gives some minimal guarantees about what happens if two threads are accessing the same variables. Brian Goetz describes this in chapter 7 of &lt;a href="http://www.briangoetz.com/pubs.html"&gt;Java Concurrency in Practice&lt;/a&gt;. And &lt;a href="http://www-128.ibm.com/developerworks/java/library/j-jtp03304/#3.0"&gt;here is a good summary of the new (1.5) Memory Model&lt;/a&gt;. Doug Lea describes the &lt;a href="http://gee.cs.oswego.edu/dl/cpj/jmm.html"&gt;old memory model&lt;/a&gt;. If you really want to dig into it read &lt;a href="http://java.sun.com/docs/books/jls/third_edition/html/memory.html"&gt;some more formal specs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The essence of the java memory models is: &lt;span style="font-weight:bold;"&gt;If one thread modifies a variable another thread may not see the change unless "some synchronization" happens&lt;/span&gt; (a synchronized block, a shared lock etc). But most real java VMs implement a much stricter memory model, that means if one thread modifies a variable the other thread sees it even without synchronization. And that is the problem. It is almost impossible to find those threading problems without a java VM that implements only the minimal memory model guarantees.&lt;br /&gt;&lt;br /&gt;My favorite "theoretical threading bug" is &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=162673"&gt;NullProgressMonitor.cancelled should be volatile&lt;/a&gt;. If a java VM would implement only the minimal memory model the code would not work, but as &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=162673#c1"&gt;John points out&lt;/a&gt;: &lt;span style="font-style:italic;"&gt;"This is true in theory, but never happens in practice.  In practice, the thread calling isCanceled may obtain a stale result for a short period of time, but the thread cache is soon synchronized.  It is common practice to omit synchronization in cases where obtaining a stale value is acceptable."&lt;/span&gt;. This is unfortunately true. At least I could not construct an example where one thread would not see the changes made by another thread. &lt;br /&gt;&lt;br /&gt;Getting threading right is extremely hard. Deadlocks often occur only if you have a bad day. You can get away with obviously wrong code just because Java VMs are so gracious. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;I wonder if there is java VM that implements only the minimal memory model?&lt;/span&gt; It would be cool if it would be possible to force the VM to behave like the worst possible memory model. For example: it would not make changes visible to other threads unless the data is synchronized. This would be extremely helpful for testing and debugging purposes. I wonder how well eclipse would behave on such a "minimal memory model VM"....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-3410869108991821166?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/3410869108991821166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=3410869108991821166' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/3410869108991821166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/3410869108991821166'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2008/06/looking-for-javavm-with-weakest.html' title='Looking for a JavaVM with the weakest possible memory model'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-5262581463806510547</id><published>2008-04-17T15:40:00.000+02:00</published><updated>2008-04-17T15:41:02.473+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IllegalAccessError'/><category scheme='http://www.blogger.com/atom/ns#' term='junit'/><category scheme='http://www.blogger.com/atom/ns#' term='fragment'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse plugin'/><title type='text'>Is OSGi the enemy of JUnit tests?</title><content type='html'>I wrote a set of &lt;a href="http://junit.org/"&gt;JUnit&lt;/a&gt;(3.8.1) tests for the &lt;a href="http://wiki.eclipse.org/DSDP/TM/Terminal"&gt;terminal&lt;/a&gt;. Originally those were normal unit-tests. To be able to test non public methods and non public classes, I put the tests into the same package but into a separate test plugin. I also added the test plugin as friend plugin of the packages I want to test. This works fine if I run the tests as normal JUnit tests. But &lt;span style="font-weight:bold;"&gt;if I run the same tests as JUnit Plug-in Tests I get &lt;code&gt;java.lang.IllegalAccessError&lt;/code&gt;&lt;/span&gt;. The reason is simple: each OSGi bundle runs it's own class loader and therefore the classes appear not to be in the same package. &lt;br /&gt;&lt;br /&gt;There are different solutions:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Make all methods and classes you want to test public (really bad idea)&lt;br /&gt;&lt;li&gt;Put the unit tests into the same plugin as your code and make the dependency to JUnit optional (not a good separation of concerns).&lt;br /&gt;&lt;li&gt;Only test public classes and methods (I think this is to restrictive and often to coarse grain)&lt;br /&gt;&lt;li&gt;Make your test plugin a fragment. One problem is that other plugins cannot access classes defined in fragments (as &lt;a href="http://rcpquickstart.wordpress.com/2007/06/20/unit-testing-plug-ins-with-fragments/"&gt;Patrick Paulin points out in a more detailed discussion about fragments in unit tests&lt;/a&gt;). Another problem is that plugin.xml in a fragment is ignored. And therefore you test plugin cannot contribute&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I tried out turning a plugin into a fragment. It is as simple as adding adding a line following line to your MANIFEST.MF&lt;pre&gt;Fragment-Host: org.eclipse.the.plugin.you.want.to.test&lt;/pre&gt; and removing the plugin you want to test from the required plugins. As long as your test plugin is not part of a bigger test case and it does not need to contribute extensions &lt;a href="http://rcpquickstart.wordpress.com/2007/06/20/unit-testing-plug-ins-with-fragments/"&gt;Patrick Paulin describes a solution for that using reflection&lt;/a&gt;, fragments are a good solution.&lt;br /&gt;&lt;br /&gt;A good way to avoid having to use extensions (plugin.xml) in your test plugin is to use &lt;a href="http://michaelscharf.blogspot.com/2006/09/dependency-injection-pattern.html"&gt;dependency injection&lt;/a&gt; for your classes.&lt;br /&gt;&lt;br /&gt;But I think there should be a better way to write a test plugin that can access non public classes and members. I understand why the security concept of OSGi introduces those problems, but I am still looking for a solution for my JUnit tests. &lt;br /&gt;&lt;br /&gt;Any ideas?&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-5262581463806510547?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/5262581463806510547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=5262581463806510547' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/5262581463806510547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/5262581463806510547'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2008/04/is-osgi-enemy-of-junit-tests_17.html' title='Is OSGi the enemy of JUnit tests?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-7550161788401199075</id><published>2008-03-18T23:48:00.003+01:00</published><updated>2008-03-19T00:14:39.557+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='slides'/><category scheme='http://www.blogger.com/atom/ns#' term='sample projects'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipsecon2008'/><category scheme='http://www.blogger.com/atom/ns#' term='databinding'/><title type='text'>Databinding Tutorial and Sample Projects</title><content type='html'>I promised I'd add the sample projects and the slides add our "&lt;a href="http://www.eclipsecon.org/2008/?page=sub/&amp;id=426"&gt;Understanding JFace Data Binding"&lt;/a&gt; tutorial. I added them yesterday to the eclipscon web page, but it took a day to show up. I also added a zip file with the presentation and the sample projects &lt;a href="http://www.scharf.gr/eclipsecon2008/eclipsecon2008-databinding-projects.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://dev.eclipse.org/blogs/wayne/2008/03/17/understanding-jface-data-binding/"&gt;Wayne suggested&lt;/a&gt;, the projects also show it the "hard way". The best way to follow the tutorial is to use "compare with each other" between the projects. The projects are numbered and the "nodatabinging" projects show it the "hard way". But I gave up at the end doing it the "hard way" because it simply was not trivial. I'd be happy if someone could do the master detail the hard way (without binding), so we could add it to the sample projects...&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-7550161788401199075?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/7550161788401199075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=7550161788401199075' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/7550161788401199075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/7550161788401199075'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2008/03/databinding-tutorial-and-sample.html' title='Databinding Tutorial and Sample Projects'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-5554266376969732079</id><published>2007-09-10T00:19:00.000+02:00</published><updated>2007-09-10T04:04:08.795+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='break into blog'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='hijack'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='bloggers.com'/><category scheme='http://www.blogger.com/atom/ns#' term='spammers'/><title type='text'>A month ago, my blog was hijacked by spammers for a few days</title><content type='html'>About a month ago (just before my vacation), several people notified me, that my blog has been hijacked by spammers. Wassim Melhem even created a &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=199351"&gt;bugzilla entry&lt;/a&gt; (which was a great idea!).&lt;br /&gt;&lt;br /&gt;Spammers replaced my blog with their stuff including a new pink layout. If you want to see it: scharf.gr/hijacked_blog (I don't link it from here, but you can paste the link into your browser). &lt;br /&gt;&lt;br /&gt;Google/blogger.com recognized that my blog was spam and they locked my account (I was still able log in but I could not add new blog entries). All my old bog entries were gone. I send some mail to Google and after a day or so they restored my old blog and apologized.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;But how could they get into my blog?&lt;/span&gt; I don't think they were able to guess my username/password, because it was pretty safe. Else I guess, they would have changed my password. Looking at the spam blog, I just realized that the same content is there two times (looks like pasting it two times). I think, they just replaced the entire blog template with their crap. I see two possibilities how they could have done it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;They hacked into the blogger server and did it from inside. In this case other blogs would have been hijacked too.&lt;br /&gt;&lt;li&gt;They used some clever javascript that navigated to my blogger template site and they dumped their stuff. Because my blogger account is my google account and I was lazy logging out, a script could possibly have done that. Changing the template is much simpler than creating a new blog entry, because there is no "enter the text from the scrambled image" type of verification needed.&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Do you have other theories how this could happen?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is a interesting new type of spammer attack: they use pieces of real blogs in their spam blogs to make their spam blog appear "real". Marko Schulz has sent me a link, but that spam blog is fortunately gone....&lt;br /&gt;&lt;br /&gt;Talking about spam: &lt;span style="font-weight:bold;"&gt;since a week I get much less e-mail spam&lt;/span&gt; (on some of my accounts) than I used to get (tens instead of hundreds per day). &lt;span style="font-weight:bold;"&gt;Maybe spammers started thinking about spam efficiency: to get most out of their spam bot nets they concentrate on Internet newbies&lt;/span&gt;. Therefore it pays off for them to eliminate e-mails that are in their lists for years. The probability that someone who is new to the Internet believes the spam is much higher than for experienced users. If they would mostly attack new e-mail addresses, they would also get out of focus of the experts who are fighting spam and therefore have a much higher success rate in delivering spam. In addition, if spam is sent in low volume, spam defense would probably miss new variations of spam. Or is there another explanation for this decease in spam?&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-5554266376969732079?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/5554266376969732079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=5554266376969732079' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/5554266376969732079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/5554266376969732079'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2007/09/month-ago-my-blog-was-hijacked-by.html' title='A month ago, my blog was hijacked by spammers for a few days'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-3231950295845160267</id><published>2007-07-05T02:22:00.000+02:00</published><updated>2007-07-05T04:57:10.445+02:00</updated><title type='text'>Eclipse is worse than any commercial IDE  (in an ideal world)...</title><content type='html'>At his &lt;a href="http://www.eclipsecon.org/2007/index.php?page=sub/&amp;id=3937"&gt;keynote at EclipseCon&lt;/a&gt; 2007, &lt;a href="http://r0ml.net/blog/"&gt;Robert Lefkowitz&lt;/a&gt; made the following provocative statement: &lt;span style="font-weight:bold;"&gt;"Eclipse is probably worse than any commercial IDE!"&lt;/span&gt;. Why? Because it's free! In an ideal (capitalistic!?) world you don't pay for anything that you can get for free. Any tool that is worse than a free tool would just run out of business (if both tools would cover the same market). Well, and we have seen quite some commercial IDEs die, since eclipse is available. &lt;br /&gt;&lt;br /&gt;One implication of this observation is, that when eclipse increases it's quality, competing commercial products have to increase their quality to survive. But wait! &lt;span style="font-weight:bold;"&gt;Instead of improving the quality of your commercial product, you could just prevent eclipse from become better.&lt;/span&gt; I know, this is very provocative. Fortunately, making (and saving) money is not the only force in our world. And fortunately, the way eclipse is organized, this will not happen:&lt;br /&gt;&lt;br /&gt;Although, most of the work on eclipse is sponsored by companies that sell products based on eclipse, the work is done by individual committers. And the human factor is very important. Everybody can see what committers do. It's not anonymous hackers that do the work, because unlike wikipedia, anonymous users cannot change eclipse. &lt;span style="font-weight:bold;"&gt;Eclipse is a social community with a focus on individual responsible committers.&lt;/span&gt; This is very important for the survival of eclipse. That's why new committers have to be voted into protects after they have shown credibility. That's why new projects must have committers from multiple companies. Eclipse committers are humans with emotions. &lt;span style="font-weight:bold;"&gt;Nobody wants to be accused of being destructive.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is an honor to be an eclipse committer.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-3231950295845160267?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/3231950295845160267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=3231950295845160267' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/3231950295845160267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/3231950295845160267'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2007/07/eclipse-is-worse-than-any-commercial.html' title='Eclipse is worse than any commercial IDE  (in an ideal world)...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-7005203784478535160</id><published>2007-06-30T05:08:00.000+02:00</published><updated>2007-06-30T07:39:51.199+02:00</updated><title type='text'>My favorite 3.3 feature: Quick Access</title><content type='html'>I just looked into &lt;a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.3-200706251500/whatsnew/eclipse-news.html"&gt;Eclipse 3.3 - New and Noteworthy&lt;/a&gt;. Lots of cool new things! My favourite is &lt;a href="http://www.scharf.gr/eclipse/3.3/news/#section3"&gt;&lt;span style="font-weight:bold;"&gt;Quick Access&lt;/span&gt;&lt;/a&gt;. This essentially allows you to type commands instead searching the command in the menus. If you have &lt;a href="http://michaelscharf.blogspot.com/2007/06/customize-perspective-is-annoyingly.html"&gt;customized your perspective&lt;/a&gt;, to get rid of annoying tool-bar buttons, &lt;span style="font-weight:bold;"&gt;you still have access to commands that are not visible in any menu or tool-bar!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have bound &lt;span style="font-style:italic;"&gt;Quick Access&lt;/span&gt; to ESC-X (like in emacs) and it feels a bit like the emacs minibuffer.... Very cool!&lt;br /&gt;&lt;br /&gt;BTW: I wish eclipse would allow links into the "News and Noteworthy" pages (see &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=194993"&gt;bug 194993&lt;/a&gt;), that's why I created my own copy of &lt;a href="http://www.scharf.gr/eclipse/3.3/news/"&gt;"News and Noteworthy"&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-7005203784478535160?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/7005203784478535160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=7005203784478535160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/7005203784478535160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/7005203784478535160'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2007/06/my-favorite-33-feature-quick-access.html' title='My favorite 3.3 feature: Quick Access'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-6156811665359654642</id><published>2007-06-18T17:58:00.000+02:00</published><updated>2007-06-19T01:43:47.885+02:00</updated><title type='text'>I don't like XML! But what are the alternatives?</title><content type='html'>I think XML is one of the worst formats for data. It is extremely ambiguous. There are so many ways to put a simple data structure into XML. For example:&lt;pre&gt;&amp;lt;book &lt;br /&gt;    title="The Return of the King"&lt;br /&gt;    author="J.R.R. Tolkien"/&amp;gt;&lt;/pre&gt;or&lt;pre&gt;&amp;lt;book&amp;gt;&lt;br /&gt;  &amp;lt;title&amp;gt;The Return of the King&amp;lt;/title&amp;gt;&lt;br /&gt;  &amp;lt;author&amp;gt;J.R.R. Tolkien&amp;lt;/author&amp;gt;&lt;br /&gt;&amp;lt;/book&amp;gt;&lt;/pre&gt;And in the second case, can there be more than one author? And more titles?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;XML is &lt;i&gt;not&lt;/i&gt; self describing&lt;/b&gt;. Look at the XML below. It is very ambiguous (if you don't use one of the many schema descriptions (&lt;a href="http://www.w3.org/TR/REC-xml/#dt-doctype"&gt;DTD&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/XML_Schema_%28W3C%29"&gt;XML-Schema&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/XMI"&gt;XMI&lt;/a&gt;, &lt;a href="http://www.brics.dk/DSD/"&gt;DSD&lt;/a&gt;, ...)). &lt;pre&gt;&amp;lt;data&lt;br /&gt; x="null"&lt;br /&gt; y="true"&lt;br /&gt; z="42"&amp;gt;&lt;br /&gt; &amp;lt;a&amp;gt;NULL&amp;lt;a/&amp;gt;&lt;br /&gt; &amp;lt;a&amp;gt;false&amp;lt;a/&amp;gt;&lt;br /&gt; &amp;lt;b&amp;gt;TRUE&amp;lt;b/&amp;gt;&lt;br /&gt;&amp;lt;/data&amp;gt;&lt;/pre&gt;What is a String? What is Boolean? What is a number? Is &lt;code&gt;x&lt;/code&gt; a list? You simply can't infer it from the XML. When you want to write the data, which fields are written as tags which are written as attributes?&lt;br /&gt;&lt;br /&gt;There is also a huge problem with IDs and references. &lt;b&gt;From a plain XML file there's no way to figure out what an id of an object is and what references are&lt;/b&gt;.  A good example are &lt;code&gt;plugin.xml&lt;/code&gt; files. They are full of IDs and references but it is so hard to know which string refers which other XML element. Control-click does not work. Why? Because references are difficult to resolve!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Are there any good alternatives?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt; is much simpler, self-describing, less verbose and much better suited for data storage and exchange. But it has no notion of IDs and references. And it does not name object (record) types (it has only lists, maps, strings, numbers and boolean). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;What else is out there?&lt;/b&gt; I want something like JSON + an ID/Reference model + named Records...&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-6156811665359654642?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/6156811665359654642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=6156811665359654642' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/6156811665359654642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/6156811665359654642'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2007/06/i-dont-like-xml-but-what-are.html' title='I don&apos;t like XML! But what are the alternatives?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-4767475846364755427</id><published>2007-06-16T06:19:00.000+02:00</published><updated>2007-06-16T20:36:25.421+02:00</updated><title type='text'>Customize Perspective is annoyingly inflexible...</title><content type='html'>I just read &lt;a href="http://eclipse.pookzilla.net/"&gt;Kims&lt;/a&gt; post about removing &lt;a href="http://eclipse.pookzilla.net/2007/06/trying-to-set-good-example-honest.php"&gt;removing the default visibility of the menu and toolbar Working Set items&lt;/a&gt;. It triggered once again one thing that annoys me from time to time, the inflexibility of the Customize Perspective dialog:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XG5fwGg2-wY/RnNpA5JMuWI/AAAAAAAAAA0/BXYTJNbDw3E/s1600-h/CustomizePerspective.gif"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_XG5fwGg2-wY/RnNpA5JMuWI/AAAAAAAAAA0/BXYTJNbDw3E/s320/CustomizePerspective.gif" alt="" id="BLOGGER_PHOTO_ID_5076516669037001058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;You can either enable both, Menubar and Toolbar items or nothing&lt;/span&gt;. That is &lt;span style="font-weight: bold;"&gt;very&lt;/span&gt; annoying, because &lt;span style="font-weight: bold;"&gt;it breaks the principle that the toolbar items are optional&lt;/span&gt;. Unless the provider of the &lt;a href="http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/workbench_basicext_actionSets.htm"&gt;actionSet&lt;/a&gt; defines two action sets, one for the toolbar and one for the menubar, you have the choice between all or nothing.... But providing two action sets would duplicate the number of item on the command tab, which is already overloaded.&lt;br /&gt;&lt;br /&gt;I think it is not the responsibility of the plugin writer to decide which items the user wants to see in the toolbar! (See &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=182714"&gt;bug 182714&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-4767475846364755427?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/4767475846364755427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=4767475846364755427' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/4767475846364755427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/4767475846364755427'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2007/06/customize-perspective-is-annoyingly.html' title='Customize Perspective is annoyingly inflexible...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XG5fwGg2-wY/RnNpA5JMuWI/AAAAAAAAAA0/BXYTJNbDw3E/s72-c/CustomizePerspective.gif' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-970683557617501370</id><published>2007-05-12T05:10:00.000+02:00</published><updated>2007-05-12T06:13:32.317+02:00</updated><title type='text'>Surprises in eclipse 3.3: double click instead of single click</title><content type='html'>Since some time, the 3.3 patch editor (Team-&gt;Apply patch...) does not work for me anymore. Well, I was using patched milestones (we had some enhancements for the patch editor in our product). So, I was not surprised that it did not 100% work. What went wrong? If I select a file to patch, nothing is shown in the compare area below:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_XG5fwGg2-wY/RkU0YLtmfnI/AAAAAAAAAAM/Bgd05J0sbwI/s1600-h/CompareProblems.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5063510946113551986" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_XG5fwGg2-wY/RkU0YLtmfnI/AAAAAAAAAAM/Bgd05J0sbwI/s320/CompareProblems.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Since the problem remained even with an unpatched 3.3m7, I filed &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=186481"&gt;bug 186481&lt;/a&gt; and after some discussions, it turned out that I have to&lt;strong&gt; double click instead of single click to select the patch.&lt;/strong&gt; That was not obvious to me! In 3.2 a single click was enough! After double clicking the patch it looks like this:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_XG5fwGg2-wY/RkU1jrtmfoI/AAAAAAAAAAU/CBnr9GpBcxc/s1600-h/CompareOK.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5063512243193675394" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_XG5fwGg2-wY/RkU1jrtmfoI/AAAAAAAAAAU/CBnr9GpBcxc/s320/CompareOK.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now I see exactly what I expected! But why double click? Well, because calculating the diff is expensive and doing that by simply selecting a file may not be a good idea... Another reason is that there's now a context menu on the items in the "Patch Contents" pane and you don't want to do the expensive calculation of the diff just to get to the context menu.  Therefore, &lt;strong&gt;the paradigm changed from master-detail to open semantics&lt;/strong&gt;. &lt;p&gt;&lt;strong&gt;But&lt;/strong&gt; this is not without drawbacks! First of all, I'm sure I'm not the only one stumbling over this problem. Actually the semantics has changed in other compare related views too. If you set &lt;em&gt;Preferences...-&gt;General-&gt;Single Click&lt;/em&gt;, you get the old master-detail behaviour.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Second drawback, is that the &lt;strong&gt;selection and what you see easily may get out of sync.&lt;/strong&gt; Look at this screenshot:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_XG5fwGg2-wY/RkU7rbtmfrI/AAAAAAAAAAs/l1hEBG0sNHU/s1600-h/OutOfSync1.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5063518973407428274" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_XG5fwGg2-wY/RkU7rbtmfrI/AAAAAAAAAAs/l1hEBG0sNHU/s320/OutOfSync1.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;What happened? I have selected (not double clicked) the plugin.properties file but the difference of a java file is shown. &lt;strong&gt;The bad thing is there is no indication which java files is shown here!&lt;/strong&gt; Unfortunately it's too late in the game to change this (see &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=186481"&gt;bug 186481&lt;/a&gt; for further details)... &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Take-home message: &lt;strong&gt;Report bugs early enough....&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-970683557617501370?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/970683557617501370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=970683557617501370' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/970683557617501370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/970683557617501370'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2007/05/surprises-in-eclipse-33-double-click.html' title='Surprises in eclipse 3.3: double click instead of single click'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XG5fwGg2-wY/RkU0YLtmfnI/AAAAAAAAAAM/Bgd05J0sbwI/s72-c/CompareProblems.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-117207297957819437</id><published>2007-02-21T16:49:00.000+01:00</published><updated>2007-02-24T07:49:52.270+01:00</updated><title type='text'>No real support for dynamic extensions (aka dynamic plugin.xml)</title><content type='html'>Eclipse allows (theoretically) to add extensions dynamically (see &lt;a href="http://www-128.ibm.com/developerworks/opensource/library/os-ecl-dynext/"&gt;"Leave Eclipse plug-in headaches behind"&lt;/a&gt; or &lt;a href="http://publib.boulder.ibm.com/infocenter/ledoc/v6r1/index.jsp?topic=/com.ibm.rcp.tools.doc.appdev/ttoolbadddynamic.html"&gt;"Contributing items to a toolbar dynamically"&lt;/a&gt;). Unfortunately, there's no way a normal plugin can do this without using internal classes :-(. Here's the proposed hack how to do it:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  IExtensionRegistry reg = RegistryFactory.getRegistry();&lt;br /&gt;  // &lt;b&gt;ExtensionRegistry is internal!!!!&lt;/b&gt;&lt;br /&gt;  Object key = ((ExtensionRegistry) reg).getTemporaryUserToken();&lt;br /&gt;  Bundle bundle = Activator.getDefault().getBundle();&lt;br /&gt;  IContributor contributor = ContributorFactoryOSGi.createContributor(bundle);&lt;br /&gt;  try {&lt;br /&gt;   //  I have the content of my dynamic plugin in a file &lt;br /&gt;   // called dynamicplugin.xml&lt;br /&gt;   InputStream is = FileLocator.openStream(bundle,new Path("dynamicplugin.xml"), false);&lt;br /&gt;   reg.addContribution(is, contributor, false, null, null, key);&lt;br /&gt;  } catch (IOException e) {&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately ExtensionRegistry is an internal class and getTemporaryUserToken() is not exposed in any official way. &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=112954"&gt;Bug 112954&lt;/a&gt; asks for a way to get to getTemporaryUserToken(). The solution is to use &lt;code&gt;null&lt;/code&gt; as the key (token). Well, almost. In order to make this work, the system property &lt;code&gt;eclipse.registry.nulltoken&lt;/code&gt; has to be set to &lt;code&gt;true&lt;/code&gt; (&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=112954#c25"&gt;Bug 112954 comment 25&lt;/a&gt;). But a normal plugin cannot set a system property before OSGi starts....&lt;br /&gt;&lt;br /&gt;This effectively means: &lt;b&gt;there is no way a normal well behaving plugin can provide a dynamic extension&lt;/b&gt;. Therefore I filed &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=174967"&gt;bug 174967&lt;/a&gt; to fix that problem....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-117207297957819437?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/117207297957819437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=117207297957819437' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/117207297957819437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/117207297957819437'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2007/02/no-real-support-for-dynamic-extensions.html' title='No real support for dynamic extensions (aka dynamic plugin.xml)'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-116321679061338045</id><published>2006-11-11T04:16:00.000+01:00</published><updated>2007-02-23T06:10:09.560+01:00</updated><title type='text'>java.net.URL.equals and hashCode make (blocking) Internet connections....</title><content type='html'>Sometimes simple calls have unexpected side effects. I wanted to update some plugins, but the update manager &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=164211"&gt;was hanging my UI&lt;/a&gt;. Looking at the stack trace reveals:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;        at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)&lt;br /&gt;        at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)&lt;br /&gt;        at java.net.InetAddress.getAddressFromNameService(Unknown Source)&lt;br /&gt;        at java.net.InetAddress.getAllByName0(Unknown Source)&lt;br /&gt;        at java.net.InetAddress.getAllByName0(Unknown Source)&lt;br /&gt;        at java.net.InetAddress.getAllByName(Unknown Source)&lt;br /&gt;        at java.net.InetAddress.getByName(Unknown Source)&lt;br /&gt;        at java.net.URLStreamHandler.getHostAddress(Unknown Source)&lt;br /&gt;        - locked &lt;0x15ce1280&gt; (a sun.net.www.protocol.http.Handler)&lt;br /&gt;        at java.net.URLStreamHandler.&lt;b&gt;hashCode&lt;/b&gt;(Unknown Source)&lt;br /&gt;        at java.net.URL.hashCode(Unknown Source)&lt;br /&gt;        - locked &lt;0x1a3100d0&gt; (a java.net.URL)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Hmm, I must say that it is very dangerous that &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/URL.html#hashCode()"&gt;java.net.URL.hashCode&lt;/a&gt; (and &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/URL.html#equals(java.lang.Object)"&gt;URL.equals&lt;/a&gt;) makes an Internet connection. &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/URL.html"&gt;java.net.URL&lt;/a&gt; has the worst equals/hasCode implementation I have ever seen: equality depends on the state of the Internet. Well in the javadoc of &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/URL.html#equals(java.lang.Object)"&gt;URL.equals&lt;/a&gt; it says: &lt;em&gt;"Since hosts comparison requires name resolution, this operation is a blocking operation."&lt;/em&gt;, but who reads the documentation of equals? There is a general contract around equals. Joshua Bloch writes in &lt;a href="http://java.sun.com/docs/books/effective/"&gt;Effective Java&lt;/a&gt;: "&lt;em&gt;Don't write an equals that relies on unreliable resources&lt;/em&gt;" (&lt;a href="http://java.sun.com/developer/Books/effectivejava/Chapter3.pdf"&gt;Chapter 3, page 34&lt;/a&gt;). Hey Sun, as far as I know, the Internet is not reliable ;-)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Do not put &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/URL.html"&gt;java.net.URL&lt;/a&gt; into collections unless you can live with the fact that comparing makes calls to the Internet. Use &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/URI.html"&gt;java.net.URI&lt;/a&gt; instead.&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;URL is an aggressive beast that can slow down and hang your application by making unexpected network traffic.....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I wonder if other people find this behaviour as shocking as I do....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-116321679061338045?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/116321679061338045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=116321679061338045' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/116321679061338045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/116321679061338045'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html' title='java.net.URL.equals and hashCode make (blocking) Internet connections....'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-116019756491039207</id><published>2006-10-07T06:18:00.000+02:00</published><updated>2006-10-07T07:06:05.340+02:00</updated><title type='text'>Tip: debug (and patch at runtime) an installed eclipse</title><content type='html'>Today I had a problem that occurred only in my installed eclipse but not in my runtime workbench. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How to start eclipse so you can attach a debugger?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You have to add the following to the vmargs: &lt;code&gt;-vmargs -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=&lt;strong&gt;9009&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;The 9009 is used later to attach to eclipse.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How attach to eclipse?&lt;/strong&gt;&lt;br /&gt;&lt;UL&gt;&lt;LI&gt;create a new Debug-&gt;Remote Java Application. &lt;br /&gt;&lt;LI&gt;Set the port to to 9009 (or whatever you use as the address argument in your eclipse launch)&lt;br /&gt;&lt;LI&gt;On the Sources tab add the projects that you want to debug..&lt;br /&gt;&lt;/UL&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How to "patch" the running eclipse?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Just modify the code. Actually, I discovered this by accident. My problem was an obvious bug (missing check for null), so I fixed in during the debug session. And the usual eclipse "magic" fixed the bug in my running eclipse. It's the hot code replacement that normally happens. I (falsely) though that would only work when I start a runtime eclipse from within eclipse. But it works in any case. &lt;br /&gt;&lt;br /&gt;Now I can fix my running eclipse while I'm normally working. The only downside is, that the two eclipse must use two different workspaces. Too bad. &lt;br /&gt;&lt;br /&gt;Here's a &lt;strong&gt;&lt;a href="http://www.scharf.gr/eclipse/tips/debug-a-running-eclipse/"&gt;flash demo video that shows how to do this step by step&lt;/a&gt;&lt;/strong&gt;.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-116019756491039207?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/116019756491039207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=116019756491039207' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/116019756491039207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/116019756491039207'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/10/tip-debug-and-patch-at-runtime.html' title='Tip: debug (and patch at runtime) an installed eclipse'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115983828585436096</id><published>2006-10-03T03:08:00.000+02:00</published><updated>2006-10-03T03:21:54.220+02:00</updated><title type='text'>Help! How to manage multiple (RCP) applications in one installation?</title><content type='html'>Maybe someone reading my blog can help me. I posted essentially the message below to the &lt;a href="http://dev.eclipse.org/newslists/news.eclipse.technology.equinox/msg02146.html"&gt;equinox newsgroup&lt;/a&gt; and the &lt;a href="http://dev.eclipse.org/newslists/news.eclipse.platform/msg59007.html"&gt;platform newsgroup&lt;/a&gt; with zero response. Maybe RCP in the headline will help getting someone to read my post ;-)....&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How to restrict the plugins visible to an application?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We have several applications (some of them are headless) that run from within the same eclipse installation. &lt;strong&gt;The problem is, that all plugins are visible from the applications.&lt;/strong&gt; This cause problems, if extensions are used that load plugins that cannot run in the context of the headless application.&lt;br /&gt;&lt;br /&gt;To illustrate the problem I use a simple example. A headless application that uses the &lt;code&gt;org.eclipse.core.variables&lt;/code&gt; plugin to expand a variable. The &lt;code&gt;org.eclipse.core.variables&lt;/code&gt; is UI free and therefore no problem. But some plugins that contribute to the variables plugin are not headless. To illustrate this, I use the &lt;code&gt;${selected_text}&lt;/code&gt; variable that is defined in the &lt;code&gt;org.eclipse.debug.ui&lt;/code&gt; plugin. This causes the application to fail.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  public class MyApplicationWithVariables implements IPlatformRunnable {&lt;br /&gt;    public Object run(Object arg) throws Exception {&lt;br /&gt;      IStringVariableManager vm=VariablesPlugin.getDefault().getStringVariableManager();&lt;br /&gt;      String message=vm.performStringSubstitution("Hello ${selected_text}!");&lt;br /&gt;      System.out.println(message);&lt;br /&gt;      return EXIT_OK;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;   &amp;lt;extension&lt;br /&gt;         id="HelloWorldWithVariables"&lt;br /&gt;         name="Minimal Headless with variables"&lt;br /&gt;         point="org.eclipse.core.runtime.applications"&gt;&lt;br /&gt;      &amp;lt;application&gt;&lt;br /&gt;         &amp;lt;run class="gr.scharf.minimal.headless.MyApplicationWithVariables"/&gt;&lt;br /&gt;      &amp;lt;/application&gt;&lt;br /&gt;   &amp;lt;/extension&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Is there a way to restrict the plugins visible or loadable to an application?&lt;/strong&gt;&lt;br /&gt;Or is the only way to have a copy of the installation containing only the "good" plugins?&lt;br /&gt;&lt;br /&gt;Michael&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115983828585436096?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115983828585436096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115983828585436096' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115983828585436096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115983828585436096'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/10/help-how-to-manage-multiple-rcp.html' title='Help! How to manage multiple (RCP) applications in one installation?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115983700264649209</id><published>2006-10-03T02:38:00.000+02:00</published><updated>2006-10-03T02:57:58.396+02:00</updated><title type='text'>How the eclipse update manager could look like...</title><content type='html'>One of the features I don't like about eclipse is the update manager. A few weeks ago, I looked at different &lt;a href="http://michaelscharf.blogspot.com/2006/08/update-manager-battle-players-yoxos.html"&gt;alternatives of eclipse update managers&lt;/a&gt;. Today Chris Aniszczyk &lt;a href="http://mea-bloga.blogspot.com/2006/10/what-eclipse-can-learn-from-firefox.html"&gt;blogged about the FireFox update manager&lt;/a&gt;. Interestingly, a few days ago, I created a small &lt;a href="http://scharf.gr/eclipse/firefox/updatemanager/"&gt;flash video on the FireFox update manager&lt;/a&gt;, because I think that shows what a user expects from a simple to use update manager. &lt;br /&gt;&lt;br /&gt;One of the central paradigms of eclipse the idea of plugins. However from a user perspective, managing plugins is a nightmare. The eclipse update manager is way too complicated, too slow, not robust enough. &lt;br /&gt;&lt;br /&gt;Few weeks ago I bought Eric Evans book "&lt;a href="http://domaindrivendesign.org/books/index.html#DDD"&gt;Domain Driven Design&lt;/a&gt;". I'll blog about it separately. One of the central ideas is what he calls "ubiquitous language" (e.g. &lt;a href="http://domaindrivendesign.org/books/chapter01.pdf"&gt;read chapter one&lt;/a&gt;). The basic idea is to come up with a language to describe the problem domain, in our case the installation and update of plugins. The language is not only used in conversations but also represented by a formal model. The formal model is implemented in code. You can start reasoning and discuss about the model.&lt;br /&gt;&lt;br /&gt;If I look at the eclipse update manager, the model used is a very technical model that is totally implementation centric. &lt;strong&gt;It is not a model a user of the update manager can simply understand&lt;/strong&gt;. I think this is the root of the problem. We have to come up with an update manager domain model that represents the problems and tasks a &lt;strong&gt;user&lt;/strong&gt; of eclipse faces and not a model that is focused on the implementation. The current implementation could be used to implement the user model, but in it self it seem not the right abstraction for users.&lt;br /&gt;&lt;br /&gt;The FireFox update manager has an easy to understand domain model that is shown in the UI. There are extensions. An extension has an icon, a description and a set of preferences (yes the preferences of each extensions is available directly from the "Extensions" dialog. In eclipse there's no way to find out what an extension contributes to eclipse. See my blog entry "&lt;a href="http://michaelscharf.blogspot.com/2006/01/when-seamless-integration-becomes.html"&gt;When seamless integration becomes a nightmare...&lt;/a&gt;"). Anyway, hit a simple button to check for updates. It's done in seconds (not minutes like eclipse). Once downloaded, you can update the plugins you want to update. &lt;br /&gt;&lt;br /&gt;If you don't like an extension you can select an extension and "Uninstall" it. Something that is not possible with the eclipse update manager. &lt;strong&gt;Eclipse is a grow only system -- no way to remove features.&lt;/strong&gt; Like windows in the old days. Once you have installed a feature there's no way to get rid of it. Only, if you regularly do backups (&lt;a href="http://michaelscharf.blogspot.com/2006/09/when-system-becomes-corrupt.html"&gt;like I do&lt;/a&gt;), you can revert a previous version of eclipse by reverting a backup. But eclipse itself is grow only &lt;a href="#mark1"&gt;(*)&lt;/a&gt;. If you have installed a few features you don't like and you cannot get rid of, you will start thinking twice if you want to install a new plugin. That's very bad for the eclipse ecosystem.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Eclipse must solve the update manager problem soon and provide a simple to use and understandable update manager that solves the problems of eclipse users.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Domain Driven Design could help come up with a update manager domain model that is relevant for eclipse users...&lt;br /&gt;&lt;br /&gt;Michael&lt;br /&gt;&lt;br /&gt;&lt;a name="mark1"&gt;(*)&lt;/a&gt; You could also use separate extension locations for each feature you install and simply delete the location if you want to uninstall the extension. But that's a hack. The update manager (UI) does not even support dropping of extensions. I tried that for a while, but it requires a lot of discipline.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115983700264649209?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115983700264649209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115983700264649209' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115983700264649209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115983700264649209'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/10/how-eclipse-update-manager-could-look.html' title='How the eclipse update manager could look like...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115932067859018782</id><published>2006-09-27T03:30:00.000+02:00</published><updated>2006-09-27T03:58:27.026+02:00</updated><title type='text'>When a system becomes corrupt....</title><content type='html'>Have you ever had a system running stable for years and suddenly everything goes wrong?&lt;br /&gt;&lt;br /&gt;It started last Saturday, when one of my usb-backup drives died. No big deal. I have two external backup drives with at most one attached to my system. I do weekly full backups and daily incremental backups on important data. I swap drives from time to time (I should swap them every day) and keep some old backups.&lt;br /&gt;&lt;br /&gt;On Monday my DSL connection died. No problem, I have a ISDN USB modem I can use in those cases. The modem was cheap but the driver sucks: it uses 100% CPU even if nothing is going on. Well, no problem, I downloaded a new driver, created an XP system restore point and installed the driver. Well, I tried different versions of the driver. No one really helped, the last one crashed my system. OK, I did a "system restore", but during shutdown the driver crashed my computer. Restart, login ... baang! Windows forgot my user settings! It created a new profile. All settings lost!&lt;br /&gt;&lt;br /&gt;No problem, &lt;em&gt;I first create a backup &lt;/em&gt;(it's always a good idea to backup the entire system, even if is corrupt, before you mess around!) and then I wanted to back the last full backup... &lt;br /&gt;&lt;br /&gt;Big problem! The last backup is corrupt, and the most recent backups are on my dead drive...&lt;br /&gt;&lt;br /&gt;...for the last 12 hours I have been playing back different versions of backup trying to restore my user data. In between I have between googling for the potential problem of my setup, with little success. Whenever I restored my latest user data in &lt;code&gt;C:\Documents and Settings\&amp;lt;username&gt;&lt;/code&gt;, windows decided to create a new profile for me. I got very very frustrated and finally accepted the fact that I have to live with a new profile and I have  to set up my environment from scratch. I copied all my user data into the new profile....&lt;br /&gt;&lt;br /&gt;...Firefox, Thunderbird, cygwin, eclipse are applications that did not loose data and were running as before. But my desktop, internet explorer and many other applications that depend on the registry lost their settings. The worst case was Outlook, it wants to be reinstalled and looses all setting that are not on the exchange server...&lt;br /&gt;&lt;br /&gt;So, I asked myself, is there a way to get my personal registry settings into my new profile? Finally I stumbled over the important files: the &lt;code&gt;C:\Documents and Settings\&amp;lt;username&gt;\&lt;strong&gt;ntuser.*&lt;/strong&gt;&lt;/code&gt; files. From my "after the problem" backup I figured out that the file &lt;code&gt;ntuser.dat&lt;/code&gt; file was missing. &lt;br /&gt;&lt;br /&gt;Was that the key to my problem? Did loosing the &lt;code&gt;ntuser.dat&lt;/code&gt; cause all the troubles? Ok, I had to try it. I copied an old version from a backup into my corrupt profile. Hmm, but how to tell XP to use my old profile directory again? A quick search in the registry revealed that the profile directory is stored under &lt;code&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList/*&lt;/code&gt;. I changed it, renamed my new profile to something else and restarted.... &lt;br /&gt;&lt;br /&gt;WOW! It works. My system is back. Outlook works, my desktop looks like always, all applications work as expected. I'm happy again....&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What has my windows problem to do with eclipse?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Eclipse does not use the registry, but it has the magic &lt;code&gt;.metadata&lt;/code&gt; directory. Over the last 5 years my &lt;code&gt;.metadata&lt;/code&gt; directory got corrupt several times. If something goes wrong with the .&lt;code&gt;.metadata&lt;/code&gt; (like running out of disk-space), it's very hard, if not impossible, to recover from that. You can, similar to windows, create a new workspace and import the projects. But then you have lost a lot of settings and you "start from scratch". My backups saved me several times here.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conclusions&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Backup the corrupted system before you do anything.&lt;/strong&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Make bakups. Regularly!&lt;/strong&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Michael&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115932067859018782?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115932067859018782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115932067859018782' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115932067859018782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115932067859018782'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/09/when-system-becomes-corrupt.html' title='When a system becomes corrupt....'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115872159760475695</id><published>2006-09-20T05:06:00.000+02:00</published><updated>2007-03-03T00:31:18.655+01:00</updated><title type='text'>Mylar is very cool, however sometimes it drives me nuts...</title><content type='html'>&lt;a href="http://www.eclipse.org/mylar/"&gt;Mylar&lt;/a&gt; is an eclipse technology project. It makes it easy to focus on a task you are working on, by hiding the information that's not relevant to the current task.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;How does it know, which information is relevant?&lt;/i&gt; It "looks over your shoulder" and remembers the files, classes and methods you have looked at. With some magic it puts some weight on the places you have been. For example if you get back to some place or even edit there, it gets more weight than just looking once at the file. But you can also tell mylar explicitly that you are interested or not interested in some context.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;How does it hide irrelevant information?&lt;/i&gt; Well, in the package explorer, outline etc you see only the classes and methods in your context. There's even a mode that shows the relevance by the background color. And really important places are shown in bold. To build up context, you can disable mylar on the view to see everything. I never use the editor folding features of mylar, because I don't like folding.&lt;br /&gt;&lt;br /&gt;If you want to learn more, I highly recommend the &lt;a href="http://www.eclipse.org/mylar/start.php"&gt;getting started flash demon&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are also integrations with bug tracking systems, and it seems that this is how most people are using Mylar. Unfortunately, we use a &lt;a href="http://www.ibm.com/software/awdtools/clearquest/"&gt;commercial bug-tracking system&lt;/a&gt; that is not supported by mylar. But I find mylar very useful, even without the bug tracking system integration.&lt;br /&gt;&lt;br /&gt;However, sometimes I hate mylar: I am working on a problem, and I find something interesting I want to look at later. So, I create a new mylar task. That's all fine. But now, when I want to add context to this task, I have to start from scratch, because mylar closes all my editors and collapses all my trees. However, if I have switched off mylar (that is: I have no active mylar task), and then create a new task and activate that new task, everything is good. In this case mylar does not close all my editors, but is clever it letting me build up my context from where I am. (I created a little &lt;a href="http://www.scharf.gr/eclipse/Probmens/Mylar/ContextProblem1/"&gt;flash demo to illustrate this workflow&lt;/a&gt;). I talked about this on the newsgroup, and it seems that my workflow is very special. I wonder if I am the only one having this workflow problem with mylar, therefore I created a bugzilla entry: &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=157933"&gt;bug 157933&lt;/a&gt;....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115872159760475695?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115872159760475695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115872159760475695' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115872159760475695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115872159760475695'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/09/mylar-is-eclipse-technology-project.html' title='Mylar is very cool, however sometimes it drives me nuts...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115838129255147056</id><published>2006-09-16T06:11:00.000+02:00</published><updated>2007-03-02T19:48:53.929+01:00</updated><title type='text'>Don't swallow InterruptedException. Call Thread.currentThread().interrupt() instead.</title><content type='html'>Have you ever written the following code?&lt;pre&gt;try {&lt;br /&gt;    doSomething();&lt;br /&gt;} catch(&lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/InterruptedException.html"&gt;InterruptedException&lt;/a&gt; swallowed) {&lt;br /&gt;    // &lt;strong&gt;BAD BAD PRACTICE, TO IGNORE THIS EXCEPTION&lt;/strong&gt;&lt;br /&gt;    // just logging is also not a useful option here....&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;I have! I newer knew what the heck to do with those annoying InterruptedException when I simply wanted to call Thread.sleep(..). What is this InterruptedException? Why is it thrown? Why can't I ignore it?&lt;br /&gt;&lt;br /&gt;Before I explain the whys, here is what you should do (if you don't re-throw):&lt;br /&gt;&lt;pre&gt;try {&lt;br /&gt;    doSomething();&lt;br /&gt;} catch(&lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/InterruptedException.html"&gt;InterruptedException&lt;/a&gt; e) {&lt;br /&gt;    // Restore the interrupted status&lt;br /&gt;    &lt;strong&gt;&lt;a hrref="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#interrupt()"&gt;Thread.currentThread().interrupt()&lt;/a&gt;;&lt;/strong&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is the InterruptedException?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There is no way to simply stop a running thread in java (&lt;a href="http://java.sun.com/j2se/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html"&gt;don't even consider using&lt;/a&gt; the deprecated method &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#stop()"&gt;stop()&lt;/a&gt;). Stopping threads is cooperative in java. Calling &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#interrupt()"&gt;Thread.interrupt()&lt;/a&gt; is a way to tell the thread to stop what it is doing. If the thread is in a blocking call, the blocking call will throw an InterruptedException, otherwise the interrupted flag of the tread will be set. A Thread or a Runnable that is interruptable should check from time to time &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#isInterrupted()"&gt;Thread.currentThread().isInterrupted()&lt;/a&gt;. If it returns true, cleanup and return.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why is it InterruptedException thrown?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The problem is that blocking calls like &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#sleep()"&gt;sleep()&lt;/a&gt; and &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#wait()"&gt;wait()&lt;/a&gt;, can take very long till the check can be done. Therefore they throw an InterruptedException. However the isInterrupted is cleared when the InterruptedException is thrown! (I have some vague idea why this is the case, but for whatever reason this is done, that is how it is!)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why can't InterruptedException be simply ignored?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It should be clear by now: because &lt;strong&gt;ignoring an InterruptedException means resetting the interrupted status of the thread&lt;/strong&gt;. For example, worker threads take runnable from a queue and execute they may check the interrupted status periodically. If you swallow it the thread would not know that it was interrupted and would happily continue to run.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Some more thoughts&lt;/strong&gt;&lt;br /&gt;Unfortunately it is not specified that Thread.interrupt() can only be used for cancellation. It can be used for anything that requires to set a flag on a thread. So, ending your task or runnable early might be the wrong choice, if the interrupted status is used for something else. But common practice is to use it for cancellation. But even if it is used for something else, you code does not have the right to reset the interrupt flag (unless you are the owner of the thread).&lt;br /&gt;&lt;br /&gt;To learn more read the nice article &lt;a href="http://www-128.ibm.com/developerworks/java/library/j-jtp05236.html"&gt;Dealing with InterruptedException&lt;/a&gt; by Brian Goetz.&lt;br /&gt;&lt;br /&gt;Or read &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0321349601/ref=nosim/none0b69"&gt;Java Concurrency in Practice&lt;/a&gt; By BriaBrian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea. It's a great book! &lt;strong&gt;If you program in java 5 this book is a must read!&lt;/strong&gt;. I bought the book after I read Brians artikle. I have not yet read the entire book, but what I have read impresses me. It gives a lot of theorie and options. Very competent and complete, but I'm missing a set of simple patterns for concurrent programming. I'm looking forward to Doug Leas 3rd edition of &lt;a href="http://www.amazon.com/Concurrent-Programming-Java-Principles-Addison-Wesley/dp/0321256174"&gt;Concurrent Programming in Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Summary:&lt;/em&gt; If you don't know what to do with an InterruptedException call Thread.currentThread().interrupt()&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115838129255147056?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115838129255147056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115838129255147056' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115838129255147056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115838129255147056'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/09/dont-swallow-interruptedexception-call.html' title='Don&apos;t swallow InterruptedException. Call Thread.currentThread().interrupt() instead.'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115786312102754361</id><published>2006-09-10T05:54:00.000+02:00</published><updated>2006-09-10T06:47:15.893+02:00</updated><title type='text'>Pitfalls of Long.parseLong/Long.decode...</title><content type='html'>What is wrong with this code?&lt;pre&gt;assert 0x0cc175b9c0f1b6a8L == Long.parseLong("0cc175b9c0f1b6a8",16);&lt;br /&gt;assert 0xd41d8cd98f00b204L == Long.parseLong("d41d8cd98f00b204",16);&lt;br /&gt;&lt;/pre&gt;The second Long.parseLong will fail in the second line:&lt;pre&gt;java.lang.NumberFormatException: For input string: "d41d8cd98f00b204"&lt;br /&gt;&lt;/pre&gt;The reason is that javas long is signed, but &lt;code&gt;0xd41d8cd98f00b204L&lt;/code&gt; is an unsigned long. Interesting, but annoying, if you want to parse an &lt;code&gt;unsigned long&lt;/code&gt; in java. It makes &lt;a href="http://michaelscharf.blogspot.com/2006/08/parsing-and-verifying-hex-octal-and.html"&gt;Parsing and verifying hex, octal and decimal numbers&lt;/a&gt; more complicated, if you have a field that represents a C/C++ &lt;code&gt;unsigned long&lt;/code&gt; (a 64 bit number)....&lt;br /&gt;&lt;br /&gt;The solution is to use BigInteger:&lt;pre&gt;assert 0x0cc175b9c0f1b6a8L == new BigInteger("0cc175b9c0f1b6a8",16).longValue();&lt;br /&gt;assert 0xd41d8cd98f00b204L == new BigInteger("d41d8cd98f00b204",16).longValue();&lt;br /&gt;&lt;/pre&gt;However, you must ensure that the BigInteger does not exceed 64 bits. So here's my unsigned long parser&lt;pre&gt;public static long parseUnsignedLong(String s, int radix) &lt;br /&gt;    throws NumberFormatException {&lt;br /&gt;    BigInteger b= new BigInteger(s,radix);&lt;br /&gt;    if(b.bitLength()&gt;64)&lt;br /&gt;        throw new NumberFormatException(s+" is to big!");&lt;br /&gt;    return b.longValue();&lt;br /&gt;}&lt;/pre&gt;&lt;strong&gt;Note:&lt;/strong&gt; if you want to do any kind arithmetic with &lt;code&gt;unsigned longs&lt;/code&gt; (like min/max checking) you have to use BigInteger objects.... Unless you are only interested in the bits of the long, the return value of my parseUnsignedLong is not really useful: it should better return the BigInteger!&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115786312102754361?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115786312102754361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115786312102754361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115786312102754361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115786312102754361'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/09/pitfalls-of-longparselonglongdecode.html' title='Pitfalls of Long.parseLong/Long.decode...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115759117985798651</id><published>2006-09-07T03:04:00.000+02:00</published><updated>2006-09-07T03:08:07.096+02:00</updated><title type='text'>The Dependency Injection Pattern: an alternative to Factories and Service Locators</title><content type='html'>On my vacation I listened to about &lt;a href="http://michaelscharf.blogspot.com/2006/08/going-on-vacation-with-mp3-player-full.html"&gt;30 pod-casts&lt;/a&gt;. Although most of what I heard was not new, it still was a good refresher and exciting to listen to. It also inspired me to order a few books and make me think more about what I am doing as software engineer. &lt;br /&gt;&lt;br /&gt;One pattern that was new to me is &lt;a href="http://en.wikipedia.org/wiki/Dependency_injection"&gt;Dependency Injection&lt;/a&gt;. It was mentioned in &lt;a href="http://se-radio.net/index.php?post_id=51696"&gt;software engineering radio Episode 2 on Dependencies&lt;/a&gt;. Instead of using a &lt;a href="http://en.wikipedia.org/wiki/Factory_design_pattern"&gt;Factory&lt;/a&gt; or a &lt;a href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/ServiceLocator.html"&gt;Service Locator&lt;/a&gt; (like OSGi), make your class have some members referring to the interfaces it uses. The Dependency Injector then uses either the constructor or some set methods to provide your class with the implementations of the classes your object needs. Read the &lt;a href="http://www.picocontainer.org/One+minute+description"&gt;One minute description&lt;/a&gt; and the &lt;a href="http://www.picocontainer.org/Two+minute+tutorial"&gt;Two Minute Tutorial&lt;/a&gt; of &lt;a href="http://www.picocontainer.org"&gt;PicoContainer&lt;/a&gt; (a nice little Dependency Injection Framework) to see what I mean.&lt;br /&gt;&lt;br /&gt;Martin Fowler wrote a long article about &lt;a href="http://www.martinfowler.com/articles/injection.html#ConstructorInjectionWithPicocontainer"&gt;Inversion of Control Containers and the Dependency Injection pattern&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I was always wondering why using interfaces when you have only one implementation of the interface anyway. So, why bother? With Dependency Injection you can test your object easyly using &lt;a href="http://en.wikipedia.org/wiki/Mock_object"&gt;Mock Objects&lt;/a&gt;. Jeremy Weiskotten wrote an Dr.Dobb's Article on why &lt;a href="http://www.ddj.com/185300375"&gt;Dependency Injection is very helpful to create testable and decoupled objects&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Dependency Injection makes it very clear which interfaces your objects depend on. This makes refactoring, testing and understanding code easier. Factories and Service Locators often provide more products than needed by a single class and therefore you cannot really tell what the class depends on.&lt;br /&gt;&lt;br /&gt;I'll play with Dependency Injection :-)&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115759117985798651?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115759117985798651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115759117985798651' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115759117985798651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115759117985798651'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/09/dependency-injection-pattern.html' title='The Dependency Injection Pattern: an alternative to Factories and Service Locators'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115611618399853037</id><published>2006-08-21T00:43:00.000+02:00</published><updated>2006-08-21T01:30:45.430+02:00</updated><title type='text'>Going on vacation with a mp3 player full of geek pod-casts...</title><content type='html'>I'm going on vacation for two weeks to &lt;a href="http://en.wikipedia.org/wiki/Athens"&gt;Athens&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Crete"&gt;Crete&lt;/a&gt;. My wife is Greek and therefore we go every summer to &lt;a href="http://en.wikipedia.org/wiki/Greece"&gt;Greece&lt;/a&gt;. Going on vacation also means no laptop (that's not my deceison ;-). So usually, I take some geek books with me. This time I loaded my mp3 player with the &lt;a href="http://www.eclipsezone.com/spotlights.jsp"&gt;9 Callisto pod-casts from Eclipse Zone&lt;/a&gt; and a few of the &lt;a href="http://www.se-radio.net/"&gt;Software Engineering Radio&lt;/a&gt; pod-casts. &lt;br /&gt;I tried it on Friday. It's a almost like being in a conference call. But it's better: I can wind back if I get sidetracked and I don't have to be afraid that suddenly someone says: "And Michael, what do you think?....". I was shopping and listening to &lt;a href="http://www.eclipsezone.com/files/podcasts/1-GMF-Richard.Gronback.mp3?source=archives"&gt;Richard Gromback on GMF&lt;/a&gt;. I was waiting in the queue to pay and when it was my turn, I started talking in English to the German cashier -- lost in cyberspace...&lt;br /&gt;&lt;br /&gt;One thing I think pod-casts should do: &lt;strong&gt;Please say at the beginning of the pod-cast when it was recorded!&lt;/strong&gt; If someone says: "Next month we'll release foobar..." it is annoying not to know when next month is or was...&lt;br /&gt;&lt;br /&gt;And now, relaaaaaxxx, summer, sun, beach, fun -- for 2 weeks -- I'll be back Sep.5 late afternoon....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115611618399853037?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115611618399853037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115611618399853037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115611618399853037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115611618399853037'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/going-on-vacation-with-mp3-player-full.html' title='Going on vacation with a mp3 player full of geek pod-casts...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115591032763597806</id><published>2006-08-18T15:36:00.000+02:00</published><updated>2006-08-20T04:15:14.566+02:00</updated><title type='text'>Blog comments, my mistakes and good feedback...</title><content type='html'>Marko Schulz asked me why his comments did not appear in my blog. I checked it and I realized that I had a setup problem with my blog (my mistake). Now all comments are visible &lt;strong&gt;and new comments will be shown automatically!&lt;/strong&gt; I'll check them for spam later.&lt;br /&gt;&lt;br /&gt;Here's what I learned from the comments:&lt;br /&gt;&lt;UL&gt;&lt;LI&gt;&lt;a href="http://michaelscharf.blogspot.com/2006/08/parsing-and-verifying-hex-octal-and.html"&gt;Parsing and verifying hex, octal and decimal numbers...&lt;/a&gt;: Several commenters pointed out that I should have used &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Long.html#decode(java.lang.String)"&gt;Long#decode(String)&lt;/a&gt; and therefore I adjusted the blog entry (and my code ;-).&lt;br /&gt;&lt;LI&gt;&lt;a href="http://michaelscharf.blogspot.com/2006/08/am-i-only-person-having-problems-with.html"&gt;Am I the only person having problems with the update manager?&lt;/a&gt; The answer is clearly: no!&lt;br /&gt;&lt;LI&gt;&lt;a href="http://michaelscharf.blogspot.com/2006/08/eclipse-was-hanging-my-machine.html"&gt;Eclipse was hanging my machine regularly -- solution -XX:MaxPermSize=128m&lt;/a&gt; Surya asked if the -XX:MaxPermSize=128m can be put into the eclipse.ini files: the answer is yes.&lt;br /&gt;&lt;LI&gt;&lt;a href="http://michaelscharf.blogspot.com/2006/07/why-is-supersuper-illegal.html"&gt;Why is super.super illegal?&lt;/a&gt; is the most debated. Lots of good reasons why super.super is illegal -- but from practical point of view it is annoying...&lt;br /&gt;&lt;LI&gt;&lt;a href="http://michaelscharf.blogspot.com/2006/07/i-hate-classcastexceptions.html"&gt;I hate ClassCastExceptions...&lt;/a&gt;Marco said its &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4826718"&gt;fixed in 1.5&lt;/a&gt; (ClassCastException is reporting the actual type of the object). I just made a test and it is true: even if compiled with 1.4 and run with 1.5 I see the ClassCastException reporting the type. I'm a bit puzzled why I don't see it in my applications -- I thought I'm using a 1.5 jre. &lt;br /&gt;&lt;LI&gt;&lt;a href="http://michaelscharf.blogspot.com/2006/07/how-to-setup-some-plugins-to-use-java.html"&gt;How to setup some plugins to use java 1.5 in a java 1.4 workspace?&lt;/a&gt; &lt;a href="http://www.blogger.com/profile/5634332"&gt;Neil Bartlett&lt;/a&gt; pointed out that step 3 (Setting the execution environment in the build path to J2SE-1.5) is not needed. I tested it and &lt;strong&gt;it is needed&lt;/strong&gt;. &lt;a href="http://www.blogger.com/profile/10622991"&gt;Le ScaL&lt;/a&gt; pointed me to &lt;a href="http://wiki.eclipse.org/index.php/Execution_Environments"&gt;an article on execution environment&lt;/a&gt; in the eclipse wiki.&lt;br /&gt;&lt;LI&gt;&lt;a href="http://michaelscharf.blogspot.com/2006/08/update-manager-battle-players-yoxos.html"&gt;Update manager battle: the players Yoxos - YUM - eclipse...&lt;/a&gt; &lt;a href="http://www.blogger.com/profile/21625146"&gt;Wassim Melhem&lt;/a&gt; asks why I like yoxos though I have not seen it in action. Hmm, maybe I'm biased because its German and I know the guys or maybe because I spent some money on it and therefore it "has to be good" ;-). I hope to see an update soon....&lt;br /&gt;&lt;LI&gt;&lt;a href="http://michaelscharf.blogspot.com/2006/08/how-far-are-hotels-from-eclipse.html"&gt;How far are the hotels from the eclipse summit October 11-12 2006 in Esslingen/Stuttgart Germany?&lt;/a&gt; &lt;a href="http://www.gerdcastan.de/Gerd%20Castan/Willkommen.html"&gt;Gerd Castan&lt;/a&gt; suggested to search &lt;a href="http://www.hotel.de/Search.aspx?lng=DE&amp;hs_destination=Esslingen+am+Neckar&amp;hs_postalcode=73728&amp;hs_searchmode=3&amp;hs_clong=9%2c31415053245432&amp;hs_street=Ebershaldenstra%c3%9fe+12&amp;hs_clat=48%2c742220917354&amp;hs_landisoa3=DEU&amp;hs_entityname=Ebershaldenstra%c3%9fe+12%2c+73728+Esslingen+am+Neckar&amp;hs_validate=2"&gt;search hotel.de&lt;/a&gt;. Good idea!&lt;br /&gt;&lt;/UL&gt;I checked all comments and I found a few spams, but most comments brought up valid points. &lt;strong&gt;Thank you for your feedback!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115591032763597806?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115591032763597806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115591032763597806' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115591032763597806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115591032763597806'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/blog-comments-my-mistakes-and-good.html' title='Blog comments, my mistakes and good feedback...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115580003275543228</id><published>2006-08-17T09:19:00.000+02:00</published><updated>2006-08-17T09:33:53.316+02:00</updated><title type='text'>MDSD/MDA framework openArchitectureWare 4.1 is available at eclipse.org</title><content type='html'>I just read the announcement that &lt;a href="http://www.openarchitectureware.org/article.php/openArchitectureWare_4-1_FINAL_available"&gt;openArchitectureWare 4.1 is available&lt;/a&gt;. openArchitectureWare is hosted at &lt;a href="http://www.eclipse.org/gmt/oaw/"&gt;eclipse.org/gmt/oaw&lt;/a&gt;. It is one of the coolest projects at eclipse.org but it seems not to get much attention. If you are interested in &lt;a href="http://www.mdsd.info/mdsd_cm/headlines.php"&gt;MDSD&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Model-driven_architecture"&gt;MDA&lt;/a&gt; take a look at openArchitectureWare - &lt;strong&gt;openArchitectureWare is really cool!&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115580003275543228?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115580003275543228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115580003275543228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115580003275543228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115580003275543228'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/mdsdmda-framework-openarchitectureware.html' title='MDSD/MDA framework openArchitectureWare 4.1 is available at eclipse.org'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115579548231385613</id><published>2006-08-17T08:11:00.000+02:00</published><updated>2006-08-18T15:21:07.893+02:00</updated><title type='text'>Parsing and verifying hex, octal and decimal numbers...</title><content type='html'>How to parse a number that might be octal, decimal or hexadecimal. Numbers like &lt;code&gt;0xFF, 0x1e, 077, -123, -0x12, -066&lt;/code&gt;. This must have been solved a million times, and here's my version: &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Thank you for all the comments! My code is stupid! Use &lt;code&gt;Long.decode(numberString).longValue()&lt;/code&gt; Instead!&lt;/strong&gt;&lt;br /&gt;&lt;pre&gt;&lt;strike&gt;String sign="";&lt;br /&gt;int base=10;&lt;br /&gt;if(numberString.startsWith("-")) {&lt;br /&gt;    sign="-";&lt;br /&gt;    numberString=numberString.substring(1);&lt;br /&gt;}&lt;br /&gt;if(numberString.startsWith("0x")) {&lt;br /&gt;    numberString=numberString.substring(2);&lt;br /&gt;    base=16;&lt;br /&gt;} else if(numberString.startsWith("0") &amp;&amp; numberString.length()&gt;1) {&lt;br /&gt;    numberString=numberString.substring(1);&lt;br /&gt;    base=8;&lt;br /&gt;}&lt;br /&gt;return Long.parseLong(sign+numberString,base);&lt;/strike&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;OK, and here is my VerifyListener:&lt;pre&gt;class NumberVerifyer implements VerifyListener {&lt;br /&gt;    final boolean fSigned;&lt;br /&gt;    NumberVerifyer(boolean signed) {&lt;br /&gt;        fSigned=signed;&lt;br /&gt;    }&lt;br /&gt;    public void verifyText(VerifyEvent e) {&lt;br /&gt;        Text text = ((Text)e.widget);&lt;br /&gt;        StringBuffer fulltext = new StringBuffer(text.getText());&lt;br /&gt;        fulltext.replace(e.start, e.end, e.text);&lt;br /&gt;        String sign=""; //$NON-NLS-1$&lt;br /&gt;        if(fSigned)&lt;br /&gt;            sign="-?"; //$NON-NLS-1$&lt;br /&gt;        e.doit = fulltext.toString().matches(sign+"(0?|[1-9][0-9]*|0x[0-9a-fA-F]*|0[0-7]+)"); //$NON-NLS-1$&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115579548231385613?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115579548231385613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115579548231385613' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115579548231385613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115579548231385613'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/parsing-and-verifying-hex-octal-and.html' title='Parsing and verifying hex, octal and decimal numbers...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115575165753446406</id><published>2006-08-16T19:54:00.000+02:00</published><updated>2006-08-18T03:51:40.686+02:00</updated><title type='text'>Vote for the eclipse 3.3 release train name. Europa is a bad choice!</title><content type='html'>&lt;a href="http://www.advancedsurvey.com/survey/header.asp"&gt;Vote for the Eclipse Release Train Name (2007)&lt;/a&gt;. There has been some &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=147754"&gt;discussions in bugzilla&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I think Europa is a very bad choice for two reasons:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; There are too many Google hits already if you search for &lt;a href="http://www.google.com/search?q=eclipse+europa"&gt;eclipse europa&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; In many languages &lt;a href="http://en.wikipedia.org/wiki/Europa"&gt;Europa means Europe&lt;/a&gt; and this will confuse. Messages like the &lt;a href="http://wiki.eclipse.org/index.php?title=Europa_Build_Workshop"&gt;"Europa Build Workshop"&lt;/a&gt;, sounds for many non-native speakers like "The Build Workshop Europe". If English is your native language, you might not understand this point, but for Germans this is very confusing. For the same reason you would not call a workshop held in the nice Austrian village called &lt;a href="http://en.wikipedia.org/wiki/Fucking"&gt;Fucking&lt;/a&gt; the "Fucking Workshop" ;-)....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115575165753446406?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115575165753446406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115575165753446406' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115575165753446406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115575165753446406'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/vote-for-eclipse-33-release-train-name.html' title='Vote for the eclipse 3.3 release train name. Europa is a bad choice!'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115561867632138832</id><published>2006-08-15T07:10:00.000+02:00</published><updated>2006-08-16T00:53:15.263+02:00</updated><title type='text'>Am I the only person having problems with the update manager?</title><content type='html'>I wonder if I am the only person in the world using the update manager and having problems. Two weeks ago I reported a real show-stopper update manager bug: &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=151797"&gt;Update does not work if *ANY* error is found in configuration&lt;/a&gt;. I expected that it would be marked as a duplicate but I seem to be the only person having the problem. I cannot finish the updates dialog because of some mysterious errors:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.scharf-software.de/eclipse/screenshots/bug-151797.gif"&gt;&lt;br /&gt;&lt;br /&gt;The annoying thing is that "Manage Configuration" seems happy and shows no error:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.scharf-software.de/eclipse/screenshots/bug-config-151797.gif"&gt;&lt;br /&gt;&lt;br /&gt;The error is caused by some installed features that require a specific version of a plugin. &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;feature id="broken.feature" label="Broken Feature" version="1.0.0"&gt;&lt;br /&gt;   &amp;lt;description&gt;.&amp;lt;/description&gt;&amp;lt;copyright&gt;.&amp;lt;/copyright&gt;&lt;br /&gt;   &amp;lt;license&gt;.&amp;lt;/license&gt;&lt;br /&gt;   &amp;lt;requires&gt;&lt;br /&gt;      &amp;lt;import feature="org.eclipse.platform" &lt;strong&gt;version="3.1.2" match="perfect"&lt;/strong&gt;/&gt;&lt;br /&gt;   &amp;lt;/requires&gt;&lt;br /&gt;&amp;lt;/feature&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;What puzzles me the most is not the bug itself, but the fact I seem to be the only one getting the bug (I get it with 3.2 and 3.3M1).....&lt;br /&gt;&lt;br /&gt;If you want to try it, just unzip &lt;a href="https://bugs.eclipse.org/bugs/attachment.cgi?id=47891"&gt;this feature &lt;/a&gt;in your eclipse/feature directory and restart eclipse and try to install a feature using the update manager.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Workarounds&lt;/strong&gt;&lt;br /&gt;Fix the feature.xml file by removing the required version string.&lt;br /&gt;&lt;strong&gt;Or&lt;/strong&gt; use another working eclipse installation and install the plugins into a new extension location and add the extension location to your eclipse using "Manage Configuration".&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115561867632138832?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115561867632138832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115561867632138832' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115561867632138832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115561867632138832'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/am-i-only-person-having-problems-with.html' title='Am I the only person having problems with the update manager?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115560543163255065</id><published>2006-08-15T03:01:00.000+02:00</published><updated>2006-08-16T22:15:43.050+02:00</updated><title type='text'>Update manager battle: the players Yoxos - YUM - eclipse...</title><content type='html'>&lt;strong&gt;Yoxos&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I am &lt;strong&gt;very&lt;/strong&gt; frustrated with the eclipse update manager. In my opinion, it is simply unusable. But what are the alternatives? A few weeks ago, I bought a 1 year subscription of &lt;a href="http://www.yoxos.com"&gt;yoxos&lt;/a&gt; for $99. Unfortunately, since then, no new updates appeared on my yoxos update manager. The yoxos update manager is quite cool. It's a perspective that allows you to select the plugins you want:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.scharf-software.de/eclipse/screenshots/update-manager/update-yoxos.gif"&gt;&lt;br /&gt;&lt;br /&gt;This looks very much like the &lt;a href="http://www.yoxos.com/ondemand/"&gt;yoxos on demand&lt;/a&gt; site (yes, this is a screenshot of an ajax application!):&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.scharf-software.de/eclipse/screenshots/update-manager/update-yoxos-web.gif"&gt;&lt;br /&gt;&lt;br /&gt;I don't know how it works, when new updates are available, but I expect it will work smoothly (well, I payed for it -- therefore it has to work ;-))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TUM - Tikal Update Manager&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;TUM (Tikal Update Manager) is a open source project &lt;a href="http://sourceforge.net/projects/tikal"&gt;forge project called tikal&lt;/a&gt; run by &lt;a href="http://www.tikalk.com"&gt;Tikal&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;They create a dialog with some cool icons. Yoxos seems much more mature, but &lt;a href="http://www.eclipseplugincentral.com/modules.php?op=modload&amp;name=News&amp;file=article&amp;sid=548"&gt;TUM was just announced&lt;/a&gt;....&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.scharf-software.de/eclipse/screenshots/update-manager/update-yum.gif"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Eclipse Update Manager&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The eclipse update manager seems also to be enhanced. I have not seen it (because I hope for yoxos to install it for me...), but the screenshots seem promising.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.scharf-software.de/eclipse/screenshots/update-manager/update-eclipse-3.3.png"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The battle shall start...&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I really hope that finally the update manager gets more attention. My favorite is clearly yoxos, because they don't use annoying blocking dialogs, but a perspective. The funny thing is, that eclipse 1 used a perspective as well, and in eclipse 2 it became wizard based...&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115560543163255065?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115560543163255065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115560543163255065' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115560543163255065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115560543163255065'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/update-manager-battle-players-yoxos.html' title='Update manager battle: the players Yoxos - YUM - eclipse...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115496590075848986</id><published>2006-08-07T17:51:00.000+02:00</published><updated>2006-08-11T17:00:39.020+02:00</updated><title type='text'>How far are the hotels from the eclipse summintOctober 11-12  2006 in Esslingen/Stuttgart Germany?</title><content type='html'>I'm about to register for the &lt;a href="http://www.eclipsecon.org/summiteurope2006/index.php?page=home/"&gt;The eclipse summit 2006 October 11-12&lt;/a&gt; in Germany. On the web page there are &lt;a href="http://www.eclipsecon.org/summiteurope2006/index.php?page=hotels/"&gt;4 hotels suggested&lt;/a&gt;, but no clue how far they are away from the actual summit (are they in walking distance?). The summit seems to be at &lt;a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;q=Ebershaldenstra%C3%9Fe+12,+73728+Esslingen,+germany"&gt;Ebershaldenstraße 12, 73728 Esslingen, Germany&lt;/a&gt;. I called all of them to ask for the price for the eclipse summit. The hotels all seem to be in the 100 Euro category. I think breakfast is included in all cases.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pcesslingen.consul-hotels.com/"&gt;Best Western Premier Hotel Park Consul Esslingen&lt;/a&gt;&lt;br /&gt;Grabbrunnenstr. 19&lt;br /&gt;73728 Stuttgart/Esslingen am Neckar&lt;br /&gt;Tel: +49(0)711-41111-0 &lt;br /&gt;Fax: +49(0)711-41111-699 &lt;br /&gt;&lt;b&gt;Distance: &lt;a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;saddr=Grabbrunnenstr.+19,+73728+Esslingen,+germany&amp;daddr=Ebershaldenstra%C3%9Fe+12,+73728+Esslingen,+germany"&gt;150 meters&lt;/a&gt; &lt;/b&gt;&lt;br /&gt;Email: marcus.schlaich@consul-hotels.com&lt;br /&gt;Single Room: 110 Euro&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linde-berkheim.de/"&gt;Hotel Linde Berkheim&lt;/a&gt;&lt;br /&gt;Ruiterstraße 2&lt;br /&gt;73734 Esslingen am Neckar&lt;br /&gt;Tel: +49(0)711-345305&lt;br /&gt;Fax: +49(0)711-3454125&lt;br /&gt;&lt;b&gt;Distance: &lt;a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;saddr=Ruiterstrasse+2,+73728+Esslingen,+germany&amp;daddr=Ebershaldenstra%C3%9Fe+12,+73728+Esslingen,+germany"&gt;4 km&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Email: info@linde-berkheim.de&lt;br /&gt;Single room: 85 Euro - Double room 114 Euro (until Sep. 8th)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hotel-am-schillerpark.de/"&gt;Hotel Am Schillerpark&lt;/a&gt;&lt;br /&gt;Neckarstr. 60, 73728 Esslingen am Neckar&lt;br /&gt;Tel: +49(0)711 931 33-0&lt;br /&gt;Fax: +49(0)711 931 33 100&lt;br /&gt;&lt;b&gt;Distance: &lt;a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;saddr=Neckarstr.+60,+73728+Esslingen,+germany&amp;daddr=Ebershaldenstra%C3%9Fe+12,+73728+Esslingen,+germany&amp;ie=UTF8&amp;om=1"&gt;1.2 km&lt;/a&gt; (walking distance 800 meter)&lt;/b&gt;&lt;br /&gt;Email: info@hotel-am-schillerpark.de&lt;br /&gt;Singe Room: 89 euro (20 rooms for the summit)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ringhotels.de/hotels/hotels/Baden-Wuerttemberg/Esslingen-am-Neckar/"&gt;Ringhotel Rosenau&lt;/a&gt;&lt;br /&gt;Plochinger Straße 65 &lt;br /&gt;D-73730 Esslingen am Neckar&lt;br /&gt;Tel: +49(0)711 315 45 60 &lt;br /&gt;Fax: +49(0)711 316 13 44&lt;br /&gt;&lt;b&gt;Distance: &lt;a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;saddr=Plochinger+Stra%C3%9Fe+65+,+73728+Esslingen,+germany&amp;daddr=Ebershaldenstra%C3%9Fe+12,+73728+Esslingen,+germany"&gt;1 km&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Email: info@hotel-rosenau.de&lt;br /&gt;Prices: The lady at the reception did not know about the "Eclipse Summit". I should call tomorrow before 4PM.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115496590075848986?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115496590075848986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115496590075848986' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115496590075848986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115496590075848986'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/how-far-are-hotels-from-eclipse.html' title='How far are the hotels from the eclipse summintOctober 11-12  2006 in Esslingen/Stuttgart Germany?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115490863788035017</id><published>2006-08-07T01:46:00.000+02:00</published><updated>2006-08-07T02:06:57.976+02:00</updated><title type='text'>How to quickly add a new repository location to CVS...</title><content type='html'>The eclipse &lt;i&gt;Add a new CVS Repository&lt;/i&gt; dialog allows you to quickly fill the form, if you drop a string like &lt;code&gt;:pserver:anonymous@dev.eclipse.org:/home/dsdp&lt;/code&gt; into the &lt;i&gt;Host:&lt;/i&gt; field. If you see a string like &lt;pre&gt;cvs -d&lt;b&gt;:pserver:anonymous@foo.cvs.sourceforge.net:/cvsroot/foo&lt;/b&gt; login &lt;/pre&gt; at sourceforge, grab the highlighted part (including the colon before pserver)...&lt;br /&gt;&lt;br /&gt;You can also select a location in the &lt;i&gt;CVS Repositories&lt;/i&gt; view and "Copy to Clipboard" and send it to someone. The receiver can then drop it into the &lt;i&gt;Add a new CVS Repository&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115490863788035017?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115490863788035017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115490863788035017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115490863788035017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115490863788035017'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/how-to-quickly-add-new-repository.html' title='How to quickly add a new repository location to CVS...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115479834895049700</id><published>2006-08-05T18:50:00.000+02:00</published><updated>2006-08-09T20:12:04.553+02:00</updated><title type='text'>Eclipse was hanging my machine regularly -- solution -XX:MaxPermSize=128m</title><content type='html'>I have quite some plugins installed in my eclipse installation. Since a few weeks, eclipse was running mad from time to time, my XP laptop was totally starving, I was not even able to get to the task manager to kill eclipse (keyboard and mouse barley reacted). The only solution was to kill my machine :-(. &lt;br /&gt;&lt;br /&gt;Well, but how to find out who is the bad guy? Which of the many plugins I have installed "killing me"? I was using &lt;a href="http://tmitevski.users.mcs2.netarray.com/"&gt;Stack Trace&lt;/a&gt;, a cool application that lets you attach to eclipse and get a stack trace.&lt;br /&gt;&lt;br /&gt;Most of the time the stack traces of the wild application ended in:&lt;pre&gt; at java.lang.ClassLoader.defineClass1(Native Method)&lt;br /&gt; at java.lang.ClassLoader.defineClass(Unknown Source)&lt;br /&gt; at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:160)&lt;br /&gt; at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:498)&lt;br /&gt; at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:468)&lt;br /&gt; at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl&lt;/pre&gt;&lt;br /&gt;Hmm, the class loader puts the class files in a special area of the garbage collector, (perm generation). The starving (100 % CPU and being really bad) seemed to be caused by not enough memory in the perm space. To fix this, &lt;b&gt;I added &lt;code&gt;-vmargs -XX:MaxPermSize=128m&lt;/code&gt; to the shortcut that starts eclipse. That solved the problem!&lt;/b&gt; The sun default &lt;a href="http://java.sun.com/docs/hotspot/gc1.4.2/faq.html"&gt;seems to be 64MB&lt;/a&gt; (I could not find information for java1.5). &lt;br /&gt;&lt;br /&gt;But how much is the perm size really? How to find this out? Today, I found a &lt;a href="http://blog.exadel.com/?p=9"&gt;blog entry by Igor Shabalov&lt;/a&gt; describing a cool tool called &lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html"&gt;jconsole&lt;/a&gt;, that comes with jdk1.5.0, that allows you to inspect memory related information of your java applications life. All you have to do, it to add &lt;code&gt;-Dcom.sun.management.jmxremote&lt;/code&gt; to the eclipse &lt;code&gt;-vmargs&lt;/code&gt;. Then you can attach to eclipse and see life the different garbage collection pools and the loaded classes and threads -- pretty cool...&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115479834895049700?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115479834895049700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115479834895049700' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115479834895049700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115479834895049700'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/eclipse-was-hanging-my-machine.html' title='Eclipse was hanging my machine regularly -- solution -XX:MaxPermSize=128m'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115464760006597644</id><published>2006-08-04T01:01:00.000+02:00</published><updated>2006-08-04T01:58:51.990+02:00</updated><title type='text'>How to create apply a patch that contains changes in multiple projects?</title><content type='html'>Eclipse has a nice feature to apply patches (context menu of a project: Team-&gt;Apply Patch....). If you have multiple projects under CVS control, then you can create a patch that contains changes from multiple projects. The patch looks slightly odd, because id adds some additional lines that tell eclipse which projects a file belongs to. This has is new in eclipse 3.2 (&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110481"&gt;bug 110481&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;However if you have a patch created with diff outside eclipse that contains files from multiple projects, eclipse cannot apply the patch.&lt;br /&gt;&lt;br /&gt;To apply my multi project patches I wrote a small &lt;a href="http://www.eclipse.org/dash/"&gt;Eclipse Monkey script&lt;/a&gt; that converts a patch on the clipboard to a &lt;i&gt;Eclipse Workspace Patch 1.0&lt;/i&gt;, by adding some additional lines.&lt;br /&gt;&lt;br /&gt;To install and run the script:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/dash/monkey-help.php?key=installing"&gt;Install Eclipse Monkey&lt;/a&gt; (if you have not already installed it)&lt;br /&gt;&lt;li&gt;Copy the script below (including the odd lines at the beginning and the end) to the clipboard&lt;br /&gt;&lt;li&gt;In the &lt;i&gt;Monkey&lt;/i&gt; menu do &lt;i&gt;Paste New Script&lt;/i&gt;&lt;br /&gt;&lt;li&gt;Now you can convert patches to &lt;i&gt;Eclipse Workspace Patch 1.0&lt;/i&gt;, by &lt;b&gt;copying that patch to the clipboard and running &lt;i&gt;Monkey-&gt;Tools-&gt;Convert patch in clipboard to workspace patch&lt;/i&gt;&lt;/b&gt;&lt;/ul&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;--- Came wiffling through the eclipsey wood ---&lt;br /&gt;/*&lt;br /&gt; * Menu: Tools &gt; Convert patch in clipboard to workspace patch&lt;br /&gt; * Kudos: Michael Scharf(eclipsemonkey @ scharf . gr)&lt;br /&gt; * License: EPL 1.0&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;// pseudo imports&lt;br /&gt;var ArrayList=Packages.java.util.ArrayList;&lt;br /&gt;var Pattern=Packages.java.util.regex.Pattern;&lt;br /&gt;var StringBuffer=Packages.java.lang.StringBuffer;&lt;br /&gt;var BufferedReader=Packages.java.io.BufferedReader;&lt;br /&gt;var StringReader=Packages.java.io.StringReader;&lt;br /&gt;var ResourcesPlugin=Packages.org.eclipse.core.resources.ResourcesPlugin;&lt;br /&gt;var MessageDialog=Packages.org.eclipse.jface.dialogs.MessageDialog;&lt;br /&gt;&lt;br /&gt;var dnd=Packages.org.eclipse.swt.dnd;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function main() {&lt;br /&gt;  var patch = getFromClipboard();&lt;br /&gt;  if(patch == null) {&lt;br /&gt;    showMessage("The clipboard does not contain a string!");&lt;br /&gt;  } else {&lt;br /&gt;    // is this already a workspace patch?&lt;br /&gt;    // the (?m) makes sure that the ^ matches the beginning of a line&lt;br /&gt;    // and not just the beginning of the string!&lt;br /&gt;    var pattern=Pattern.compile("(?m)^### Eclipse Workspace Patch 1.0");&lt;br /&gt;    if(pattern.matcher(patch).find()) {&lt;br /&gt;      showMessage("This is already a Workspace Patch!\n" + &lt;br /&gt;                  "It contains a line beginning with:\n" + &lt;br /&gt;                  "\"### Eclipse Workspace Patch 1.0\"");&lt;br /&gt;    } else {&lt;br /&gt;      var messages =  new StringBuffer();&lt;br /&gt;      patch = convertToWoskspacePatch(patch, messages);&lt;br /&gt;      // has it been converted?&lt;br /&gt;      if(patch == null) {&lt;br /&gt;     showMessage("The clipboard does not contain a valid patch.");&lt;br /&gt;      } else {&lt;br /&gt;        // OK let's put it on the clipboard&lt;br /&gt;        putOnClipboard(patch);&lt;br /&gt;        showMessage("Patch converted to clipboard\n\n" + messages.toString());&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// show a simple message dialog&lt;br /&gt;function showMessage(message) {&lt;br /&gt; MessageDialog.openInformation(&lt;br /&gt;     window.getShell(), "Convert patch to workspace patch", message);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;function convertToWoskspacePatch(patch, messages) {&lt;br /&gt;  var reader =  new BufferedReader( new StringReader(patch));&lt;br /&gt;  var patchBeginPattern = Pattern.compile("^(---|[+][+][+]|RCS file:)\\s+([^\t\n,]+)");&lt;br /&gt;  var result =  new StringBuffer();&lt;br /&gt;  result.append("### Eclipse Workspace Patch 1.0\n");&lt;br /&gt;  var projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();&lt;br /&gt;  var guessedProjects =  new ArrayList();&lt;br /&gt;  var patchFound = false;&lt;br /&gt;  var line;&lt;br /&gt;  var prevLine = null;&lt;br /&gt;  var hunkFound = false;&lt;br /&gt;  while((line = reader.readLine()) != null) {&lt;br /&gt;    var m = patchBeginPattern.matcher(line);&lt;br /&gt;    if(m.find()) {&lt;br /&gt;      patchFound = true;&lt;br /&gt;      var fileName = m.group(2).trim();&lt;br /&gt;      var pathSegments = fileName.split("[/\\\\]");&lt;br /&gt;      var segment = 0; // the segment in the path that is the project&lt;br /&gt;      var projectName = null;&lt;br /&gt;      for(var i = 0; i &lt; pathSegments.length; i++) {&lt;br /&gt;        var name = pathSegments[i];&lt;br /&gt;        if(isProjectName(projects, name)) {&lt;br /&gt;          projectName = name;&lt;br /&gt;          segment = i;&lt;br /&gt;          hunkFound=true;&lt;br /&gt;          // report every guessed project only once&lt;br /&gt;          if(!guessedProjects.contains(projectName)) {&lt;br /&gt;            messages.append("Guessed Project: ");&lt;br /&gt;            messages.append(projectName);&lt;br /&gt;            messages.append("\n");&lt;br /&gt;            guessedProjects.add(projectName);&lt;br /&gt;          }&lt;br /&gt;          break;&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;      if(projectName != null) {&lt;br /&gt;        result.append("#P ");&lt;br /&gt;        result.append(projectName);&lt;br /&gt;        result.append("\n");&lt;br /&gt;        result.append("Index: ");&lt;br /&gt;        // concat the remaining path segments&lt;br /&gt;        for(var j = segment + 1; j &lt; pathSegments.length; j++) {&lt;br /&gt;          if(j != segment + 1) result.append("/");&lt;br /&gt;          result.append(pathSegments[j]);&lt;br /&gt;        }&lt;br /&gt;        result.append("\n");&lt;br /&gt;        result.append("===================================================================\n");&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    if(line.startsWith("+++")) {&lt;br /&gt;      if(!hunkFound) {&lt;br /&gt;        messages.append("No project found for: ");&lt;br /&gt;        messages.append(fileName);&lt;br /&gt;        messages.append("\n");&lt;br /&gt;      }&lt;br /&gt;      hunkFound = false;&lt;br /&gt;    }&lt;br /&gt;    if(prevLine != null) {&lt;br /&gt;      result.append(prevLine);&lt;br /&gt;      result.append("\n");&lt;br /&gt;    }&lt;br /&gt;    prevLine = line;&lt;br /&gt;  }&lt;br /&gt;  if(prevLine != null) {&lt;br /&gt;    result.append(prevLine);&lt;br /&gt;    result.append("\n");&lt;br /&gt;  }&lt;br /&gt;  reader.close();&lt;br /&gt;  if(!patchFound) &lt;br /&gt;    return null;&lt;br /&gt;  return result.toString();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function isProjectName(projects, name) {&lt;br /&gt;  // is the name a name of a project? &lt;br /&gt;  for(var i = 0; i &lt; projects.length; i++) {&lt;br /&gt;    if(projects[i].getName().equals(name)) &lt;br /&gt;     return true;&lt;br /&gt;  }&lt;br /&gt;  // ok let's guess...&lt;br /&gt;  if(name.startsWith("com.") || name.startsWith("org.")) {&lt;br /&gt;    return true;&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt;}&lt;br /&gt;function putOnClipboard(str) {&lt;br /&gt;  var clipboard =  new dnd.Clipboard(window.getShell().getDisplay());&lt;br /&gt;  try {&lt;br /&gt;    clipboard.setContents([str], [dnd.TextTransfer.getInstance()]);&lt;br /&gt;  } finally {&lt;br /&gt;    clipboard.dispose();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;function getFromClipboard() {&lt;br /&gt;  var textTransfer = dnd.TextTransfer.getInstance();&lt;br /&gt;  var clipboard =  new dnd.Clipboard(window.getShell().getDisplay());&lt;br /&gt;  try {&lt;br /&gt;    return clipboard.getContents(textTransfer);&lt;br /&gt;  } finally {&lt;br /&gt;    clipboard.dispose();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;--- And burbled as it ran! ---&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115464760006597644?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115464760006597644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115464760006597644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115464760006597644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115464760006597644'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/08/how-to-create-apply-patch-that.html' title='How to create apply a patch that contains changes in multiple projects?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115409968982396773</id><published>2006-07-28T16:54:00.000+02:00</published><updated>2006-08-03T15:17:38.143+02:00</updated><title type='text'>Why is super.super illegal?</title><content type='html'>Well, from time to time I have the need to call super.super. I wonder why this is illegal. Doing some research on the Internet, the best answer I can come up with is, that it breaks encapsulation of the super.super class. Hmm, probably true in a clean world, but sometimes you really want to call back back the original functionality: &lt;pre&gt;&lt;br /&gt;class A {&lt;br /&gt;    protected void foo(){..}&lt;br /&gt;}&lt;br /&gt;class B extends A {&lt;br /&gt;    protected void foo(){&lt;br /&gt;        super.foo();&lt;br /&gt;        doSomethingStupid();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;class C extends B {&lt;br /&gt;    protected void foo(){&lt;br /&gt;        &lt;b&gt;super.super&lt;/b&gt;.foo(); // it is illegal to omit the stupid stuff of class B&lt;br /&gt;        doSomethingUseful();&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Yes, B should not do stupid things. But why can't C undo what B does? In real software systems, that's exactly something that is somtimes needed. The answer that B should provide access to A.foo() if B thinks C would need it does not really satisfy me...&lt;br /&gt;&lt;br /&gt;Come on, if java would &lt;i&gt;really&lt;/i&gt; be concerned about encapsulation, all methods would default to &lt;code&gt;final&lt;/code&gt; unless otherwise specified. Does everybody think about the fact that any non-final public or protected method can be overridden? No! We live with this accidental breakage of encapsulation and why is the small breakage of encapsulation that super.super does forbidden? Hey, a subclass can just override any non-final method without calling super at all, right? And C can call &lt;i&gt;any&lt;/i&gt; method on B or A, but not &lt;code&gt;super.super.foo()&lt;/code&gt;....&lt;br /&gt;&lt;br /&gt;&lt;b&gt;But maybe someone can give me an explanation that can convince me....&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115409968982396773?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115409968982396773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115409968982396773' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115409968982396773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115409968982396773'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/07/why-is-supersuper-illegal.html' title='Why is super.super illegal?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115405893177528492</id><published>2006-07-28T05:50:00.000+02:00</published><updated>2006-08-14T11:17:11.846+02:00</updated><title type='text'>I hate ClassCastExceptions...</title><content type='html'>...because they don't tell me what the class of the "wrong" object was. No message, just empty. Where is the difficulty in telling me, what the actual type of the object was that caused the class cast exception? I rarely see them, but when I see them it's not informative enough -- I have to run the debugger but those rare class cast exceptions are often hard to reproduce...&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Sun, please add runtime type of the casted object to the ClassCastExceptions message &lt;/b&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115405893177528492?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115405893177528492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115405893177528492' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115405893177528492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115405893177528492'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/07/i-hate-classcastexceptions.html' title='I hate ClassCastExceptions...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-115404535379014653</id><published>2006-07-28T01:16:00.000+02:00</published><updated>2006-08-20T01:27:16.433+02:00</updated><title type='text'>How to setup some plugins to use java 1.5 in a java 1.4 workspace?</title><content type='html'>Most of the eclipse projects use and require java 1.4. Sometimes you want to create a new project to use java 1.5. If you simply install and select a java 1.5 in the &lt;i&gt;Preferences-&gt;Java-&gt;Installed JREs&lt;/i&gt;, that would work, but cause potential problems. One problem is that you might accidentally use 1.5 features in 1.4 projects. A simple statement like: &lt;pre&gt;string.replace("foo", "bar")&lt;/pre&gt; complies in this setup but will not run with a 1.4 jre, because &lt;pre&gt;replace(CharSequence target, CharSequence replacement)&lt;/pre&gt; is new in 1.5. &lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;The solution is to setup only the plugins that really need 1.5 to use 1.5&lt;/b&gt; Eclipse has the concept of &lt;a href="http://wiki.eclipse.org/index.php/Execution_Environments"&gt;&lt;em&gt;Execution Environments&lt;/em&gt;&lt;/a&gt; to specify which java JREs a plugin is compatible with.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;1. set in the preferences an 1.4 jre as default and have an 1.5 installed:&lt;br /&gt;&lt;p&gt; &lt;img src="http://www.scharf.gr/other/jre1.5-projects/prefs.gif"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;2. In the project properties set the java compiler 1.5 (which is &lt;i&gt;Compiler complience level 5.0&lt;/i&gt; -- how I love the ever changing java version naming...):&lt;br /&gt;&lt;p&gt;&lt;img src="http://www.scharf.gr/other/jre1.5-projects/properties1.gif"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;3. Set the execution environment in the build path to J2SE-1.5:&lt;br /&gt;&lt;p&gt;&lt;img src="http://www.scharf.gr/other/jre1.5-projects/properties2.gif"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;4. In the plugin MANIFEST.MF, set the execution environment to J2SE-1.5 as well:&lt;br /&gt;&lt;p&gt;&lt;img src="http://www.scharf.gr/other/jre1.5-projects/manifest1.gif"&gt;&lt;br /&gt;&lt;p&gt;You could also directly add the following line to the MANIFEST.MF file&lt;br /&gt;&lt;p&gt;&lt;img src="http://www.scharf.gr/other/jre1.5-projects/manifest2.gif"&gt;&lt;br /&gt;&lt;br /&gt;That's it :-)&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-115404535379014653?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/115404535379014653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=115404535379014653' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115404535379014653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/115404535379014653'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/07/how-to-setup-some-plugins-to-use-java.html' title='How to setup some plugins to use java 1.5 in a java 1.4 workspace?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-114680257763780392</id><published>2006-05-05T06:06:00.000+02:00</published><updated>2006-05-06T21:14:16.313+02:00</updated><title type='text'>How to start the OSGI console?</title><content type='html'>Yesterday, I posted two bugs for 3.2. For both bugs I got the reply I should use the osgi console to get some information. In one case to get the loaded plugins and in the other case to get a stracktrace of all threads. So, how to start the osgi console?&lt;br /&gt;&lt;br /&gt;I found the &lt;a href="http://www.eclipse.org/eclipse/platform-core/documents/3.1/debug.html"&gt;Gathering Information About Your Plug-in&lt;/a&gt; page.&lt;br /&gt;&lt;br /&gt;On windows you have to start eclipse with java.exe (instead of javaw.exe) in odrer to ge a console window. Therefore, add &lt;code&gt;-vm C:\YOURVMPATH\bin\java.exe&lt;/code&gt; tho the eclipse start command (or shortcut). To get the OSGI console &lt;code&gt;-consol&lt;/code&gt; as startup parameter.&lt;br /&gt;&lt;br /&gt;Now to see all plugins (and the state of the plugins) simply type &lt;code&gt;ss&lt;/code&gt; into the console. To get a stracktrace of all threads hit ctrl-break in the console window (I had a hard time finding the break key on my keyboard. it's the top right key on my keyboard)&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-114680257763780392?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/114680257763780392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=114680257763780392' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/114680257763780392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/114680257763780392'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/05/how-to-start-osgi-console.html' title='How to start the OSGI console?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-114065796681055303</id><published>2006-02-23T02:18:00.000+01:00</published><updated>2006-02-23T02:26:07.410+01:00</updated><title type='text'>What does eclipse API freeze mean?</title><content type='html'>The eclipse 3.2 APIs have been frozen. John Arthorne has &lt;a href="http://dev.eclipse.org/mhonarc/lists/eclipse-dev/msg07421.html"&gt;send a mail&lt;/a&gt; to eclipse-dev@eclipse.org: &lt;br /&gt;&lt;br /&gt;&lt;cite&gt;Between now and the 3.2 release, all changes to API require the following action &lt;strong&gt;before&lt;/strong&gt; releasing any code: &lt;br /&gt;&lt;OL&gt;&lt;br /&gt;&lt;LI&gt; A bug report describing the change, and the reason it is required. &lt;br /&gt;&lt;LI&gt; Approval from a PMC member (in the form of a +1 on the bug report). &lt;br /&gt;&lt;/OL&gt;&lt;br /&gt;Also, if it is a breaking API change, you should search for references across the SDK, and coordinate the release with any clients that have already adopted the API being broken. &lt;br /&gt;&lt;br /&gt;The PMC has asked Boris Bokowski and I to track API changes during this period.  Please also CC either Boris or myself on the bug so we can keep track of the changes. &lt;br /&gt;&lt;/cite&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-114065796681055303?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/114065796681055303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=114065796681055303' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/114065796681055303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/114065796681055303'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/02/what-does-eclipse-api-freeze-mean.html' title='What does eclipse API freeze mean?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113864159250618209</id><published>2006-01-30T17:27:00.000+01:00</published><updated>2006-08-02T12:00:52.913+02:00</updated><title type='text'>SWT/JFace integer flags and constructors</title><content type='html'>SWT/JFace is pretty cool. But one thing I will never understand is why the heck are the flags in the constructor of widgets integers. Let's take TableViewer as example: &lt;code&gt;TableViewer(Composite parent, int style)&lt;/code&gt;. When you want to set style parameter, code completion does not help. So you have to read the (3.1) javadoc of &lt;a href="http://help.eclipse.org/help31/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/viewers/TableViewer.html#TableViewer(org.eclipse.swt.widgets.Composite,%20int)"&gt;TableViewer&lt;/a&gt; it says: &lt;code&gt;@param style SWT style bits&lt;/code&gt;. Great, but not very helpful. Ok if you are clever, you know that TableViewer passes the &lt;code&gt;status&lt;/code&gt; flags directly to the &lt;a href="http://help.eclipse.org/help31/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Table.html#Table(org.eclipse.swt.widgets.Composite,%20int)"&gt;Table&lt;/a&gt; constructor. The documentatios there there indicates that the following flags can be used &lt;code&gt;SWT.SINGLE, SWT.MULTI, SWT.CHECK, SWT.FULL_SELECTION, SWT.HIDE_SELECTION, SWT.VIRTUAL&lt;/code&gt;&lt;br /&gt;Ok this gives you a hint, what to use. But if you follow the link to &lt;code&gt;&lt;a href="http://help.eclipse.org/help31/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/SWT.html#MULTI"&gt;SWT.MULTI&lt;/a&gt;&lt;/code&gt;, you read: "Used by Text,List and FileDialog"... Hmm, no mentioning of Table....&lt;br /&gt;&lt;br /&gt;I don't want to blame the documentation. The problem comes from the design choice to use integer bits constants in the first place. If you look into the class &lt;a href="http://help.eclipse.org/help31/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/SWT.html"&gt;SWT&lt;/a&gt;, you are simply overwhelmed by all the integer constants. I see two solutions (in Java 1.4): &gt;&lt;ol&gt;&lt;li&gt;eclipse supports structured comments for code completion, and the javadoc would reflect the flags correctly.&lt;/li&gt;&lt;li&gt;Use some classes representing the flags:&lt;/li&gt;&lt;/ol&gt;If Table would have a public static inner class like this:&lt;pre&gt;&lt;br /&gt; public static class Style {&lt;br /&gt;  int flags;&lt;br /&gt;  public Style(){}&lt;br /&gt;  protected Style(int flags) {&lt;br /&gt;   this.flags=flags;&lt;br /&gt;  }&lt;br /&gt;  public Style multi() {&lt;br /&gt;   return new Style(flags|SWT.MULTI);&lt;br /&gt;  }&lt;br /&gt;  public Style full_selection() {&lt;br /&gt;   return new Style(flags|SWT.FULL_SELECTION);&lt;br /&gt;  }&lt;br /&gt;  ...&lt;br /&gt; }&lt;/pre&gt;Then the constructor of TableViewer and Table would take this class. You would have all the benefits of code completion and documentation. Internally, SWT could still use integer bit flags, but as a user I would have a fully typed constructor: Instead of &lt;code&gt;new TableViewer(parent,SWT.MULTI|SWT.FULL_SELECTION)&lt;/code&gt; I would use the fully typed construct &lt;code&gt;new TableViewer(parent,new Table.Style().multi().full_selection())&lt;/code&gt;. Code completion would help me. No more wrong flags! I would love to see additional constructors(and methods) with typed versions....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113864159250618209?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113864159250618209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113864159250618209' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113864159250618209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113864159250618209'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/swtjface-integer-flags-and.html' title='SWT/JFace integer flags and constructors'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113823739233875287</id><published>2006-01-26T01:34:00.000+01:00</published><updated>2006-01-26T02:07:32.706+01:00</updated><title type='text'>Two projects approved: Mobile Tools for Java (MTJ) and Native Application Builder (eWideStudio)</title><content type='html'>Yesterday I attended the the creation review of two projects, both are part of the &lt;a href="http://www.eclipse.org/dsdp/"&gt;DSDP (Device Software Development Platform)&lt;/a&gt; top level project:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/proposals/mtj/"&gt;Mobile Tools for Java (MTJ)&lt;/a&gt;: The project provides tools for java development on mobile devices. A kind of PDE for mobile devices. It does not provide any library on the devices, but tools for developers to create software on those devices. It deals with deployment to a development target (emulator or real target), device emulators, the build process and debugging. Nokia, from Finland, is the driving force.&lt;/li&gt;&lt;li&gt;&lt;a href="Yesterday"&gt;Native Application Builder (eWideStudio)&lt;/a&gt;: There is a cool Japanese open source UI library called &lt;a href="http://www.widestudio.org/"&gt;WideStudio/MWT&lt;/a&gt;. It runs on all kind of operating systems but is also tuned for mobile devices. If you have ever been in Japan, you might know that Japan are far ahead when it comes to mobile devices compared to US and Europe. This project will integrate this library into eclipse and CDT. There's also a UI builder for eclipse (I should have asked if it is integrated into VE or if it is independent). There is some overlap with eRCP and eSWT, but this is a C/C++ library. Since it's Japanese (sponsored by Fujitsu), you don't have to worry about problems with 16 bit characters ;-). &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113823739233875287?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113823739233875287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113823739233875287' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113823739233875287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113823739233875287'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/two-projects-approved-mobile-tools-for.html' title='Two projects approved: Mobile Tools for Java (MTJ) and Native Application Builder (eWideStudio)'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113815743184089198</id><published>2006-01-25T03:41:00.000+01:00</published><updated>2006-01-27T21:40:09.410+01:00</updated><title type='text'>A List of all Component Areas of Platform UI</title><content type='html'>Platform UI is divided into more than 50 areas, like JFace, KeyBindings, ProgressBar, Viewers, Wizards, IDE etc. In bugzilla, bugs are tagged with square brackets in the bug report subject headings to indicate the affected area.&lt;br /&gt;&lt;br /&gt;The&lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-ui-home/componentAreas.html"&gt;Component Areas for Platform UI&lt;/a&gt; lists the name, a short description, a link to the related bugs and the owner of the component area.&lt;br /&gt;&lt;br /&gt;It's also a cool starting point to understand what is in the eclipse platform....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113815743184089198?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113815743184089198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113815743184089198' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113815743184089198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113815743184089198'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/list-of-all-component-areas-of.html' title='A List of all Component Areas of Platform UI'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113806863714556598</id><published>2006-01-24T03:01:00.000+01:00</published><updated>2006-04-08T11:08:08.666+02:00</updated><title type='text'>Eclipsecon recommendations...</title><content type='html'>Eclipse-con allows you to write your personal recommendations which talks you think are interesting and what you want to attend. Just &lt;a href="http://www.eclipsecon.org/2006/Table.do?id=all&amp;amp;date=2006-3-21"&gt;look at this&lt;/a&gt;, at the bottom you can choose which recommendations you want to highlight. It's a cool idea. So, I did it. I created an new &lt;a href="http://canuck.gda.itesm.mx/eclipsezilla/show_bug.cgi?id=409"&gt;eclipsezilla entry&lt;/a&gt; of type "Recommendation". Then I read the program and I wrote down my thoughts while deciding which talks I want to attend. Just use the eclisezilla id of the talk (the ...id=123) and put cite it as 'submission #123' in the text. My &lt;a href="http://www.eclipsecon.org/2006/Sub.do?id=409"&gt;recommendation &lt;/a&gt;got be accepted :-)&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113806863714556598?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113806863714556598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113806863714556598' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113806863714556598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113806863714556598'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/eclipsecon-recommendations.html' title='Eclipsecon recommendations...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113781864631406650</id><published>2006-01-21T05:19:00.000+01:00</published><updated>2006-05-10T13:04:53.426+02:00</updated><title type='text'>How to speed up eclipse on a Laptop: disable virus-scanner, partition disk, upgrade memory</title><content type='html'>&lt;p&gt;I have a Dell Lattitude 600 with 1GB of memory. Starting eclipse and building workspaces is slow. So I was looking for ways to improve speed. Here is what I did over time:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Disabled the virus scanner for the eclipse directory&lt;/strong&gt; and the workspace. McAfee's on-access-scan scans the entire file when a process accesses it. When eclipse starts is only reads small fractions of .jar files. However McAffee scanned the entire file which really slows down start-up by a factor of 2: cold start-up (=newly booted machine) 95 sec without versus 215 secs with virus scanner on.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Partitioned my disk&lt;/strong&gt;: I tried all kinds of defragmentation (oodefrag and diskkeeper), but nothing really helped, some made it even worse.. However one problem is that compiling creates new files and that leads to new fragmentation. Now I created a relatively small partition with my workspace. Even if this gets totally fragmented, the disk head in confined within the partition. It gave me some speedup, but I have not measured it, but it was dramatic. I wish there was a defragmentation tool, that could observe the startup of eclipse and then rearrange the files so that the access is optimal. I know such tools exist for the startup .exe files, but we need something for the startup of a system like eclipse....&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Upgraded the memory to 2Gb and disabled the page file&lt;/strong&gt;: Yesterday, I did the upgraded and it's great. With 2 eclipse open, outlook, trillian, thunderbird, firefox, and a few other programs, I use about 1.5Gb of memory with enough space for the disk cache. That's a real blast: because no application gets paged out anymore, I don't have to worry about switching between applications. No more long interruptions when eclipse garbage collects. It's so new, I still can't believe that I don't have to wait anymore when I switch between applications. And 2 workspaces open in parallel is no problem anymore....&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In a nutshell: &lt;strong&gt;It's all about minimizing disk access&lt;/strong&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113781864631406650?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113781864631406650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113781864631406650' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113781864631406650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113781864631406650'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/how-to-speed-up-eclipse-on-laptop.html' title='How to speed up eclipse on a Laptop: disable virus-scanner, partition disk, upgrade memory'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113745835227100504</id><published>2006-01-17T01:28:00.000+01:00</published><updated>2006-01-18T03:30:46.353+01:00</updated><title type='text'>MDSD: A European Phenomenon?</title><content type='html'>Yesterday, I wrote about my confusion with the &lt;a href="http://michaelscharf.blogspot.com/2006/01/i-am-confused-by-omg-mof-4-layers.html"&gt;4 metamodel layers of MOF&lt;/a&gt;. Ed Willink )GB!) pointed me to a nice (French) &lt;a href="http://www.sciences.univ-nantes.fr/lina/atl/www/papers/PositionPaperKurtev.pdf"&gt;paper about MOF&lt;/a&gt;. Their application of the layer is very similar to my understanding :-).&lt;br /&gt;&lt;br /&gt;When searching for concepts around MOF and &lt;a href="http://www.mdsd.info/mdsd_cm/headlines.php"&gt;MDSD&lt;/a&gt; there very many European hits:&lt;br /&gt;&lt;UL&gt;&lt;LI&gt;&lt;a href="http://www.google.com/search?&amp;q=MOF+m0+m1+m2+m3+metamodel"&gt;MOF m0 m1 m2 m3 metamodel&lt;/a&gt;&lt;br /&gt;&lt;LI&gt;&lt;a href="http://www.google.com/search?q=MDSD+MOF"&gt;MDSD MOF&lt;/a&gt;&lt;br /&gt;&lt;LI&gt;&lt;a href="http://www.google.com/search?q=MDSD+MOF"&gt;MDSD MOF&lt;/a&gt;&lt;br /&gt;&lt;LI&gt;&lt;a href="http://www.google.com/search?q=MDSD+Model%2DDriven+Software+Development+MOF"&gt;MDSD Model-Driven Software Development&lt;/a&gt;&lt;/UL&gt;&lt;br /&gt;Is this a European Phenomenon? There is a kind of pattern: many new concepts are invented and researched in Europe, but commercial success often comes when American companies pick it up....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113745835227100504?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113745835227100504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113745835227100504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113745835227100504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113745835227100504'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/mdsd-european-phenomenon.html' title='MDSD: A European Phenomenon?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113745857308701614</id><published>2006-01-17T01:05:00.000+01:00</published><updated>2006-01-17T02:24:33.953+01:00</updated><title type='text'>I am confused by OMG MOF 4 layers applied to MDSD and UML...</title><content type='html'>Today I tried to explain to some colleges the 4 layers of the &lt;a href="http://www.omg.org/mof/"&gt;OMG &lt;/a&gt;Meta-Object Facility (&lt;a href="http://www.omg.org/docs/formal/02-04-03.pdf"&gt;MOF&lt;/a&gt;). At first it sounds quite trivial:&lt;br /&gt;&lt;br /&gt;&lt;UL&gt;&lt;LI&gt;Level M0: User Object Layer (Instances)&lt;br /&gt;&lt;LI&gt;Level M1: Model (DSL – Domain Specific Language)&lt;br /&gt;&lt;LI&gt;Level M2: Meta-Model (Schema description Language)&lt;br /&gt;&lt;LI&gt;Level M3: Meta-Meta-Model (The Schema of the Schema)&lt;/UL&gt;&lt;br /&gt;Surprisingly applying the levels to concrete problems is not always obvious or straight forward. &lt;br /&gt;I used the plugin.xml file as an example. I take here a &lt;a href="http://www.mdsd.info/mdsd_cm/headlines.php"&gt;MDSD&lt;/a&gt; centric approach, by assuming that the plugin.xml file "generates" the plugin....&lt;br /&gt;&lt;UL&gt;&lt;LI&gt;Level M0: (Instance) The deployable component&lt;br /&gt;&lt;LI&gt;Level M1: (Model) The plugin.xml file itself &lt;br /&gt;&lt;LI&gt;Level M2: (Meta-Model) The extension point schema description (.exsd) files&lt;br /&gt;&lt;LI&gt;Level M3: (Meta-Meta-Model) Schema of the .exsd files (implemented somehow in the .exsd editor)&lt;/UL&gt;&lt;br /&gt;Someone (a compiler person) asked me, how I would apply this to a programming language like C.&lt;br /&gt;&lt;UL&gt;&lt;LI&gt;Level M0: (Instance) Executable code&lt;br /&gt;&lt;LI&gt;Level M1: (Model) .C file (or a AST (Abstract Syntax Tree) representation) &lt;br /&gt;&lt;LI&gt;Level M2: (Meta-Model) C language syntax definition (e.g. in yacc)&lt;br /&gt;&lt;LI&gt;Level M3: (Meta-Meta-Model) Yacc language syntax definition&lt;/UL&gt;&lt;br /&gt;In this case, the meta model describes the constraints on the are AST (that's what the CDT does). This shows, that it makes sense to have a DSL (Domain Specific Language) at some levels. The DSL of C is simply the c syntax. The DSL of the c-syntax is yacc (or EBNF)... It is also interesting to have transformation between different representations of a model at the same level. C versus AST, yacc versus EBNF... The "code generation" happens between M1 and M0 (compiling). Another code generation happens between M2 and M1 when using a compiler-compiler like yacc.&lt;br /&gt;&lt;br /&gt;But whenever I read about UML and MOF I get confused. This might have to do with the fact that I never really used UML....&lt;br /&gt;&lt;UL&gt;&lt;LI&gt;Level M0: (Instance) Generated C/Ada code&lt;br /&gt;&lt;LI&gt;Level M1: (Model) Concrete UML diagrams&lt;br /&gt;&lt;LI&gt;Level M2: (Meta-Model) UML "language"&lt;br /&gt;&lt;LI&gt;Level M3: (Meta-Meta-Model) ??&lt;/UL&gt;&lt;br /&gt;Again, a generator/transformer is applied between M1 and M0. Is this a correct application of MOF to UML?&lt;br /&gt;&lt;br /&gt;But explaining both (the MDSD and the UML approach) to someone who has not been exposed to modeling gets very confusing.&lt;br /&gt;&lt;br /&gt;So, in "my world" I prefer to see the MOF hierarchy very MDSD centric. I wonder if the MDSD centric view is confusing for UML experts is is the a natural way to see the world....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113745857308701614?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113745857308701614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113745857308701614' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113745857308701614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113745857308701614'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/i-am-confused-by-omg-mof-4-layers.html' title='I am confused by OMG MOF 4 layers applied to MDSD and UML...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113720164005556091</id><published>2006-01-14T01:44:00.000+01:00</published><updated>2006-01-14T02:58:14.093+01:00</updated><title type='text'>The new jface.databinding needs users....</title><content type='html'>Yesterday I met Boris Bokowski. He is member of the core UI team in Ottawa and he worked on the &lt;a href="http://wiki.eclipse.org/index.php/JFace_Data_Binding"&gt;jface.databindings&lt;/a&gt; framework. The databinding frameworks simplifies linking between UI elements and data models. You essentially link an attribute of a model with a widget, like a text field, checkbox or a tree ore table viewer. The framework registers listeners to the model and the widget and when one changes the other gets updated. It has also support for validation.&lt;br /&gt;&lt;br /&gt;It is not clear if it will be API or experimental in 3.2. &lt;strong&gt;Feature freeze is soon, and users of the framework are needed.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;One interesting idea in jface.databinding is that UI elements and data models are treated the same. That means, the same mechanism (IUpdatable) is used to talk to the UI and to the data model. IUpdatableFactory creates an IUpdatable for an Object. Default IUpdatableFactory for SWT widgets and java classes (using bean properties) exist. This makes jface.databinding very flexible. But this flexibility makes it too complicated for my taste. I think it suffers a bit from trying to solve too many problems. If it would be limited to provide binding needed for typical dialogs (standard SWT elements), it would cover the 80% case. Getting 100% and being very simple is probably not possible. &lt;br /&gt;&lt;br /&gt;I have created several similar databinding frameworks in my career. The first ones were based on &lt;a href="http://www.ifi.unizh.ch/groups/mml/people/bwagner/ET++.pdf"&gt;ET++&lt;/a&gt;. Later I create a binding framework for swing and recently one for SWT. The major difference between my binding frameworks and the jface.databinding is that there are widgets on one side and a datamodel on the other (no attempt to unify data access and UI access). A "ValueAccessor" represents an attribute in a model. ValueAccessor provides information typically needed for dialogs: &lt;code&gt;value, valueAsString, isEnabled, isDefault, default, labelProvider&lt;/code&gt; (jface.databinding.IUpdatable in contrast, does not model enablement nor defaults nor label providers). My bindings is much less generic but it is much more targeted to bind a model to a UI. You then essentially bind a widget with a valueaccessor. My Binding class knows how to bind SWT widgets to ValueAccessors. &lt;br /&gt;&lt;br /&gt;There is already a kind of very simple databinding in eclipse: The preferences.FieldEditor classes. This is limited to binding to preferences and it also provides some automated layout. And it is not flexible enough to be a general binding fremawork. But I wish the jface.databinding would have some simplicity of the FieldEditors...&lt;br /&gt;&lt;br /&gt;Maybe a simple layer on top of jface.databinding could help....&lt;br /&gt;&lt;br /&gt;Anyway, I wonder what others think about the jface.databinding framework...&lt;br /&gt;&lt;br /&gt;Resources: &lt;UL&gt;&lt;LI&gt;&lt;a href="http://wiki.eclipse.org/index.php/JFace_Data_Binding"&gt;jface.databindings wiki page&lt;/a&gt;&lt;br /&gt;&lt;LI&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104570"&gt;The main bugzlla entry: Data binding framework for SWT and RCP needed&lt;/a&gt;&lt;br /&gt;&lt;LI&gt;&lt;a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=substring&amp;short_desc=%5BDataBinding%5D&amp;classification=Eclipse&amp;product=Platform&amp;component=UI&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED"&gt;bugzilla entries&lt;/a&gt;&lt;br /&gt;&lt;/UL&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113720164005556091?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113720164005556091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113720164005556091' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113720164005556091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113720164005556091'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/new-jfacedatabinding-needs-users.html' title='The new jface.databinding needs users....'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113704176118477367</id><published>2006-01-12T05:50:00.000+01:00</published><updated>2006-01-19T04:04:36.896+01:00</updated><title type='text'>Stop Windows Update to Reboot Nag Dialog: sc stop wuauserv</title><content type='html'>When installing updates on Windows XP SP2, sometimes there is this annoying dialog that forces you to reboot your system. If you say "No" it will come up after a few minutes again and again....&lt;br /&gt;&lt;br /&gt;To stop this, run the command &lt;code&gt;sc stop wuauserv&lt;/code&gt;. This will stop the update service. After the service is stopped, the nag message stops, too. Then you can reboot when you have time. The service will restart when you reboot.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113704176118477367?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113704176118477367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113704176118477367' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113704176118477367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113704176118477367'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/stop-windows-update-to-reboot-nag.html' title='Stop Windows Update to Reboot Nag Dialog: sc stop wuauserv'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113703356916419482</id><published>2006-01-12T03:39:00.000+01:00</published><updated>2006-01-13T01:57:58.396+01:00</updated><title type='text'>When seamless integration becomes a nightmare...</title><content type='html'>Eclipse is a great integration platform. There are many plugins that work together very nicely. As a user you don't have to worry where a menu item, a new wizard, a preference page, a view or an editor, etc comes from. You install a plugin &lt;a href="http://michaelscharf.blogspot.com/2006/01/plugin-overloaded-and-confusing-term.html"&gt;(or add-in or extension)&lt;/a&gt; , and it's integrated. Great!&lt;br /&gt;&lt;br /&gt;However, &lt;strong&gt;the dark side is, that it's very hard to figure out what a particular "plugin" is contributing to eclipse&lt;/strong&gt;. Just make the experiment: install 30 plugins you have never used before from &lt;a href="http://eclipse-plugins.info/eclipse/plugins.jsp"&gt;eclipse-plugins.info&lt;/a&gt; into your eclipse installation. Now you have new views, editors, context menu entries, toolbar items, menu items, new wizard items, export/import wizard entries, preference pages, perspectives, help pages, cheat sheets, property pages, keyboard shortcuts, perspectives... &lt;strong&gt;But you have no idea which contribution belongs to which plugin.&lt;/strong&gt; But without a map in your mind what a particular plugin is contributing it is very hard to use and it's hard to understand what to expect from a new plugin.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;My personal strategy is to install plugins one by one into a well known eclipse environment.&lt;/strong&gt; I take some time trying to figure out what the contributions of a plugin are. That's tough enough for me as an experienced eclipse user. It must be a nightmare for someone who starts using eclipse, because he typically starts with a "product" that consists of a set of pre-installed plugins (just like installing 30 plugins at once)... I also install each "plugin" in its own eclipse extension location so I can easily uninstall it later (but that's another story). Really problematic are contributions to wizard pages and context menus of some objects in tree views. Unless you have selected the right obeject you don't see the contribution. I often install a plugin and then I ask myself: "And now? How do I find out where it contributes?". This is particularly problematic with small not well documented plugins: I install it and I have no clue where search for its contributions.&lt;br /&gt;&lt;br /&gt;What could be done to help users identifying the things that have been added by a plugin? Maybe a kind of plugin inspector (feature inspector), that lists in a view all the contributions of a plugin (feature, add-in, extenison).  &lt;br /&gt;&lt;br /&gt;Windows highlights newly installed programs in the start menus. Maybe there could be a setting to highlight the contributions of a particular feature.&lt;br /&gt;&lt;br /&gt;Any ideas how to solve the problem?&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113703356916419482?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113703356916419482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113703356916419482' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113703356916419482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113703356916419482'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/when-seamless-integration-becomes.html' title='When seamless integration becomes a nightmare...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113703298656307330</id><published>2006-01-12T03:29:00.000+01:00</published><updated>2006-01-27T02:25:37.113+01:00</updated><title type='text'>"Plugin": an overloaded and confusing term in eclipse</title><content type='html'>When people talk about "plugins" in the context of eclipse, they mean two very different things: &lt;br /&gt;&lt;br /&gt;&lt;OL&gt;&lt;LI&gt;Technically speaking a "plugin" is an installable OSGi plugin, which ends up in the plugins direcory of an eclipse installation (or one of its extension location) and gets loaded when eclipse starts. It can either be a directory or a .jar file. It must contain a MANIFEST.MF and/or a plugin.xml file. Multiple plugins can be assembled into an installable "feature". (Which is also confusing, that a "feature" consists of a set of plugins. As a navive person I would expect a plugin to have multiple features).&lt;br /&gt;&lt;br /&gt;&lt;LI&gt;Eclipse users think of "plugins" at a higher level of granularity. If you go to &lt;a href="http://eclipse-plugins.info/eclipse/plugins.jsp"&gt;eclipse-plugins.info&lt;/a&gt;, there are over 1000 "plugins" to install. But those plugins usually consist of multiple OSGi plugins and installable features...&lt;/OL&gt;&lt;br /&gt;&lt;br /&gt;You often hear: &lt;em&gt;"Oh, if found this new and cool eclipse plugin, you should install it and try it"&lt;/em&gt;. In this case the speaker rarely means a single OSGi plugin, but an "eclipse extension". If you hear: &lt;em&gt;"My plugin depends on plugin org.foo.bar"&lt;/em&gt;, we are talking about OSGi plugins.&lt;br /&gt;&lt;br /&gt;Therefore it can be very confusing to talk about "plugins". And I think "user plugins" should be called &lt;strong&gt;eclipse extensions&lt;/strong&gt; or &lt;strong&gt;add-ins&lt;/strong&gt; or something that can not be confused with technical plugins. &lt;br /&gt;&lt;br /&gt;Any ideas how to resolve this confusion?&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113703298656307330?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113703298656307330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113703298656307330' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113703298656307330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113703298656307330'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/plugin-overloaded-and-confusing-term.html' title='&quot;Plugin&quot;: an overloaded and confusing term in eclipse'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113695754692609512</id><published>2006-01-11T05:50:00.000+01:00</published><updated>2006-01-11T06:45:26.730+01:00</updated><title type='text'>Future Trends (for C/C++): AOP and MDSD...</title><content type='html'>I think two trends will change the way we develop software in the future: &lt;a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming"&gt;Aspect Oriented Programming (AOP)&lt;/a&gt; and &lt;a href="http://www.mdsd.info/"&gt;Model Driven Software Development (MDSD)&lt;/a&gt;. Being an OO programmer for 20 years and working on Java and eclipse, that's not surprising. Eclipse hosts the &lt;a href="http://www.eclipse.org/aspectj/"&gt;AspectJ project&lt;/a&gt; and there is a &lt;a href="http://acdt.aspectc.org/"&gt;AspectC/C++ plugin&lt;/a&gt;. The eclipse &lt;a href="http://www.eclipse.org/gmt"&gt;Generative Model Transformer project (GMT)&lt;/a&gt; is an interesting research ground for MDSD. &lt;a href="http://www.openarchitectureware.org/staticpages/index.php/overview"&gt;OpenArchitectureWare&lt;/a&gt; also provides eclipse plugins for MDSD.&lt;br /&gt;&lt;br /&gt;However, most of the programmers that only develop in C have no clue what's coming. It might sound for them like another hype (similar to OOP) and they feel it won't change their world because it's so far away and esoteric. But AOP and MDSD is closer to their world than they think. In some sense AOP and MDSD act like an "advanced" C preprocessor. Adding "aspects" today is often done #ifdefs and complex macros are used to "generate" code. Those lost in #ifdes and #defines might find it helpful to get new tools at their hand that allow them to do what they always did but at a higher level....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113695754692609512?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113695754692609512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113695754692609512' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113695754692609512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113695754692609512'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2006/01/future-trends-for-cc-aop-and-mdsd.html' title='Future Trends (for C/C++): AOP and MDSD...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113555427494442736</id><published>2005-12-26T00:25:00.000+01:00</published><updated>2005-12-26T00:47:49.256+01:00</updated><title type='text'>Simplified resource bundle handling with osgi.util.NLS</title><content type='html'>In eclipse 3.1 there is a new package org.eclipse.osgi.util.NLS. This class allows you to have simple access to a resource bundle.&lt;br /&gt;&lt;pre&gt;public class MyMessages extends NLS {&lt;br /&gt; private static final String BUNDLE_NAME = "gr.scharf.MyMessages"; //$NON-NLS-1$&lt;br /&gt;&lt;br /&gt; public static String HELLO_WORLD;&lt;br /&gt; public static String HELLO_SOMETHING;&lt;br /&gt;&lt;br /&gt; static {&lt;br /&gt;  // initialize resource bundles&lt;br /&gt;  NLS.initializeMessages(BUNDLE_NAME, MyMessages.class);&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;And in the file gr/scharf/MyMessages.properties I put:&lt;br /&gt;&lt;pre&gt;  HELLO_WORLD=Hello world!&lt;br /&gt;  HELLO_SOMETHING=Hello {0}!&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then access to the properties is very simple:&lt;br /&gt;&lt;pre&gt;    System.out.println(MyMessages.HELLO_WORLD);&lt;br /&gt;    System.out.println(MyMessages.bind(MyMessages.HELLO_SOMETHING,"world"));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pretty cool, I think, because it loads the strings from the .properties file into the Messages class transparently. This also helps searching for strings in the code, because it is the same name as in the .properties file.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113555427494442736?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113555427494442736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113555427494442736' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113555427494442736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113555427494442736'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/12/simplified-resource-bundle-handling.html' title='Simplified resource bundle handling with osgi.util.NLS'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113553579530751222</id><published>2005-12-25T19:23:00.000+01:00</published><updated>2005-12-25T19:36:37.956+01:00</updated><title type='text'>When workspaces don't build correctly....</title><content type='html'>I have some workspaces that are quite 'old'. They have been used with several versions of eclipse. It happens quite often, when I add or remove a project that those workspaces do not build. Eclipse complains that some project should be build first and I should clean the workspace. Well, cleaning the workspace does not help. So, I opened and closed some projects until I got it to work. Very frustrating! It seems that the build order is wrong.&lt;br /&gt;&lt;br /&gt;Today, I had the problem again. But I looked at &lt;strong&gt;Preferences-&gt;General-&gt;Workspace-&gt;"Build Order".&lt;/strong&gt; There nothing was set and "use default build order" was unchecked. &lt;strong&gt;I checked &lt;em&gt;use default build order&lt;/em&gt; and now it works!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Am I the only one having this problem? I wonder if something has changed between two versions of eclipse and the "Build Order" setting did not migrate well and caused that problem.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113553579530751222?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113553579530751222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113553579530751222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113553579530751222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113553579530751222'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/12/when-workspaces-dont-build-correctly.html' title='When workspaces don&apos;t build correctly....'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113461379889032563</id><published>2005-12-15T03:29:00.000+01:00</published><updated>2005-12-15T08:59:21.236+01:00</updated><title type='text'>How to split eclipse plugins into features?</title><content type='html'>At the eclipse council meeting this week, we discussed pluging dependencies. There was some controversy on how to split features.&lt;br /&gt;&lt;br /&gt;I think&lt;strong&gt; installable features should minimize external dependencies&lt;/strong&gt;. If possible, put plugins that have no external dependencies (=depend only to the platform) into a feature. And put plugins with external dependencies into other features.&lt;br /&gt;&lt;br /&gt;Some (bad) examples to illustrate the problem, of what happens if you create features that contain everything:&lt;br /&gt;&lt;br /&gt;At the level of features &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106804"&gt;EMF requires JDT&lt;/a&gt;. This means: although you can have a meaningful set of plugins (that is the EMF runtime) that do not require JDT, there is currently no way to properly install EMF without installing JDT (else you get some kind of errors in the error log).&lt;br /&gt;&lt;br /&gt;The other bad example is &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=50517"&gt;the PDE error log&lt;/a&gt;: If you want to use the PDE error log, you have to install PDE and JDT. In practice, you can simply install &lt;em&gt;org.eclipse.pde.runtime,&lt;/em&gt; and it works fine. However, if someone installs PDE in another extension location, eclipse will complain.&lt;br /&gt;&lt;br /&gt;Therefore, installable features should allow you to use a "meaningful" set of plugins without pulling in the rest of the world...&lt;br /&gt;&lt;br /&gt;Take-home message: &lt;strong&gt;When you create features ask yourself if there is a useful subset of plugins that has minimal external dependencies and create a feature for those.&lt;/strong&gt; Others using these plugins will not be forced to install the rest.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113461379889032563?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113461379889032563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113461379889032563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113461379889032563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113461379889032563'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/12/how-to-split-eclipse-plugins-into.html' title='How to split eclipse plugins into features?'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113383810538624705</id><published>2005-12-06T03:55:00.000+01:00</published><updated>2005-12-08T14:18:18.356+01:00</updated><title type='text'>eclipse news and findings 2005-12-05</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/org/foundation/eclipseawards/"&gt;Eclipse planning meeting highlight:&lt;/a&gt; discussed options with UA to embed help/cheatsheet in dialogs&lt;/li&gt;&lt;li&gt;&lt;a href="http://eclipse.org/tptp/home/downloads/whatsnew/v410/new_and_noteworthy.html"&gt;TPTP 4.1 (Eclipse Test &amp;amp; Performance Tools Platform Project) released&lt;/a&gt;: Tool vendors can now build TPTP-based performance tools for applications in C/C++ and other compiled languages. The TPTP data model has been expanded to support application performance data from non-Java applications, such as C/C++.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ward Cunningham and Bjorn Freeman-Benson are working on &lt;a href="http://eclipse-projects.blogspot.com/2005/11/our-first-published-script.html"&gt;eclipse monkey&lt;/a&gt; (adding scripting to eclipse(java script)). They also proposed a technology project '&lt;a href="http://eclipse-projects.blogspot.com/2005/12/project-dash-proposal-updated-with.html"&gt;Dash&lt;/a&gt;' for eclipsemonkey.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipsezone.com/eclipse/forums/t55010.html"&gt;ListenerList and other classes moved in Eclipse 3.2 runtime&lt;/a&gt;: (eclipse is reducing copied code...)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113383810538624705?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113383810538624705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113383810538624705' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113383810538624705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113383810538624705'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/12/eclipse-news-and-findings-2005-12-05.html' title='eclipse news and findings 2005-12-05'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113081531592655974</id><published>2005-11-01T04:20:00.000+01:00</published><updated>2005-11-01T04:21:55.936+01:00</updated><title type='text'>HTMLSave saves files as HTML</title><content type='html'>&lt;a href="http://eclipse.moelleryoung.com/htmlsave/"&gt;htmlSave&lt;/a&gt; saves editor contents as HTML. It needs access to the text to extract the style information...&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113081531592655974?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113081531592655974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113081531592655974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113081531592655974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113081531592655974'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/11/htmlsave-saves-files-as-html.html' title='HTMLSave saves files as HTML'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-113024796693768421</id><published>2005-10-25T15:44:00.000+02:00</published><updated>2005-10-25T15:46:06.996+02:00</updated><title type='text'>CDT: Mike Milinkovich starting talk</title><content type='html'>&lt;pre&gt;&lt;br /&gt; - eclipse fondation does not dictate what to do&lt;br /&gt; - next june 9 projects will ship at the seame time next&lt;br /&gt;   year&lt;br /&gt; - last 13 month committers doubled&lt;br /&gt; - 3 * startegic membership&lt;br /&gt; - cdt should become over-night sensation&lt;br /&gt; - escape the java ghetto&lt;br /&gt; - eclipse is not only about java&lt;br /&gt; - eclipse ia about more language and platforms&lt;br /&gt; - even microsoft regognizes eclipse: do you know how&lt;br /&gt;   expensive it is to use eclipse?&lt;br /&gt; - eclipse commiters work for companies&lt;br /&gt; - being predictable is very important&lt;br /&gt; - eclipse wants to be predictable&lt;br /&gt;   - as apposed to GNU&lt;br /&gt;   - at appache it juts happens&lt;br /&gt; - fundation wants to make the life of projects easy!&lt;br /&gt; - commiters now live in silos&lt;br /&gt;   - Ward Cunningham will be the "free radical"&lt;br /&gt;   - break walls between projects&lt;br /&gt;   - about dev. process&lt;br /&gt;   - nurture committer culture&lt;br /&gt;   - we want people to feel proud to work for eclipse &lt;br /&gt; - eclipse needs more successes&lt;br /&gt;   - cdt should become more successfull&lt;br /&gt;   - software takes time...&lt;br /&gt; - php projects will be part of eclipse&lt;br /&gt; - eclipse acts as a bridge to other OS&lt;br /&gt;   - linux&lt;br /&gt;   - mozilla as scalability&lt;br /&gt; - big value of eclipse is how to embrace commercial&lt;br /&gt;   adoption &lt;br /&gt;&lt;br /&gt;Q: have a session for managers about eclipse&lt;br /&gt;A: business track at eclipsecon. There was also a panel.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-113024796693768421?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/113024796693768421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=113024796693768421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113024796693768421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/113024796693768421'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/cdt-mike-milinkovich-starting-talk.html' title='CDT: Mike Milinkovich starting talk'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112957679651714856</id><published>2005-10-17T21:16:00.000+02:00</published><updated>2005-10-17T21:19:56.516+02:00</updated><title type='text'>Examples of eclipse RCP projects</title><content type='html'>A &lt;a href="http://www.eclipse.org/community/Example%20RCP%20Applications%20v2.pdf"&gt;PDF document &lt;/a&gt;with screenshots of many RCP apps.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112957679651714856?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112957679651714856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112957679651714856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957679651714856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957679651714856'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/examples-of-eclipse-rcp-projects.html' title='Examples of eclipse RCP projects'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112957643876534856</id><published>2005-10-17T21:10:00.000+02:00</published><updated>2005-10-17T21:13:58.766+02:00</updated><title type='text'>Ian Skerrett gives great insight into open source marketing</title><content type='html'>Ian Skerrett wrote a great article on open source marketing. He starts with: &lt;a href="http://ianskerrett.blogspot.com/2005/10/fire-marketers.html"&gt;"Fire the marketers..."&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112957643876534856?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112957643876534856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112957643876534856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957643876534856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957643876534856'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/ian-skerrett-gives-great-insight-into.html' title='Ian Skerrett gives great insight into open source marketing'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112957605092255903</id><published>2005-10-17T21:04:00.000+02:00</published><updated>2005-10-17T21:07:30.923+02:00</updated><title type='text'>Eclipse press release guidelines.</title><content type='html'>Eclipse &lt;a href="http://www.eclipse.org/org/press-release/pressguidelines.htm"&gt;press release guidelines&lt;/a&gt;. It explains, when a press release is triggered. &lt;a href="http://ianskerrett.blogspot.com/"&gt;Ian Skerrett&lt;/a&gt;, thinks fewer &lt;a href="http://ianskerrett.blogspot.com/2005/09/guidelines-for-press-releases-from.html"&gt;press releases is better&lt;/a&gt;....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112957605092255903?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112957605092255903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112957605092255903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957605092255903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957605092255903'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/eclipse-press-release-guidelines.html' title='Eclipse press release guidelines.'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112957580690028636</id><published>2005-10-17T20:57:00.000+02:00</published><updated>2005-10-17T21:03:26.900+02:00</updated><title type='text'>Blog of Eclipse foundation members</title><content type='html'>&lt;a href="http://milinkovich.blogspot.com/"&gt;Mike Milinkovich&lt;/a&gt;, Executive Director of the Eclipse Foundation..&lt;br /&gt;&lt;a href="http://ianskerrett.blogspot.com"&gt;Ian Skerrett&lt;/a&gt;,    Director of Marketing with the Eclipse Foundation.&lt;br /&gt;&lt;a href="http://eclipse-projects.blogspot.com/"&gt;Bjorn Freeman-Benson&lt;/a&gt;,  Technical Director, Open Source Process and    Infrastructure for the Eclipse Foundation.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112957580690028636?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112957580690028636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112957580690028636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957580690028636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957580690028636'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/blog-of-eclipse-foundation-members.html' title='Blog of Eclipse foundation members'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112957510051894754</id><published>2005-10-17T20:48:00.000+02:00</published><updated>2005-10-17T20:51:58.263+02:00</updated><title type='text'>Eclipse liveliness map</title><content type='html'>&lt;a href="http://eclipse-projects.blogspot.com/2005/10/project-liveness.html"&gt;Bjorn Freeman-Benson&lt;/a&gt; created an &lt;a href="http://www.eclipse.org/org/processes/dashboard/dashboard.php"&gt;nice life page&lt;/a&gt; that shows lifeliness of eclipse projects.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112957510051894754?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112957510051894754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112957510051894754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957510051894754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957510051894754'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/eclipse-liveliness-map.html' title='Eclipse liveliness map'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112957481613095271</id><published>2005-10-17T20:45:00.000+02:00</published><updated>2005-10-17T20:52:25.403+02:00</updated><title type='text'>Eclipse Map of committers</title><content type='html'>Ther's a nice &lt;a href="http://www.eclipse.org/org/processes/eclipse-committers.html"&gt;world map&lt;/a&gt; of committers. You can see where how many committers are located.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112957481613095271?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112957481613095271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112957481613095271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957481613095271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112957481613095271'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/eclipse-map-of-committers.html' title='Eclipse Map of committers'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112934985340138080</id><published>2005-10-15T06:12:00.000+02:00</published><updated>2005-10-15T06:23:20.623+02:00</updated><title type='text'>A wiki at eclipse.org: Eclipsepedia</title><content type='html'>&lt;a href="http://phoenix.eclipse.org/eclipsepedia/index.php/Main_Page"&gt;eclipsepedia &lt;/a&gt;is online. Feedback and comments can be given in &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=87949"&gt;bug 87949&lt;/a&gt;. Unfortunately, you have to be an eclipse committer to contribute. So, it's not really a wikipedia.....&lt;br /&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=87949"&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112934985340138080?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112934985340138080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112934985340138080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112934985340138080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112934985340138080'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/wiki-at-eclipseorg-eclipsepedia.html' title='A wiki at eclipse.org: Eclipsepedia'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112922759827981243</id><published>2005-10-13T20:07:00.000+02:00</published><updated>2005-10-13T20:19:58.346+02:00</updated><title type='text'>Carbide: Nokias CDT based C++ tools for Symbian OS</title><content type='html'>Nokia announces new Eclipse-based IDE for Symbian OS called  &lt;a href="http://www.forum.nokia.com/carbide"&gt;Carbide.c++ &lt;/a&gt; (or Carbide Mobile Studio). It seems to be CDT based.&lt;br /&gt;&lt;br /&gt;The Symbian OS company announced they have &lt;a href="http://press.nokia.com/PR/200510/1014976_5.html"&gt;joined the Eclipse Foundation&lt;/a&gt; as an add-in provider.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112922759827981243?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112922759827981243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112922759827981243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112922759827981243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112922759827981243'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/carbide-nokias-cdt-based-c-tools-for.html' title='Carbide: Nokias CDT based C++ tools for Symbian OS'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112921732306470953</id><published>2005-10-13T17:11:00.000+02:00</published><updated>2005-10-13T17:29:39.523+02:00</updated><title type='text'>IBM contributes the "Eclipse Process Framework Project"</title><content type='html'>IBM announces the  &lt;a href="http://www-128.ibm.com/developerworks/rational/library/05/1011_kroll/"&gt;Eclipse Process Framework Project (Beacon)&lt;/a&gt;. It focuses on best practices for software development. The goal is to provide tools to support the software development process (part of the Rational Unified Process).&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112921732306470953?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112921732306470953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112921732306470953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112921732306470953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112921732306470953'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/ibm-contributes-eclipse-process.html' title='IBM contributes the &quot;Eclipse Process Framework Project&quot;'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112921617300912316</id><published>2005-10-13T17:08:00.000+02:00</published><updated>2005-10-17T13:24:34.526+02:00</updated><title type='text'>Chris Recoskie adds macro support to CDT managed build</title><content type='html'>Chris announces that he is &lt;a href="http://dev.eclipse.org/mhonarc/lists/cdt-dev/msg05426.html"&gt;adding macro support&lt;/a&gt; to CDT. He created a &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=111203"&gt;bugzilla entry&lt;/a&gt; for discussion.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112921617300912316?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112921617300912316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112921617300912316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112921617300912316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112921617300912316'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/chris-recoskie-adds-macro-support-to.html' title='Chris Recoskie adds macro support to CDT managed build'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112916954445507661</id><published>2005-10-12T02:08:00.000+02:00</published><updated>2005-10-13T04:12:24.506+02:00</updated><title type='text'>eclipse developres journal</title><content type='html'>Just stumbled over the &lt;a href="http://eclipse.sys-con.com/"&gt;Eclipse Developers Journal&lt;/a&gt;. A little bit too much advertizement for my taste, but interesting stories... Hmm, very american &lt;span style="font-style: italic;"&gt;"&lt;/span&gt;&lt;span class="style331"&gt;&lt;span style="font-style: italic;"&gt;The Leading Eclipse Magazine for the Open Community"&lt;/span&gt;... what about the nice German &lt;a href="http://www.eclipse-magazin.de/"&gt;Eclipse Magazin&lt;/a&gt;???&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112916954445507661?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112916954445507661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112916954445507661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112916954445507661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112916954445507661'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/eclipse-developres-journal.html' title='eclipse developres journal'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112907202749969453</id><published>2005-10-12T01:01:00.000+02:00</published><updated>2005-10-12T01:53:24.950+02:00</updated><title type='text'>Why freeing SWT resources follows "the fundamental rules of java"...</title><content type='html'>From time to time, I see complains like &lt;a href="http://www.eclipsezone.com/eclipse/forums/m91945421.html"&gt;this&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;"SWT controls cannot be garbage collected. If SWT were being used in C++ that wasn't a problem. But this design decision for a Java API/Framework is a terrible flaw....This is IBM which is not adhering to the most fundamental rules of Java."&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;I think, it is a terrible flaw to do resource cleanup using the garbage collector.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sun uses a similar policy for resources allocated outside the garbage collector. For example in JDK 1.4.2 they changed the policy to free native resources. Originally channels were garbage collected. But now you have to &lt;a href="http://java.sun.com/j2se/1.4.2/changes.html#nio"&gt;explicitely close them&lt;/a&gt;. It was for &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4777499"&gt;performance reasons&lt;/a&gt;, but th problem is the same: external resources are not seen by the garbage collector, and therefore it cannot trigger a collection if the system runs out of resources.&lt;br /&gt;&lt;br /&gt;Just think of a simple object that allocates a megabyte in a native call and holding it in a pointer. The pointer is freed in the finalize method of the object. 1000 of those objects are are nothing to the garbage collector, but it takes 1 GB of your system resources. The simple loop:&lt;pre&gt;for(int i=0;i&lt;5000;i++)&lt;br /&gt;    new My1MbObject();&lt;/pre&gt; Will not work on most systems, becuase you allocate 5000 "small" objects .....&lt;br /&gt;&lt;br /&gt;I think that's a general good rule to close resources that are created outside the garbage collector explicitely.&lt;br /&gt;&lt;br /&gt;Therefore it is a good thing, that &lt;a href="http://www.eclipse.org/articles/swt-design-2/swt-design-2.html"&gt;SWT relys on explicit disposing&lt;/a&gt; of native resources.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112907202749969453?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112907202749969453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112907202749969453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112907202749969453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112907202749969453'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/why-freeing-swt-resources-follows.html' title='Why freeing SWT resources follows &quot;the fundamental rules of java&quot;...'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112906967329430106</id><published>2005-10-12T00:22:00.000+02:00</published><updated>2005-10-26T23:25:26.096+02:00</updated><title type='text'>Migration to flexible workspaces (EFS)</title><content type='html'>John Arthorne wrote a document that describes &lt;a href="http://eclipse.org/eclipse/platform-core/documents/3.2/flexible_workspaces/migration.html"&gt; how clients can transition towards supporting these more flexible workspaces &lt;/a&gt; (see also my previous blog entry "&lt;a href="http://michaelscharf.blogspot.com/2005/10/restrictions-of-eclipse-workspace.html"&gt;Restrictions of the eclipse workspace concept&lt;/a&gt;")&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112906967329430106?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112906967329430106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112906967329430106' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112906967329430106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112906967329430106'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/migration-to-flexible-workspaces-efs.html' title='Migration to flexible workspaces (EFS)'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112899743308425385</id><published>2005-10-11T04:13:00.000+02:00</published><updated>2005-10-11T04:26:14.773+02:00</updated><title type='text'>A guide to the workbench internals -- how workbench works</title><content type='html'>Stefan Xenos&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;&lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/workbench_design/Inside%20the%20workbench.html"&gt;explains&lt;/a&gt; how the Eclipse 3.1 workbench works. He describes the infrastructure that makes views and editors work. The goal is to make the reader familiar with important classes in the workbench, and how they interact. It is assumed that the reader is already familiar with using the workbench APIs and with creating views, editors, action sets, etc.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112899743308425385?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112899743308425385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112899743308425385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112899743308425385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112899743308425385'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/guide-to-workbench-internals-how.html' title='A guide to the workbench internals -- how workbench works'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112899658774483695</id><published>2005-10-11T03:58:00.000+02:00</published><updated>2005-10-11T04:46:59.190+02:00</updated><title type='text'>Content-type-based editor lookup</title><content type='html'>Explains the retionale behind &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37668#c17"&gt;Content-type-based editor lookup&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is a paper &lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/documents/content_types.html"&gt;with the details&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To have &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=87447"&gt;project specific content&lt;/a&gt; matcher, 3.1 added IProject.getContentTypeMatcher()&lt;br /&gt;&lt;br /&gt;Here is a &lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/object-aware-contributions/objCont.htm"&gt;document&lt;/a&gt; that describes the BinarySignatureDescriber (for binary content types) and XMLRootElementContentDescriber. They can be used in the org.eclipse.core.runtime.contentTypes extension point to define a content type.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112899658774483695?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112899658774483695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112899658774483695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112899658774483695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112899658774483695'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/content-type-based-editor-lookup.html' title='Content-type-based editor lookup'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112899554961368505</id><published>2005-10-11T03:49:00.000+02:00</published><updated>2005-10-11T03:52:29.616+02:00</updated><title type='text'>Plan for 3.2 core debug</title><content type='html'>The overall themes for &lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-debug-home/r3_2/plan.html"&gt;platform debug 3.2&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt; &lt;li&gt;Scaling Up &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Design for Extensibility: Be a Better Platform &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Simple to Use &lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112899554961368505?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112899554961368505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112899554961368505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112899554961368505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112899554961368505'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/plan-for-32-core-debug.html' title='Plan for 3.2 core debug'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112899244376397689</id><published>2005-10-11T02:51:00.000+02:00</published><updated>2005-10-11T03:03:37.396+02:00</updated><title type='text'>Breaking up of platforn for better OSGi separation</title><content type='html'>Jeff McAffer explains  how will be split into more plugins to &lt;a href="http://dev.eclipse.org/mhonarc/lists/platform-core-dev/msg00878.html"&gt;better support OSGI&lt;/a&gt;. This will be done without breaking existing code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;org.eclipse.osgi &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;org.eclipse.core.common&lt;/span&gt; - some common base support classes like IStatus, etc. We'll look to take into account the JFace uses here as well as other. This will NOT be a dumping ground.&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;org.eclipse.equinox.registry&lt;/span&gt; - the extension registry mechanism&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;org.eclipse.core.jobs&lt;/span&gt; - job support&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;org.eclipse.core.preferences&lt;/span&gt; - preferneces support&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;org.eclipse.core.contenttypes&lt;/span&gt; - content types&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;org.eclipse.core.runtime&lt;/span&gt; - the original runtime layer with things like Platform, Plugin, ...&lt;br /&gt;&lt;br /&gt;It will require and reexport all of the above plugins. Make this optional if possible.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112899244376397689?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112899244376397689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112899244376397689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112899244376397689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112899244376397689'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/breaking-up-of-platforn-for-better.html' title='Breaking up of platforn for better OSGi separation'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112898926015423276</id><published>2005-10-11T02:01:00.000+02:00</published><updated>2005-10-11T05:07:55.183+02:00</updated><title type='text'>Restrictions of the eclipse workspace concept</title><content type='html'>There is an old paper nicely describing the &lt;a href="http://www.eclipse.org/eclipse/development/inflexible-projects-problem.html"&gt;problems &lt;/a&gt;and another with &lt;a href="http://www.eclipse.org/eclipse/development/towards-more-flexible-projects.html"&gt;possible solutions&lt;/a&gt; (it also contains an analysis what other IDEs do).&lt;br /&gt;&lt;br /&gt;Bugzilla entries:&lt;br /&gt;- &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37935#c7"&gt;Allow editors to open files outside workspace&lt;/a&gt;&lt;br /&gt;- &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37723"&gt;Support logical model integration&lt;/a&gt;&lt;br /&gt;- &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=58179"&gt;Problems with opening external files&lt;/a&gt;&lt;br /&gt;- &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=29389"&gt;Allow a search to be done on external directories, outside of the workspace&lt;/a&gt;&lt;br /&gt;- &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=84988"&gt;Rsource exclusion filters&lt;/a&gt;&lt;br /&gt;The discussion about tne new eclipse virtual file system (EFS) in here:  &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106176"&gt;Provide more flexible workspaces&lt;/a&gt;. In 3.2 resources will probably be based on EFS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt;: There might be problems with code that assumes IResource.getLocation().toFile() does not return null, if the resource is not a file!&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112898926015423276?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112898926015423276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112898926015423276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112898926015423276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112898926015423276'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/restrictions-of-eclipse-workspace.html' title='Restrictions of the eclipse workspace concept'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112897260073057502</id><published>2005-10-10T21:28:00.000+02:00</published><updated>2005-10-11T01:43:47.250+02:00</updated><title type='text'>Eclipse remote development (paper from 2002)</title><content type='html'>There are many environments where the primary tools reside only on a remote system distinct from the developer's workstation, called &lt;span style="font-style: italic;"&gt;remote development&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/docs/eclipse-remote-dev-guidelines/remote-development.html"&gt;This document explains &lt;/a&gt;how the Eclipse Platform can also be extended by plug-ins to support a remote development paradigm, and provides recommendations and guidelines for plug-in developers building remote development support.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112897260073057502?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112897260073057502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112897260073057502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112897260073057502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112897260073057502'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/eclipse-remote-development-paper-from.html' title='Eclipse remote development (paper from 2002)'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112897213454324840</id><published>2005-10-10T21:21:00.000+02:00</published><updated>2005-10-10T21:25:01.403+02:00</updated><title type='text'>Eclipse 3.1 statistics</title><content type='html'>- Java source files: 11,548&lt;br /&gt;- Lines of Java source code: 2,425,709&lt;br /&gt;- Lines of XML source code: 57,533&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.eclipse.org/eclipse/development/eclipse_3_1_stats.html"&gt;.. and more&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112897213454324840?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112897213454324840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112897213454324840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112897213454324840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112897213454324840'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/eclipse-31-statistics.html' title='Eclipse 3.1 statistics'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112897112594934636</id><published>2005-10-10T21:04:00.000+02:00</published><updated>2005-10-10T21:05:25.950+02:00</updated><title type='text'>Testing CDT with OpenOffice</title><content type='html'>Doug Schaefer is &lt;a href="http://dev.eclipse.org/mhonarc/lists/cdt-dev/msg05395.html"&gt;testing CDT with OpenOffice&lt;/a&gt; (35000 C/C++).&lt;br /&gt;It's double the size of Mozilla.....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112897112594934636?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112897112594934636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112897112594934636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112897112594934636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112897112594934636'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/testing-cdt-with-openoffice.html' title='Testing CDT with OpenOffice'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112897043249301679</id><published>2005-10-10T20:51:00.000+02:00</published><updated>2005-10-10T20:54:46.890+02:00</updated><title type='text'>YourKit Java Profiler alternative to Optimize It</title><content type='html'>I'm not really happy with Optimize it. Here's another (commercial $500) profiler &lt;a href="http://www.yourkit.com/features/index.jsp"&gt;YourKit Java profiler&lt;/a&gt;. I should give it a try....&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112897043249301679?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112897043249301679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112897043249301679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112897043249301679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112897043249301679'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/yourkit-java-profiler-alternative-to.html' title='YourKit Java Profiler alternative to Optimize It'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112896985738404063</id><published>2005-10-10T20:42:00.000+02:00</published><updated>2005-10-10T20:44:17.390+02:00</updated><title type='text'>eRCP M4 with eSWT RC2 available!</title><content type='html'>&lt;a href="http://www.eclipse.org/ercp/"&gt;eRCP&lt;/a&gt; is the embedded version of the eclipse rich client platform.&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112896985738404063?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112896985738404063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112896985738404063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112896985738404063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112896985738404063'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/ercp-m4-with-eswt-rc2-available.html' title='eRCP M4 with eSWT RC2 available!'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112895685501101862</id><published>2005-10-10T17:06:00.000+02:00</published><updated>2005-10-10T17:07:45.756+02:00</updated><title type='text'>JUnit 4 will use java 1.5 annotations @Test</title><content type='html'>&lt;a href="http://www-128.ibm.com/developerworks/java/library/j-junit4.html"&gt;An early look at JUnit 4&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112895685501101862?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112895685501101862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112895685501101862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112895685501101862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112895685501101862'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/junit-4-will-use-java-15-annotations.html' title='JUnit 4 will use java 1.5 annotations @Test'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112895635038853928</id><published>2005-10-10T16:39:00.000+02:00</published><updated>2005-10-10T18:40:22.403+02:00</updated><title type='text'>Wayne Beaton is the new eclipse evangelist.</title><content type='html'>&lt;a href="http://wbeaton.blogspot.com/"&gt;Wayne Beaton&lt;/a&gt; is the new eclipse evangelist. His job is to promote eclipse (talk at conferences etc). In an &lt;a href="http://www.eclipsezone.com/articles/beaton-interview/"&gt;interview&lt;/a&gt;&lt;br /&gt;he explins that many eclipse core developers come from smalltalk (like himself).&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112895635038853928?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112895635038853928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112895635038853928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112895635038853928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112895635038853928'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/wayne-beaton-is-new-eclipse-evangelist.html' title='Wayne Beaton is the new eclipse evangelist.'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17681521.post-112896190548365226</id><published>2005-10-10T15:31:00.000+02:00</published><updated>2005-10-10T18:51:35.150+02:00</updated><title type='text'>Eclipse and Java links</title><content type='html'>&lt;ul&gt;   &lt;br /&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/"&gt;Eclipse.org&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.eclipse-plugins.info/eclipse/plugins.jsp?category=All&amp;amp;sort=datecreated"&gt;New Eclipse plugins&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.eclipsezone.com/"&gt;Eclipse Zone&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://eclipse.techforge.com/"&gt;Tech Forge&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.entwickler.com/itr/psecom,id,10,nodeid,.html"&gt;Java news&lt;/a&gt;&lt;/li&gt; &lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;Michael Scharfs Eclipse and Java Blog http://MichaelScharf.blogspot.com/&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17681521-112896190548365226?l=michaelscharf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelscharf.blogspot.com/feeds/112896190548365226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17681521&amp;postID=112896190548365226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112896190548365226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17681521/posts/default/112896190548365226'/><link rel='alternate' type='text/html' href='http://michaelscharf.blogspot.com/2005/10/eclipse-and-java-links.html' title='Eclipse and Java links'/><author><name>Michael Scharf</name><uri>http://www.blogger.com/profile/16708708879318235495</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://img423.imageshack.us/img423/268/michaelscharffaceflip0pq.jpg'/></author><thr:total>0</thr:total></entry></feed>
