I'm interested in graphic design - image processing software. I have been wondering for a while, brainstorming, being creative and visionary and I have come up with an idea, a concept. I would like to discuss this concept with a broader audience.

My idea is an image processing program (think of Adobe Photoshop as an example of possible capabilities, I'm just fantasizing right now) that would be in fact a bare platform with core minimum necessary functionality allowing for plugins to do the real job, a graphic design program should do. So imagine, you have a toolbox which in the bare version would be empty (perhaps almost empty, perhaps there would be some core minimum features necessary), imagine a filters menu in the beginning empty, imagine a list of supported file formats (open and save) in the beginning empty and all the necessary features would be installed on demand via some graceful interface. Perhaps once in a while a version of the program would come out bundled with the most hot plugins.

So the plan is to deliver a very capable universal medium for versatile and powerful plugins, actual tools, filters, file formats (that's what I can think of right now). So think of the application as a platform.

Now, my main question is how to design and implement a mechanism to handle plugins in Java? At this point I have no clue whatsoever, I'm not sure what ground I'm stepping into. Can anyone enlighten me as to how to approach the problem? What do I have to write actually so that the application supports plugins (possibly in a few different categories), what do I have to keep in mind and consider?

Many thanks for all input.