Friday, June 26, 2009

Incremental Design at SEACON 2009

A few days ago I gave a short talk on Incremental Design at SEACON 2009, a new buzzword-free conference in Hamburg, Germany. Aside of the fact that this was the first conference in my beautiful home town (and only 15min away from home), I enjoyed to meet a lot of people there. I also made up a few slides for my talk, which you can now download as PDF (in German):
And last but not least I used my new presentation tool called Session Five for the first time. Was absolutely great!

Friday, June 12, 2009

"OSGi on the Server"-Talk at JAOO 2009 in Aarhus

I am invited to the JAOO 2009 conference in Aarhus, Denmark, to talk in the “Java-Now” track about “OSGi on the Server”. I am pretty excited to join the folks at JAOO since I heard a lot of good things about this conference and the program already sounds quite interesting. Hope to meet a lot of interesting people there!

Friday, May 29, 2009

Slides from the OSGi Talks at Java User Group Essen

Already two weeks ago I gave two talks together with Gerd Wütherich at the Java User Group Essen meeting at May 14th. We talked about OSGi in general and building web applications on top of OSGi in specific. We had a room full of interested people and I enjoyed a lot talking there. If you are interested in the slides, here they are:
Enjoy!

Thursday, May 07, 2009

OSGi Talks at Java User Group Essen

I will be at the Java User Group Essen meeting next week to talk about OSGi together with my colleague Gerd Wütherich. We will talk about the basic ideas behind OSGi as well as building web applications on top of OSGi. Take a look at the announcement for more details (in German).

Monday, May 04, 2009

Coming up: Eclipse Demo Camp in Hamburg

The tradition of the Eclipse Demo Camps in Hamburg (Germany) will continue with its next edition on Monday, May 25. We will, again, be at the scenic EAST design hotel and have great demos, drinks and, and, and... So don't forget to register yourself by adding your name to the Galileo Demo Camp Hamburg wiki page. This time, we had the idea to continue with a Stammtisch right after the Demo Camp (please don't forget to add your name to that list as well), so even more drinks can follow... ;-)

Sunday, May 03, 2009

Equinox Aspects 1.0 M7a available for download

Because of a stupid bug in the caching area I put a fixed build of the milestone online. So if you tried M7 and observed performance problems with the caching, you should try this fixed milestone build instead from the Equinox Aspects download area.

Friday, May 01, 2009

Equinox Aspects 1.0 M7 available for download

The seventh milestone of Equinox Aspects is available for download from the Equinox Aspects download page. This milestone contains quite a large improvement for controlling the weaving of bundles. More details can be found in this comment on bug 255682. Take also a look at the New & Noteworthy list for 1.0M7 on the web to find out more.

Tuesday, April 28, 2009

Building a Lego Castle Incrementally and Interatively

My colleagues Henning Wolf and Arne Roock had a great idea for our company booth at the last JAX conference: Every attendee got a single LEGO brick in his conference pocket. The goal was to jointly build a LEGO castle at the booth, piece by piece, with a huge crowd of developers. So every attendee got a time slot of 30 seconds (a single iteration) to place one or more bricks and/or to refactor the existing building. And we had (and I think the builders, too) a lot of fun with that! Its always fun to work with these creative guys!

Arne and Marcel recorded a stop-motion-movie from the building process, taking a picture after each 30-seconds iteration. The final movie is published at the companies website:
Have fun watching the movie!

JAX 2009 Revisited

My colleague and friend Matthias Lübken wrote with me a short blog-kind-of-a review, reflecting the JAX conference in Mainz last week. Just some thoughts and impressions on OSGi, Scala, Pecha Kucha (and more...) for the next Eclipse-Magazin. The online version is already available here:
But take care, its German... ;-)

Sunday, April 26, 2009

Load-Time Weaving for Spring-DM

Load-time weaving in an OSGi environment is different than in single-classpath-settings like you often have in Java. There you typically use a JVM agent or a specialized classloader that gets ClassFileTransformer components injected from your application. Those ClassFileTransformer components then to the real job of modifying bytecode at load-time. This is also used in the Spring framework to enable aspect weaving or JPA bytecode enhancements.
This gets different when you are working in an OSGi environment. Within OSGi you no longer have a single classpath application, you cannot (or at least should not) create specialized classloaders for yourself to do the magic, maybe the weaving should happen specifically for each bundle or the woven code gets additional dependencies woven into it. Using Spring in an OSGi environment doesn't make things easier. You can use Spring Dynamic Modules to implement really cool OSGi applications, but your Spring load-time weaving support remains broken to some degree (see all the related questions in the Spring-DM forum).
I often thought about using Equinox Aspects to solve these problems. Since Equinox Aspects is not tightly bound to AspectJ weaving only, you could re-use the base infrastructure to hook any kind of bytecode modifier into the Equinox runtime - and reuse the caching of Equinox Aspects at the same time.

Now I have a first sketch implemented that bridges between Spring-LTW and Equinox Aspects. The EquinoxAspectsLoadTimeWeaver class implements the LoadTimeWeaver interface of Spring and can therefore be used in your spring context as the load-time weaver component:

<context:spring-configured>
<context:annotation-config>
<context:load-time-weaver
class="org.eclipse.equinox.weaving.springweaver.EquinoxAspectsLoadTimeWeaver"/>

If you define this load-time weaver your bundle need to define an Import-Package on "org.eclipse.equinox.weaving.springweaver", of course.

To use this kind of load-time weaver definition to need to add "org.eclipse.equinox.weaving.hook" (from Equinox Aspects) to your target platform as well as "org.eclipse.equinox.weaving.springweaver":

When you launch your OSGi runtime you need to set the system property: (osgi.framework.extensions=org.eclipse.equinox.weaving.hook) and start the springweaver bundle right at startup. You can do this by adding it to the config.ini file (org.eclipse.equinox.weaving.springweaver@4:start). This is basically the same when using Equinox Aspects, except that you no longer start org.eclipse.equinox.weaving.aspectj but instead the springweaver bundle.

There are still some issues that need to be solved (see this comment in the spring forum for details), but I hope to can try it out and tell me what works fine and what needs some more work.

Feedback always welcome! Enjoy!

Friday, April 24, 2009

JAX 2009: Patterns and Best Practices for Dynamic OSGi Applications

Right after the talk on my lessons learned I had the pleasure to talk together with Kai Tödter and Gerd Wütherich about examples, patterns and some best practices to build real dynamic OSGi applications. Here are the slides:
Kai put together a really nice example for using different ways on how to build dynamics into OSGi apps. It demonstrates all the cool ways of dealing with OSGi services in a declarative way, like Declarative Services, iPojo, Spring Dynamic Modules and Guice/Peaberry. The URL to the example project is on slide 7, if you would like to take a closer look at it.

JAX 2009: Lessons Learned from 5 Years of Building Enterprise OSGi Applications

Yesterday I gave a talk at JAX 2009 about my experiences from using OSGi for enterprise application development over the past 5 years. I tried to sum up my experiences and most of all the mistakes I made during the past years using OSGi. If you are interested, take a look at the slides:
Enjoy - and try to not make the same mistakes than I... ;-)

Wednesday, April 22, 2009

JAX 2009: What's Possible for Web-Apps and OSGi

Today I gave a presentation together with Gerd Wütherich and Peter Roßbach about the difficulties and options you have if you want to adopt OSGi for building web applications. The room was pretty crowded (more than 220 people) and I enjoyed the talk a lot. If you would like to take a look at the slides, you can find them here (unfortunately in German):
Enjoy!

Tuesday, April 21, 2009

JAX 2009: What's New in Equinox Aspects

