JarAnalyzer Analysis

Run with JarAnalyzer on


Summary

[summary] [jars] [cycles] [explanations]
Jar Name Total Classes Abstract Classes Packages Level Abstractness Efferent Afferent Instability Distance
antlr.jar 210 48 10 1 0.23 0 1 0.00 0.77
commons-beanutils.jar 66 7 4 2 0.11 2 3 0.40 0.49
commons-collections.jar 187 15 3 1 0.08 0 4 0.00 0.92
commons-digester.jar 55 9 3 3 0.16 3 2 0.60 0.24
commons-fileupload.jar 16 4 1 1 0.25 0 1 0.00 0.75
commons-logging.jar 18 2 2 1 0.11 0 4 0.00 0.89
commons-validator.jar 30 1 2 4 0.03 5 1 0.83 0.14
jakarta-oro.jar 62 13 6 1 0.21 0 1 0.00 0.79
struts.jar 289 33 25 5 0.11 7 0 1.00 0.11

Jars

[summary] [jars] [cycles] [explanations]

antlr.jar

Level: 1 Afferent Couplings: 1 Efferent Couplings: 0 Abstractness: 0.23 Instability: 0.00 Distance: 0.77
Uses Jars Used by Jars Cycles With
None struts.jar
None
Packages within jar Unresolved Packages
antlr
antlr.build
antlr.collections
antlr.debug
antlr.preprocessor
antlr.actions.cpp
antlr.actions.csharp
antlr.actions.java
antlr.collections.impl
antlr.debug.misc
None

commons-beanutils.jar

Level: 2 Afferent Couplings: 3 Efferent Couplings: 2 Abstractness: 0.11 Instability: 0.40 Distance: 0.49
Uses Jars Used by Jars Cycles With
commons-collections.jar
commons-logging.jar
commons-digester.jar
commons-validator.jar
struts.jar
None
Packages within jar Unresolved Packages
org.apache.commons.beanutils.converters
org.apache.commons.beanutils
org.apache.commons.beanutils.locale.converters
org.apache.commons.beanutils.locale
None

commons-collections.jar

Level: 1 Afferent Couplings: 4 Efferent Couplings: 0 Abstractness: 0.08 Instability: 0.00 Distance: 0.92
Uses Jars Used by Jars Cycles With
None commons-beanutils.jar
commons-digester.jar
commons-validator.jar
struts.jar
None
Packages within jar Unresolved Packages
org.apache.commons.collections.iterators
org.apache.commons.collections
org.apache.commons.collections.comparators
None

commons-digester.jar

Level: 3 Afferent Couplings: 2 Efferent Couplings: 3 Abstractness: 0.16 Instability: 0.60 Distance: 0.24
Uses Jars Used by Jars Cycles With
commons-logging.jar
commons-collections.jar
commons-beanutils.jar
commons-validator.jar
struts.jar
None
Packages within jar Unresolved Packages
org.apache.commons.digester.rss
org.apache.commons.digester
org.apache.commons.digester.xmlrules
org.xml.sax
org.xml.sax.helpers
org.w3c.dom

commons-fileupload.jar

Level: 1 Afferent Couplings: 1 Efferent Couplings: 0 Abstractness: 0.25 Instability: 0.00 Distance: 0.75
Uses Jars Used by Jars Cycles With
None struts.jar
None
Packages within jar Unresolved Packages
org.apache.commons.fileupload
None

commons-logging.jar

Level: 1 Afferent Couplings: 4 Efferent Couplings: 0 Abstractness: 0.11 Instability: 0.00 Distance: 0.89
Uses Jars Used by Jars Cycles With
None commons-beanutils.jar
commons-digester.jar
commons-validator.jar
struts.jar
None
Packages within jar Unresolved Packages
org.apache.commons.logging.impl
org.apache.commons.logging
org.apache.log4j
org.apache.log
org.apache.avalon.framework.logger

commons-validator.jar

Level: 4 Afferent Couplings: 1 Efferent Couplings: 5 Abstractness: 0.03 Instability: 0.83 Distance: 0.14
Uses Jars Used by Jars Cycles With
jakarta-oro.jar
commons-collections.jar
commons-beanutils.jar
commons-logging.jar
commons-digester.jar
struts.jar
None
Packages within jar Unresolved Packages
org.apache.commons.validator
org.apache.commons.validator.util
org.xml.sax

