well, yes, just as i said. reflection stuff are exception. So that's why we need dynamic tracing.
Yours Mike 在 2009-04-01三的 12:46 +0800,Daniel Gong写道: > 2009/4/1 WenDong Zhang <[email protected]> > > > 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 <[email protected]>: > > > You can search my ideas on the mail-archiver. > > > Besides dynamic tracing, I also use dot-class file parsing (The static > > > approach). The dot-class 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 > > > > > > 在 2009-04-01三的 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 <[email protected]>: > > >> > 在 2009-04-01三的 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, Xiao-Feng 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 < > > [email protected]> > > >> >> > 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 <[email protected]> > > >> >> > > > > >> >> > >> 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 project-jre 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 1-2 Complete the design of data structure and the > > algorithm; > > >> >> > >> - Week 3-4 Implement the module of infomation collector; > > >> >> > >> - Week 5-6 Implement the algorithm to list out the classes; > > >> >> > >> - Week 7-8 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 > >