Today I gave an updated version of my EclipseCon short talk on What's New In Equinox Aspects at the Eclipse Forum Europe 2009, here in Mainz. Here are the slides:
Enjoy!

Thursday, April 16, 2009

Next version of Scala IDE for Eclipse uses Equinox Aspects

Today Miles Sabin posted details on the upcoming 2.7.4 release of the Scala IDE for Eclipse. I am pretty excited about the fact that it uses Equinox Aspects to implement deeper integration with JDT. It uses the same aspect bundle as AJDT called JDT weaving. Andrew Eisenberg gave a great talk on JDT weaving at EclipseCon 2009. Take a look at the slides if you would like to read more about JDT weaving using Equinox Aspects.

Wednesday, March 25, 2009

EclipseCon 2009: OSGi for Eclipse Developers

It was fun giving the talk on "OSGi for Eclipse Developers" at EclipseCon 2009 together with Chris Aniszczyk and Bernd Kolb. At the end we had plenty of time for some interesting questions. Luckily we had BJ Hargrave and Peter Kriens sitting in the first row to answer the really hard ones... :-)

Here are the slides of the talk:

Tuesday, March 24, 2009

EclipseCon 2009: What's New in Equinox Aspects

Just a few minutes ago I finished my short talk on "What's New in Equinox Aspects" at EclipseCon 2009. The slides are online:
I am now looking forward to my talk tomorrow on "OSGi for Eclipse Developers" together with Chris and Bernd. Stay tuned!

Tuesday, March 10, 2009

Exciting OSGi-Experts-Day at JAX 2009

Just a few weeks after the upcoming EclipseCon the next conference opens the doors. The JAX conference (which also includes the Eclipse Forum Europe) in Germany takes place in Mainz, Germany, from April 20th to 24th. While the conference is fully packed with a lot of interesting stuff, I had the honor to organize the OSGi Experts Day, a one-day mini conference inside JAX. The goal of this extra day at the end of the JAX week is to have advanved topics only and nothing for OSGi newbies.

Of course I had more ideas how to fill this day that slots available, but I think we will have a quite interesting day. These six talks will be presented:
At the end all speakers will participate in a panel to answer questions from the audience. And I am sure that we will have a lot of interesting discussions during the breaks as well. So join us for this cool day on advanced OSGi topics!

Monday, February 02, 2009

Slides from OOP talk on dynamics with OSGi available

As Kai Tödter already pointed out in his blog entry, our session on dynamics for OSGi applications at the OOP conference last week was a lot of fun. I enjoyed this session with Kai and Gerd a lot. Thanks, guys!

Equinox Aspects 1.0 M5 available for download

The fifth milestone of Equinox Aspects is available for download from the Equinox Aspects download area. There are no new features, just a few bug fixes included in this milestone build.
Aside of that we discussed a few changes to the way Equinox Aspects can be used and are going to include some changes for the next milestone. The feedback from the AJDT team and their users is really useful to further improve the stability of Equinox Aspects and to ease the installation process. Special thanks to Andrew Eisenberg and Andy Clement for the feedback, discussions and contributions!

Wednesday, January 28, 2009

Short Talk on Using Equinox Aspects to Provide Language Developers with Deep Eclipse Integration

As you might now, the new version of AJDT uses Equinox Aspects to allow deeper integration of some AJDT features into the JDT. Andrew Eisenberg (from the AJDT team) will give a short talk about this at this years EclipseCon: "Aspects Everywhere: Using Equinox Aspects to Provide Language Developers with Deep Eclipse Integration". Aside of the fact that I am fascinated to see this usage of Equinox Aspects for AJDT (some kind of "eat your own dogfood"), I am excited about the design of this part of AJDT. It allows other language developers to reuse this part to achieve the same level of integration into JDT. Very cool stuff. I will definitely go to see Andrews talk to hear more about this!

Monday, January 26, 2009

Equinox Aspects and OSGi for Eclipse Developers at EclipseCon 2009

Just a few weeks from now the doors will open to a new EclipseCon in Santa Clara. I am very happy that I got a short and a long talk accepted this year!

The short talk "What's new in Equinox Aspects" will be an update on the Equinox Aspects project. We will briefly talk on the improvements and challenges during the past milestone builds.

The long talk "OSGi for Eclipse Developers" is an overview of those OSGi techniques and facets that are typically not very well known by people coming from the Eclipse world to OSGi. So obviously we will talk about using ImportPackage instead of RequireBundle, the concept of OSGi services and why they are extremely useful, and some more fun stuff.

I am looking forward to seeing you at EclipseCon!!!

Refactoring book review by Ralph Johnson

Wow, what a great feedback! In this blog posting Ralph Johnson reviews two books on emergent design and refactoring. I had to look twice, but the book on large refactorings that he reviewed was the one that my colleague Stefan Roock wrote together with me some time ago. I was so excited about this positive review from the father of so many work on refactoring that I completely forgot to refer to this from my blog... Now, a few weeks later, my brain is back to normal state (or worse, who knows) and I am happy to post this here... :-)

Friday, December 12, 2008

Equinox Aspects 1.0 M4 available for download

The forth milestone build of Equinox Aspects is available for download. This build focuses on improving stability and reliability. Take a look at the 1.0 M4 New & Noteworthy page for more details and a list of fixed bugs.

Wednesday, December 03, 2008

Next version of AJDT uses Equinox Aspects

This morning I read this mailing list posting about using Equinox Aspects on the AJDT and AspectJ lists. Great to see that the AJDT team is going to use Equinox Aspects as supporting technology for the 1.6.2 release coming up at the end of this month. If you are interested you can find more details on this wiki page: JDT weaving features.

Friday, November 21, 2008

Slides and more from Eclipse Summit Europe 2008

I am back from the Eclipse Summit Europe 2008 in Ludwigsburg and found the time to put the slides from the talk on Equinox Aspects online (pdf). The slides are pretty much the same as from the previous talks I gave on aspect weaving for OSGi during the past weeks, so you won't find real new stuff in it. Nevertheless, giving this talk is just plain fun.

The RT symposium (I helped Heiko and Jeff a bit to organize it) on Tuesday morning was more or less an open discussion about topics around the RT project. We asked for answers to some questions upfront to the meeting and discussed those during the first part of the symposium. For sure some nice and interesting discussions came up during this. Nevertheless the second part of the symposium was a lot more lively and interesting from my point of view. We collected some topics, prioritized them and discussed them in the prioritized order (maybe something like "Open-Space Light"). There was a lot more discussion going on, more participation, sometimes even a bit controversal. Great. If I will participate in organizing such a symposium again sometime in the future, I will definitely vote for doing more (if not all) of the symposium that way.
A rough outline of the symposium can be found at the RT-Symposium-at-ESE-2008 wiki page. And I can recommand watching the video podcast that Ian Skerrett recorded together with Jeff about the RT symposium. Its fun watching... :-)

This was not the only video that Ian recorded at the event. He interviewed all the symposium organizers and published these great video podcast episodes (series 1, series 2). Thanks a lot, Ian, for these video podcasts. Absolutely great!!!

Wednesday, November 05, 2008

Slides from WJAX 2008 online

Still being at the WJAX conference in Munich I took the time to put the slides online from all the talks I am involved in: Enjoy!

Sunday, November 02, 2008

Equinox Aspects 1.0 M3 available for download

The third milestone build of Equinox Aspects is available for download. This build focuses on improving stability and reliability and implicates major enhancements to some internal implementation details of Equinox Aspects. Take a look at the 1.0 M3 New & Noteworthy page for more details and a list of fixed bugs.

Saturday, October 25, 2008

Looking forward to WJAX and Eclipse Summit Europe

