OSX Tiger RSS Screensaver IntelliJ IDEA 5.0: Web Productivity
May 02

Using AOP to manage multiple products from one base

AOP, Java, Tech Add comments

A group of people were talking at No Fluff Just Stuff, and Richard Monson-Haefel brought up using AOP to manage multiple products from one code base.

It can actually make a lot of sense. Imagine having a software product that has:

  • Express: A bunch of enterprise features are disabled
  • Standard: fully featured, but none of the hard core enterprise features
  • Enterprise: Enhanced enterprise features

Then there could be trail editions of the various products.

30 day aspect

To handle a trial period, an aspect could be woven into the code to handle all of the crippling.

For example, WebLogic used to let a few IP addresses to hit the server only. An aspect could track the incoming IPs and block after the allowed number come in (of course, some people just put WLS behind a proxy to trick it! Lots of comes in ;).

This could be reused among all editions of the product.

Throttling aspect

Let’s say the Express edition only allows X concurrent uses of feature Y. A simple set of aspects could throttle the features.

Additional behaviour

Additional enhanced behaviour could get weaved into the core.

IBM Cloudscape vs. Apache Derby

There are rumours that IBM uses this technique already. With this, they can add in the enhanced transaction support and other features that make Cloudscape from Derby.

2 Responses to “Using AOP to manage multiple products from one base”

  1. E??anuel Pirsch Says:

    The idea is ok but has drawbacks… If you centralize, in aspetcs, your “crippling” features, they are a lot easier to disable. Unless you use co?pile ti?e weaving, but then you cannot easily uncripple the product with an activation key.

    I also think that a plugin architecture is a lot better way to create a product that can packaged in several editions… Because a plugin architecture uses extention points, it is a lot cleaner (for the product developper) to work with than with aspects that can do whatever they want wherever they want.

    AOP can be use to ?ake an existing product available (by weaving in extension points) in ?any editions a bit easier.

    We ?ust not forget that AOP has been invented to address cross-cuttong concerns. I don’t think bundling a product with features X and Y re?oved is a cross-cutting concern.

    (note: replace ? with the letter after ‘l’ – the content filter don’t like that letter)

  2. Dion Says:


    There are definitely issues with cracking, and plugins make total sense. AOP can give you the power in the few cases where plugins are not enough, as it gives you infinite extension points.

    I think the ‘m’ bug is fixed now. MT-Blacklist added ‘m…’ which meant m followed by 3 characters!



Leave a Reply

Spam is a pain, I am sorry to have to do this to you, but can you answer the question below?

Q: What are the first four letters in the word British?