[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.technology.equinox] Re: AspectJ-enabled runtime implementation

My 2c go with Peter on this.  This sort of function (menus etc) should be
the subject of explicit, concrete API not runtime bytecode transforms based
on user code.

I still like the idea of investigating aspects and plugins.  A new branch
may well make sense.  Questions:
- Do you feel comfortable working against a version for now while we sort
out the branching story?  Basically you can slurp a version (2.1) and
prototype examples on your own until you want to share your code.
- Could you write a brief plan/statement describing this work area.  I'm
thinking of something similar to what we have for Dynamic Plugins.

Jeff

"Martin Lippert" <lippert@xxxxxxx> wrote in message
news:b6s7dm$9bt$1@xxxxxxxxxxxxxxxx
> Hi,
>
> > The dynamic weaving is a fantastic idea but I think we should be a bit
> > careful. Supporting it is fantastic, making it a centre of an
> > architecture would be 2 steps too far for me today. I think we need a
> > lot more experience with this before one can take such a drastic step.
>
> Regarding the menues, toolbars, and context menues I am not quite sure,
> too. But what do you think of a source branch to try out the dynamic
> bytecode modification for the runtime? I would then add an AspectJ
> plugin for that to let us (and others) experiment with these
> possibilities. Then we can go a bit deeper into the discussion of
> questions like:
>
> - How could the Eclipse system itself benefit from aspects?
> - What happens in the case of dynamic un/reloaded plugins that promotes
> aspects?
>
> Your opinions?
>
> -Martin
>
>
>
> >
> >
> > Kind regards,
> >
> >     Peter Kriens
> >
> > dominic wrote:
> >
> >> Lemme just say that my imagination went crazy after this.
> >>
> >> One typical problem i was trying to find a solution for was the
> >> integration
> >> of different ui plugins. Mozilla does it via overlays. And Netbeans
> >> does it
> >> via branded jar files. If  i am not mistaken there is no way in
> >> eclipse to
> >> specify how ui artifacts coming from different plugins are integrated
> >> together. This is a major problem when people are trying to use
> >> eclipse as a
> >> platform for non ide applications. They usually end up hacking into the
> >> eclipse code. I imagine menus,tbars, context menus (right
> >> clicks),preferences to be cross-plugin pointcuts that could benefit
> >> greatly
> >> from this idea.
> >>
> >>
> >> "Martin Lippert" <lippert@xxxxxxx> wrote in message
> >> news:b5vpjj$e04$1@xxxxxxxxxxxxxxxx
> >>
> >>> Hi all,
> >>>
> >>> my name is Martin (Lippert) and I am new to this group. Brian Barry
and
> >>> Jeff (McAffer) told me that this might be the right place to talk
about
> >>> my ideas. So I hope you are interested in it, even if it might sounds
a
> >>> bit strange at first sight.
> >>>
> >>> During the last weeks and months I had the idea of bringing AspectJ
and
> >>> the Eclipse plugin model closer together by allowing people to develop
> >>> applications using both, aspects written in AspectJ and plugins using
> >>> the Eclipse runtime. They would be able to write aspects in AspectJ,
> >>> compile them with their compiler (or the respective plugin for the
Java
> >>> Tooling inside Eclipse) and plug them into the system as a normal
> >>> plugin. The main motivation is that people are interested in both:
> >>> plugins as their base runtime infrastructure and aspects to modularize
> >>> crosscutting concerns.
> >>>
> >>> I thought about load-time weaving to allow them to individually
develop
> >>> each plugin. Today, they can use an aspect only inside a single
plugin,
> >>> because the compiler weaves the aspect into the other classes. With
> >>> load-time weaving the idea of Eclipse to encapsulate each plugin (even
> >>> with aspects that define cross-plugin pointcuts) would become possible
> >>> for aspects.
> >>>
> >>> So I implemented a modified version of the core plugins (boot and
> >>> runtime) to realize this behavior and demonstrated it at the AOSD
> >>> conference last week. The feedback was very positive and I would
> >>> like to
> >>> continue to improve the implementation and make it available to the
> >>> people who are interested.
> >>> The only thing that makes this a bit complicated is the fact that I
had
> >>> to implement a modified version of the base plugins. It was not
> >>> possible
> >>> to write a plugin that enhances the runtime in the way I want it to
be.
> >>>
> >>> The main reasons for this:
> >>> - I had to inject the weaving at class-loading time. The current class
> >>> loader of Eclipse do not allow me to enhance their behavior for such
> >>> kind of things.
> >>> - I had to add dependencies between plugins at runtime (depending on
> >>> which aspect got woven into which class).
> >>> - I had to add some setup code that got called after the registry is
> >>> initialized but before the application starts.
> >>>
> >>> And this is exactly the point where it might be interesting for this
> >>> project. These are exactly the points where I would love to make the
> >>> runtime more flexible. This might seem a bit strange (especially the
> >>> load-time modifications of classes), but the load-time weaving of
> >>> aspects opens a totally new world of possibilities for aspects and
> >>> plugins used together.
> >>>
> >>> So I am highly interested in hearing your opinions on that. I can also
> >>> provide more technical details of the possible enhancements to the
> >>> runtime. I would also love to contribute some code for this kind of
> >>> modifications, if possible. What do you think?
> >>>
> >>> Best regards,
> >>> Martin Lippert
> >>>
> >>>
> >>> ---
> >>> Martin Lippert
> >>> email: lippert@xxxxxxx
> >>>
> >>>
> >>>
> >>
> >>
> >
>