Saying goodbye to OOPSLA I am already thinking about the next two conferences coming up on my schedule and which are highly promising to be very very interesting. In a bit more than one week there is the WJAX conference in Munich, Germany. The program is fully packed with interesting stuff and I am quite happy to talk about some cool stuff as well.

Starting on Monday I will participate in the Agile Day at WJAX where I will talk together with Norbert Grosz about experiences from introducing agile development to an insurance company.
Next is the OSGi Special Day on Tuesday. Together with my colleaque Matthias Lübken we will talk about moving existing applications towards using OSGi. Later that day I will give my fun talk about classloading and type visibility in OSGi - I still love classloading stuff. :-) Wednesday I have the pleasure to share my experiences from using and adapting "The Eclipse Way" (the famous development process of the Eclipse team) for general in-house projects. And finally on Friday, at the OSGi Experts Day, Heiko Seeberger and I are going to showcase Equinox Aspects to the attendees. This will be a real fun week in Munich!

Not far away from WJAX is the Eclipse Summit Europe, starting at Tuesday, November 18th, in Ludiwgsburg, Germany. Together with Jeff McAffer and Heiko Seeberger I am organizing the Runtime Symposium on Tuesday morning. Take care you don't miss this symposium to meet people who are also interested or involved in the runtime projects at Eclipse. In addition to that I will give (together with Heiko) a short talk on Equinox Aspects on Wednesday.

And last but not least I would be really happy to hear from you what you would like to know from the talk on classloading and type visibility in OSGi. If you have any questions you would like to get answered within that talk, please comment on this blog entry. I will try to incorporate them into the talk.

See you there!

Thursday, October 23, 2008

Slides from OOPSLA 2008

The slides of my OOPSLA demo on Equinox Aspects are now online - together with those of my tutorial about Spring Dynamic Modules:
Enjoy!

Thursday, October 09, 2008

Building Platforms with Jeff McAffer on SE-Radio

Two days ago the episode that I recorded together with Jeff McAffer about building platforms was published at SE-Radio. I enjoyed a lot asking Jeff so many questions about how to build successful platforms, good APIs and those things and got many very valueable insights. Don't miss it!!!

Saturday, October 04, 2008

New version of Spring Extension Factory available

When retrieving an OSGi service its good practice to use a timeout. Otherwise the operation could be blocked forever (in the case the service never appears). In past versions the Spring Extension Factory used a hard-coded timeout of 5 seconds. I chose this value more or less randomly, guessing that no bundle would hopefully need for than 5 seconds to create its application context. But I was proven wrong... :-)

Therefore I made the timeout setting configurable. Now you can define the timeout value (in milliseconds) via a system property called "org.eclipse.springextensionfactory.timeout". To set the timeout to 20sec, for example, start the JVM with this option:

-Dorg.eclipse.springextensionfactory.timeout=20000

I also added some more readable exceptions if no application context can be found or if the name of the bean to be used cannot be determined.

The new version can be downloaded from here:
Thanks for reporting the problem, Matthias!

Thursday, October 02, 2008

Eclipse Demo Camp in Hamburg - November 2008

After the great success of the Eclipse Ganymede Demo Camp 2008 in Hamburg in June this year Peter Friese and I are organizing another Demo Camp in Hamburg at the 10th of November. It will take place at the East Hotel, a very fancy design hotel in Hamburg.

The schedule for the demo camp is not finished yet. What we already know is that Harald Wellmann will talk about "Geodata Processing for Car Navigation Systems" on top of OSGi and Gerd Wütherich will give a quick demo on Spring Dynamic Modules. And there will be some more, I am sure.

Don't miss it! You just need to register at the wiki page, come by at the 10th of November and enjoy the demos, food, drinks and other Eclipse enthusiasts. I am looking forward to seeing you all there!

Tuesday, September 30, 2008

Dynamic OSGi Applications (at WJAX 2008 and OOP 2009)

In the past years I have used OSGi mostly because of the modularity features. I loved to create small bundles with clear dependencies and visibilities between them - and I still do. I missed this kind of modularity in Java for so many years and I think that many teams still disregard this important modularity for their systems.

But I always knew that the module layer (the one I love so much) is only a small part of the OSGi world. The real coolness of OSGi comes with its dynamics. Using OSGi you can install, update and uninstall bundles at runtime without restarting the JVM. Wow! Doesn't this sound cool?

But wait. What the hack does OSGi do in those situations? If I start my applications, maybe thousands or millions of objects are created, relaxing in memory, referring to each other, talking to each other. Now this thing called OSGi updates a bundle at runtime. And my lovely objects? Are they updated magically under the hood and I don't need to take care of anything? Unfortunately (or I would say fortunately) not!!!

Nothing is done to my objects automatically. Instead I need to take care of those situations myself (which is good news in some way). I need to understand what it means having bundles that can come and go while my system is running (maybe under high traffic). And I need to carefully design my bundles to behave nicely within those situations.

Although its mentioned in every presentation on OSGi I assume that many people still don't know what this really means for building typical business applications. So many (and this includes myself) are used to build systems that are more or less a static set of deployed classes - once a release is deployed and used. Developers typically don't think about parts of the system being installed, updated or uninstalled at runtime without shutting down the application itself. And I think the structure of those systems reflects this. Even if the application is built out of a set of small bundles with clearly defined dependencies - in the end the transitive closure of the main application bundle contains everything. And the app assumes that once I have a reference to an object, this object will stay with me (and be fine) forever.

I observed this situation in some projects and it made me think about it from time to time. I talked to colleagues (namely Gerd Wütherich and Kai Tödter) about this and we discussed our experiences. The result is that we currently try to find some common best practices and patterns to write more dynamic systems than we did in the past for an upcoming talk at WJAX 2008 and OOP 2009.

I am pretty excited that there is so much more to learn how to build really dynamic systems with OSGi and I am sure that this will change the way I write and structure OSGi bundles in the future. Yours, too?

Monday, September 22, 2008

"About-us" episode at SE-Radio

In between the general 10-days-schedule the SE-Radio team has published a short episode about SE-Radio itself. So if you want to know more about our download statistics, the team members, sound quality and more go to: SE-Radio Episode 111: About Us 2008 and enjoy!

Saturday, September 06, 2008

OOPSLA 2008 Podcast is Online

The first episodes of this years OOPSLA podcast are now online and it should be fun to hear what is coming up at the conference. The list of interviewees sounds very promising. :-)

It's again produced by DimSumThinking and SE-Radio. I am pretty excited and feel honored to be the one at SE-Radio who coordinates the episodes and records some of them. But again, without the enormous help of Markus (who records the other half of the SE-Radio-produced episodes) this won't be possible at all. So thanks again for all your help with this, Markus!

Wednesday, August 13, 2008

Bugfix for Spring Extension Factory available

I fixed a problem that prevents the Spring Extension Factory (which I originally described in this post) to work for bundles with Eclipse-LazyStart set to true. The new version works for bundles with or without the layz start setting:
Thanks for reporting the problem as well as a solution, Jimmy!

Friday, August 08, 2008

Equinox Aspects 1.0 M1 is out

The first milestone build of Equinox Aspects 1.0 is available for download from the Equinox Aspects download page. Take a look at the M1 New & Noteworthy page for details.

I am especially happy that this milestone brings OSGi dynamics to aspect bundles. This makes AOP a much better citizen of the OSGi world and gives you a feeling of dynamic AOP, which is really cool... :-)

And I need to mention that the performance of the standard caching has improved a lot. We are now very very close to our goal of running a woven system from cache at the same speed as without aspects.

Monday, August 04, 2008

Demo on Equinox Aspects at OOPSLA 2008

