[ https://issues.apache.org/jira/browse/FELIX-2899?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13019858#comment-13019858 ]
David Bosschaert commented on FELIX-2899: ----------------------------------------- Yes, this sounds like an excellent idea, I'd love to see this done! > [GSoc 2011]Bndtools based OSGi bundles maker project > ---------------------------------------------------- > > Key: FELIX-2899 > URL: https://issues.apache.org/jira/browse/FELIX-2899 > Project: Felix > Issue Type: Task > Environment: Eclipse platform, this project add a new tool for Felix > users to improve OSGi bundles development process in Eclipse environment > Reporter: Tiger Gui > Assignee: Peter Kriens > Labels: gsoc, gsoc2011, mentor, mentoring > Original Estimate: 1680h > Remaining Estimate: 1680h > > OSGi(Open Service Gateway Initiative) is a worldwide consortium of technology > innovators that advances a proven and > mature process to create open specifications that enable the modular assembly > of software built with Java technology. > It is becoming more and more popular in Java Desktop or Web application > developmenent especially when we are working on > some huge project, as it is growing more and more complex, OSGi can help > us.Developing with OSGi technology means > developing bundles: the OSGi components. Bundles are modules. > OSGi is a good thing, but coin has two sides. Usually the development process > with OSGi will be more troublesome. Suppose > that we are in this scenario. We use a interface Greeting to say hello to our > customers , but we should say different words to different kind of customers > , so we have two implemention class for Greeting interface, we > name them BasicGreeting and GreatGreeting. > If we develop this application in a traditional OSGi way, we should create at > lease 3 projects (or bundles) in our IDE (Eclipse for example). > one service define bundle, two service supply bundles, it's a long list in > our workspace.Isn't it troublesome? If we just > write these codes in a Jave project and some tool can help us to split this > project in OSGi way and export 3 jar files, isn't it cool? > So i want to build OSGi split tool for Java project, it can also be used to > split and refactor our exist huge project in OSGi way. This > is very important. In some huge application, how to manage components in a > convinent way is an art, so far, OSGi is the best solution > that we can find. But the refactor and split for exist huge project is > complex and painful. This tool will help us to do this job. > We want to build a bnd(tools) based OSGi bunlles maker project, it will help > us analyse java application and split the whole project into several OSGi > bundles. > Suppose that we write code in good style, define service in interface, > implement the service by the implemention class of the interface > and put similar service in a package. This tool can analyse source code, > supply vari-size grained split and refactor suggestions, show > the analyse result in a GUI view and we can change split solution manually, > then it will split the project into several projects. > Function lists: > 1. configuration > Define default split/refactor solution for this tool. For example,assign > default interface split particle or package split partical. Or may be > we can just split the project by function module define, similar with > M(Module)-V(View)-C(control) develop pattern. Or in some other ways. > 2. analyse module > It can analyse project source code, make clear of class dependency > relationship and give us a graphical view analyse result, this is default > split solution, and we can change it as we like. > The trick is to find strongly coupled packages. These are packages that are > in a cycle. A -> B -> C -> A. Normally I find that these packages should be > in the same bundle. In bnd (the current next branch) I already can calculate > those strongly connected packages. In general, I find that many, especially > larger, bundles consist of a number of subsystems. > These subsystems have dependencies on each other, however, by definition > there is no cycle between these subsystem dependencies (otherwise they would > be strongly connected and be part of the same subsystem). > There should be the following types of subsystems: > API - Self contained, no internal dependencies. All exported/imported. Very > few dependencies. The OSGi specification packages are prime examples. Having > imports in these packages is always suspect. In my experience, API must be > maintained independently but carried in the bundle that implements the API. > Library - Exported code == implementation. Few imports, everything is > exported and in general packages are not substitutable. > Implementation - Private code. No exports, many imports, If it provides an > API it should carry the API packages. > Bridge - Connects an external subsystem to an internal subsystem. Imports > impl. code, no exports. This case is special because they tend to drag in a > lot dependencies that are only required when the dependency is already there. > For example, a subsystem can provide packages that make it useful in Spring. > I.e. it does not require Spring but when other people use spring the package > can be used in that connected world. Another example is bnd. It is an ant > task but it should only require ant when it runs inside ant. > 3. split and export module > We can select split the project into serveral small project or just export > the project as OSGi bundles way, this step rely on pre-step analyse > and saved split/refactor solution. > We have finished demo for this project, you can check it on line here [1]. > [1] http://code.google.com/p/osgimaker/wiki/Quick_Start > Additional information: > My name is Tiger Gui, come from Beijing, China. I have been working with OSGi > for 3 years, familiar with OSGi Felix framework and Eclipse Equinox > framework. Once we helped one customer of our professor to split a very big > complex project into OSGi bundles, it cost us much time, several months to > finish this job. So, i started to think about creating a smart tool which can > help us to do some boring job. Of course, it request high-level of Artificial > Intelligence to do this project well, but we can do it step by step, during > this summer, i would like to finish an available OSGi bundle maker tool which > has special level of intelligence to analyse our project and split. > I have finish much research job and ordered Felix developer mail list and > Equinox developer mail list, discuss this topic in mail list with open source > guys. Especially my mentor Peter Kriens, he gave me many good advises and > work with me together toward to a successful project, so i have confidence > to achieve the goal this summer. If you guys have any other advises for this > project, please let me know, My email account and GTalk account are both > tigergui1...@gmail.com. Thank you. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira