Hi 
I want to design and develop a big enterprise application using just 
GWT in client side.
I want to break this enterprise application into parts and I call each 
of them a module (or bundle or portlet or whatever!).
These modules might have relation with each other and might call some services that 
exists in other modules (in both client and server side).

The problem is, These modules must be **Designed** , **Developed**, **Compiled** 
and **Deployed Independently** and **Dynamically** and they will be placed and 
shown together in one context on the client and the dependencies 
between modules should be manageable (in both client and server side). 

What can I do? What kind of technologies I can use to build an enterprise application like this? 

When you develop an application that is not divided into parts (In the way that i mentioned) you can easily deploy your application after building your project, but when you change just one form in your application you have to build the entire application again, and deploy the entire application. 

In this application I cannot stop the server to deploy the application again, I want to change and deploy that part of application that is needed to be changed not the entire application!!! 

Of course I have searched about the way that I can solve my problem!!! 
I have found that I can use OSGI on server side because it provides modularity at software construction level and helps me to manage life cycle of modules and many other benefits that you know! 
And I have found that I can use Gadgets on client side. 

What do you think? Are they good choices? 

If they are good choices, how can I start? I know that we have different kinds of implementations of OSGi, like Apache Felix, Eclipse Equinox and Knopflerfish. Which one is good for this choice? 

How GWT and OSGi can be integrated? How can they interact with each other?