I am happy to announce that a demo on Equinox Aspects is accepted for presentation at the upcoming OOPSLA 2008 conference in Nashville, Tennessee (Oct 19th-23rd). So I would be very very happy to see you all there!!!

Monday, July 28, 2008

ObjektForumNord about OSGi with Peter Kriens

I am pretty exited that Peter Kriens will join us for the ObjektForumNord (website in German, sorry), a series of talks in Germany. This time the session is in Hamburg (my hometown) and Peter is going to give a tutorial and a talk about OSGi. During the afternoon of September 9th, he will give an introductory tutorial about OSGi together with my colleague Matthias Lübken. The evening is filled with Peters talk on "Why Modularity is Important". I am really looking forward to it. Don't miss it.

Sunday, July 27, 2008

News from Equinox Aspects

Some people might have noticed already that some changes are going on inside the Equinox Aspects incubator. Heiko posted the details to the mailing list: http://dev.eclipse.org/mhonarc/lists/equinox-dev/msg04653.html.

I am pretty exited that we are moving towards being a better citizen of the Eclipse world. We have re-arranged our development process and aligned it with the process of the other projects at Eclipse. Take a look at our milestone planning and details on what keeps us busy at the Equinox Aspects Plan wiki page.

The first milestone is targeted at the 8th of August, less than two weeks from now. And on the way from milestone to milestone you can watch and test the progress by using the development builds from our download page.

Friday, July 25, 2008

Episode on Plugin Architectures at SE-Radio

Last weekend SE-Radio published an episode about plugin-based architectures. Within this episode I talk with Klaus Marquardt about different kinds of plugins and different kinds of systems build with or out of plugins.

This episode was actually my first episode as host and we recorded it a long long time ago. But listening to it today disappoints me somehow. The episode contains a larger number of repetitions from my side and I didn't achieve to make it a condensed episode. Just to be clear: This was not the fault of Klaus, whom I interviewed in this episode - not at all. Again it reveals that recording podcast episodes is a learning process - just like software engineering is.

"Silver Medal" for Equinox Aspects Talk

The attendees session ranking from Java-Forum-Stuttgart 2008 is now online and I am more than happy to see that my talk about Equinox Aspects (slides, code examples) won the silver medal. How cool is that? And its great to see that more and more people are interested in Equinox Aspects. Wonderful...

Saturday, July 12, 2008

Dependency Injection for Extensions, Third Edition

As you might have read from my previous posting I created an example that demonstrates the usage of Equinox Aspects as the load-time weaving engine for Spring Dynamic Modules. Now its time to describe this in more detail. :-)

My first idea behind this combination was to use the @Configurable annotation to use Spring's dependency injection mechanism for arbitrary objects which you typically don't create via the application context of spring. The default examples for this are plain domain objects, extensions are another example (they are typically created by the extension registry of Eclipse). Spring realizes the dependency injection for those objects by weaving an aspect into their classes. This aspect takes care of injecting the dependencies after each object creation. And this is the point where Equinox Aspects comes into play.

Fortunately Spring ships as a set of OSGi bundles. This is also true for "spring-aspects.jar", the JAR archive that contains the aspect that is responsible for making the @Configurable annotation work. And you can use Equinox Aspects to weave this aspect into your bundles wherever you would like to use the @Configurable extension. Sounds good, eh?

Ok, what do you need to do? Let’s go through the example step by step. First you need a target platform that contains the following:
Now you have a class that would like to use @Configurable. In my example it is a view for an RCP application that looks somewhat like this:

