well, yes, just as i said.
reflection stuff are exception. So that's why we need dynamic tracing.
Yours Mike
在 20090401三的 12:46 +0800，Daniel Gong写道：
> 2009/4/1 WenDong Zhang <zwd2005@gmail.com>
>
> > oh, I see what you said: From the research i've been done, it seems
> > that classfile will record the its imports for us.
> >
> > we can get the imports information from .class file, you mean we ony
> > need the binary .class file and we don't have to run it?
>
>
> I'm not quit familiar with the .class file. Is it really that easy?
> What if we use reflection in the application and the class name are
> generated from the user input? Of course it is not usually the case...
>
>
> >
> > 2009/4/1 Mike <mikeandmore@gmail.com>:
> > > You can search my ideas on the mailarchiver.
> > > Besides dynamic tracing, I also use dotclass file parsing (The static
> > > approach). The dotclass file will record dependency in its
> > > ConstantPool.
> > >
> > > Dynamic tracing is used to cover java's reflection. so it should be ok
> > > for user to test their reflection code, isn't it?
> > >
> > > Yours Mike
> > >
> > > 在 20090401三的 11:03 +0800，WenDong Zhang写道：
> > >> I think dynamic tracing the loaded classes is pretty good, the only
> > >> shortcoming is we need to write the test unit completely or there will
> > >> be some classes missing in our mimi jre.
> > >>
> > >> I still want to know are there any other ways to implement this work?
> > >> My first thought is use text analysis, but there are to many problems:
> > >> dynamic loading class, third party lib...
> > >>
> > >> 2009/4/1 Mike <mikeandmore@gmail.com>:
> > >> > 在 20090401三的 00:30 +0800，Daniel Gong写道：
> > >> >> By saying dynamic class loading, do you mean reflection based
class
> > loading
> > >> >> or just class loader way?
> > >> >> For the former one, I don't think the dynamic trace strategy is
> > right. In my
> > >> >> opinion, to do dynamic tracing we need to examine all possible
> > running path
> > >> >> of the program. It is unrealistic, especially when the program
must
> > interact
> > >> >> with users.
> > >> >> The latter one may have the same problem as the former one, I
guess.
> > >> >> In fact, there is a condition that the class name string is from
the
> > user
> > >> >> input. If so, I think we can ignore the class selector and offer
the
> > whole
> > >> >> jre. Except that, it is always possible to parse the code and
> > generate the
> > >> >> dynamic loaded class name, although I still don't have a structured
> > >> >> algorithm...
> > >> >> Hehe, I find my words a bit orderless...
> > >> >>
> > >> >> Daniel
> > >> >
> > >> > 1 I think the dynamic tracing is possible. I took a look at the
> > drlvm's
> > >> > source these days. It should be easy to let the drlvm leave a trace
> > for
> > >> > us.
> > >> > 2 Dynamic tracing should be involved because it can help developers
to
> > >> > do their tests. which means that dynamic collection is being performed
> > >> > when testing.
> > >> >
> > >> > Yours Mike
> > >> >
> > >> >> On Tue, Mar 31, 2009 at 12:17 PM, XiaoFeng Li <xiaofeng.li@
> > gmail.com>wrote:
> > >> >>
> > >> >> > One another thing is the consideration of dynamic class loading.
> > >> >> >
> > >> >> > Thanks,
> > >> >> > xiaofeng
> > >> >> >
> > >> >> > On Mon, Mar 30, 2009 at 11:57 PM, Jimmy,Jing Lv <
> > firepure@gmail.com>
> > >> >> > wrote:
> > >> >> > > Wow the plan's excellent Daniel!
> > >> >> > >
> > >> >> > > And an advanced question, as you know, the jre does
not only have
> > >> >> > classes,
> > >> >> > > but also resources files, property files and etc. So
do you have
> > any
> > >> >> > ideas
> > >> >> > > on select them and merge into the customized JRE? :)
> > >> >> > >
> > >> >> > > 2009/3/30 Daniel Gong <daniel.gong.fudan@gmail.com>
> > >> >> > >
> > >> >> > >> Hi all,
> > >> >> > >> I'm a postgraduate student from Fudan University,
Shanghai,
> > China.
> > >> >> > >> This is my first time joining GSoC and I was not
quite clear
> > that I
> > >> >> > >> should exchange my ideas with possible mentors.
I've submitted
> > my
> > >> >> > proposal
> > >> >> > >> today. It's lucky that I can still modify it.
> > >> >> > >> Here is my proposal, any criticism and suggestions
are
> > welcome~
> > >> >> > >>
> > >> >> > >> =====================================================
> > >> >> > >>
> > >> >> > >> *Abstract:*
> > >> >> > >>
> > >> >> > >> The main idea to deal with the subject is to collect
infomation
> > from the
> > >> >> > >> input first and then generate smallest JRE according
to the
> > infomation
> > >> >> > >> collected and harmony classes dependences.
> > >> >> > >>
> > >> >> > >> *Detailed Description:*
> > >> >> > >>
> > >> >> > >> The implementation of the tool can be divided into
4 parts:
> > >> >> > >>
> > >> >> > >> 1. Infomation Collector. Automatic lexcial tool
such as JLex
> > may be
> > >> >> > used
> > >> >> > >> to analysis the input code and collect infomation
including
> > which
> > >> >> > classes
> > >> >> > >> in
> > >> >> > >> JRE does the project depend on.
> > >> >> > >> 2. Data structure design. Both projectjre class
dependence
> > and jre
> > >> >> > inner
> > >> >> > >> class dependence should be represented in an uniform
way.
> > >> >> > >> 3. Class Lister. An algorithm should be designed
to compute
> > with the
> > >> >> > >> dependence and list out the classes needed in
the smallest
> > JRE.
> > >> >> > >> 4. JRE Builder. Build a JRE according to the class
list.
> > >> >> > >>
> > >> >> > >> *Initial* *Algorithm Design*
> > >> >> > >>
> > >> >> > >> Use a, b to represent two classes, and <a, b>
to represent a
> > relation
> > >> >> > >> between a & b, that is, a depends on b, in other
words, b is
> > refered in
> > >> >> > >> source code of a.
> > >> >> > >>
> > >> >> > >> 1. Given a project with its class set P, let set
S = P and set
> > M =
> > >> >> > empty.
> > >> >> > >>
> > >> >> > >> 2. For each class c in S, search for dependence
<c, *>, and
> > for each d
> > >> >> > >> that <c, d> exists and d is not in M, put
d in S. After
> > searching for
> > >> >> > <c,
> > >> >> > >> *>, put c in M and delete it from S.
> > >> >> > >> 3. Loop step 2 until S is empty, return M  P.
> > >> >> > >>
> > >> >> > >> Here a project's class set includes its customized
classes and
> > classes
> > >> >> > in
> > >> >> > >> other packages that the project may link to.
> > >> >> > >>
> > >> >> > >> *Possible problems to solve*
> > >> >> > >>
> > >> >> > >> To collect the infomation, just reading the "import"
part of the
> > code is
> > >> >> > >> not
> > >> >> > >> a precise strategy. A lexicial scan of the code
from begin to
> > end is a
> > >> >> > >> must.
> > >> >> > >> Automatic lexcial tools can be used to solve the
problem.
> > >> >> > >>
> > >> >> > >> JRE is not just a simple collection of classes needed.
Getting
> > familiar
> > >> >> > >> with
> > >> >> > >> the structure of Harmony JRE is a must.
> > >> >> > >>
> > >> >> > >> *Draft Timeline*
> > >> >> > >>
> > >> >> > >>  Week 12 Complete the design of data structure
and the
> > algorithm;
> > >> >> > >>  Week 34 Implement the module of infomation
collector;
> > >> >> > >>  Week 56 Implement the algorithm to list out
the classes;
> > >> >> > >>  Week 78 Implement the JRE builder;
> > >> >> > >>  Week 9 Debug the whole module and make necessary
> > modifications
> > >> >> > >> to successfully complete the subject.
> > >> >> > >>
> > >> >> > >> *Additional Information:*
> > >> >> > >>
> > >> >> > >> I've been learning and using Java since 3 years
ago. Although my
> > >> >> > >> experience of Harmony is not that vast, my knowledge
in
> > programming,
> > >> >> > >> software architecture, compiler building and algorithm
can help
> > me to
> > >> >> > learn
> > >> >> > >> fast and handle the problem.
> > >> >> > >>
> > >> >> > >> I'm 23 years old, living in Shanghai, China, attending
Fudan
> > University.
> > >> >> > >>
> > >> >> > >> =====================================================
> > >> >> > >>
> > >> >> > >
> > >> >> > >
> > >> >> > >
> > >> >> > > 
> > >> >> > >
> > >> >> > > Best Regards!
> > >> >> > >
> > >> >> > > Jimmy, Jing Lv
> > >> >> > > China Software Development Lab, IBM
> > >> >> > >
> > >> >> >
> > >> >> >
> > >> >> >
> > >> >> > 
> > >> >> > http://people.apache.org/~xli
> > >> >> >
> > >> >
> > >> >
> > >>
> > >>
> > >>
> > >
> > >
> >
> >
> >
> > 
> > Best Regards!
> > Wen Dong
> >
