Features comparison

Many toolkits don't advertise their features (or lack thereof) very well, so selecting one that fits your needs can be a pretty frustrating experience. The table below compares a number of features across different toolkits. While it is accurate (to the best of my knowledge), it is probably also biased, as I am the author of one of the "competing" toolkits. I welcome all corrections, clarifications, and suggestions for other features to compare.

You can click on blue entries to get a popup with extra details. The JSR 175 column is blank for now since the specification is not yet public.

QDox Attributes v0.6 JSR 175 MetaClass Nanning Attributes Attrib4j C# attributes
String key/value attributes: yes yes yes no no
Strongly typed object attributes: yes no no yes yes
Attribute subtyping: yes n/a n/a ? ?
Typed attribute serialization: automatic or manual n/a n/a manual manual (?)
Positional or named parameters: both named or single n/a positional only both
Complex parameters: some n/a n/a ? no
Target restrictions: not yet possible no ? yes
Multiple attributes with same tag on an element: yes yes no ? yes
Keeps attributes in declaration order: yes yes no ? no
Attribute inheritance: not yet ? yes yes yes
Supports nested classes: yes yes yes ? yes (?)
Early access to attributes: yes yes no no no (?)
Attribute assignments can be modified at runtime: no yes no no no (?)
Attributes can be modified at runtime: yes possible ? ? yes (?)
Wildcard tag application: not yet possible no no no
Attribute storage: serialized in one separate file per class or one separate file per JAR raw data in one separate file per class text properties in one separate file per class serialized within the class file serialized within the assembly file
Prunes orphan attribute files: yes ? no yes yes
Retention policy: storage, not yet retrieval storage only none ? none
Attribute compilation speed: fast fast fast slow very fast
Runtime performance: ? ? ? ? fast
Runtime code size: 14Kb optimized and as delivered 35Kb as delivered, 17Kb optimized ~140Kb 530Kb as delivered n/a
Ant task: not yet yes yes yes (?) n/a
Eclipse incremental compiler plugin: not yet no no not yet (?) n/a
Unit test coverage: some good a bit ? n/a
JDK version required: 1.4 1.5 (?) 1.3+ ? ? n/a

Other attributes projects: Apache Commons Attributes (abandoned), XRAI (based on XDoclet, not released yet?).