@Configurable
public class View extends ViewPart {

private Service service;

public void setService(Service service) {
this.service = service;
}

public void createPartControl(Composite parent) {
...


Then you define in the spring context of the same bundle the view as a spring bean, including the "service" property (the dependency that should be injected):

<bean class="org.eclipse.example.springdm.rcpview.View" scope="prototype">
<property name="service" ref="myservice"/>
</bean>

<bean id="myservice" class="org.eclipse.example.springdm.rcpview.Service"/>


Take care to define the bean for the view as of scope "prototype". This is necessary to tell spring that this bean definition should be used as prototype for various instances.
Now we need to tell your bundle to be woven with the spring aspect. Therefore you just define the aspect bundle as required bundle:

Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.springframework.bundle.spring.aspects


Now Equinox Aspects (if started correctly) weaves the aspect into your bundle wherever the @Configurable annotation is used. The next step is to tell the spring context that it should use load-time weaving and annotation configuration (plain old spring configuration for load-time weaving, nothing special here):

<context:spring-configured>
<context:annotation-config>
<context:load-time-weaver class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver">


This also requires some more import package statements within your manifest:

Import-Package: org.aspectj.lang,
org.aspectj.runtime.reflect,
org.springframework.instrument.classloading,
org.springframework.beans.factory.annotation


The first two import statements are necessary because they are needed if an aspect gets woven into one of your classes. A more elegant solution for this would be to reexport those packages from the spring-aspects bundle, but they didn’t define the reexport in their manifest. Therefore you need to import them manually.
The last step is to take care of the startup sequence of your bundle. If the extension is created, your bundle should be activated to get the spring context created. This creation of the spring context should happen synchronously to ensure that the context is created when your extension object is created – otherwise the dependency injection would not work. Therefore I declare in the manifest:

Eclipse-LazyStart: true
Spring-Context: *;create-asynchronously:=false


If you would like to take a look at the complete example that I used, you can download it here:



Feedback and questions are always welcome!

Code Examples from "Aspect Weaving for OSGi" Talk

As promised, here are the projects of my live demos from "Aspect Weaving for OSGi" at last weeks Java-Forum-Stuttgart 2008.

Eclipse Monitor Demo

This demo features the relatively old Eclipse Monitor application that Chris Laffra wrote a while ago. It visualizes plugin activities within your Eclipse application and you can analyze what is going on. This monitor uses Equinox Aspects to weave an aspect into all your bundles at load-time to gather the information of what is going on at runtime. It uses AspectJ advises for all methods and object creations. While this is a pretty heavy use of load-time weaving (you will notice a huge performance impact at first startup) it demos nicely the caching feature of Equinox Aspects. The second startup of your monitored app will perform very similar to a startup without any aspect weaving.

To run the example: Within your development environment you should have AJDT installed to work with AspectJ. In your target environment you should have included your favorite IDE (as example RCP app to monitor), the matching AJDT version, and the latest Equinox Aspects development build from here: http://www.eclipse.org/equinox/incubator/aspects/equinox-aspects-downloads.php. Notive: You need to install the latest dev build, not one of the archived builds. Once you have this you should be ready to run the example. Just import the projects in your workspace and use the included launch configuration.

Dependency Injection with Spring Dynamic Modules and Equinox Aspects

Spring provides this nice mechanism to inject dependencies in domain objects via the @Configurable annotation (see more here: http://static.springframework.org/spring/docs/2.5.x/reference/aop.html#aop-atconfigurable).
The main difference to general spring beans is that the creation of those domain objects is not done by the application context of Spring. Therefore Spring uses an aspect to call the application context after object creation to inject all necessary dependencies. In plain old Spring applications this aspect is woven into the system using load-time weaving.
Wouldn't that be a nice mechanism to inject dependencies into Eclipse extensions (like views or editors)? Just annotate your extension with @Configurable and define the dependencies to be injected inside the application context of your bundle (using the Spring Dynamic Modules stuff)?

One way of doing this is to use Equinox Aspects together with Spring Dynamic Modules. Just use the spring-aspects.jar from your spring distro (its already an OSGi bundle) and enable Equinox Aspects weaving - and you are done. It just works! :-)

To run the example: You don't need any special support within your development environment. Instead your target platform should be configured carefully. For the example projects I used Eclipse 3.3.2 as target platform, added AJDT, added the latest dev build of Equinox Aspects, Spring 2.5.4 bundles and Spring Dynamic Modules 1.1.0 bundles. Import the example projects from the zip file into your workspace and use the included launch config to run the demo. The example injects a spring bean into the view extension.

I will give more detailed information on how this Equinox Aspects weaving can be used together with Spring Dynamic Modules in an upcoming post.

If you observe any problems or if I forgot something in this description, please let me know.

Have fun with the examples!

Thursday, July 03, 2008

Slides from "Aspect Weaving for OSGi" Talk

This morning I gave a presentation at the Java-Forum-Stuttgart conference on Aspect Weaving for OSGi. The slides of this talk are now available for download:
The code for all live demos from the presentation will follow shortly.

Tuesday, June 24, 2008

Reminder: Equinox Aspects at Java-Forum-Stuttgart 2008

This is just a friendly reminder that you have the chance to see Equinox Aspects live and in action at the upcoming Java-Forum-Stuttgart 2008 next week at the 3rd of July. I will give a talk at this nice conference in Stuttgart, Germany, about Aspect Weaving for OSGi. And the talk will be fully packed with a number of live demos including:
  • Monitoring Eclipse with aspects
  • Installing, updating and uninstalling aspects at runtime (dynamics for aspects)
  • Using Equinox Aspects together with Spring Dynamic Modules
It will be really really cool, don't miss it! :-)

Sunday, June 22, 2008

Slides and Examples from Spring-Dynamic-Modules-Talk at the OSGi Community Event 2008

Already more than a week ago I gave a talk at the OSGi Community Event 2008 in Berlin about the Spring Dynamic Modules project. Giving the talk was fun, I used a number of live demos to showcase Spring DM in action. The slides are now online:
The code for all the demos can be found at the JAX blog entry of my colleque Gerd Wütherich, who prepared most of this talk. Thanks again for the great work, Gerd!

For those who are new to Spring Dynamic Modules: This project of the Spring portfolio basically allows you to use the Spring framework within an OSGi environment in a very nice and easy way. You can find more information on the Spring Dynamic Modules homepage.

Thursday, June 19, 2008

Report from Eclipse Demo Camp in Hamburg

Last Monday the Ganymede Eclipse Demo Camp took place in Hamburg. More than 40 attendees showed up and enjoyed a number of great presentations. Peter Friese wrote up a nice summary of the demo camp. I enjoyed the event a lot and I am looking forward to organizing the next Eclipse Demo Camp again together with Peter. Was a lot of fun! Thanks Peter!

Also many many thanks to Arne Roock for his great support in organizing the event and finding this cool location! His support is absolutely priceless!!!

Tuesday, June 10, 2008

Eclipse Demo Camp in Hamburg is Approaching Fast

Don't forget to register for the Eclipse Demo Camp in Hamburg - it is approaching fast. Starting next Monday at the EM-2008-friendly time of 6pm we will see some interesting demos, have free drinks and food (thanks to our sponsors: Eclipse Foundation, itemis and it-agile) and a lot of fun, I assume... :-) The demo camp takes place at the former coffee exchange - a really cool location:


So, have fun at the demo camp and many thanks to my colleague Arne Roock for his organizational support. Absolutely priceless.

Sunday, June 08, 2008

Equinox Aspects at Allianz

Some days ago I got a copy of the latest German Eclipse-Magazine (Vol. 15, 3/2008) and I found an experience report article about using Equinox Aspects. Cool! Great to read that people are using Equinox Aspects in large strategic projects. This report is about using Equinox Aspects for advanced performance tracing in a large production system at Allianz, a major insurance company in Germany. So if you are happy reading articles in German, take a look at it!

Thursday, June 05, 2008

SE-Radio Live at the OSGi Community Event 2008

The OSGi Community Event 2008 starts next week in Berlin, Germany. And there will be a special event taking place after the reception on Tuesday evening: We will host a live SE-Radio recording session. Isn't this cool? We are going to have a panel like discussion session with some interesting people and hopefully questions from the audience - all going into the se-radio recording and becoming part of that episode. So if you are going to the OSGi Community Event make sure you don't miss the SE-Radio live session - from 8pm to 9pm in the main room.
And many many thanks to Peter Kriens for making this possible and helping so much in organizing this!!!

Wednesday, June 04, 2008

Open XP-Days Germany 2008

The XP-Days conference series is a nice event series throughout Europe for people interested in agile software development (not reduced to Extreme Programming) and related topics. This years XP-Days Germany will take place in Hamburg from November 27th to 29th.
In opposite to the past XP-Days this years conference has an open review process in parallel to the submission process. This idea has two great advantages: everybody can review and comment on submissions via the submission system and people who submit sessions can benefit from those reviews and feedbacks by improving their submissions before the program committee decide. Sounds good, eh? I am used to this kind of open submissions from the EclipseCon conference and I must say: I like it a lot.
So don't forget to submit a proposal or give feedback on existing proposals - or simply join the conference this November!!!

Wednesday, May 28, 2008

Dependency Injection for Extensions, Second Edition

At this years EclipseCon I implemented an extension factory utility that could be used to delegate the creation of an extension object to a spring context (if you are using Spring Dynamic Modules). The result was that you were able to define your extensions as spring beans including all the nice spring features (dependency injection, aop, dessert topping, whatever...). That first implementation was nice, but had a number of stupid limitations (worked only for active bundles, for example). The good news is: A new version is available that includes some nice improvements... :-)

Firstofall, here is the new version of the Spring-Extension-Factory:

The new features are:
  • Ability to declare the bean-id explicitly within the extension definition

  • Automatic start of non-active bundles (and application context creation via Spring Dynamic Modules) when an extension is being created

How can I use this extension factory? Lets look at some examples. Lets assume you implement an RCP application and you would like to define a view as spring bean to inject some dependencies. First, you declare your spring bean inside the spring context:
<bean id="myview"
class="org.eclipse.example.springdm.rcpview.View"
scope="prototype">
<property name="myService" ref="serviceBean"/>
</bean>


Okay, this defines the spring bean called "myview" and injects a bean with the id "serviceBean" as a dependency into my view. The class of the view is the normal view implementation that you are familiar with. Don't forget to declare the bean as of scope "prototype". Otherwise spring would return always the same object every time an extension should be created (which is not the contract of the extension mechansim).

Now we define the extension in the plugin.xml file:
<extension point="org.eclipse.ui.views">
<view name="Message"
allowmultiple="true"
icon="icons/sample2.gif"
class="org.eclipse.springframework.
util.SpringExtensionFactory:myview
"
id="org.eclipse.example.springdm.rcpview.view">
</view>
</extension>


The class that is now referenced in the extension instead of the view itself is the spring extension factory followed by a colon and the id of our bean from the spring context. The rest of the extension definition looks exactly as before (without the extension factory).

The Spring Extension Factory includes two additional options to refer to the bean id within the extension definition. This is the strategy that I implemented into the extension factory:

  1. If a bean-id is explicitly defined (like in the example above), use this id to lookup the bean.

  2. If not, search for an id attribute within the contribution element of the extension and use it as the bean-id.

