Hi Jan, Thanks for your contribution, yes this could be done without adding a dependency.
We could avoid reflection stuff and use byte code exploring. Mojarra 2.0 uses code from Glassfish codebase for this byte code stuff btw. You may take a look at their implementation to give an idea. I agree that a custom scan path should fasten the app startup time a lot, usually the annotated classes belong to a certain package in our apps like com.mycompany.myproject.* Cheers, Cagatay On Sun, Jan 18, 2009 at 1:41 PM, Jan-Kees van Andel < jankeesvanan...@gmail.com> wrote: > 2009/1/11 Matthias Wessendorf <mat...@apache.org>: > > On Sun, Jan 11, 2009 at 4:46 AM, Mario Ivankovits <ma...@ops.co.at> > wrote: > > > > ;-) I really hate to wait on the boot-up. > > :-) > > > > -- > > Matthias Wessendorf > > > > blog: http://matthiaswessendorf.wordpress.com/ > > sessions: http://www.slideshare.net/mwessendorf > > twitter: http://twitter.com/mwessendorf > > > > Last week I've been playing around with a (non-Reflection) classpath > scanner of my own. It's actually not that hard to write (if you have > the class file format specification somewhere for reference) and my > experience until now is that it's much faster than using Reflection. > > I have a test webapp which I deploy on Tomcat. This webapp contains > about 650 classes. > > With reflection, it takes about 1500ms to read them all, with my > custom home brewn scanner, it only takes between 300ms and 350ms. > The only performance tweak I have made was a BufferedInputStream, so > I'm sure there is enough room for other improvements (maybe some > fork-join algorithm to support parallelism). > I haven't really tested memory footprint yet, but 650 classes is still > not that much. > > Current status (I do this in spare time ;-)): > - Expose the parsed classes in a developer-friendly format, instead of > the raw class file format. (it's like a lite version of the Reflection > API, to keep it fast). > - Read classes in jars. > - Test for possible ClassLoader issues. > - Allow users to specify their own searchpaths. > - Package filtering. > - Search/filter API to allow the developer to only load classes that > implement some interface or are tagged with an annotation. > > If I'm satisfied with the results, we can see if it may fit into > MyFaces (or maybe a reusable utility, since there are other projects > that need to scan for annotations). > It's not that much code and this way there is no need for an > additional dependency. > > I'll keep you guys informed. > > Regards, > > /Jan-Kees >