Wednesday, October 28, 2009

Slides from Eclipse Summit Europe 2009

Today I gave two talks at the Eclipse Summit Europe 2009 in Ludwigsburg. Here are the slides:


Monday, October 26, 2009

Ready for Eclipse Summit Europe 2009

Tomorrow I will travel to the Eclipse Summit Europe 2009 (Ludwigsburg, Germany) to meet great people, see interesting talks and participate in two session on stage: I am happy to present together with Jeff McAffer from EclipseSource our experiences using OSGi in various settings and the "best practices" that we extracted from that. So if you are interested in avoiding the faults and mistakes I did during the past years, join our talk (OSGi Best Practices) and see me talking about my own failures... :-) Its Wednesday at 1:30pm.

In the second talk I will give a short overview of the Equinox Weaving project (formerly known as Equinox Aspects), what's new and what's coming up in the future (Equinox Weaving: Bytecode Weaving in OSGi). So if you would like to hear more about bytecode weaving classes in an OSGi environment, don't miss these 20 minutes at Wednesday at 3:30pm.

See you all in Ludwigsburg!

Thursday, October 08, 2009

Slides from JAOO: OSGi on the Server

It was my first time being at JAOO in Aarhus, Denmark, and it was absolutely great. Lots of interesting talks and discussions and I enjoyed a lot to talk in this fantastic cinema-like room:



I talked about the different settings how you can use OSGi on the server-side and about the dynamics of OSGi applications:
And you can find most of the slides of the other talks at the schedule pages of the conference. Enjoy!


Saturday, October 03, 2009

JAOO is coming...

I will leave Hamburg this Sunday to travel to Aarhus, Denmark, for this years JAOO conference. It's my first JAOO and I heart so many good things about it. :-) And I have the great opportunity to give a talk on "OSGi on the Server". Eberhard Wolff is organizing the "Java Now" track and invited me to this. Thank you very very much for that, Eberhard!!!

Saturday, September 19, 2009

Eclipse 3.6 M2 is out - and includes Equinox Weaving

The second milestone of Eclipse 3.6 is available for download - and its the first milestone build that includes the Equinox Weaving feature as part of the Equinox 3.6 M2 downloads.

After graduating the Equinox Aspects work we renamed it to Equinox Weaving. The reason for this is: The design separates between the base mechanism of modifying bytecode at class loading time and the actual bytecode modification. The AspectJ-based aspect weaving for bundles is just one of many possible bytecode modifiers you can think of. Another one that we implemented (but is not yet part of the Equinox Weaving project) allows you to use Springs load-time weaving infrastructure on top of a OSGi runtime together with Spring Dynamic Modules. And the nice thing about it is: While you are free to choose whatever weaver you like, the caching mechanism of Equinox Weaving works independent from all those weavers.

We still need to update the Equinox web to reflect the graduation and design changes of Equinox Weaving, but please feel free to take a look at it. We are happy to answer questions on the newsgroup and the mailing list.

Enjoy!

Saturday, September 05, 2009

Eclipse Summit Europe 2009 Program Online

The technical program for Eclipse Summit Europe 2009 is now online and I am pretty happy to be part of it with two sessions:
  • Equinox Aspects - Bytecode Weaving for OSGi: This is some kind of an update talk on the Equinox Aspects (or better: Equinox Weaving) project. Will give some insights what has happened and what is planned for the future.
  • OSGi Best Practices: This is a joint talk with Jeff McAffer, Paul Vanderlei and Simon Archer where we will throw together our experiences from building apps on top of OSGi over the past years.
Don't forget to register for the event. Looking forward to seeing you all there!!!

Thursday, July 02, 2009

Slides from Talk at Java-Forum-Stuttgart 2009

Today I gave a talk on building dynamic applications with OSGi at the Java-Forum-Stuttgart 2009. This was mostly the talk I gave (and prepared) together with Kai Tödter and Gerd Wütherich for previous conferences. Here are the slides:
The talk were in the main hall of the conference center and it was fun standing on that huge stage... :-) And of course I got completely confused during the talk while switching between the demo application and a slide showing a screenshot of that demo app - picking up every possible embarrassment... ;-)

Friday, June 26, 2009

ObjektSpektrum-Article on Agility & Architecture

Together with my colleague Stefan Roock I wrote an article on building architectures in an agile way for the current issue of the German ObjektSpektrum magazine. The article is part of a controversy with Thomas Lieder about how to incrementally build architectures in agile projects.

In the introductory part of the controversy we talk about the basics of agile methods and the goal of keeping a flat cost curve for features over a long period of time. To achieve this goal we need to change and refactor the software all the time. This is an integral part of agile software development. We learned that its not possible to foresee the future and therefore decided to design only the next steps - and refactor, if we learn over time and find better designs if new requirements appear. This is quite clear on the low-level of individual classes and nicely supported by test-driven development and refactoring tools.

If we use the same argumentation for the architecture of a project, the discussions get a lot more controversy. People don't believe that it is easy to change and refactor the architecture of a system incrementally and flexible over time. We found this discussion often times quite unstructured and using the term architecture in various flavors and meanings. To ease the discussion about agile architectures we divide between the basic architectural style and the concrete architecture of a concrete system. Our opinion is that the basic architectural style is hard to change over time (for example changing a system from a standalone-rich-client application into a multi-user app-server-based system could be quite hard). In contrast to this we believe that changing the concrete architecture and structure of a system could be done incrementally and agile over time. This is obviously not true for every application. They need to be build from ground-up for flexibility and change. But how to build a system that is easier to change over time, even on the architectural level?

From our point of view, there are three fundamental characteristics of design you need to remember every day to build flexible architectures: understandable, loosely coupled and free of redundance. There are many well-known design principles that helps you to build such systems. Keep them in mind, build loosely coupled components, think about good APIs between them - and you are on the right track to build flexible applications and flexible architectures.

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... ;-)