  3. If no id attribute is found inside the contribution element, try to use the id of the extension itself as bean-id.


The first option is the most explicit one. The second option works just for those extension definitions where the corresponding extension point schema defines an id attribute as part of the specific extension (this is the case for views, but obviously not for all extension points). The third option can be used for all extension points but is less explicit that the first one. In the end its a matter of taste which option you prefer.

Comments, feedback and improvements, of course, highly welcome.

Have fun with it!!!

Equinox Aspects and Spring-DM at the OSGi-Community-Event 2008

The OSGi-Community-Event 2008 in Berlin is less than two weeks ahead and I am pretty excited to give a talk on Spring Dynamic Modules there as well as some live demos on Equinox Aspects at the evening reception Tuesday night. The talk on Spring-DM will introduce the possibilities of using the Spring framework and Spring-DM within the OSGi world using some examples and live code. For the evening demo of Equinox Aspects I will do my very best to show the current state of Equinox Aspects together with some cool new features things like dynamics (aspects coming and going) with Equinox Aspects and (maybe) even load-time aspect weaving for Spring and Spring-DM within OSGi using Equinox Aspects. So please keep your fingers crossed for my live demos. :-)

Saturday, May 10, 2008

Finally aspects become dynamic

I recently committed some changes to the Equinox Aspects project which allows the Equinox Aspects runtime to handle dynamically uninstalled aspects correctly with regards to the woven bundles in the system. Having this it was only a small step to also deal with dynamic updates to aspect bundles as well as woven bundles at runtime. And now, finally, we are there: real dynamics for aspects. You can install, update and uninstall aspects at runtime as you like and the Equinox Aspects runtime takes care that everything will be woven and re-woven correctly. This is really really cool and a huge step towards real OSGi-enabled AOP, I think.

But what happens if aspect bundles are installed, updated or uninstalled at runtime? All other bundles that need to be woven, that need to be re-woven or that need to be un-woven from the aspect are updated automatically by the aspect runtime using the OSGi mechanisms. This means also that your system should be able to deal with OSGi dynamics and bundles coming and going (which is not a trivial thing to do). So be a good citizen of the OSGi world and your bundles will behave well when aspects are coming and going at runtime... :-)

Thursday, May 01, 2008

Aspect Weaving for OSGi at Java Forum Stuttgart

This years Java-Forum-Stuttgart 2008 is on the 3rd of July and takes place again at the Kultur- & Kongresszentrum Liederhalle (KKL) in Stuttgart, Germany. I attended this nice conference over the past years talking about various topics and listened to interesting talks there. Its well organized and its a pleasure to be there.
This year I will talk about one of my favorite topics: Aspect Weaving in OSGi. I will tell people what they need if they are going to adopt OSGi and AOP for the same system and how it is possible to modularize aspects into OSGi bundles. The talk will contain some live demos showing load-time aspect weaving for OSGi using the Equinox Aspects open-source project. It will be way cool, don't miss it! :-)

Saturday, April 26, 2008

When all is said and done I become a Guru ;-)

While reading the OSGi book from my colleagues I stopped by the dedication section on the first pages and found that Matthias dedicated the book not only to his wife and his daughter but also say thanks to me in this section, calling me his "personal Equinox Guru". Wow, I finally become a Guru... ;-)

Aside from not feeling like a guru at all and aside from the fact that there are hundreds or even thousands of developers on the planet knowing more about Equinox than I do - I feel somewhat proud to be mentioned in this book in such a nice way. :-)

Thank you, Matthias!

German OSGi Book

Colleagues and friends of mine have published a great introductory book on OSGi. Its called "Die OSGi Service Platform -Eine Einführung mit Eclipse Equinox". Its completely written in German (but don't be afraid, they told me an English version is somewhere in the pipe) and the first book on OSGi on the planet. Wow. Make sure you get a copy and learn about OSGi. I can just highly recommend to read this great book!

Friday, April 25, 2008

Slides from JAX 2008 Talks Available

So I am back from the JAX 2008 conference where I met people, gave a number of talks and listened to some other interesting presentations. The PDF versions of my slides are now available from the events section. Enjoy!

Wednesday, March 26, 2008

Update: Getting Hooked on Equinox - Article in German Eclipse-Magazine

I complied with the term of the publishing company not to publish the PDF file of my latest article on the hook mechanisms of the Equinox OSGi runtime for a certain period of time, but the waiting time is now over. I put the PDF of the latest article on "Getting Hooked on Equinox" (in German) for the German Eclipse Magazin online in the publications section. Enjoy!

EclipseCon 2008: Short Talk on Adopting "The Eclipse Way"

I put my slides from my short talk at EclipseCon 2008 about adopting "The Eclipse Way" online in the events section. Enjoy!

Tuesday, March 18, 2008

Dependency Injection for Extensions

While preparing the tutorial on Spring Dynamic Modules for this years EclipseCon I played a bit with using Spring Dynamic Modules to dependency inject beans into views or other stuff I typically define as extensions for my Eclipse Rich Client Platform application. The problem is that the actual objects for those extensions are created by the Extension Registry and do therefore not pass the spring context for dependency injection. I needed to find a way to combine those two technologies somehow.

I came up with a very small and trivial solution for this: I created a class called SpringExtensionFactory that implements IExecutableExtensionFactory from the Extension Registry mechanism. This extension factory takes an ID from the extension definition, finds the spring application context for the bundle that contributes the extension and tries to retrieve the spring bean with the same id from that application context. This bean is then returned as the extension object. This trivial solution does not require any additional programming work to be done, no load-time weaving (for @Configurable, for example), just plain nothing.

Yon can download this SpringExtensionFactory from here, its open-source under EPL 1.0:
The interesting question is which ID this extension factory takes from the extension definition to look up the bean in the application context. The answer is: It is a two-step process. It first tries to find an "id" attribute within the configuration element of the extension definition. This is typically the case for RCP views, for example. They have an "id" attribute to identify the view. If there is no "id" attribute found within the configuration element it steps back to the extension definition itself and takes the "id" attribute from there.

If you have any questions I am happy to help you with this stuff. Just leave a comment (to share your thoughts and questions with the community).

EclipseCon 2008: Tutorial on Spring Dynamic Modules

EclipseCon 2008 has started today in sunny Santa Clara. I ran a two-hour tutorial about Spring Dynamic Modules together with Adrian Colyer from SpringSource and BJ Hargrave from IBM. The tutorial went well and was full-packed with a lot of stuff that we showed and demoed (mostly Adrian). Therefore it was no real surprise that we completely ran out of time and that my final part on Eclipse RCP and Spring Dynamic Modules was mostly skipped. Nevertheless you have the chance to take a look at the slides, they are online at the conference site as well as on my events section.

Thursday, March 13, 2008

Release 1.1.0 of Equinox Aspects available

I am proud to announce that a new release of Equinox Incubator Aspects is available for download. Version 1.1.0 features a standard caching service for woven bundles on non-IBM VMs (contributed by Heiko Seeberger) and contains a number of big fixes and minor improvements.
Especially interesting is that you no longer need to define aspect bundles upfront in the config.ini when you start your runtime. The reworked supplementing mechanism can deal with such situations and handles even dynamically installed aspect bundles correctly (more details to follow in this blog).
This release works with all up-to-date and development versions of AJDT (1.5.1, 1.5.2, 1.6.0) and Eclipse (3.3, 3.4).

Monday, February 25, 2008

Getting Hooked on Equinox: Article in German Eclipse-Magazine

The current issue of the German Eclipse-Magazin publishes an article that I wrote together with Heiko Seeberger vom Metafinanz: Getting Hooked on Equinox. The article describes the adapter hook mechanism that is part of the Equinox OSGi implementation. Using this mechanism you can easily modify the behavior of the Equinox runtime or add additional features to it. This mechanism gives you a lot of power over the Equinox implementation without modifying the original code. And that means you can deploy your additions as separate bundles. Users don't need to manually install a modified osgi implementation!!!
I am using this mechanism for the equinox aspects incubator project to add load-time aspect weaving to the OSGi runtime. The article describes the basics of the mechanisms, who it can be used, and gives some examples where it is already being used.

Sunday, February 24, 2008

GetTogether 2008 Event from Software Engineering Radio

The se-radio team is going to be hosting a small conference called GetTogether 2008 in the fall of 2008. The conference will be in the open-space style, so its focussed on interesting discussions rather than formal paper presentations. Nevertheless in order to participate you need to submit a small position paper describing a topic to discuss at the event. Maybe some interesting keynotes will be at the conference as well. Thanks a lot to Markus Völter for doing a great job in organizing most (if not all) of this stuff.

Monday, February 18, 2008

The New Allianz Business System uses OSGi and Equinox Aspects

I picked up some really cool news: the german newspaper Computerwoche reports about the Allianz (the huge insurance company) is moving their complete IT to a new system called Allianz Business System. The article says that the new highly integrated system is based on Eclipse and OSGi technology. Wow! But its comes even better: They are using Equinox Aspects inside, the tiny little incubator project I am working on to integrate aspect weaving into the Equinox OSGi implementation (as you can read from this talk at the upcoming Eclipse Forum Europe).

Friday, January 25, 2008

Slides from OOP

Yesterday I gave a talk at the OOP conference together with Ivo Eitner, the technical project manager of a project I am involved in as a consultant over the past years. We talked about our experiences adopting "The Eclipse Way" within that project. If you are interested in the slides and are able to read and understand German, here are the slides as PDF.

JAX and Eclipse Forum Europe 2008

Seems like they added some more parts to the program of the JAX 2008 conference together with the Eclipse Forum Europe 2008. And I am happy to see that some of my sessions got accepted. :-)

