Return-Path: Delivered-To: apmail-harmony-dev-archive@www.apache.org Received: (qmail 62702 invoked from network); 16 Aug 2009 10:30:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 16 Aug 2009 10:30:11 -0000 Received: (qmail 55883 invoked by uid 500); 16 Aug 2009 10:30:17 -0000 Delivered-To: apmail-harmony-dev-archive@harmony.apache.org Received: (qmail 55773 invoked by uid 500); 16 Aug 2009 10:30:17 -0000 Mailing-List: contact dev-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list dev@harmony.apache.org Received: (qmail 55761 invoked by uid 99); 16 Aug 2009 10:30:17 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 16 Aug 2009 10:30:17 +0000 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of tian.galaxy@gmail.com designates 209.85.211.193 as permitted sender) Received: from [209.85.211.193] (HELO mail-yw0-f193.google.com) (209.85.211.193) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 16 Aug 2009 10:30:09 +0000 Received: by ywh31 with SMTP id 31so3082559ywh.4 for ; Sun, 16 Aug 2009 03:29:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=4ZIIcH5Q4LSyw0lDkX2t472OSUKq6vfjRDPavi/57DA=; b=Aoo1AOnnup5lL2QehTw6RBAwjcAiq3JhwdSBNJSinf3sjShFv48XK0Rdnmi4XHg0ZD R3BKQL06TdTI3zfixuXPEmfGpl+fletlElbiEy80GlcjMfITSOqqkSldJUek0NnpO1/7 h2dJ1AOFa69xddNq+gZYT0ykC021+Kuj0Ivr8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=WOC5hn+hWbrlGQOuM6pSMl3WS5WMhNnaFv/epeVEyqTF54lMUVWyKoYZQGm4O/6Up8 NQwNic98cfw6utCNYegpr752SiGlJDexXVV+eT/CgyYUL3tqR2vBI62EN4T7rmbuu8dX YoWy/YlcLWIuhepX9QH8uCntTaxlyITC7GKbo= MIME-Version: 1.0 Received: by 10.231.34.12 with SMTP id j12mr1995116ibd.0.1250418587632; Sun, 16 Aug 2009 03:29:47 -0700 (PDT) In-Reply-To: <9623c9a50908160121n3191cec2kcb4324afd7d9daf0@mail.gmail.com> References: <9623c9a50908160121n3191cec2kcb4324afd7d9daf0@mail.gmail.com> Date: Sun, 16 Aug 2009 18:29:47 +0800 Message-ID: Subject: Re: The OSGi-Harmony Runtime From: galaxy To: dev@harmony.apache.org Content-Type: multipart/alternative; boundary=00032557a12ebc859804713fc38a X-Virus-Checked: Checked by ClamAV on apache.org --00032557a12ebc859804713fc38a Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable A little more than 10M if we only count the jar files in lib/boot right now.Haven't been fully tested though , maybe more than this in the end 2009/8/16 Xiao-Feng Li > Good work! How much is the size of the minimum OSGi-ed JRE? > > Thanks, > xiaofeng > > On Sun, Aug 16, 2009 at 3:22 PM, galaxy wrote: > > Hi all > > Now the code for OSGi-ed Runtime of Harmony is almost complete , I'd > > like to give a review of > > the work so far.The code and usage will be uploaded together soon > > > > Introduction To OSGi-ed JRE > > > > > > > > 1 : The main purpose > > > > OSGi has become one of the best ways to govern the jar files in a numbe= r > of > > applications Such as the power it exhibits in eclipse .And as we all kn= ow > > ,the Harmony runtime is a modularized one and each module , with its > > manifest file , is just like one bundle in the OSGi framework .So we ar= e > > think of governing the modules in Harmony runtime in a OSGi-ed way. > > > > > > > > 2 : Ways to meet the main purpose > > > > Naturally, there are two ways to meet this purpose: > > > > A Implementing the OSGi framework in VM in C/C++ to govern all the jav= a > > modules > > > > B Using one of the OSGi-ed framework implemented in java to implemente= d > a > > half OSGi-ed JRE. > > > > Finally I picked the plan B with the well known OSGi framework > :Felix > > .And the reasons are as follows > > > > First : Implementing a OSGi-ed framework from scratch in c/c++ in the v= m > is > > difficult and time-consuming . > > > > Second : Plan A suffers from the facts that implementations differs hug= e > > from VM to VM .Plan B won=92t have this kind of problem as long as the > modules > > comply with the OSGi specifications and we have a adapted java.exe , th= e > > rest is nearly the same. > > > > Third : Beside the framework ,each OSGi implementation has a lot of > add-ons > > .This will facilitate future development of new features and utilities > .For > > example : the could use the bundle fileinstall to install all the jar > files > > lies in a folder ,very helpful in certain circumstances.This could be > done > > rapidly if we choose plan B . > > > > > > > > 3 : Problems and fixes > > > > The difficulties ,or the main tasks ,of this project are as follows > > > > A Find the minimum working environment of OSGi-framework and modify > the > > rest modules in Harmony ,mainly the manifest file ,to resolve the > coupling > > > > B Modify the classloading mechanism and booting of the jre to be ab= le > > run normal java applications > > > > And the fixes are > > > > For A: > > > > Harmony is a modularized runtime .So determine the minimum working > > environment is no more than choose the right module to stay with the VM > > .However ,although the coupling is little , it does exist . So a > > modification of the module is necessary ,mainly the manifest file .And = as > I > > want to remain the original structure of Harmony as largely as possibl= e > > ,more contents (classes ) will be included in the minimum environment > other > > than splitting the modules apart .The final jre include the following > > component : > > > > > > > > luni.jar > > > > annotation.jar > > > > security.jar > > > > math.jar > > > > text.jar > > > > regex.jar > > > > noi_char.jar > > > > nio.jar > > > > logging.jar > > > > concurrent.jar > > > > archive.jar > > > > the ICU4J folder. > > > > > > > > The remaining jars are governed by the OSGi framework to handle. One mo= re > > thing to mention is the two classes > > ,=94java.beans.PropertyChangelinstener=94,=94java.beans.PropertyChangeE= vent=94 > has > > to be moved out of beans.jar .This is because of the coupling of > beans.jar > > with other modules in the minimum runtime .Well the good thing is these > two > > classes havn=92t imports any other classes in the modules governed by t= he > OSGi > > framework .I think we could include them in any modules lie in the > minimum > > runtime as long as the VM could find them . > > > > > > > > For B: > > > > I added one extra sphere between the VM and the main class to run > > .org.apache.osgi.FelixStarter. , the following is done in this class > > > > First: Loading the configurations and Start Felix ,the OSGi framework w= e > use > > > > Second: Initializing the class org.apache.osgi.OsgiClassLoader ,this > class > > will load the main class and subsequently all the classes used in the > main > > class > > > > Third: Transfer the arguments to the =93real =93 main class ,invoke the= main > > method . > > > > > > > > The sequence of class loading is as follows : > > > > > > > > First : Check the class name to determine whether it should be loaded b= y > the > > parent class loader .This work is done by specifying the > > =93org.osgi.framework.bootdelegation=94 property to include all the pac= kage > > names in the modules stays in the VM . > > > > Second : load the classes in the bundle governed by the framework .I wi= ll > > examine each bundle's export and import property to search for the clas= s > > name ; > > > > Third : the classes in the application=92s class path . > > > > Finally : we could not find the class and a ClassNotFoundException will > be > > thrown . > > > > > > > > Both the OSGi framework and the Harmony do not allow the define , impor= ts > or > > exports of java.* classes and packages ,so a lot of examines has been > > removed to facilitate our purpose . > > > > > > > > > > > > > > > > > > -- > > regards > > Tian > > > > > > -- > http://people.apache.org/~xli > --=20 regards Tian --00032557a12ebc859804713fc38a--