Skip to content

Latest commit

 

History

History
6849 lines (6413 loc) · 172 KB

File metadata and controls

6849 lines (6413 loc) · 172 KB

External Dependencies for Java


References

External Package Usage

External Package

An external type has no byteCodeVersion since it only occurs as a dependency but wasn't analyzed itself (missing bytecode). Core Java types like java.lang.Integer and primitives like int are considered "build-in" and therefore aren't interpreted as "external" even though their byte code is also missing. A package is categorized as "external" if the types it contains are classified as external.

External annotation dependency

The aforementioned classification encompasses external annotation dependencies as well. These dependencies introduce significantly less coupling and are not indispensable for compiling code. Without the external annotation the code would most probably behave differently. Hence, they are included in the first more overall and general tables and then left out in the later more specific ones.

Table 1 - Top 20 most used external packages overall

This table shows the external packages that are used by the most different internal types overall. Additionally, it shows which types of the external package are actually used. External annotations are also listed.

Only the top 20 entries are shown. The whole table can be found in the following CSV report: External_package_usage_overall

Columns:

  • externalPackageName identifies the external package as described above
  • numberOfExternalCallerPackages refers to the distinct packages that make use of the external package
  • numberOfExternalCallerTypes refers to the distinct types that make use of the external package
  • numberOfExternalTypeCalls includes every dependency to the types in the external package
  • numberOfExternalTypeCallsWeighted includes every invocation or reference (sum of weights) to the types in the external package
  • allPackages contains the total count of all analyzed packages in general
  • allTypes contains the total count of all analyzed types in general
  • externalTypeNames contains a list of actually utilized types of the external package