Saturday, January 19, 2008

Recording of SpringOne Talk on Spring and Eclipse RCP

A complete video recording of the talk about Spring and Eclipse RCP that I gave at last years Spring One conference is now online at Parleys.com. Thank you guys for all the great work of recording all the sessions!!!

Saturday, January 12, 2008

New Release of Equinox Aspects

After a long period of quiet I started to work in Equinox Aspects again and fixed two bugs in the current implementation. The new release is available from the Equinox Incubator Aspects website. In general the project is about an OSGi extension that adds load-time aspect weaving to the Equinox OSGi implementation. By doing that you can modularize aspects in OSGi bundles. The runtime takes care that your aspects are woven into the system at load-time.

Thursday, December 27, 2007

EclipseCon 2008

I am very happy to tell you that two of my proposed sessions are accepted for presentation at EclipseCon 2008 in Santa Clara. The first one ("Spring OSGi Reloaded") is an updated version of last years tutorial about the combination of Spring and OSGi technology (now called Spring Dynamic Modules for OSGi Service Platforms). And I am very happy to be part of the tutorial team consisting of BJ Hargrave, Adrian Colyer, Bernd Kolb and myself. The second one is a short talk about "Lessons Learned from Adopting The Eclipse Way" for general in-house software projects.

Excellent Talk about Simplicity

In general I don't like to write too positive about things that happens within my company. This often sounds like pure advertisement for the company business and therefore I don't like it for my private blog. But today I need to make an exception. Not because I would like to do some advertisement but because I thing the talk given by Stefan Roock about "Simplicity in Software Projects" (held at the german XP-Days this year in Karlsruhe) is absolutely excellent. If you are able to understand spoken german you should definitely take the time (about 60min) and listen to Stefans talk (screencast or pure mp3). It is funny, entertaining and inspiring for every day project life. The sound quality is somewhat poor but the talk is definitely worth listen to anyway.

Thursday, December 13, 2007

OSGi and IntelliJ IDEA

Today my collegue Robert Beeger told me that he is working on a plugin for the IntelliJ IDEA development environment to support the OSGi programming model. And the first initial release of Osmorc (that is the name of the plugin project) is already available for download. I haven't tried it myself (I am using Eclipse for bundle development) but it sounds quite promising from his announcement. The support seems to be somewhat limited for this very early release but it is great to see that support for OSGi is becoming reality for more IDEs than just Eclipse.

Sunday, December 02, 2007

Slides from WJAX

Finally I uploaded all my slides from the WJAX conference this year to the events section. In addition to the slide PDFs I would like to point to the demo and code material that Gerd Wütherich put online for our Spring and OSGi session. The zip file contains all the source code of the examples from the talk as well as ready-to-use target platforms for the examples, including Equinox 3.3 and Spring Dynamic Modules RC1 as a PDE target platform. Very nice package if you would like to get started with Spring-DM.

Sunday, November 11, 2007

13949712720901ForOSX

Even though I am a big fan of ThinkPad notebooks I like Apples Mac OS X and their notebook hardware a lot. I am just waiting for the day that they integrate a trackpoint into their keyboard design... ;-) Unfortunately they seem to reduce their effort to keep up to date with their Java implementation for OS X. There is still no Java 6 for OS X and there are no signs for it on the horizon. Therefore I vote for it via this blog post. See more details about this campaign.

Tuesday, October 09, 2007

Mentioned on refactoring.com :-)

It happened during mid August but I realized it during the past days: Martin Fowler mentioned the refactoring podcast episodes (1 and 2) that I recorded together with Eberhard Wolff for Software Engineering Radio on www.refactoring.com. Its just a short note on the site but for me it sounds quite positive... :-)

Saturday, September 29, 2007

Experiences from following "The Eclipse Way" at OOP 2008

Together with my colleague Ivo Eitner from the Aspecta/HDI-Gerling Lebensversicherung I will give a talk at the upcoming OOP conference in Munich. The conference is from January 21st to the 25th and we are going to talk about our experiences from using and adapting "The Eclipse Way" - the agile software development process that is used by the Eclipse SDK team. We have adopted quite a number of their practices over the past three years within a larger development project in the insurance domain and we will present our experiences using those practices. Here is the german abstract of this talk.

Article on Aspect-Weaving for OSGi

The latest german Eclipse-Magazin contains an article that I wrote together with Peter Friese (from Gentleware) and Heiko Seeberger (from Metafinanz) about using AOP for Eclipse RCP applications. The article describes how load-time aspect weaving can be used for real-world OSGi-based applications. Within the article we describe how security-related issues can be implemented using AOP and how those aspects can be woven into an RCP app using AJEER or the Equinox Aspects load-time weaving support for OSGi. The complete article can be found in the publications section.

Friday, August 24, 2007

Ranking from Java-Forum-Stuttgart

The presentation ranking from the Java-Forum-Stuttgart 2007 is now online. And I am a little bit proud to see that I am among the top ten presentations - the forth year in a row. Wow... :-)

Tuesday, July 10, 2007

Pictures from SpringOne

I was quite surprised finding a picture of myself on the SpringOne website. It was shot during the "Spring and Eclipse RCP" session, I think... And look here for some other pictures from SpringOne.


Friday, July 06, 2007

Slides from Java-Forum-Stuttgart

Yesterday I was at the Java-Forum-Stuttgart, a one-day conference organized by the Java User Group of Stuttgart. Together with Bernd Kolb and Gerd Wütherich I gave a talk about the combination of Spring and OSGi. You can download the slides, if you like.

Sunday, June 24, 2007

Slides and examples from SpringOne 2007

Here are the slides from my SpringOne sessions as PDF files: Spring and Eclipse RCP, Hands-On Spring-OSGi. The example that I showed during the Eclipse-RCP talk containing the example RCP application frond-end based on Spring-OSGi that communicates with the Spring-OSGi-based backend service running inside a Jetty server is also available for download. Here are the two example projects. You can use them together with the pre-defined workspace that I used during the hands-on session.

Thursday, June 21, 2007

Resources for Hands-On-Spring-OSGi session