jakarta-oro.jar

Level: 1 Afferent Couplings: 1 Efferent Couplings: 0 Abstractness: 0.21 Instability: 0.00 Distance: 0.79
Uses Jars Used by Jars Cycles With
None commons-validator.jar
None
Packages within jar Unresolved Packages
org.apache.oro.io
org.apache.oro.text.regex
org.apache.oro.text
org.apache.oro.text.awk
org.apache.oro.text.perl
org.apache.oro.util
None

struts.jar

Level: 5 Afferent Couplings: 0 Efferent Couplings: 7 Abstractness: 0.11 Instability: 1.00 Distance: 0.11
Uses Jars Used by Jars Cycles With
commons-collections.jar
commons-digester.jar
commons-beanutils.jar
commons-logging.jar
commons-validator.jar
commons-fileupload.jar
antlr.jar
None None
Packages within jar Unresolved Packages
org.apache.struts
org.apache.struts.action
org.apache.struts.actions
org.apache.struts.config
org.apache.struts.config.impl
org.apache.struts.plugins
org.apache.struts.taglib
org.apache.struts.taglib.bean
org.apache.struts.taglib.html
org.apache.struts.taglib.logic
org.apache.struts.taglib.nested
org.apache.struts.taglib.nested.bean
org.apache.struts.taglib.nested.html
org.apache.struts.taglib.nested.logic
org.apache.struts.taglib.tiles
org.apache.struts.taglib.tiles.util
org.apache.struts.tiles
org.apache.struts.tiles.actions
org.apache.struts.tiles.beans
org.apache.struts.tiles.definition
org.apache.struts.tiles.xmlDefinition
org.apache.struts.upload
org.apache.struts.util
org.apache.struts.validator
org.apache.struts.validator.validwhen
org.xml.sax

Cycles

[summary] [jars] [cycles] [explanations]

antlr.jar has cycles with

None

commons-beanutils.jar has cycles with

None

commons-collections.jar has cycles with

None

commons-digester.jar has cycles with

None

commons-fileupload.jar has cycles with

None

commons-logging.jar has cycles with

None

commons-validator.jar has cycles with

None

jakarta-oro.jar has cycles with

None

struts.jar has cycles with

None


Explanations

[summary] [jars] [cycles] [explanations]

The following explanations are for quick reference. More detailed information can be found in the JarAnalyzer documentation.

Number of Classes

The number of concrete and abstract classes (and interfaces) in the jar is an indicator of the extensibility of the jar.

Number of Packages

The number of packages in the jar.

Level

The Level represents where in the hierarchy a jar file lives. Level 1 jars are at the bottom. Level 2 depend on at least one Level 1. Level 3 depend on at least one Level 2. The Level of the jar, used in conjunction with Instability, gives an indication of the jar's resilience to change.

Afferent Couplings

The number of other jars that depend upon classes within the jar is an indicator of the jar's responsibility.

Efferent Couplings

The number of other jars that the classes in the jar depend upon is an indicator of the jar's independence.

Abstractness

The ratio of the number of abstract classes (and interfaces) in the analyzed jar to the total number of classes in the analyzed jar.

The range for this metric is 0 to 1, with A=0 indicating a completely concrete jar and A=1 indicating a completely abstract jar.

Instability

The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the jar's resilience to change.

The range for this metric is 0 to 1, with I=0 indicating a completely stable jar and I=1 indicating a completely instable jar.

Distance

The perpendicular distance of a jar from the idealized line A + I = 1. This metric is an indicator of the jar's balance between abstractness and stability.

A jar squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal jars are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0).

The range for this metric is 0 to 1, with D=0 indicating a jar that is coincident with the main sequence and D=1 indicating a jar that is as far from the main sequence as possible.

Unresolved Packages

Packages not found in any of the jars analyzed. These can be filtered from output by specifying the packages to exlude in the Filter.properties file. Conversely, you can include jars containing these packages in the directory being analyzed.

These packages are excluded from all calculations and adding the jars containing these packages will result in modified metrics.