Hi all, i'm a undergraduate student from ZheJiang University and had just submitted my proposal some of the harmony GSOC's project. I've been focusing on harmony from last year when [email protected] gave a speech on Apache Harmony at ZheJiang University ZJG campus.
i'm familiar with java's mechanism, how a java program runs. Know the principle of java virtual machine. i'm also a active opensource programmer, and currently maintain a java project called MNADemo (at http://code.google.com/p/mnademo/ ) I have submitted 3 projects on the GSOC's website. * harmony-class-selector In the Harmony's wiki page it saids. For many java desktop application, sometimes they will offer a JRE in the installation package, which may be big. And the project may also customize the jre to be smallest for the application, which cost much effort. We are looking for an automatic tool to find out all classes for the application and build up a smallest JRE for the customer. For many our developers, we have EasyMock to cheat coverage tools, such as Emma. The smallest jre can help us to find these cheats, make code more robust. This is a rather strange idea. Because, it will make application code more robust, but will not make harmony-class-selector robust. Which means, harmony-class-selector will force user to do nearly 100% testing. This is not always good. So on my own perspective, we need to provide 2 strategies. 1. collect the class dependency according to test generated class file. 2. collect the class dependency according to application jar. One is for user to recheck the their code coverage, another is for productivity use. But if we implement the second strategy, the information collection algorithm will be base on .class file parsing. There's no way for hacking a classloader when the jar file is not fully running. So there should be an alternative. ^_^ * Harmony misc tools (harmony-tools-1 on the wiki page) Tools that be involved are jar, javaws, jconsole. For jar, it's not that hard. jar spec can be found at http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html For javaws, it seems that it involves the JNLP stuff, and it shouldn't be too complicated. ^_^ But for jconsole, sun's jconsole is just too rich featured T_T. I guess we can separate the jconsole into many other small tools, such as heap_mon, thread_mon, vm_info. And also, we may cast away the GUI interface, since harmony's swing/awt implementation is not mature. CLI interface for a monitor is convenient enough for a administrator. * i18n tool harmony/others The wiki page gave us a clear guideline of how to implement it clear enough ^_^. ( http://wiki.apache.org/harmony/Harmony_i18n_tool ) So i only got some ideas on implementation: 1 i think the translation notation should be written in the code. Programmers should know that their strings in the code will be translated. Java5's annotation support can help us with this. Using a annotation within a class is better than a xml file to configure the extractor. 2 injector. how about do a hack on the classpath? when analyzer detect that the class will be translate, use javac to compile different a copy with different languages. then pack to different jar files. When project code is runnning, the injector will place the localized jar prior in the classpath. well, this is the first idea that comes into my mind, it might be impossible to complete, but i'm expecting your feedbacks. ^_^ Thanks all, yours Mike