For my session at SpringOne "Hands-On Spring-OSGi" I created a ready-to-use workspace for playing with Spring-OSGi. This workspace (zip, 40MB) is based on the example by Bernd Kolb (many thanks to Bernd for this example which is really great). Some setup instructions can be found in the slides for the session (PDF).

Wednesday, June 20, 2007

Arrived at SpringOne 2007

Today I arrived at the SpringOne conference in Antwerpen, Belgium. The conference takes place in the Metropolis Business Center (the same spot as the JavaPolis takes place). This is the first time for me to attend and speak at a conference taking place in this location. Therefore I was pretty impressed by the location which basically is a huge cinema complex. The sessions are held in cinema rooms. I never had such a huge projection area... :-) The sounds seems to be pretty good as well since the THX logo is above every entry. Very very cool, especially for an old Lucasfilm and THX fan like me. And last but not least: it slightly smells of popcorn all over the place... :-)

Friday, May 18, 2007

Refactoring Pt. 2 at Software Engineering Radio

A few days ago the second episode on refactoring was published at se-radio.net. In this podcast episode I talk with Eberhard Wolff about some more complicated refactoring situations, for example larger refactorings, refactorings for published APIs and refactorings that affect the database schema or the database access code.

Spring, Eclipse, and OSGi at SpringOne 2007

If you would like to know more about Spring, OSGi and the usage of both technologies together you should think about going to SpringOne 2007. The SpringOne conference is organized by the Belgium Java User Group and Interface21 and takes place from June 20 to June 22 in Antwerp. The conference is focussed on Spring and covers a lot of different topics. And there are three sessions touching the Spring-OSGi combination:
So don't miss it!!!

Second milestone of Spring-OSGi released

Past Friday Costin Leau announced the second milestone build of the Spring-OSGi project. This is an update to the M1 release and fixes some compatibility issues. Aside from some maven build stuff and improved OSGi manifest definitions there seems to be nothing really new in there. The explicit support for web apps is still missing... :-(

But my colleague Bernd Kolb told me that he succeeded in setting up the pet shop example via OSGi with just a few hacks, getting the Spring-OSGi stuff to work nicely within the web app using Equinox and the embedded jetty. I hope his code will be public available soon so that everybody can see how easy and nice it is to implement client-server and web applications using OSGi and Spring together. :-)

Slides from the Turkish Eclipse Summit talk online

Finally I found the time to upload my slides from the Turkish Eclipse Summit. You can find them in the events section, as usual.

The event was well organized and it was fun giving a talk there. Many many thanks again to Naci Dai for inviting me to this great event and to Karen Dai for all their help. If you would like to see some pictures from Istanbul (where the summit took place) you should go to Mike Milinkovichs Flickr pictures from Istanbul.

Thursday, April 26, 2007

JAX session slides online

While sitting the last day at the German JAX conference I put all my session slide material online. You can find all slides in the events section.
My company recorded the session about how the practices of the Eclipse team process could be adopted for in-house projects and put an online screencast on their website. So if you would like to listen to that talk feel free to watch the screencast.

Saturday, April 07, 2007

First milestone of Spring-OSGi released

Costin Leau from the team at Interface21 announced the availability of the first milestone of the Spring-OSGi integration. If you haven't already you should definitely look at this new Spring sub-project. Many people (including myself ;-) consider this integration as the next big step for the Spring framework. Unfortunately the support for building web applications is currently broken and therefore not part of this milestone release.

Invited Talk at the Turkish Eclipse Summit 2007

I am invited to the Turkish Eclipse Summit 2007 that takes place in Istanbul at the 30th of April this year. I will talk about OSGi and the Eclipse Equinox OSGi implementation. The talk will explain my basic understanding of what the OSGi runtime is, where it can be used for, and what the benefits of using it as a basic infrastructure for all kind of applications are. And because I am somehow involved in the Equinox Incubator project I will, of course, talk a little bit about some cool stuff that you can do with the Equinox implementation like the Spring integration, AOP load-time weaving and stuff like that... :-)

Wednesday, March 21, 2007

What a nice book review

The Miami Java Users Group posted a nice review of the book about large and complex refactorings that Stefan Roock and I wrote. Isn't it great to read such positive feedback? :-)

Tuesday, March 13, 2007

Don't forget to meet at JAX 2007

The next conference that I am speaking at is approaching fast. At the JAX 2007 in Wiesbaden, Germany, I am going to talk about Spring and OSGi and why this combination is so promising, I think. Will be fun to present this together with Gerd Wütherich and Bernd Kolb at the Spring Day of the conference on Monday.
On Tuesday I have two sessions together with Tobias Widmer from the IBM team in Zurich that works on Eclipse. We will talk about "The Eclipse Way", the agile development process behind the Eclipse team (this will be the first session). The second session will cover the question how this process can be adapted (and adopted) for typical in-house and non-open-source projects where developers are not building tools for themselves.
Last but not least the session on Wednesday is together with my former colleague Gernot Neppert. We are going to talk about our experiences from building a large-scale system for an insurance company that is heavily build on OSGi and is especially using the Eclipse Extension Registry to create a really flexible and extensible architecture.

Wednesday, March 07, 2007

Spring and OSGi at EclipseCon

Yesterday I gave a tutorial about Spring and OSGi together with BJ Hargrave at EclipseCon 2007. It was a short tutorial, just 2 hours, fully packed with a lot of demo material. BJ did a great job of preparing some examples for it.
If you didn't have the chance to participate in the tutorial you can download the slides as well as the source code for all the examples here. The zip file contains a team project set which you can easily import into your Eclipse workspace. More detailed information on installing and running the examples can be found in the slides.

Monday, February 19, 2007

Refactoring Pt. 1 at Software Engineering Radio

Last friday the first episode on refactoring was published at se-radio.net. In this podcast episode I talk with Eberhard Wolff about the general ideas and concepts of refactoring. This is the first episode that I am involved in and I hope the feedback will be somewhat positive... :-)

Monday, January 08, 2007

XP 2007 Call for Papers

This years european conference on Extreme Programming and Agile Software Development, the XP 2007, takes place in Como, Italy. Again I am member of the program committee and I would like to invite you to submit papers, tutorials, workshop proposals and so on. The CfP is still open, so don't forget to submit something!!!

Tuesday, January 02, 2007

Three Secrets... ;-)

Thanks to Eberhard I have to tell you three things about myself before I am supposed to hand over the baton to some of my colleagues and friends...
  • I started my programming carreer with the Amstrad/Schneider CPC 664, the second edition of this home computer that was the first one with an integrated a floppy disk drive (strange 3" format). After a few years a got a mouse for this machine and wrote a completely useless icon editor for fun (in basic, of course). I thought icons would be a cool thing to edit... :-)
  • I am one of the authors of Discovery DTP, a full-featured desktop publishing system that I implemented for the Atari ST/TT, together with a friend of mine. The program was published as shareware by the ST-Computer magazine, a german computer magazine for Atari at that time. This was implemented in C and we worked on it for several years. And, of course, we implemented everything on our own, including virtual memory management, vector-font rendering, text formatting and much more... I still have the source code on a CD. Fun to read... I think I made every single mistake that my software engineering professor at the University talked about years later when I started to study computer science.
  • My first (and last) computer game that I played intensively was Sorcery, a really strange fantasy game for the Amstrad/Schneider CPC 664. I found a screenshot of that game, looks really cool...
And now, the next three people in the row: congratulations to Sebastian, Robert and Stefan.

Monday, January 01, 2007

Labels and Specialized Feeds

I recently switched to the new blogger implementation. Now I am able to tag my posts with self-defined labels and you are able to watch blog entries per label or even subscribe to atom or rss feeds per label. Here are a few example feed URLs for my blog:
Oh, btw: Happy New Year!