externalPackageName numberOfExternalCallerPackages numberOfExternalCallerTypes numberOfExternalTypeCalls numberOfExternalTypeCallsWeighted allPackages allTypes tenExternalTypeNames
0 javax.annotation 79 354 387 1795 121 1516 [Nonnull, Nullable, PreDestroy]
1 org.slf4j 70 158 281 799 121 1516 [Logger, LoggerFactory]
2 javax.persistence 15 27 82 311 121 1516 [Id, IdClass, MappedSuperclass, Entity, Table,...
3 com.fasterxml.jackson.annotation 13 23 57 87 121 1516 [JsonTypeInfo$Id, JsonTypeInfo, JsonGetter, Js...
4 jakarta.persistence 10 25 73 299 121 1516 [IdClass, MappedSuperclass, Id, Index, Entity,...
5 io.axoniq.axonserver.connector 7 23 32 129 121 1516 [AxonServerConnection, AxonServerConnectionFac...
6 io.axoniq.axonserver.grpc 7 30 55 273 121 1516 [ErrorMessage, ErrorMessage$Builder, Instructi...
7 org.hamcrest 5 27 59 370 121 1516 [Matcher, Description, TypeSafeMatcher, BaseMa...
8 io.grpc 4 15 62 119 121 1516 [ManagedChannelBuilder, ClientInterceptor, Cha...
9 reactor.core.publisher 4 27 49 198 121 1516 [Mono, Flux, FluxSink, FluxSink$OverflowStrate...
10 com.github.kagkarlsson.scheduler 3 5 8 49 121 1516 [Scheduler, ScheduledExecution, SchedulerState]
11 com.github.kagkarlsson.scheduler.task 3 5 11 44 121 1516 [ExecutionContext, TaskInstance, TaskWithDataD...
12 io.grpc.stub 3 6 7 27 121 1516 [StreamObserver, ClientCallStreamObserver, Cli...
13 org.jobrunr.scheduling 3 5 7 34 121 1516 [JobScheduler, JobBuilder]
14 org.springframework.boot.actuate.health 3 4 7 24 121 1516 [Status, Health$Builder, AbstractHealthIndicat...
15 org.springframework.boot.autoconfigure 3 29 62 64 121 1516 [AutoConfigureBefore, AutoConfiguration, AutoC...
16 org.springframework.boot.autoconfigure.condition 3 42 77 174 121 1516 [ConditionalOnProperty, ConditionalOnMissingBe...
17 org.springframework.context.annotation 3 38 52 166 121 1516 [Bean, ConfigurationCondition$ConfigurationPha...
18 com.fasterxml.jackson.databind 2 9 17 75 121 1516 [JsonNode, DeserializationContext, JsonDeseria...
19 com.thoughtworks.xstream.io 2 4 9 39 121 1516 [HierarchicalStreamReader, HierarchicalStreamW...

Table 1 Chart 1a - Most called external packages in % by types (more than 0.7% overall)

External packages that are used less than 0.7% are grouped into the name "others" to get a cleaner chart with the most significant external packages and how ofter they are called in percent.

<Figure size 640x480 with 0 Axes>

png

Table 1 Chart 1b - Most called external packages in % by types (less than 0.7% overall "others" drill-down)

Shows the lowest (less than 0.7% overall) most called external package. Therefore, this plot breaks down the "others" slice of the pie chart above. Values under 0.3% from that will be grouped into "others" to get a cleaner plot.

<Figure size 640x480 with 0 Axes>

png

Table 1 Chart 2a - Most called external packages in % by packages (more than 0.7% overall)

External packages that are used less than 0.7% are grouped into the name "others" to get a cleaner chart with the most significant external packages and how ofter they are called in percent.

<Figure size 640x480 with 0 Axes>

png

Table 1 Chart 2b - Most called external packages in % by packages (less than 0.7% overall "others" drill-down)

Shows the lowest (less than 0.7% overall) most called external package. Therefore, this plot breaks down the "others" slice of the pie chart above. Values under 0.3% from that will be grouped into "others" to get a cleaner plot.

<Figure size 640x480 with 0 Axes>

png

Table 2 - Top 20 most used external packages grouped by their first 2 layers

This table shows external packages grouped by their first 2 layers that are used by the most different internal types overall including external annotations. For example, "javax.xml.stream" and "javax.xml.parsers" are grouped together to "javax.xml".

Additionally, it shows which types of the external packages are actually used.

Only the top 20 entries are shown. The whole table can be found in the following CSV report: External_second_level_package_usage_overall

Columns:

  • externalSecondLevelPackageName identifies the first 2 levels of the external package as described above
  • numberOfExternalCallerPackages refers to the distinct packages that make use of the external package
  • numberOfExternalCallerTypes refers to the distinct types that make use of the external package
  • numberOfExternalTypeCalls includes every dependency to the types in the external package
  • numberOfExternalTypeCallsWeighted includes every invocation or reference (sum of weights) to the types in the external package
  • allPackages contains the total count of all analyzed packages in general
  • allTypes contains the total count of all analyzed types in general
  • externalTypeNames contains a list of actually utilized types of the external package
externalSecondLevelPackageName numberOfExternalCallerPackages numberOfExternalCallerTypes numberOfExternalTypeCalls numberOfExternalTypeCallsWeighted allPackages allTypes tenExternalTypeNames
0 javax.annotation 79 354 387 1795 121 1516 [Nonnull, Nullable, PreDestroy]
1 org.slf4j 70 158 281 799 121 1516 [Logger, LoggerFactory]
2 com.fasterxml 15 33 89 199 121 1516 [JsonTypeInfo$Id, JsonTypeInfo, JsonGetter, Js...
3 javax.persistence 15 27 82 311 121 1516 [Id, IdClass, MappedSuperclass, Entity, Table,...
4 jakarta.persistence 10 25 73 299 121 1516 [IdClass, MappedSuperclass, Id, Index, Entity,...
5 io.axoniq 9 74 213 1036 121 1516 [PersistentStreamProperties, ObjectUtils, Axon...
6 org.springframework 9 68 286 616 121 1516 [Status, Health$Builder, AbstractHealthIndicat...
7 io.grpc 5 21 73 151 121 1516 [StreamObserver, GrpcSslContexts, ManagedChann...
8 org.hamcrest 5 27 59 370 121 1516 [Matcher, Description, TypeSafeMatcher, BaseMa...
9 reactor.core 5 28 53 203 121 1516 [Mono, Flux, FluxSink, Disposable, FluxSink$Ov...
10 com.google 4 11 14 24 121 1516 [JsonParser, JsonObject, JsonArray, JsonElemen...
11 com.github 3 7 21 107 121 1516 [ExecutionContext, Tasks$OneTimeTaskBuilder, S...
12 com.thoughtworks 3 10 33 121 121 1516 [XStream, CollectionConverter, HierarchicalStr...
13 org.jobrunr 3 5 9 41 121 1516 [JobScheduler, JobBuilder, StateName, IllegalJ...
14 org.apache 2 12 42 139 121 1516 [ClassUtils, GenericRecord, SchemaCompatibilit...
15 org.axonframework 2 10 22 70 121 1516 [MetricsConfigurerModule, GlobalMetricRegistry...
16 org.junit 2 4 8 14 121 1516 [AfterEachCallback, BeforeEachCallback, Extens...
17 org.quartz 2 9 36 187 121 1516 [TriggerBuilder, JobBuilder, Trigger, JobDetai...
18 com.lmax 1 7 14 46 121 1516 [RingBuffer, Disruptor, ExceptionHandler, Wait...
19 io.micrometer 1 1 2 6 121 1516 [SimpleMeterRegistry, MeterRegistry]

Table 2 Chart 1a - Most called second level external packages in % by type

External package groups that are used less than 0.7% are grouped into the name "others" to get a cleaner chart with the most significant external packages and how ofter they are called in percent.

<Figure size 640x480 with 0 Axes>

png

Table 2 Chart 1b - Most called second level external packages in % by type (less than 0.7% overall "others" drill-down)

Shows the lowest (less than 0.7% overall) most called external package. Therefore, this plot breaks down the "others" slice of the pie chart above. Values under 0.3% from that will be grouped into "others" to get a cleaner plot.

<Figure size 640x480 with 0 Axes>

png

Table 2 Chart 2a - Most called second level external packages in % by package (more than 0.7% overall)

External package groups that are used less than 0.7% are grouped into the name "others" to get a cleaner chart with the most significant external packages and how ofter they are called in percent.

<Figure size 640x480 with 0 Axes>

png

Table 2 Chart 2b - Most called second level external packages in % by package (less than 0.7% overall "others" drill-down)

Shows the lowest (less than 0.7% overall) most called external package. Therefore, this plot breaks down the "others" slice of the pie chart above. Values under 0.3% from that will be grouped into "others" to get a cleaner plot.

<Figure size 640x480 with 0 Axes>

png

Table 3 - Top 20 most widely spread external packages

The following tables shows external packages that are used by many different artifacts with the highest number of artifacts first. External annotations are filtered out to only get those external packages that significantly add to coupling.

Statistics like minimum, maximum, average, median and standard deviation are provided for the number of packages and number of types in every artifact that uses the listed external package.

The intuition behind that is to find external package dependencies that are used in a widely spread manner. This should uncover libraries and frameworks and make it easier to distinguish them from external dependencies that are used for specific tasks. It can also be used to find external dependencies that are used sparsely regarding artifacts but are used in many different packages there. This could then be improved by applying a Hexagonal architecture.

Only the top 20 entries are shown. The whole table can be found in the following CSV report: External_package_usage_spread

Columns:

  • externalPackageName identifies the external package as defined above. All other columns contain aggregated data for this external package.
  • numberOfArtifacts contains the number of artifacts that use the external package
  • sumNumberOfPackages contains the sum of all packages that use the external package
  • min/max/med/avg/stdNumberOfPackages provide statistics based on the number of packages of each artifact that uses the external package
  • min/max/med/avg/stdNumberOfPackagesPercentage provide statistics in percent (%) based on the number of packages of each artifact that uses the external package
  • min/max/med/avg/stdNumberOfTypes provide statistics based on the number of types of each artifact that uses the external package
  • min/max/med/avg/stdNumberOfPackagesPercentage provide statistics in percent (%) based on the number of types of each artifact that uses the external package
  • someArtifactNames contain some of the artifacts that contain the external package for reference
externalPackageName numberOfArtifacts sumNumberOfPackages minNumberOfPackages maxNumberOfPackages medNumberOfPackages avgNumberOfPackages stdNumberOfPackages minNumberOfPackagesPercentage maxNumberOfPackagesPercentage ... maxNumberOfTypes medNumberOfTypes avgNumberOfTypes stdNumberOfTypes minNumberOfTypesPercentage maxNumberOfTypesPercentage medNumberOfTypesPercentage avgNumberOfTypesPercentage stdNumberOfTypesPercentage someArtifactNames
0 org.slf4j 9 70 1 42 3.0 7.777778 13.122288 25.000000 100.000000 ... 88 8.0 17.555556 27.400324 2.298851 36.363636 10.602410 13.685432 10.435523 [axon-test-4.12.2, axon-disruptor-4.12.2, axon...
1 jakarta.persistence 4 8 1 3 2.0 2.000000 0.816497 4.285714 20.000000 ... 8 3.0 4.250000 2.500000 0.963855 3.296703 2.077187 2.103733 0.963950 [axon-eventsourcing-4.12.2, axon-messaging-4.1...
2 javax.persistence 4 11 2 4 2.5 2.750000 0.957427 5.714286 30.000000 ... 8 3.0 4.250000 2.500000 0.963855 3.296703 2.077187 2.103733 0.963950 [axon-eventsourcing-4.12.2, axon-messaging-4.1...
3 com.fasterxml.jackson.databind 2 2 1 1 1.0 1.000000 0.000000 1.428571 10.000000 ... 7 4.5 4.500000 3.535534 0.843373 2.197802 1.520588 1.520588 0.957726 [axon-messaging-4.12.2, axon-spring-boot-autoc...
4 com.github.kagkarlsson.scheduler 2 3 1 2 1.5 1.500000 0.707107 2.857143 10.000000 ... 4 2.5 2.500000 2.121320 0.481928 1.098901 0.790414 0.790414 0.436266 [axon-messaging-4.12.2, axon-spring-boot-autoc...
5 com.github.kagkarlsson.scheduler.task 2 3 1 2 1.5 1.500000 0.707107 2.857143 10.000000 ... 4 2.5 2.500000 2.121320 0.481928 1.098901 0.790414 0.790414 0.436266 [axon-messaging-4.12.2, axon-spring-boot-autoc...
6 com.thoughtworks.xstream 2 3 1 2 1.5 1.500000 0.707107 2.857143 10.000000 ... 4 3.0 3.000000 1.414214 0.481928 2.197802 1.339865 1.339865 1.213306 [axon-messaging-4.12.2, axon-spring-boot-autoc...
7 io.axoniq.axonserver.connector 2 7 1 6 3.5 3.500000 3.535534 10.000000 54.545455 ... 22 11.5 11.500000 14.849242 1.098901 14.965986 8.032444 8.032444 9.805510 [axon-spring-boot-autoconfigure-4.12.2, axon-s...
8 io.axoniq.axonserver.connector.control 2 3 1 2 1.5 1.500000 0.707107 10.000000 18.181818 ... 4 2.5 2.500000 2.121320 1.098901 2.721088 1.909995 1.909995 1.147060 [axon-spring-boot-autoconfigure-4.12.2, axon-s...
9 io.axoniq.axonserver.connector.event 2 2 1 1 1.0 1.000000 0.000000 9.090909 10.000000 ... 14 8.0 8.000000 8.485281 2.197802 9.523810 5.860806 5.860806 5.180269 [axon-spring-boot-autoconfigure-4.12.2, axon-s...

10 rows × 25 columns

Table 3a - Top 20 most widely spread external packages - number of internal packages

This table shows the top 20 most widely spread external packages focussing on the spread across the number of internal packages.

externalPackageName numberOfArtifacts minNumberOfPackages maxNumberOfPackages medNumberOfPackages avgNumberOfPackages stdNumberOfPackages
0 org.slf4j 9 1 42 3.0 7.777778 13.122288
1 jakarta.persistence 4 1 3 2.0 2.000000 0.816497
2 javax.persistence 4 2 4 2.5 2.750000 0.957427
3 com.fasterxml.jackson.databind 2 1 1 1.0 1.000000 0.000000
4 com.github.kagkarlsson.scheduler 2 1 2 1.5 1.500000 0.707107
5 com.github.kagkarlsson.scheduler.task 2 1 2 1.5 1.500000 0.707107
6 com.thoughtworks.xstream 2 1 2 1.5 1.500000 0.707107
7 io.axoniq.axonserver.connector 2 1 6 3.5 3.500000 3.535534
8 io.axoniq.axonserver.connector.control 2 1 2 1.5 1.500000 0.707107
9 io.axoniq.axonserver.connector.event 2 1 1 1.0 1.000000 0.000000
10 io.axoniq.axonserver.connector.impl 2 1 3 2.0 2.000000 1.414214
11 org.apache.avro 2 1 1 1.0 1.000000 0.000000
12 org.apache.avro.message 2 1 1 1.0 1.000000 0.000000
13 org.jobrunr.scheduling 2 1 2 1.5 1.500000 0.707107
14 org.reactivestreams 2 1 2 1.5 1.500000 0.707107
15 reactor.core.publisher 2 2 2 2.0 2.000000 0.000000
16 AggregateEventPublisherImpl 1 1 1 1.0 1.000000 0.000000
17 WeakValue 1 1 1 1.0 1.000000 0.000000
18 com.codahale.metrics 1 1 1 1.0 1.000000 0.000000
19 com.fasterxml.jackson.annotation 1 3 3 3.0 3.000000 0.000000

Table 3b - Top 20 most widely spread external packages - percentage of internal packages

This table shows the top 20 most widely spread external packages focussing on the spread across the percentage of internal packages.

externalPackageName numberOfArtifacts minNumberOfPackagesPercentage maxNumberOfPackagesPercentage medNumberOfPackagesPercentage avgNumberOfPackagesPercentage stdNumberOfPackagesPercentage
0 org.slf4j 9 25.000000 100.000000 60.000000 68.041526 29.237798
1 jakarta.persistence 4 4.285714 20.000000 15.555556 13.849206 7.629375
2 javax.persistence 4 5.714286 30.000000 21.111111 19.484127 10.131723
3 com.fasterxml.jackson.databind 2 1.428571 10.000000 5.714286 5.714286 6.060915
4 com.github.kagkarlsson.scheduler 2 2.857143 10.000000 6.428571 6.428571 5.050763
5 com.github.kagkarlsson.scheduler.task 2 2.857143 10.000000 6.428571 6.428571 5.050763
6 com.thoughtworks.xstream 2 2.857143 10.000000 6.428571 6.428571 5.050763
7 io.axoniq.axonserver.connector 2 10.000000 54.545455 32.272727 32.272727 31.498393
8 io.axoniq.axonserver.connector.control 2 10.000000 18.181818 14.090909 14.090909 5.785419
9 io.axoniq.axonserver.connector.event 2 9.090909 10.000000 9.545455 9.545455 0.642824
10 io.axoniq.axonserver.connector.impl 2 10.000000 27.272727 18.636364 18.636364 12.213663
11 org.apache.avro 2 1.428571 10.000000 5.714286 5.714286 6.060915
12 org.apache.avro.message 2 1.428571 10.000000 5.714286 5.714286 6.060915
13 org.jobrunr.scheduling 2 2.857143 10.000000 6.428571 6.428571 5.050763
14 org.reactivestreams 2 2.857143 9.090909 5.974026 5.974026 4.407938
15 reactor.core.publisher 2 2.857143 18.181818 10.519481 10.519481 10.836182
16 AggregateEventPublisherImpl 1 12.500000 12.500000 12.500000 12.500000 0.000000
17 WeakValue 1 100.000000 100.000000 100.000000 100.000000 0.000000
18 com.codahale.metrics 1 10.000000 10.000000 10.000000 10.000000 0.000000
19 com.fasterxml.jackson.annotation 1 4.285714 4.285714 4.285714 4.285714 0.000000

Table 3c - Top 20 most widely spread external packages - number of internal types

This table shows the top 20 most widely spread external packages focussing on the spread across the number of internal types.

externalPackageName numberOfArtifacts minNumberOfTypes maxNumberOfTypes medNumberOfTypes avgNumberOfTypes stdNumberOfTypes
0 org.slf4j 9 1 88 8.0 17.555556 27.400324
1 jakarta.persistence 4 3 8 3.0 4.250000 2.500000
2 javax.persistence 4 3 8 3.0 4.250000 2.500000
3 com.fasterxml.jackson.databind 2 2 7 4.5 4.500000 3.535534
4 com.github.kagkarlsson.scheduler 2 1 4 2.5 2.500000 2.121320
5 com.github.kagkarlsson.scheduler.task 2 1 4 2.5 2.500000 2.121320
6 com.thoughtworks.xstream 2 2 4 3.0 3.000000 1.414214
7 io.axoniq.axonserver.connector 2 1 22 11.5 11.500000 14.849242
8 io.axoniq.axonserver.connector.control 2 1 4 2.5 2.500000 2.121320
9 io.axoniq.axonserver.connector.event 2 2 14 8.0 8.000000 8.485281
10 io.axoniq.axonserver.connector.impl 2 1 4 2.5 2.500000 2.121320
11 org.apache.avro 2 1 4 2.5 2.500000 2.121320
12 org.apache.avro.message 2 3 5 4.0 4.000000 1.414214
13 org.jobrunr.scheduling 2 1 4 2.5 2.500000 2.121320
14 org.reactivestreams 2 4 13 8.5 8.500000 6.363961
15 reactor.core.publisher 2 9 18 13.5 13.500000 6.363961
16 AggregateEventPublisherImpl 1 1 1 1.0 1.000000 0.000000
17 WeakValue 1 1 1 1.0 1.000000 0.000000
18 com.codahale.metrics 1 1 1 1.0 1.000000 0.000000
19 com.fasterxml.jackson.annotation 1 5 5 5.0 5.000000 0.000000

Table 3d - Top 20 most widely spread external packages - percentage of internal types

This table shows the top 20 most widely spread external packages focussing on the spread across the percentage of internal types.

externalPackageName numberOfArtifacts minNumberOfTypesPercentage maxNumberOfTypesPercentage medNumberOfTypesPercentage avgNumberOfTypesPercentage stdNumberOfTypesPercentage
0 org.slf4j 9 2.298851 36.363636 10.602410 13.685432 10.435523
1 jakarta.persistence 4 0.963855 3.296703 2.077187 2.103733 0.963950
2 javax.persistence 4 0.963855 3.296703 2.077187 2.103733 0.963950
3 com.fasterxml.jackson.databind 2 0.843373 2.197802 1.520588 1.520588 0.957726
4 com.github.kagkarlsson.scheduler 2 0.481928 1.098901 0.790414 0.790414 0.436266
5 com.github.kagkarlsson.scheduler.task 2 0.481928 1.098901 0.790414 0.790414 0.436266
6 com.thoughtworks.xstream 2 0.481928 2.197802 1.339865 1.339865 1.213306
7 io.axoniq.axonserver.connector 2 1.098901 14.965986 8.032444 8.032444 9.805510
8 io.axoniq.axonserver.connector.control 2 1.098901 2.721088 1.909995 1.909995 1.147060
9 io.axoniq.axonserver.connector.event 2 2.197802 9.523810 5.860806 5.860806 5.180269
10 io.axoniq.axonserver.connector.impl 2 1.098901 2.721088 1.909995 1.909995 1.147060
11 org.apache.avro 2 0.481928 1.098901 0.790414 0.790414 0.436266
12 org.apache.avro.message 2 0.602410 3.296703 1.949556 1.949556 1.905153
13 org.jobrunr.scheduling 2 0.481928 1.098901 0.790414 0.790414 0.436266
14 org.reactivestreams 2 1.566265 2.721088 2.143677 2.143677 0.816583
15 reactor.core.publisher 2 2.168675 6.122449 4.145562 4.145562 2.795741
16 AggregateEventPublisherImpl 1 1.149425 1.149425 1.149425 1.149425 0.000000
17 WeakValue 1 4.545455 4.545455 4.545455 4.545455 0.000000
18 com.codahale.metrics 1 1.098901 1.098901 1.098901 1.098901 0.000000
19 com.fasterxml.jackson.annotation 1 0.602410 0.602410 0.602410 0.602410 0.000000

Table 3 Chart 1a - Most widely spread external packages in % by types (more than 0.5% overall)

External packages that are used less than 0.5% are grouped into the name "others" to get a cleaner chart with the most significant external packages.

<Figure size 640x480 with 0 Axes>

png

Table 3 Chart 1b - Most widely spread external packages in % by types (less than 0.5% overall "others" drill-down)

Shows the lowest (less than 0.5% overall) most spread external packages. Therefore, this plot breaks down the "others" slice of the pie chart above. Values under 0.3% from that will be grouped into "others" to get a cleaner plot.

<Figure size 640x480 with 0 Axes>

png

Table 3 Chart 2a - Most widely spread external packages in % by packages (more than 0.5% overall)

External packages that are used less than 0.5% are grouped into the name "others" to get a cleaner chart with the most significant external packages.

<Figure size 640x480 with 0 Axes>

png

Table 3 Chart 2b - Most widely spread external packages in % by packages (less than 0.5% overall "others" drill-down)

Shows the lowest (less than 0.5% overall) most spread external packages. Therefore, this plot breaks down the "others" slice of the pie chart above. Values under 0.3% from that will be grouped into "others" to get a cleaner plot.

<Figure size 640x480 with 0 Axes>

png

Table 4 - Top 20 most widely spread external packages grouped by their first 2 layers

This table shows external packages grouped by their first 2 layers that are used by many different artifacts with the highest number of artifacts first. External annotations are filtered out to only get those external packages that significantly add to coupling.

Statistics like minimum, maximum, average, median and standard deviation are provided for the number of packages and number of types in every artifact that uses the listed external package.

The intuition behind that is to find external package dependencies that are used in a widely spread manner. This should uncover libraries and frameworks and make it easier to distinguish them from external dependencies that are used for specific tasks. It can also be used to find external dependencies that are used sparsely regarding artifacts but are used in many different packages there. This could then be improved by applying a Hexagonal architecture.

Only the top 20 entries are shown. The whole table can be found in the following CSV report: External_package_usage_spread

Columns:

  • externalPackageName identifies the external package as defined above. All other columns contain aggregated data for this external package.
  • numberOfArtifacts contains the number of artifacts that use the external package
  • sumNumberOfPackages contains the sum of all packages that use the external package
  • min/max/med/avg/stdNumberOfPackages provide statistics based on the number of packages of each artifact that uses the external package
  • min/max/med/avg/stdNumberOfPackagesPercentage provide statistics in percent (%) based on the number of packages of each artifact that uses the external package
  • min/max/med/avg/stdNumberOfTypes provide statistics based on the number of types of each artifact that uses the external package
  • min/max/med/avg/stdNumberOfPackagesPercentage provide statistics in percent (%) based on the number of types of each artifact that uses the external package
  • someArtifactNames contain some of the artifacts that contain the external package for reference
externalSecondLevelPackageName numberOfArtifacts sumNumberOfPackages minNumberOfPackages maxNumberOfPackages medNumberOfPackages avgNumberOfPackages stdNumberOfPackages minNumberOfPackagesPercentage maxNumberOfPackagesPercentage ... maxNumberOfTypes medNumberOfTypes avgNumberOfTypes stdNumberOfTypes minNumberOfTypesPercentage maxNumberOfTypesPercentage medNumberOfTypesPercentage avgNumberOfTypesPercentage stdNumberOfTypesPercentage someArtifactNames
0 org.slf4j 9 70 1 42 3.0 7.777778 13.122288 25.000000 100.000000 ... 88 8.0 17.555556 27.400324 2.298851 36.363636 10.602410 13.685432 10.435523 [axon-test-4.12.2, axon-disruptor-4.12.2, axon...
1 jakarta.persistence 4 8 1 3 2.0 2.000000 0.816497 4.285714 20.000000 ... 8 3.0 4.250000 2.500000 0.963855 3.296703 2.077187 2.103733 0.963950 [axon-eventsourcing-4.12.2, axon-messaging-4.1...
2 javax.persistence 4 11 2 4 2.5 2.750000 0.957427 5.714286 30.000000 ... 8 3.0 4.250000 2.500000 0.963855 3.296703 2.077187 2.103733 0.963950 [axon-eventsourcing-4.12.2, axon-messaging-4.1...
3 com.fasterxml 2 5 1 4 2.5 2.500000 2.121320 5.714286 10.000000 ... 12 7.5 7.500000 6.363961 1.445783 3.296703 2.371243 2.371243 1.308798 [axon-messaging-4.12.2, axon-spring-boot-autoc...
4 com.github 2 3 1 2 1.5 1.500000 0.707107 2.857143 10.000000 ... 6 3.5 3.500000 3.535534 0.722892 1.098901 0.910896 0.910896 0.265879 [axon-messaging-4.12.2, axon-spring-boot-autoc...
5 com.google 2 4 1 3 2.0 2.000000 1.414214 12.500000 27.272727 ... 10 5.5 5.500000 6.363961 1.149425 6.802721 3.976073 3.976073 3.997484 [axon-test-4.12.2, axon-server-connector-4.12.2]
6 com.thoughtworks 2 3 1 2 1.5 1.500000 0.707107 2.857143 10.000000 ... 8 5.0 5.000000 4.242641 0.963855 2.197802 1.580829 1.580829 0.872532 [axon-messaging-4.12.2, axon-spring-boot-autoc...
7 io.axoniq 2 9 1 8 4.5 4.500000 4.949747 10.000000 72.727273 ... 72 37.0 37.000000 49.497475 2.197802 48.979592 25.588697 25.588697 33.079721 [axon-spring-boot-autoconfigure-4.12.2, axon-s...
8 org.apache 2 2 1 1 1.0 1.000000 0.000000 1.428571 10.000000 ... 9 6.0 6.000000 4.242641 1.084337 3.296703 2.190520 2.190520 1.564379 [axon-messaging-4.12.2, axon-spring-boot-autoc...
9 org.jobrunr 2 3 1 2 1.5 1.500000 0.707107 2.857143 10.000000 ... 4 2.5 2.500000 2.121320 0.481928 1.098901 0.790414 0.790414 0.436266 [axon-messaging-4.12.2, axon-spring-boot-autoc...
10 org.reactivestreams 2 3 1 2 1.5 1.500000 0.707107 2.857143 9.090909 ... 13 8.5 8.500000 6.363961 1.566265 2.721088 2.143677 2.143677 0.816583 [axon-messaging-4.12.2, axon-server-connector-...
11 reactor.core 2 5 2 3 2.5 2.500000 0.707107 2.857143 27.272727 ... 18 14.0 14.000000 5.656854 2.168675 6.802721 4.485698 4.485698 3.276766 [axon-messaging-4.12.2, axon-server-connector-...
12 AggregateEventPublisherImpl 1 1 1 1 1.0 1.000000 0.000000 12.500000 12.500000 ... 1 1.0 1.000000 0.000000 1.149425 1.149425 1.149425 1.149425 0.000000 [axon-test-4.12.2]
13 WeakValue 1 1 1 1 1.0 1.000000 0.000000 100.000000 100.000000 ... 1 1.0 1.000000 0.000000 4.545455 4.545455 4.545455 4.545455 0.000000 [axon-disruptor-4.12.2]
14 com.codahale 1 1 1 1 1.0 1.000000 0.000000 10.000000 10.000000 ... 1 1.0 1.000000 0.000000 1.098901 1.098901 1.098901 1.098901 0.000000 [axon-spring-boot-autoconfigure-4.12.2]
15 com.lmax 1 1 1 1 1.0 1.000000 0.000000 100.000000 100.000000 ... 7 7.0 7.000000 0.000000 31.818182 31.818182 31.818182 31.818182 0.000000 [axon-disruptor-4.12.2]
16 io.grpc 1 5 5 5 5.0 5.000000 0.000000 45.454545 45.454545 ... 21 21.0 21.000000 0.000000 14.285714 14.285714 14.285714 14.285714 0.000000 [axon-server-connector-4.12.2]
17 io.micrometer 1 1 1 1 1.0 1.000000 0.000000 10.000000 10.000000 ... 1 1.0 1.000000 0.000000 1.098901 1.098901 1.098901 1.098901 0.000000 [axon-spring-boot-autoconfigure-4.12.2]
18 io.opentelemetry 1 1 1 1 1.0 1.000000 0.000000 100.000000 100.000000 ... 5 5.0 5.000000 0.000000 100.000000 100.000000 100.000000 100.000000 0.000000 [axon-tracing-opentelemetry-4.12.2]
19 jakarta.validation 1 1 1 1 1.0 1.000000 0.000000 1.428571 1.428571 ... 2 2.0 2.000000 0.000000 0.240964 0.240964 0.240964 0.240964 0.000000 [axon-messaging-4.12.2]

20 rows × 25 columns

Table 4 Chart 1a - Most widely spread second level external packages in % by type (more than 0.5% overall)

External package groups that are used less than 0.5% are grouped into the name "others" to get a cleaner chart with the most significant external packages and how ofter they are called in percent.

<Figure size 640x480 with 0 Axes>

png

Table 4 Chart 1b - Most widely spread second level external packages in % by type (less than 0.5% overall "others" drill-down)

External packages that are used less than 0.5% are grouped into the name "others" to get a cleaner chart with the most significant external packages.

<Figure size 640x480 with 0 Axes>

png

Table 4 Chart 2a - Most widely spread second level external packages in % by package (more than 0.5% overall)

External package groups that are used less than 0.5% are grouped into the name "others" to get a cleaner chart with the most significant external packages and how ofter they are called in percent.

<Figure size 640x480 with 0 Axes>

png

Table 4 Chart 2b - Most widely spread second level external packages in % by package (less than 0.5% overall "others" drill-down)

External packages that are used less than 0.5% are grouped into the name "others" to get a cleaner chart with the most significant external packages.

No data to plot for title 'Top external package (less than 0.7% overall "others" drill-down)'.

Table 5 - Top 20 least used external packages overall

This table identifies external packages that aren't used very often. This could help to find libraries that aren't actually needed or maybe easily replaceable. Some of them might be used sparsely on purpose for example as an adapter to an external library that is actually important. Thus, decisions need to be made on a case-by-case basis.

Only the last 20 entries are shown. The whole table can be found in the following CSV report: External_package_usage_overall

Columns:

  • externalPackageName identifies the external package as described above
  • numberOfExternalTypeCalls includes every invocation or reference to the types in the external package
externalPackageName numberOfExternalTypeCalls
0 org.axonframework.metrics 2
1 org.springframework.boot.docker.compose.servic... 2
2 org.springframework.boot.docker.compose.core 2
3 org.axonframework.micrometer 2
4 org.axonframework.spring.config.annotation 2
5 org.jobrunr.jobs.states 2
6 org.axonframework.spring.eventsourcing 2
7 com.fasterxml.jackson.databind.node 3
8 net.sf.ehcache.event 3
9 org.axonframework.spring.serialization.avro 3
10 org.junit.jupiter.api.extension 3
11 org.springframework.boot.context.properties.bind 3
12 reactor.core.scheduler 3
13 javax.cache.configuration 3
14 com.fasterxml.jackson.core 4
15 org.testcontainers.containers.wait.strategy 4
16 com.google.gson 4
17 com.thoughtworks.xstream.io.xml 4
18 org.springframework.beans.factory.config 4
19 org.springframework.beans.factory.support 4

Table 6 - External usage per artifact sorted by highest external type rate descending

The following table shows the most used external packages separately for each artifact including external annotations. The results are sorted by the artifacts with the highest external type usage rate descending.

The intention of this table is to find artifacts that use a lot of external dependencies in relation to their size and get all the external packages and their usage.

Only the last 40 entries are shown. The whole table can be found in the following CSV report: External_package_usage_per_artifact_sorted

Columns:

  • artifactName is used to group the the external package usage per artifact for a more detailed analysis.
  • externalPackageName identifies the external package as described above
  • numberOfExternalTypeCaller refers to the distinct types that make use of the external package
  • numberOfExternalTypeCalls includes every invocation or reference to the types in the external package
  • numberOfTypesInArtifact represents the total count of all analyzed types for the artifact
  • numberOfExternalTypesInArtifact is the number of all external types that are used by the artifact
  • numberOfExternalPackagesInArtifact is the number of all external packages that are used by the artifact
  • externalTypeRate is the numberOfExternalTypesInArtifact / numberOfTypesInArtifact * 100
  • externalTypeNames contains a list of actually utilized types of the external package
artifactName externalPackageName numberOfExternalTypeCaller numberOfExternalTypeCalls numberOfTypesInArtifact numberOfExternalTypesInArtifact numberOfExternalPackagesInArtifact externalTypeRate externalTypeNames
0 axon-tracing-opentelemetry-4.12.2 io.opentelemetry.api.trace 9 47 5 16 6 320.000000 [Tracer, SpanBuilder, SpanKind, Span, SpanCont...
1 axon-tracing-opentelemetry-4.12.2 io.opentelemetry.context.propagation 9 18 5 16 6 320.000000 [TextMapGetter, TextMapPropagator, TextMapSett...
2 axon-tracing-opentelemetry-4.12.2 javax.annotation 3 8 5 16 6 320.000000 [Nonnull]
3 axon-tracing-opentelemetry-4.12.2 io.opentelemetry.context 2 7 5 16 6 320.000000 [Context, Scope]
4 axon-tracing-opentelemetry-4.12.2 org.slf4j 2 7 5 16 6 320.000000 [LoggerFactory, Logger]
5 axon-tracing-opentelemetry-4.12.2 io.opentelemetry.api 1 2 5 16 6 320.000000 [GlobalOpenTelemetry]
6 axon-spring-boot-autoconfigure-4.12.2 org.springframework.boot.autoconfigure.condition 77 174 91 116 55 127.472527 [ConditionalOnClass, ConditionalOnProperty, Co...
7 axon-spring-boot-autoconfigure-4.12.2 org.springframework.boot.autoconfigure 62 64 91 116 55 127.472527 [AutoConfigureBefore, AutoConfigureAfter, Auto...
8 axon-spring-boot-autoconfigure-4.12.2 org.springframework.context.annotation 52 166 91 116 55 127.472527 [Bean, Primary, Condition, ConditionContext, C...
9 axon-spring-boot-autoconfigure-4.12.2 org.springframework.boot.context.properties 24 30 91 116 55 127.472527 [ConfigurationProperties, EnableConfigurationP...
10 axon-spring-boot-autoconfigure-4.12.2 org.springframework.beans.factory.annotation 11 28 91 116 55 127.472527 [Qualifier, Autowired]
11 axon-spring-boot-autoconfigure-4.12.2 javax.annotation 8 9 91 116 55 127.472527 [Nonnull]
12 axon-spring-boot-autoconfigure-4.12.2 org.slf4j 8 13 91 116 55 127.472527 [Logger, LoggerFactory]
13 axon-spring-boot-autoconfigure-4.12.2 org.springframework.boot.actuate.health 7 24 91 116 55 127.472527 [Status, Health$Builder, AbstractHealthIndicat...
14 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.spring.config 6 18 91 116 55 127.472527 [SpringConfigurer, SpringAxonConfiguration, Sp...
15 axon-spring-boot-autoconfigure-4.12.2 org.springframework.beans.factory 6 26 91 116 55 127.472527 [InitializingBean, NoSuchBeanDefinitionExcepti...
16 axon-spring-boot-autoconfigure-4.12.2 org.springframework.context 6 24 91 116 55 127.472527 [ApplicationContext, ApplicationContextAware]
17 axon-spring-boot-autoconfigure-4.12.2 jakarta.persistence 4 6 91 116 55 127.472527 [EntityManagerFactory, PersistenceContext, Ent...
18 axon-spring-boot-autoconfigure-4.12.2 javax.persistence 4 6 91 116 55 127.472527 [EntityManager, PersistenceContext, EntityMana...
19 axon-spring-boot-autoconfigure-4.12.2 org.apache.avro.message 4 10 91 116 55 127.472527 [SchemaStore, SchemaStore$Cache]
20 axon-spring-boot-autoconfigure-4.12.2 org.springframework.beans.factory.config 4 7 91 116 55 127.472527 [ConfigurableListableBeanFactory, RuntimeBeanR...
21 axon-spring-boot-autoconfigure-4.12.2 org.springframework.beans.factory.support 4 21 91 116 55 127.472527 [BeanDefinitionRegistry, BeanDefinitionRegistr...
22 axon-spring-boot-autoconfigure-4.12.2 org.springframework.boot.testcontainers.servic... 4 9 91 116 55 127.472527 [ContainerConnectionDetailsFactory$ContainerCo...
23 axon-spring-boot-autoconfigure-4.12.2 org.springframework.core.annotation 4 4 91 116 55 127.472527 [Order, AnnotationAwareOrderComparator]
24 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.spring.serialization.avro 3 8 91 116 55 127.472527 [AvroSchemaPackages, SpecificRecordBaseClasspa...
25 axon-spring-boot-autoconfigure-4.12.2 org.springframework.boot.autoconfigure.orm.jpa 3 3 91 116 55 127.472527 [HibernateJpaAutoConfiguration]
26 axon-spring-boot-autoconfigure-4.12.2 org.springframework.boot.autoconfigure.service... 3 3 91 116 55 127.472527 [ConnectionDetails]
27 axon-spring-boot-autoconfigure-4.12.2 org.springframework.boot.context.properties.bind 3 4 91 116 55 127.472527 [Binder, Bindable, BindResult]
28 axon-spring-boot-autoconfigure-4.12.2 org.springframework.core.type 3 5 91 116 55 127.472527 [AnnotatedTypeMetadata, AnnotationMetadata]
29 axon-spring-boot-autoconfigure-4.12.2 com.fasterxml.jackson.databind 2 10 91 116 55 127.472527 [ObjectMapper]
30 axon-spring-boot-autoconfigure-4.12.2 com.fasterxml.jackson.dataformat.cbor.databind 2 8 91 116 55 127.472527 [CBORMapper]
31 axon-spring-boot-autoconfigure-4.12.2 com.thoughtworks.xstream 2 8 91 116 55 127.472527 [XStream]
32 axon-spring-boot-autoconfigure-4.12.2 io.axoniq.axonserver.connector.event 2 3 91 116 55 127.472527 [PersistentStreamProperties]
33 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.metrics 2 8 91 116 55 127.472527 [MetricsConfigurerModule, GlobalMetricRegistry]
34 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.micrometer 2 10 91 116 55 127.472527 [GlobalMetricRegistry, MetricsConfigurerModule]
35 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.spring.config.annotation 2 7 91 116 55 127.472527 [HandlerDefinitionFactoryBean, SpringParameter...
36 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.spring.eventsourcing 2 10 91 116 55 127.472527 [SpringAggregateSnapshotter$Builder, SpringAgg...
37 axon-spring-boot-autoconfigure-4.12.2 org.springframework.beans 2 3 91 116 55 127.472527 [BeansException]
38 axon-spring-boot-autoconfigure-4.12.2 org.springframework.boot.docker.compose.core 2 5 91 116 55 127.472527 [RunningService, ConnectionPorts]
39 axon-spring-boot-autoconfigure-4.12.2 org.springframework.boot.docker.compose.servic... 2 5 91 116 55 127.472527 [DockerComposeConnectionSource, DockerComposeC...

Table 7 - Artifacts and their external packages

The following table shows the artifacts with the highest external dependency usage broken down by each external package including external annotations. The results are sorted by the artifacts with the highest external package usage rate descending.

The intention of this table is to find artifacts that use a lot of external dependencies and show in detail which external packages are used by them and how many internal packages.

Only the last 30 entries are shown. The whole table can be found in the following CSV report: External_package_usage_per_artifact_and_external_package

Columns:

  • artifactName is the name of the artifact with external dependencies (first grouping column)
  • artifactPackages is the number of packages in the artifact
  • artifactTypes is the number of types in the artifact
  • artifactExternalPackages is the number of external packages used by the artifact
  • artifactExternalCallingPackages is the number of packages that use external packages in the artifact
  • artifactExternalCallingPackagesRate is artifactExternalCallingPackages / artifactPackages * 100%
  • externalPackageName the name of the external package (second grouping column)
  • numberOfPackages is the number of internal packages of the artifact that use the external packages
  • numberOfTypes is the number of internal types of the artifact that use the external packages
  • packagesCallingExternalRate is numberOfPackages / artifactPackages * 100%
  • typesCallingExternalRate is numberOfTypes / artifactTypes * 100%
  • nameOfPackages names of the internal packages that use the external package in the artifact
  • someTypeNames some (10) names of the internal types that use the external package in the artifact
artifactName artifactPackages artifactTypes artifactExternalPackages artifactExternalCallingPackages artifactExternalCallingPackagesRate externalPackageName numberOfPackages numberOfTypes packagesCallingExternalRate typesCallingExternalRate nameOfPackages someTypeNames
0 axon-configuration-4.12.2 1 43 3 1 100.0 jakarta.annotation 1 1 100.0 2.325581 [org.axonframework.config] [org.axonframework.config.UpdateCheckerConfigu...
1 axon-configuration-4.12.2 1 43 3 1 100.0 javax.annotation 1 13 100.0 30.232558 [org.axonframework.config] [org.axonframework.config.Configurer, org.axon...
2 axon-configuration-4.12.2 1 43 3 1 100.0 org.slf4j 1 7 100.0 16.279070 [org.axonframework.config] [org.axonframework.config.DefaultConfigurer, o...
3 axon-disruptor-4.12.2 1 22 5 1 100.0 WeakValue 1 1 100.0 4.545455 [org.axonframework.disruptor.commandhandling] [org.axonframework.disruptor.commandhandling.F...
4 axon-disruptor-4.12.2 1 22 5 1 100.0 com.lmax.disruptor 1 7 100.0 31.818182 [org.axonframework.disruptor.commandhandling] [org.axonframework.disruptor.commandhandling.B...
5 axon-disruptor-4.12.2 1 22 5 1 100.0 com.lmax.disruptor.dsl 1 4 100.0 18.181818 [org.axonframework.disruptor.commandhandling] [org.axonframework.disruptor.commandhandling.D...
6 axon-disruptor-4.12.2 1 22 5 1 100.0 javax.annotation 1 6 100.0 27.272727 [org.axonframework.disruptor.commandhandling] [org.axonframework.disruptor.commandhandling.B...
7 axon-disruptor-4.12.2 1 22 5 1 100.0 org.slf4j 1 8 100.0 36.363636 [org.axonframework.disruptor.commandhandling] [org.axonframework.disruptor.commandhandling.B...
8 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 javax.annotation 4 8 40.0 8.791209 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.AxonA...
9 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.boot.context.properties 4 24 40.0 26.373626 [org.axonframework.springboot, org.axonframewo... [org.axonframework.springboot.DistributedComma...
10 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.slf4j 3 4 30.0 4.395604 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.XStre...
11 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.boot.actuate.health 3 4 30.0 4.395604 [org.axonframework.actuator, org.axonframework... [org.axonframework.actuator.HealthStatus, org....
12 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.boot.autoconfigure 3 29 30.0 31.868132 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.Metri...
13 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.boot.autoconfigure.condition 3 42 30.0 46.153846 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.XStre...
14 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.context.annotation 3 38 30.0 41.758242 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.Metri...
15 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 jakarta.persistence 2 3 20.0 3.296703 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.JpaEv...
16 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 javax.persistence 2 3 20.0 3.296703 [org.axonframework.springboot.autoconfig.legac... [org.axonframework.springboot.autoconfig.legac...
17 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.beans.factory.annotation 2 10 20.0 10.989011 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.AxonJ...
18 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.beans.factory.config 2 3 20.0 3.296703 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.Infra...
19 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.beans.factory.support 2 2 20.0 2.197802 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.Persi...
20 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.boot.autoconfigure.orm.jpa 2 3 20.0 3.296703 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.JpaEv...
21 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.context 2 5 20.0 5.494505 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.AxonA...
22 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.core.annotation 2 4 20.0 4.395604 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.Infra...
23 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 org.springframework.core.type 2 3 20.0 3.296703 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.Updat...
24 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 com.codahale.metrics 1 1 10.0 1.098901 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.Metri...
25 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 com.fasterxml.jackson.databind 1 2 10.0 2.197802 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.Objec...
26 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 com.fasterxml.jackson.dataformat.cbor.databind 1 2 10.0 2.197802 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.AxonA...
27 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 com.github.kagkarlsson.scheduler 1 1 10.0 1.098901 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.AxonD...
28 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 com.github.kagkarlsson.scheduler.task 1 1 10.0 1.098901 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.AxonD...
29 axon-spring-boot-autoconfigure-4.12.2 10 91 55 10 100.0 com.thoughtworks.xstream 1 2 10.0 2.197802 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.AxonA...

Table 7a - Artifacts and their external packages (first 2 levels)

The following table groups the external packages by their first two levels. For example javax.xml.namespace and javax.xml.stream will be grouped together to javax.xml.

artifactName artifactPackages artifactTypes artifactExternalPackagesFirst2Levels artifactExternalCallingPackages artifactExternalCallingPackagesRate externalPackageNameFirst2Levels numberOfPackages numberOfTypes packagesCallingExternalRate typesCallingExternalRate nameOfPackages someTypeNames
0 axon-configuration-4.12.2 1 43 3 1 100.00 jakarta.annotation 1 1 100.000000 2.325581 [org.axonframework.config] [org.axonframework.config.UpdateCheckerConfigu...
1 axon-configuration-4.12.2 1 43 3 1 100.00 javax.annotation 1 13 100.000000 30.232558 [org.axonframework.config] [org.axonframework.config.Configurer, org.axon...
2 axon-configuration-4.12.2 1 43 3 1 100.00 org.slf4j 1 7 100.000000 16.279070 [org.axonframework.config] [org.axonframework.config.DefaultConfigurer, o...
3 axon-disruptor-4.12.2 1 22 4 1 100.00 WeakValue 1 1 100.000000 4.545455 [org.axonframework.disruptor.commandhandling] [org.axonframework.disruptor.commandhandling.F...
4 axon-disruptor-4.12.2 1 22 4 1 100.00 com.lmax 1 7 100.000000 31.818182 [org.axonframework.disruptor.commandhandling] [org.axonframework.disruptor.commandhandling.B...
5 axon-disruptor-4.12.2 1 22 4 1 100.00 javax.annotation 1 6 100.000000 27.272727 [org.axonframework.disruptor.commandhandling] [org.axonframework.disruptor.commandhandling.B...
6 axon-disruptor-4.12.2 1 22 4 1 100.00 org.slf4j 1 8 100.000000 36.363636 [org.axonframework.disruptor.commandhandling] [org.axonframework.disruptor.commandhandling.B...
7 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 org.springframework 8 67 80.000000 73.626374 [org.axonframework.actuator, org.axonframework... [org.axonframework.actuator.HealthStatus, org....
8 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 javax.annotation 4 8 40.000000 8.791209 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.AxonA...
9 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 org.slf4j 3 4 30.000000 4.395604 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.XStre...
10 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 jakarta.persistence 2 3 20.000000 3.296703 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.JpaEv...
11 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 javax.persistence 2 3 20.000000 3.296703 [org.axonframework.springboot.autoconfig.legac... [org.axonframework.springboot.autoconfig.legac...
12 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 org.axonframework 2 10 20.000000 10.989011 [org.axonframework.springboot.autoconfig, org.... [org.axonframework.springboot.autoconfig.Metri...
13 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 com.codahale 1 1 10.000000 1.098901 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.Metri...
14 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 com.fasterxml 1 3 10.000000 3.296703 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.Objec...
15 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 com.github 1 1 10.000000 1.098901 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.AxonD...
16 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 com.thoughtworks 1 2 10.000000 2.197802 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.AxonA...
17 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 io.axoniq 1 2 10.000000 2.197802 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.Persi...
18 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 io.micrometer 1 1 10.000000 1.098901 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.Micro...
19 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 org.apache 1 3 10.000000 3.296703 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.AxonA...
20 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 org.jetbrains 1 1 10.000000 1.098901 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.AxonT...
21 axon-spring-boot-autoconfigure-4.12.2 10 91 15 10 100.00 org.jobrunr 1 1 10.000000 1.098901 [org.axonframework.springboot.autoconfig] [org.axonframework.springboot.autoconfig.AxonJ...
22 axon-tracing-opentelemetry-4.12.2 1 5 3 1 100.00 io.opentelemetry 1 5 100.000000 100.000000 [org.axonframework.tracing.opentelemetry] [org.axonframework.tracing.opentelemetry.OpenT...
23 axon-tracing-opentelemetry-4.12.2 1 5 3 1 100.00 javax.annotation 1 3 100.000000 60.000000 [org.axonframework.tracing.opentelemetry] [org.axonframework.tracing.opentelemetry.OpenT...
24 axon-tracing-opentelemetry-4.12.2 1 5 3 1 100.00 org.slf4j 1 1 100.000000 20.000000 [org.axonframework.tracing.opentelemetry] [org.axonframework.tracing.opentelemetry.OpenT...
25 axon-server-connector-4.12.2 11 147 8 10 90.91 org.slf4j 9 25 81.818182 17.006803 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.Server...
26 axon-server-connector-4.12.2 11 147 8 10 90.91 io.axoniq 8 72 72.727273 48.979592 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.Topolo...
27 axon-server-connector-4.12.2 11 147 8 10 90.91 javax.annotation 8 21 72.727273 14.285714 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.Server...
28 axon-server-connector-4.12.2 11 147 8 10 90.91 io.grpc 5 21 45.454545 14.285714 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.Instru...
29 axon-server-connector-4.12.2 11 147 8 10 90.91 com.google 3 10 27.272727 6.802721 [org.axonframework.axonserver.connector.event.... [org.axonframework.axonserver.connector.event....

Table 7b - Top 15 external dependency using artifacts as columns with their external packages

The following table uses pivot to show the artifacts in columns, the external dependencies in rows and the number of internal packages as values.

artifactName axon-messaging-4.12.2 axon-spring-boot-autoconfigure-4.12.2 axon-server-connector-4.12.2 axon-test-4.12.2 axon-modelling-4.12.2 axon-eventsourcing-4.12.2 axon-tracing-opentelemetry-4.12.2 axon-disruptor-4.12.2 axon-configuration-4.12.2
externalPackageName
AggregateEventPublisherImpl 0 0 0 1 0 0 0 0 0
WeakValue 0 0 0 0 0 0 0 1 0
com.codahale.metrics 0 1 0 0 0 0 0 0 0
com.fasterxml.jackson.annotation 11 0 0 0 2 0 0 0 0
com.fasterxml.jackson.core 1 0 0 0 0 0 0 0 0
... ... ... ... ... ... ... ... ... ...
reactor.core 1 0 0 0 0 0 0 0 0
reactor.core.publisher 2 0 2 0 0 0 0 0 0
reactor.core.scheduler 0 0 2 0 0 0 0 0 0
reactor.util.concurrent 1 0 0 0 0 0 0 0 0
reactor.util.context 1 0 0 0 0 0 0 0 0

130 rows × 9 columns

Table 7c - Top 15 external dependency using artifacts as columns with their external packages (first 2 levels)

The following table uses pivot to show the artifacts in columns, the external package name grouped by its first two levels in rows and the number of internal packages as values. For example javax.xml.namespace and javax.xml.stream will be grouped together to javax.xml.

artifactName axon-messaging-4.12.2 axon-server-connector-4.12.2 axon-spring-boot-autoconfigure-4.12.2 axon-modelling-4.12.2 axon-eventsourcing-4.12.2 axon-test-4.12.2 axon-disruptor-4.12.2 axon-configuration-4.12.2 axon-tracing-opentelemetry-4.12.2
externalPackageNameFirst2Levels
AggregateEventPublisherImpl 0 0 0 0 0 1 0 0 0
WeakValue 0 0 0 0 0 0 1 0 0
com.codahale 0 0 1 0 0 0 0 0 0
com.fasterxml 12 0 1 2 0 0 0 0 0
com.github 2 0 1 0 0 0 0 0 0
com.google 0 3 0 0 0 1 0 0 0
com.lmax 0 0 0 0 0 0 1 0 0
com.thoughtworks 2 0 1 0 0 0 0 0 0
io.axoniq 0 8 1 0 0 0 0 0 0
io.grpc 0 5 0 0 0 0 0 0 0
io.micrometer 0 0 1 0 0 0 0 0 0
io.opentelemetry 0 0 0 0 0 0 0 0 1
jakarta.annotation 0 0 0 0 0 0 0 1 0
jakarta.persistence 4 0 2 2 2 0 0 0 0
jakarta.validation 1 0 0 0 0 0 0 0 0
javax.annotation 50 8 4 4 6 4 1 1 1
javax.cache 1 0 0 0 0 0 0 0 0
javax.persistence 7 0 2 3 3 0 0 0 0
javax.validation 1 0 0 0 0 0 0 0 0
net.sf 1 0 0 0 0 0 0 0 0
nu.xom 1 0 0 0 0 0 0 0 0
org.apache 1 0 1 0 0 0 0 0 0
org.axonframework 0 0 2 0 0 0 0 0 0
org.dom4j 1 0 0 0 0 0 0 0 0
org.ehcache 1 0 0 0 0 0 0 0 0
org.hamcrest 0 0 0 0 0 5 0 0 0
org.jetbrains 0 0 1 0 0 0 0 0 0
org.jobrunr 2 0 1 0 0 0 0 0 0
org.junit 0 0 0 0 0 2 0 0 0
org.quartz 2 0 0 0 0 0 0 0 0
org.reactivestreams 2 1 0 0 0 0 0 0 0
org.slf4j 42 9 3 6 5 2 1 1 1
org.springframework 0 1 8 0 0 0 0 0 0
org.testcontainers 0 0 0 0 0 1 0 0 0
reactor.core 2 3 0 0 0 0 0 0 0
reactor.util 1 0 0 0 0 0 0 0 0

Table 7 Chart 1 - Top 15 external dependency using artifacts and their external packages stacked

The following chart shows the top 15 external package using artifacts and breaks down which external packages they use in how many different internal packages with stacked bars.

Note that every external dependency is counted separately so that if on internal package uses two external packages it will be displayed for both and so stacked twice.

<Figure size 640x480 with 0 Axes>

png

Table 7 Chart 2 - Top 15 external dependency using artifacts and their external packages (first 2 levels) stacked

The following chart shows the top 15 external package using artifacts and breaks down which external packages (first 2 levels) are used in how many different internal packages with stacked bars.

Note that every external dependency is counted separately so that if on internal package uses two external packages it will be displayed for both and so stacked twice.

<Figure size 640x480 with 0 Axes>

png

Table 8 - External usage per artifact

The following table shows the most used external packages separately for each artifact including external annotations. The results are grouped per artifact and sorted by the artifacts with the highest external type usage rate descending. Additionally, for each artifact the top 5 used external packages are listed in the top5ExternalPackages column.

The intention of this table is to find artifacts that use a lot of external dependencies in relation to their size and get an overview per artifact with the top 5 used external packages, the number of external types and packages used etc. .

Only the last 40 entries are shown. The whole table can be found in the following CSV report: External_package_usage_per_artifact_sorted_top

Columns:

  • artifactName is used to group the the external package usage per artifact for a more detailed analysis.
  • numberOfTypesInArtifact represents the total count of all analyzed types for the artifact
  • numberOfExternalTypesInArtifact is the number of all external types that are used by the artifact
  • numberOfExternalPackagesInArtifact is the number of all external packages that are used by the artifact
  • externalTypeRate is the numberOfExternalTypesInArtifact / numberOfTypesInArtifact * 100
  • numberOfExternalTypeCaller refers to the distinct types that make use of the external package
  • numberOfExternalTypeCalls includes every invocation or reference to the types in the external package
  • numberOfExternalPackages is the number of distinct external packages used by the artifact
  • top5ExternalPackages contains a list of the top 5 most used external packages of the artifact
  • someExternalTypes contains a list of lists and is also mean't to provide some examples of external types used
artifactName numberOfTypesInArtifact numberOfExternalTypesInArtifact numberOfExternalPackagesInArtifact externalTypeRate numberOfExternalTypeCaller numberOfExternalTypeCalls numberOfExternalPackages top5ExternalPackages someExternalTypes
0 axon-tracing-opentelemetry-4.12.2 5 16 6 320.000000 26 89 6 [io.opentelemetry.context.propagation, io.open... [TextMapGetter, TextMapPropagator, TextMapSett...
1 axon-spring-boot-autoconfigure-4.12.2 91 116 55 127.472527 354 785 55 [org.springframework.boot.autoconfigure.condit... [ConditionalOnClass, ConditionalOnProperty, Co...
2 axon-server-connector-4.12.2 147 119 26 80.952381 377 1494 26 [io.grpc, io.axoniq.axonserver.grpc, io.axoniq... [Metadata, StatusRuntimeException, Metadata$As...
3 axon-disruptor-4.12.2 22 13 5 59.090909 33 93 5 [org.slf4j, com.lmax.disruptor, javax.annotati... [Logger, LoggerFactory, WaitStrategy, Blocking...
4 axon-test-4.12.2 87 28 13 32.183908 99 501 13 [org.hamcrest, javax.annotation, org.testconta... [BaseMatcher, Description, Matcher, TypeSafeMa...
5 axon-modelling-4.12.2 158 35 5 22.151899 99 356 5 [javax.annotation, javax.persistence, jakarta.... [Nonnull, Nullable, Basic, MappedSuperclass, I...
6 axon-messaging-4.12.2 830 179 50 21.566265 817 3233 50 [javax.annotation, org.slf4j, com.fasterxml.ja... [Nonnull, Nullable, Logger, LoggerFactory, Jso...
7 axon-eventsourcing-4.12.2 133 25 4 18.796992 74 238 4 [javax.annotation, org.slf4j, jakarta.persiste... [Nonnull, Nullable, PreDestroy, Logger, Logger...
8 axon-configuration-4.12.2 43 5 3 11.627907 27 141 3 [org.slf4j, javax.annotation, jakarta.annotation] [Logger, LoggerFactory, Nonnull, Nullable, Non...

Table 9 - External usage per artifact and package

This table lists internal packages and the artifacts they belong to that use many different external types of a specific external package without taking external annotations into account.

Only the last 40 entries are shown. The whole table can be found in the following CSV report: External_package_usage_per_artifact_and_package

Columns:

  • artifactName that contains the type that calls the external package
  • fullPackageName is the package within the artifact that contains the type that calls the external package
  • externalPackageName identifies the external package as described above
  • numberOfExternalTypeCaller refers to the distinct types that make use of the external package
  • numberOfExternalTypeCalls includes every invocation or reference to the types in the external package
  • numberOfTypesInPackage represents the total count of all types in that package
  • externalTypeNames contains a list of actually utilized types of the external package
  • packageName contains the name of the package (last part of fullPackageName)
artifactName fullPackageName externalPackageName numberOfExternalTypeCaller numberOfExternalTypeCalls numberOfTypesInPackage externalTypeNames packageName
0 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.util io.grpc 50 90 31 [ForwardingClientCallListener$SimpleForwarding... util
1 axon-test-4.12.2 org.axonframework.test.matchers org.hamcrest 38 147 24 [Matcher, Description, TypeSafeMatcher, BaseMa... matchers
2 axon-messaging-4.12.2 org.axonframework.queryhandling reactor.core.publisher 28 108 48 [Flux, Mono, FluxSink, FluxSink$OverflowStrate... queryhandling
3 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.query io.axoniq.axonserver.grpc.query 25 124 21 [QueryResponse, QueryRequest, QueryResponse$Bu... query
4 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.event.axon io.axoniq.axonserver.connector.event 21 98 32 [PersistentStreamProperties, AggregateEventStr... axon
5 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.query.s... io.axoniq.axonserver.grpc.query 21 113 6 [SubscriptionQuery, QueryResponse, QueryUpdate... subscription
6 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.util io.axoniq.axonserver.grpc 20 106 31 [MetaDataValue, SerializedObject, MetaDataValu... util
7 axon-messaging-4.12.2 org.axonframework.deadline.quartz org.quartz 18 109 4 [TriggerBuilder, JobBuilder, Trigger, JobDetai... quartz
8 axon-messaging-4.12.2 org.axonframework.eventhandling.scheduling.quartz org.quartz 17 76 6 [JobDataMap, JobDetail, Scheduler, Trigger, Jo... quartz
9 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.query io.axoniq.axonserver.connector 17 53 21 [FlowControl, ReplyChannel, Registration, Resu... query
10 axon-messaging-4.12.2 org.axonframework.eventhandling org.slf4j 16 56 100 [Logger, LoggerFactory] eventhandling
11 axon-messaging-4.12.2 org.axonframework.serialization.avro org.apache.avro 16 54 11 [SchemaCompatibility$Incompatibility, Schema, ... avro
12 axon-messaging-4.12.2 org.axonframework.eventhandling.pooled org.slf4j 15 73 22 [LoggerFactory, Logger] pooled
13 axon-messaging-4.12.2 org.axonframework.serialization.json com.fasterxml.jackson.databind 15 65 7 [JsonNode, DeserializationContext, JsonDeseria... json
14 axon-configuration-4.12.2 org.axonframework.config org.slf4j 13 35 43 [LoggerFactory, Logger] config
15 axon-disruptor-4.12.2 org.axonframework.disruptor.commandhandling org.slf4j 12 22 22 [Logger, LoggerFactory] commandhandling
16 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.event.axon org.slf4j 12 29 32 [LoggerFactory, Logger] axon
17 axon-server-connector-4.12.2 org.axonframework.axonserver.connector io.axoniq.axonserver.grpc.control 10 55 32 [TopologyChange, NodeInfo$Builder, NodeInfo, U... connector
18 axon-disruptor-4.12.2 org.axonframework.disruptor.commandhandling com.lmax.disruptor 9 25 22 [RingBuffer, ExceptionHandler, WaitStrategy, B... commandhandling
19 axon-messaging-4.12.2 org.axonframework.queryhandling org.slf4j 9 18 48 [Logger, LoggerFactory] queryhandling
20 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.command io.axoniq.axonserver.grpc.command 9 56 11 [Command, CommandResponse$Builder, CommandResp... command
21 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.query io.axoniq.axonserver.grpc 9 46 21 [ErrorMessage, SerializedObject, ProcessingKey... query
22 axon-tracing-opentelemetry-4.12.2 org.axonframework.tracing.opentelemetry io.opentelemetry.context.propagation 9 18 5 [TextMapGetter, TextMapPropagator, TextMapSett... opentelemetry
23 axon-tracing-opentelemetry-4.12.2 org.axonframework.tracing.opentelemetry io.opentelemetry.api.trace 9 47 5 [Tracer, SpanBuilder, SpanContext, Span, Statu... opentelemetry
24 axon-eventsourcing-4.12.2 org.axonframework.eventsourcing.eventstore.leg... org.slf4j 8 15 10 [Logger, LoggerFactory] legacyjpa
25 axon-messaging-4.12.2 org.axonframework.common.caching org.ehcache.event 8 30 15 [EventType, CacheEventListener, CacheEvent, Ev... caching
26 axon-messaging-4.12.2 org.axonframework.common.caching javax.cache.event 8 26 15 [CacheEntryEventFilter, CacheEntryListener, Ca... caching
27 axon-messaging-4.12.2 org.axonframework.messaging.annotation org.slf4j 8 15 54 [Logger, LoggerFactory] annotation
28 axon-server-connector-4.12.2 org.axonframework.axonserver.connector io.axoniq.axonserver.grpc 8 68 32 [ErrorMessage, ErrorMessage$Builder, Instructi... connector
29 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.command io.axoniq.axonserver.grpc 8 25 11 [ErrorMessage, MetaDataValue$Builder, MetaData... command
30 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.event.axon io.axoniq.axonserver.grpc.event 8 43 32 [Event, Event$Builder, Confirmation, EventWith... axon
31 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.util org.slf4j 8 19 31 [Logger, LoggerFactory] util
32 axon-test-4.12.2 org.axonframework.test.saga org.hamcrest 8 66 21 [StringDescription, Matcher, Description, Core... saga
33 axon-messaging-4.12.2 org.axonframework.messaging.responsetypes reactor.core.publisher 7 34 8 [Mono, Flux] responsetypes
34 axon-messaging-4.12.2 org.axonframework.queryhandling org.reactivestreams 7 23 48 [Publisher] queryhandling
35 axon-messaging-4.12.2 org.axonframework.serialization.avro org.apache.avro.generic 7 26 11 [GenericRecord, GenericData, GenericDatumReader] avro
36 axon-messaging-4.12.2 org.axonframework.serialization.avro org.apache.avro.message 7 23 11 [BadHeaderException, BinaryMessageEncoder, Sch... avro
37 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.event.axon io.axoniq.axonserver.grpc 7 18 32 [SerializedObject$Builder, SerializedObject, E... axon
38 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.query reactor.core.publisher 7 27 21 [SignalType, Flux, Mono, BaseSubscriber] query
39 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.query.s... reactor.core.publisher 7 29 6 [Flux, Mono, FluxSink] subscription

Table 10 - Top 20 external package usage per type

This table shows internal types that utilize the most different external types and packages. These have the highest probability of change depending on external libraries. A case-by-case approach is also advisable here because there could for example also be code units that encapsulate an external library and have this high count of external dependencies on purpose.

Only the last 20 entries are shown. The whole table can be found in the following CSV report: External_package_usage_per_type

Columns:

  • artifactName that contains the type that calls the external package
  • fullPackageName is the package within the artifact that contains the type that calls external types
  • typeName identifies the internal type within the package and artifact that calls external types
  • numberOfExternalTypeCaller and numberOfExternalTypes refers to the distinct external types that are used by the internal type
  • numberOfExternalTypeCalls includes every invocation or reference to the types in the external package
  • numberOfTypesInPackage represents the total count of all types in that package
  • numberOfExternalPackages shows how many different external packages are used by the internal type
  • externalPackageNames contains the list of names of the different external packages that are used by the internal type
  • externalTypeNames contains a list of actually utilized types of the external package
  • packageName contains the name of the package (last part of fullPackageName)
artifactName fullPackageName typeName numberOfExternalTypeCaller numberOfExternalTypeCalls numberOfExternalPackages numberOfExternalTypes externalPackageNames externalTypeNames packageName fullTypeName
0 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig AxonAutoConfiguration 20 100 13 20 [org.springframework.beans.factory, com.faster... [org.springframework.beans.factory.BeanFactory... autoconfig org.axonframework.springboot.autoconfig.AxonAu...
1 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig AxonServerAutoConfiguration 19 55 13 19 [org.springframework.boot.autoconfigure.condit... [org.springframework.boot.autoconfigure.condit... autoconfig org.axonframework.springboot.autoconfig.AxonSe...
2 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig InfraConfiguration 18 53 9 18 [org.springframework.boot.autoconfigure.condit... [org.springframework.boot.autoconfigure.condit... autoconfig org.axonframework.springboot.autoconfig.InfraC...
3 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.query AxonServerQueryBus 15 73 8 15 [javax.annotation, org.slf4j, io.axoniq.axonse... [javax.annotation.Nonnull, org.slf4j.Logger, o... query org.axonframework.axonserver.connector.query.A...
4 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig AvroSerializerAutoConfiguration 14 28 8 14 [org.springframework.boot.autoconfigure.condit... [org.springframework.boot.autoconfigure.condit... autoconfig org.axonframework.springboot.autoconfig.AvroSe...
5 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig PersistentStreamMessageSourceRegistrar 13 34 8 13 [org.springframework.beans.factory.support, or... [org.springframework.beans.factory.support.Bea... autoconfig org.axonframework.springboot.autoconfig.Persis...
6 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.util AbstractQualifiedBeanCondition 12 24 8 12 [javax.annotation, org.springframework.beans.f... [javax.annotation.Nonnull, org.springframework... util org.axonframework.springboot.util.AbstractQual...
7 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.event.axon AxonServerEventStore$AxonIQEventStorageEngine 12 58 7 12 [io.axoniq.axonserver.connector.event, io.axon... [io.axoniq.axonserver.connector.event.AppendEv... axon org.axonframework.axonserver.connector.event.a...
8 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig XStreamAutoConfiguration 11 15 7 11 [com.thoughtworks.xstream, org.springframework... [com.thoughtworks.xstream.XStream, org.springf... autoconfig org.axonframework.springboot.autoconfig.XStrea...
9 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig MicrometerMetricsAutoConfiguration 13 30 7 13 [org.springframework.boot.autoconfigure.condit... [org.springframework.boot.autoconfigure.condit... autoconfig org.axonframework.springboot.autoconfig.Microm...
10 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig JpaAutoConfiguration 10 19 7 10 [org.springframework.context.annotation, org.s... [org.springframework.context.annotation.Bean, ... autoconfig org.axonframework.springboot.autoconfig.JpaAut...
11 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig AxonDbSchedulerAutoConfiguration 9 26 7 9 [org.springframework.context.annotation, org.s... [org.springframework.context.annotation.Bean, ... autoconfig org.axonframework.springboot.autoconfig.AxonDb...
12 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig.legacyjpa JpaJavaxAutoConfiguration 11 20 7 11 [org.springframework.context.annotation, org.s... [org.springframework.context.annotation.Bean, ... legacyjpa org.axonframework.springboot.autoconfig.legacy...
13 axon-messaging-4.12.2 org.axonframework.serialization.json JacksonSerializer 9 28 6 9 [javax.annotation, com.fasterxml.jackson.datab... [javax.annotation.Nonnull, com.fasterxml.jacks... json org.axonframework.serialization.json.JacksonSe...
14 axon-server-connector-4.12.2 org.axonframework.axonserver.connector AxonServerConnectionManager$Builder 9 45 6 9 [io.axoniq.axonserver.grpc.control, io.grpc, i... [io.axoniq.axonserver.grpc.control.NodeInfo$Bu... connector org.axonframework.axonserver.connector.AxonSer...
15 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.event.axon AxonServerEventScheduler 10 26 6 10 [io.axoniq.axonserver.grpc, io.axoniq.axonserv... [io.axoniq.axonserver.grpc.ErrorMessage, io.ax... axon org.axonframework.axonserver.connector.event.a...
16 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.processor EventProcessorControlService 8 36 6 8 [javax.annotation, org.slf4j, io.axoniq.axonse... [javax.annotation.Nonnull, org.slf4j.Logger, o... processor org.axonframework.axonserver.connector.process...
17 axon-server-connector-4.12.2 org.axonframework.axonserver.connector.query QueryProcessingTask 10 38 6 10 [org.slf4j, io.axoniq.axonserver.connector, or... [org.slf4j.Logger, org.slf4j.LoggerFactory, io... query org.axonframework.axonserver.connector.query.Q...
18 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig MetricsAutoConfiguration 11 28 6 11 [org.springframework.boot.autoconfigure.condit... [org.springframework.boot.autoconfigure.condit... autoconfig org.axonframework.springboot.autoconfig.Metric...
19 axon-spring-boot-autoconfigure-4.12.2 org.axonframework.springboot.autoconfig JpaEventStoreAutoConfiguration 9 9 6 9 [org.springframework.context.annotation, org.s... [org.springframework.context.annotation.Bean, ... autoconfig org.axonframework.springboot.autoconfig.JpaEve...

Table 11 - External package usage distribution per type

This table shows how many types use one external package, how many use two, etc. . This gives an overview of the distribution of external package calls and the overall coupling to external libraries. The higher the count of distinct external packages the lower should be the count of types that use them. Dependencies to external annotations are left out here.

More details about which types have the highest external package dependency usage can be in the tables 4 and 5 above.

Only the last 40 entries are shown. The whole table can be found in the following CSV report: External_package_usage_per_artifact_distribution

Columns:

  • artifactName that contains the type that calls the external package
  • artifactTypes the total count of types in the artifact
  • numberOfExternalPackages the number of distinct external packages used
  • numberOfTypes in the artifact where the numberOfExternalPackages applies
  • numberOfTypesPercentage in the artifact where the numberOfExternalPackages applies in %
artifactName artifactPackages artifactTypes numberOfExternalPackages numberOfPackages numberOfTypes typesCallingExternalRate packagesCallingExternalRate
0 axon-messaging-4.12.2 70 830 49 49 173 20.843373 70.000000
1 axon-server-connector-4.12.2 11 147 24 10 91 61.904762 90.909091
2 axon-spring-boot-autoconfigure-4.12.2 10 91 50 8 40 43.956044 80.000000
3 axon-modelling-4.12.2 10 158 3 7 12 7.594937 70.000000
4 axon-test-4.12.2 8 87 12 6 36 41.379310 75.000000
5 axon-eventsourcing-4.12.2 9 133 3 5 15 11.278195 55.555556
6 axon-configuration-4.12.2 1 43 1 1 7 16.279070 100.000000
7 axon-disruptor-4.12.2 1 22 4 1 10 45.454545 100.000000
8 axon-tracing-opentelemetry-4.12.2 1 5 5 1 5 100.000000 100.000000

Table 12 - External package usage per artifact grouped by number of internal packages

The following table shows the external package usage for every artifact grouped by the number of distinct internal dependent packages. The intention is to find external package usage spread across multiple internal packages in artifacts.

Artifacts that encapsulate external dependency calls in one internal package overall (or each) are easier to change if those external dependencies change and are most likely applying a Hexagonal architecture. Artifacts that use external dependencies in multiple internal packages need more effort to adapt to changes of those external dependencies. On one hand this could be intended e.g. when using standardized libraries. On the other hand this might indicate higher than necessary coupling.

The whole table can be found in the following CSV report: External_package_usage_per_internal_package_count

artifactName axon-eventsourcing-4.12.2 axon-messaging-4.12.2 axon-modelling-4.12.2 axon-server-connector-4.12.2 axon-spring-boot-autoconfigure-4.12.2 axon-test-4.12.2
numberOfPackages
2 22.222222 2.857143 20.0 18.181818 20.0 25.0
3 33.333333 0.000000 30.0 27.272727 30.0 0.0
4 0.000000 5.714286 40.0 36.363636 40.0 50.0
5 55.555556 0.000000 0.0 0.000000 0.0 62.5
6 66.666667 0.000000 60.0 54.545455 0.0 0.0
7 0.000000 10.000000 0.0 63.636364 0.0 0.0
8 0.000000 0.000000 0.0 72.727273 0.0 0.0
9 0.000000 0.000000 0.0 81.818182 0.0 0.0
11 0.000000 15.714286 0.0 0.000000 0.0 0.0
42 0.000000 60.000000 0.0 0.000000 0.0 0.0
50 0.000000 71.428571 0.0 0.000000 0.0 0.0

Table 13 - External package usage aggregated

This table lists all artifacts and their external package dependencies usage aggregated over internal packages.

The intention behind this is to find artifacts that use an external dependency across multiple internal packages. This might be intended for frameworks and standardized libraries and helps to quantify how widely those are used. For some external dependencies it might be beneficial to only access it from one package and provide an abstraction for internal usage following a Hexagonal architecture. Thus, this table may also help in finding application for the Hexagonal architecture or similar approaches (Domain Driven Design Anti Corruption Layer). After all it is easier to update or replace such external dependencies when they are used in specific areas and not all over the code.

Only the last 40 entries are shown. The whole table can be found in the following CSV report: External_package_usage_per_artifact_package_aggregated

Columns:

  • artifactName that contains the type that calls the external package
  • artifactPackages is the total count of packages in the artifact
  • artifactTypes is the total count of types in the artifact
  • numberOfExternalPackages the number of distinct external packages used
  • [min,max,med,avg,std]NumberOfPackages provide statistics based on each external package and its package usage within the artifact
  • [min,max,med,avg,std]NumberOfPackagesPercentage provide statistics in % based on each external package and its package usage within the artifact in respect to the overall count of packages in the artifact
  • [min,max,med,avg,std]NumberOfTypes provide statistics based on each external package and its type usage within the artifact
  • [min,max,med,avg,std]NumberOfTypePercentage provide statistics in % based on each external package and its type usage within the artifact in respect to the overall count of packages in the artifact
  • numberOfTypes in the artifact where the numberOfExternalPackages applies
  • numberOfTypesPercentage in the artifact where the numberOfExternalPackages applies in %

Table 13a - External package usage aggregated - count of internal packages

artifactName artifactPackages numberOfExternalPackages minNumberOfPackages medNumberOfPackages avgNumberOfPackages maxNumberOfPackages stdNumberOfPackages
0 axon-messaging-4.12.2 70 49 1 1.0 2.163265 42 5.846462
1 axon-server-connector-4.12.2 11 24 1 2.0 2.500000 9 2.085144
2 axon-modelling-4.12.2 10 3 2 3.0 3.666667 6 2.081666
3 axon-eventsourcing-4.12.2 9 3 1 2.0 2.666667 5 2.081666
4 axon-test-4.12.2 8 12 1 1.0 1.416667 5 1.164500
5 axon-spring-boot-autoconfigure-4.12.2 10 50 1 1.0 1.280000 3 0.536048
6 axon-configuration-4.12.2 1 1 1 1.0 1.000000 1 0.000000
7 axon-disruptor-4.12.2 1 4 1 1.0 1.000000 1 0.000000
8 axon-tracing-opentelemetry-4.12.2 1 5 1 1.0 1.000000 1 0.000000

Table 13b - External package usage aggregated - percentage of internal packages

artifactName artifactPackages numberOfExternalPackages minNumberOfPackagesPercentage medNumberOfPackagesPercentage avgNumberOfPackagesPercentage maxNumberOfPackagesPercentage stdNumberOfPackagesPercentage
0 axon-messaging-4.12.2 70 49 1.428571 1.428571 3.090379 60.000000 8.352089
1 axon-server-connector-4.12.2 11 24 9.090909 18.181818 22.727273 81.818182 18.955856
2 axon-modelling-4.12.2 10 3 20.000000 30.000000 36.666667 60.000000 20.816660
3 axon-eventsourcing-4.12.2 9 3 11.111111 22.222222 29.629630 55.555556 23.129622
4 axon-test-4.12.2 8 12 12.500000 12.500000 17.708333 62.500000 14.556252
5 axon-spring-boot-autoconfigure-4.12.2 10 50 10.000000 10.000000 12.800000 30.000000 5.360475
6 axon-configuration-4.12.2 1 1 100.000000 100.000000 100.000000 100.000000 0.000000
7 axon-disruptor-4.12.2 1 4 100.000000 100.000000 100.000000 100.000000 0.000000
8 axon-tracing-opentelemetry-4.12.2 1 5 100.000000 100.000000 100.000000 100.000000 0.000000

Table 13c - External package usage aggregated - count of internal types

artifactName artifactTypes numberOfExternalPackages minNumberOfTypes medNumberOfTypes avgNumberOfTypes maxNumberOfTypes stdNumberOfTypes
0 axon-messaging-4.12.2 830 49 1 2.0 5.142857 88 12.514991
1 axon-server-connector-4.12.2 147 24 1 4.0 8.000000 30 8.330144
2 axon-modelling-4.12.2 158 3 3 3.0 5.000000 9 3.464102
3 axon-eventsourcing-4.12.2 133 3 3 3.0 6.666667 14 6.350853
4 axon-test-4.12.2 87 12 1 1.5 3.833333 27 7.346407
5 axon-spring-boot-autoconfigure-4.12.2 91 50 1 1.0 1.960000 6 1.339510
6 axon-configuration-4.12.2 43 1 7 7.0 7.000000 7 0.000000
7 axon-disruptor-4.12.2 22 4 1 5.5 5.000000 8 3.162278
8 axon-tracing-opentelemetry-4.12.2 5 5 1 2.0 2.200000 4 1.303840

Table 13d - External package usage aggregated - percentage of internal types

artifactName artifactTypes numberOfExternalPackages minNumberOfTypesPercentage medNumberOfTypesPercentage avgNumberOfTypesPercentage maxNumberOfTypesPercentage stdNumberOfTypesPercentage
0 axon-messaging-4.12.2 830 49 0.120482 0.240964 0.619621 10.602410 1.507830
1 axon-server-connector-4.12.2 147 24 0.680272 2.721088 5.442177 20.408163 5.666765
2 axon-modelling-4.12.2 158 3 1.898734 1.898734 3.164557 5.696203 2.192469
3 axon-eventsourcing-4.12.2 133 3 2.255639 2.255639 5.012531 10.526316 4.775077
4 axon-test-4.12.2 87 12 1.149425 1.724138 4.406130 31.034483 8.444146
5 axon-spring-boot-autoconfigure-4.12.2 91 50 1.098901 1.098901 2.153846 6.593407 1.471988
6 axon-configuration-4.12.2 43 1 16.279070 16.279070 16.279070 16.279070 0.000000
7 axon-disruptor-4.12.2 22 4 4.545455 25.000000 22.727273 36.363636 14.373989
8 axon-tracing-opentelemetry-4.12.2 5 5 20.000000 40.000000 44.000000 80.000000 26.076810

Table 13 Chart 1 - External package usage - max percentage of internal types

This chart shows per artifact the maximum percentage of internal packages (compared to all packages in that artifact) that use one specific external package.

Example: One artifact might use 10 external packages where 7 of them are used in one internal package, 2 of them are used in two packages and one external dependency is used in 5 packages. So for this artifact there will be a point at x = 10 (external packages used by the artifact) and 5 (max internal packages). Instead of the count the percentage of internal packages compared to all packages in that artifact is used to get a normalized plot.

<Figure size 640x480 with 0 Axes>

png

Table 13 Chart 2 - External package usage - median percentage of internal types

This chart shows per artifact the median (0.5 percentile) of internal packages (compared to all packages in that artifact) that use one specific external package.

Example: One artifact might use 9 external packages where 3 of them are used in 1 internal package, 3 of them are used in 2 package and the last 3 ones are used in 3 packages. So for this artifact there will be a point at x = 10 (external packages used by the artifact) and 2 (median internal packages). Instead of the count the percentage of internal packages compared to all packages in that artifact is used to get a normalized plot.

<Figure size 640x480 with 0 Axes>

png

Maven POMs

Table 14 - Maven POMs and their declared dependencies

If Maven is used as for package and dependency management and a ".pom" file is included in the artifact, the following table shows the external dependencies that are declared there.

pom.artifactId pom.name scope dependency.optional dependentArtifact.group dependentArtifact.name
0 axon-configuration Axon Framework - Configuration test False org.quartz-scheduler quartz
1 axon-configuration Axon Framework - Configuration default True jakarta.annotation jakarta.annotation-api
2 axon-configuration Axon Framework - Configuration test False org.hsqldb hsqldb
3 axon-configuration Axon Framework - Configuration default False ${project.groupId} axon-disruptor
4 axon-configuration Axon Framework - Configuration test True io.projectreactor reactor-core
... ... ... ... ... ... ...
160 axon-test Axon Framework - Test Fixtures default True junit junit
161 axon-tracing-opentelemetry Axon Framework - OpenTelemetry Tracing provided False com.google.code.findbugs jsr305
162 axon-tracing-opentelemetry Axon Framework - OpenTelemetry Tracing default False io.opentelemetry opentelemetry-api
163 axon-tracing-opentelemetry Axon Framework - OpenTelemetry Tracing default False ${project.groupId} axon-messaging
164 axon-tracing-opentelemetry Axon Framework - OpenTelemetry Tracing default False ${project.groupId} axon-configuration

165 rows × 6 columns