Skip to content

Latest commit

 

History

History
6967 lines (6537 loc) · 174 KB

File metadata and controls

6967 lines (6537 loc) · 174 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 jakarta.annotation 98 672 859 4788 113 1199 [Nonnull, Nullable]
1 org.slf4j 38 74 133 456 113 1199 [LoggerFactory, Logger]
2 io.axoniq.axonserver.connector 5 16 23 124 113 1199 [AxonServerConnectionFactory, AxonServerConnec...
3 io.axoniq.axonserver.grpc 5 18 40 271 113 1199 [ErrorMessage, InstructionAck$Builder, Instruc...
4 jakarta.persistence 5 13 33 129 113 1199 [EntityManagerFactory, PersistenceContext, Ent...
5 reactor.core.publisher 5 8 14 49 113 1199 [MonoSink, Mono, Flux, FluxSink]
6 com.fasterxml.jackson.annotation 3 6 18 34 113 1199 [JsonProperty, JsonCreator, JsonIgnore, JsonTy...
7 com.fasterxml.jackson.databind 3 9 14 67 113 1199 [ObjectMapper, JsonNode, JavaType, Serializati...
8 io.grpc 3 7 23 51 113 1199 [ClientInterceptor, ManagedChannelBuilder, Sta...
9 org.hamcrest 3 22 44 194 113 1199 [Description, StringDescription, CoreMatchers,...
10 org.reactivestreams 3 6 8 27 113 1199 [Publisher, Subscription, Subscriber]
11 org.springframework.boot.actuate.health 3 4 7 24 113 1199 [Status, AbstractHealthIndicator, Health$Build...
12 com.fasterxml.jackson.databind.node 2 3 5 28 113 1199 [ObjectNode, JsonNodeType, ArrayNode]
13 io.axoniq.axonserver.grpc.control 2 6 13 86 113 1199 [TopologyChange, UpdateType, NodeInfo$Builder,...
14 io.grpc.stub 2 3 4 11 113 1199 [StreamObserver, ClientResponseObserver, Clien...
15 io.micrometer.core.instrument 2 12 38 140 113 1199 [Clock, Tags, MeterRegistry, Counter, Tag, Tim...
16 org.apache.avro 2 5 17 56 113 1199 [Schema, AvroRuntimeException, SchemaCompatibi...
17 org.apache.avro.message 2 9 12 38 113 1199 [SchemaStore, SchemaStore$Cache, BinaryMessage...
18 org.axonframework.extension.spring.config 2 4 9 35 113 1199 [EventProcessorSettings$ProcessorMode, EventPr...
19 org.springframework.boot.autoconfigure 2 19 29 30 113 1199 [AutoConfiguration, AutoConfigureAfter, AutoCo...

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 jakarta.annotation 98 672 859 4788 113 1199 [Nonnull, Nullable]
1 org.slf4j 38 74 133 456 113 1199 [LoggerFactory, Logger]
2 org.springframework 7 55 173 293 113 1199 [ConfigurationProperties, ConstructorBinding, ...
3 com.fasterxml 6 16 40 138 113 1199 [ObjectMapper, CBORMapper, JsonProperty, JsonC...
4 io.axoniq 6 45 153 849 113 1199 [ErrorMessage, TopologyChange, UpdateType, Con...
5 reactor.core 6 9 16 51 113 1199 [Scheduler, Schedulers, MonoSink, Mono, Flux, ...
6 com.google 5 9 12 36 113 1199 [MessageLite, ByteString, JsonElement, JsonPar...
7 jakarta.persistence 5 13 33 129 113 1199 [EntityManagerFactory, PersistenceContext, Ent...
8 io.grpc 3 10 29 65 113 1199 [StreamObserver, SslContextBuilder, ClientInte...
9 org.axonframework 3 8 15 48 113 1199 [EventProcessorSettings$ProcessorMode, EventPr...
10 org.hamcrest 3 22 44 194 113 1199 [Description, StringDescription, CoreMatchers,...
11 org.reactivestreams 3 6 8 27 113 1199 [Publisher, Subscription, Subscriber]
12 io.micrometer 2 12 39 142 113 1199 [Clock, Tags, MeterRegistry, Counter, Tag, Tim...
13 org.apache 2 12 42 145 113 1199 [SchemaStore, Schema, SchemaStore$Cache, Speci...
14 io.opentelemetry 1 5 21 70 113 1199 [Scope, SpanBuilder, Span, SpanContext, Status...
15 jakarta.validation 1 2 5 16 113 1199 [Validation, ConstraintViolation, Validator, V...
16 javax.cache 1 2 12 48 113 1199 [CacheEntryListenerConfiguration, Cache, Cache...
17 org.awaitility 1 1 2 3 113 1199 [ConditionFactory, Awaitility]
18 org.ehcache 1 3 10 45 113 1199 [EventType, CacheEventListener, CacheEvent, Eh...
19 org.testcontainers 1 1 6 19 113 1199 [Wait, ContainerLaunchException, MountableFile...

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 11 38 1 14 3.0 3.454545 3.670521 20.000000 100.000000 ... 30 3.0 6.727273 8.486353 1.369863 30.434783 6.000000 9.894824 8.937748 [axon-server-connector-5.0.1, axon-test-5.0.1,...
1 jakarta.persistence 4 5 1 2 1.0 1.250000 0.500000 1.754386 28.571429 ... 4 3.0 3.000000 1.154701 0.350877 5.714286 2.666667 2.849624 2.454419 [axon-spring-boot-autoconfigure-5.0.1, axon-me...
2 com.fasterxml.jackson.databind 3 3 1 1 1.0 1.000000 0.000000 7.692308 25.000000 ... 5 3.0 3.000000 2.000000 0.666667 16.666667 4.285714 7.206349 8.390327 [axon-spring-boot-autoconfigure-5.0.1, axon-co...
3 com.fasterxml.jackson.databind.node 2 2 1 1 1.0 1.000000 0.000000 7.692308 25.000000 ... 2 1.5 1.500000 0.707107 0.666667 6.666667 3.666667 3.666667 4.242641 [axon-conversion-5.0.1, axon-common-5.0.1]
4 io.axoniq.axonserver.connector 2 5 1 4 2.5 2.500000 2.121320 14.285714 80.000000 ... 15 8.0 8.000000 9.899495 1.428571 20.833333 11.130952 11.130952 13.721239 [axon-server-connector-5.0.1, axon-spring-boot...
5 io.axoniq.axonserver.connector.control 2 3 1 2 1.5 1.500000 0.707107 14.285714 40.000000 ... 4 2.5 2.500000 2.121320 1.428571 5.555556 3.492063 3.492063 2.918218 [axon-server-connector-5.0.1, axon-spring-boot...
6 org.apache.avro 2 2 1 1 1.0 1.000000 0.000000 14.285714 25.000000 ... 4 2.5 2.500000 2.121320 1.428571 13.333333 7.380952 7.380952 8.417938 [axon-spring-boot-autoconfigure-5.0.1, axon-co...
7 org.apache.avro.message 2 2 1 1 1.0 1.000000 0.000000 14.285714 25.000000 ... 6 4.5 4.500000 2.121320 4.285714 20.000000 12.142857 12.142857 11.111678 [axon-spring-boot-autoconfigure-5.0.1, axon-co...
8 IdTypeParameterResolver 1 1 1 1 1.0 1.000000 0.000000 14.285714 14.285714 ... 1 1.0 1.000000 0.000000 1.000000 1.000000 1.000000 1.000000 0.000000 [axon-eventsourcing-5.0.1]
9 ScannedEntityCreator 1 1 1 1 1.0 1.000000 0.000000 14.285714 14.285714 ... 1 1.0 1.000000 0.000000 1.000000 1.000000 1.000000 1.000000 0.000000 [axon-eventsourcing-5.0.1]

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 11 1 14 3.0 3.454545 3.670521
1 jakarta.persistence 4 1 2 1.0 1.250000 0.500000
2 com.fasterxml.jackson.databind 3 1 1 1.0 1.000000 0.000000
3 com.fasterxml.jackson.databind.node 2 1 1 1.0 1.000000 0.000000
4 io.axoniq.axonserver.connector 2 1 4 2.5 2.500000 2.121320
5 io.axoniq.axonserver.connector.control 2 1 2 1.5 1.500000 0.707107
6 org.apache.avro 2 1 1 1.0 1.000000 0.000000
7 org.apache.avro.message 2 1 1 1.0 1.000000 0.000000
8 IdTypeParameterResolver 1 1 1 1.0 1.000000 0.000000
9 ScannedEntityCreator 1 1 1 1.0 1.000000 0.000000
10 WrappedEventCriteriaBuilderMethod 1 1 1 1.0 1.000000 0.000000
11 com.fasterxml.jackson.annotation 1 1 1 1.0 1.000000 0.000000
12 com.fasterxml.jackson.core 1 1 1 1.0 1.000000 0.000000
13 com.fasterxml.jackson.dataformat.cbor.databind 1 1 1 1.0 1.000000 0.000000
14 com.google.gson 1 1 1 1.0 1.000000 0.000000
15 com.google.protobuf 1 4 4 4.0 4.000000 0.000000
16 io.axoniq.axonserver.connector.admin 1 1 1 1.0 1.000000 0.000000
17 io.axoniq.axonserver.connector.command 1 1 1 1.0 1.000000 0.000000
18 io.axoniq.axonserver.connector.event 1 1 1 1.0 1.000000 0.000000
19 io.axoniq.axonserver.connector.impl 1 1 1 1.0 1.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 11 20.000000 100.000000 42.857143 49.120967 26.462866
1 jakarta.persistence 4 1.754386 28.571429 10.989011 13.075959 11.528729
2 com.fasterxml.jackson.databind 3 7.692308 25.000000 14.285714 15.659341 8.735227
3 com.fasterxml.jackson.databind.node 2 7.692308 25.000000 16.346154 16.346154 12.238387
4 io.axoniq.axonserver.connector 2 14.285714 80.000000 47.142857 47.142857 46.467017
5 io.axoniq.axonserver.connector.control 2 14.285714 40.000000 27.142857 27.142857 18.182746
6 org.apache.avro 2 14.285714 25.000000 19.642857 19.642857 7.576144
7 org.apache.avro.message 2 14.285714 25.000000 19.642857 19.642857 7.576144
8 IdTypeParameterResolver 1 14.285714 14.285714 14.285714 14.285714 0.000000
9 ScannedEntityCreator 1 14.285714 14.285714 14.285714 14.285714 0.000000
10 WrappedEventCriteriaBuilderMethod 1 14.285714 14.285714 14.285714 14.285714 0.000000
11 com.fasterxml.jackson.annotation 1 1.754386 1.754386 1.754386 1.754386 0.000000
12 com.fasterxml.jackson.core 1 25.000000 25.000000 25.000000 25.000000 0.000000
13 com.fasterxml.jackson.dataformat.cbor.databind 1 14.285714 14.285714 14.285714 14.285714 0.000000
14 com.google.gson 1 20.000000 20.000000 20.000000 20.000000 0.000000
15 com.google.protobuf 1 80.000000 80.000000 80.000000 80.000000 0.000000
16 io.axoniq.axonserver.connector.admin 1 20.000000 20.000000 20.000000 20.000000 0.000000
17 io.axoniq.axonserver.connector.command 1 20.000000 20.000000 20.000000 20.000000 0.000000
18 io.axoniq.axonserver.connector.event 1 20.000000 20.000000 20.000000 20.000000 0.000000
19 io.axoniq.axonserver.connector.impl 1 20.000000 20.000000 20.000000 20.000000 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 11 1 30 3.0 6.727273 8.486353
1 jakarta.persistence 4 2 4 3.0 3.000000 1.154701
2 com.fasterxml.jackson.databind 3 1 5 3.0 3.000000 2.000000
3 com.fasterxml.jackson.databind.node 2 1 2 1.5 1.500000 0.707107
4 io.axoniq.axonserver.connector 2 1 15 8.0 8.000000 9.899495
5 io.axoniq.axonserver.connector.control 2 1 4 2.5 2.500000 2.121320
6 org.apache.avro 2 1 4 2.5 2.500000 2.121320
7 org.apache.avro.message 2 3 6 4.5 4.500000 2.121320
8 IdTypeParameterResolver 1 1 1 1.0 1.000000 0.000000
9 ScannedEntityCreator 1 1 1 1.0 1.000000 0.000000
10 WrappedEventCriteriaBuilderMethod 1 1 1 1.0 1.000000 0.000000
11 com.fasterxml.jackson.annotation 1 2 2 2.0 2.000000 0.000000
12 com.fasterxml.jackson.core 1 1 1 1.0 1.000000 0.000000
13 com.fasterxml.jackson.dataformat.cbor.databind 1 2 2 2.0 2.000000 0.000000
14 com.google.gson 1 1 1 1.0 1.000000 0.000000
15 com.google.protobuf 1 8 8 8.0 8.000000 0.000000
16 io.axoniq.axonserver.connector.admin 1 1 1 1.0 1.000000 0.000000
17 io.axoniq.axonserver.connector.command 1 1 1 1.0 1.000000 0.000000
18 io.axoniq.axonserver.connector.event 1 5 5 5.0 5.000000 0.000000
19 io.axoniq.axonserver.connector.impl 1 1 1 1.0 1.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 11 1.369863 30.434783 6.000000 9.894824 8.937748
1 jakarta.persistence 4 0.350877 5.714286 2.666667 2.849624 2.454419
2 com.fasterxml.jackson.databind 3 0.666667 16.666667 4.285714 7.206349 8.390327
3 com.fasterxml.jackson.databind.node 2 0.666667 6.666667 3.666667 3.666667 4.242641
4 io.axoniq.axonserver.connector 2 1.428571 20.833333 11.130952 11.130952 13.721239
5 io.axoniq.axonserver.connector.control 2 1.428571 5.555556 3.492063 3.492063 2.918218
6 org.apache.avro 2 1.428571 13.333333 7.380952 7.380952 8.417938
7 org.apache.avro.message 2 4.285714 20.000000 12.142857 12.142857 11.111678
8 IdTypeParameterResolver 1 1.000000 1.000000 1.000000 1.000000 0.000000
9 ScannedEntityCreator 1 1.000000 1.000000 1.000000 1.000000 0.000000
10 WrappedEventCriteriaBuilderMethod 1 1.000000 1.000000 1.000000 1.000000 0.000000
11 com.fasterxml.jackson.annotation 1 0.350877 0.350877 0.350877 0.350877 0.000000
12 com.fasterxml.jackson.core 1 3.333333 3.333333 3.333333 3.333333 0.000000
13 com.fasterxml.jackson.dataformat.cbor.databind 1 2.857143 2.857143 2.857143 2.857143 0.000000
14 com.google.gson 1 1.369863 1.369863 1.369863 1.369863 0.000000
15 com.google.protobuf 1 11.111111 11.111111 11.111111 11.111111 0.000000
16 io.axoniq.axonserver.connector.admin 1 1.388889 1.388889 1.388889 1.388889 0.000000
17 io.axoniq.axonserver.connector.command 1 1.388889 1.388889 1.388889 1.388889 0.000000
18 io.axoniq.axonserver.connector.event 1 6.944444 6.944444 6.944444 6.944444 0.000000
19 io.axoniq.axonserver.connector.impl 1 1.388889 1.388889 1.388889 1.388889 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.

No data to plot for title 'Top external package usage spread [%] by type (less than 0.7% overall "others" drill-down)'.

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 11 38 1 14 3.0 3.454545 3.670521 20.000000 100.000000 ... 30 3.0 6.727273 8.486353 1.369863 30.434783 6.000000 9.894824 8.937748 [axon-server-connector-5.0.1, axon-test-5.0.1,...
1 com.fasterxml 4 4 1 1 1.0 1.000000 0.000000 1.754386 25.000000 ... 5 3.0 3.000000 1.825742 0.350877 16.666667 3.190476 5.849624 7.618530 [axon-spring-boot-autoconfigure-5.0.1, axon-me...
2 jakarta.persistence 4 5 1 2 1.0 1.250000 0.500000 1.754386 28.571429 ... 4 3.0 3.000000 1.154701 0.350877 5.714286 2.666667 2.849624 2.454419 [axon-spring-boot-autoconfigure-5.0.1, axon-me...
3 com.google 2 5 1 4 2.5 2.500000 2.121320 20.000000 80.000000 ... 8 4.5 4.500000 4.949747 1.369863 11.111111 6.240487 6.240487 6.888103 [axon-server-connector-5.0.1, axon-test-5.0.1]
4 io.axoniq 2 6 1 5 3.0 3.000000 2.828427 14.285714 100.000000 ... 44 22.5 22.500000 30.405592 1.428571 61.111111 31.269841 31.269841 42.201929 [axon-server-connector-5.0.1, axon-spring-boot...
5 org.apache 2 2 1 1 1.0 1.000000 0.000000 14.285714 25.000000 ... 9 6.0 6.000000 4.242641 4.285714 30.000000 17.142857 17.142857 18.182746 [axon-spring-boot-autoconfigure-5.0.1, axon-co...
6 reactor.core 2 6 1 5 3.0 3.000000 2.828427 8.771930 20.000000 ... 8 4.5 4.500000 4.949747 1.388889 1.403509 1.396199 1.396199 0.010338 [axon-server-connector-5.0.1, axon-messaging-5...
7 IdTypeParameterResolver 1 1 1 1 1.0 1.000000 0.000000 14.285714 14.285714 ... 1 1.0 1.000000 0.000000 1.000000 1.000000 1.000000 1.000000 0.000000 [axon-eventsourcing-5.0.1]
8 ScannedEntityCreator 1 1 1 1 1.0 1.000000 0.000000 14.285714 14.285714 ... 1 1.0 1.000000 0.000000 1.000000 1.000000 1.000000 1.000000 0.000000 [axon-eventsourcing-5.0.1]
9 WrappedEventCriteriaBuilderMethod 1 1 1 1 1.0 1.000000 0.000000 14.285714 14.285714 ... 1 1.0 1.000000 0.000000 1.000000 1.000000 1.000000 1.000000 0.000000 [axon-eventsourcing-5.0.1]
10 io.grpc 1 3 3 3 3.0 3.000000 0.000000 60.000000 60.000000 ... 10 10.0 10.000000 0.000000 13.888889 13.888889 13.888889 13.888889 0.000000 [axon-server-connector-5.0.1]
11 io.micrometer 1 2 2 2 2.0 2.000000 0.000000 100.000000 100.000000 ... 12 12.0 12.000000 0.000000 92.307692 92.307692 92.307692 92.307692 0.000000 [axon-metrics-micrometer-5.0.1]
12 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-5.0.1]
13 jakarta.validation 1 1 1 1 1.0 1.000000 0.000000 1.754386 1.754386 ... 2 2.0 2.000000 0.000000 0.350877 0.350877 0.350877 0.350877 0.000000 [axon-messaging-5.0.1]
14 javax.cache 1 1 1 1 1.0 1.000000 0.000000 7.692308 7.692308 ... 2 2.0 2.000000 0.000000 1.333333 1.333333 1.333333 1.333333 0.000000 [axon-common-5.0.1]
15 org.awaitility 1 1 1 1 1.0 1.000000 0.000000 20.000000 20.000000 ... 1 1.0 1.000000 0.000000 1.369863 1.369863 1.369863 1.369863 0.000000 [axon-test-5.0.1]
16 org.axonframework 1 3 3 3 3.0 3.000000 0.000000 42.857143 42.857143 ... 8 8.0 8.000000 0.000000 11.428571 11.428571 11.428571 11.428571 0.000000 [axon-spring-boot-autoconfigure-5.0.1]
17 org.ehcache 1 1 1 1 1.0 1.000000 0.000000 7.692308 7.692308 ... 3 3.0 3.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 [axon-common-5.0.1]
18 org.hamcrest 1 3 3 3 3.0 3.000000 0.000000 60.000000 60.000000 ... 22 22.0 22.000000 0.000000 30.136986 30.136986 30.136986 30.136986 0.000000 [axon-test-5.0.1]
19 org.junit 1 1 1 1 1.0 1.000000 0.000000 20.000000 20.000000 ... 1 1.0 1.000000 0.000000 1.369863 1.369863 1.369863 1.369863 0.000000 [axon-test-5.0.1]

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 reactor.core.scheduler 2
1 org.springframework.boot.context.properties.bind 2
2 org.springframework.boot.docker.compose.core 2
3 org.springframework.boot.docker.compose.servic... 2
4 org.testcontainers.utility 2
5 org.testcontainers.containers 2
6 org.testcontainers.containers.wait.strategy 2
7 org.axonframework.extension.spring.conversion.... 3
8 javax.cache.configuration 3
9 io.grpc.stub 4
10 org.springframework.beans.factory 4
11 com.google.gson 4
12 org.apache.avro.specific 4
13 org.springframework.boot.testcontainers.servic... 4
14 io.axoniq.axonserver.grpc.event 5
15 jakarta.validation 5
16 org.springframework.context 5
17 com.fasterxml.jackson.databind.node 5
18 io.axoniq.axonserver.connector.query 6
19 org.apache.avro.generic 7

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-5.0.1 io.opentelemetry.api.trace 9 46 5 16 6 320.000000 [Tracer, SpanBuilder, Span, SpanContext, Statu...
1 axon-tracing-opentelemetry-5.0.1 io.opentelemetry.context.propagation 9 15 5 16 6 320.000000 [TextMapGetter, ContextPropagators, TextMapPro...
2 axon-tracing-opentelemetry-5.0.1 jakarta.annotation 3 8 5 16 6 320.000000 [Nonnull]
3 axon-tracing-opentelemetry-5.0.1 io.opentelemetry.context 2 7 5 16 6 320.000000 [Scope, Context]
4 axon-tracing-opentelemetry-5.0.1 org.slf4j 2 7 5 16 6 320.000000 [Logger, LoggerFactory]
5 axon-tracing-opentelemetry-5.0.1 io.opentelemetry.api 1 2 5 16 6 320.000000 [GlobalOpenTelemetry]
6 axon-server-connector-5.0.1 io.axoniq.axonserver.grpc 40 271 72 113 23 156.944444 [ErrorMessage, SerializedObject, ProcessingKey...
7 axon-server-connector-5.0.1 jakarta.annotation 33 199 72 113 23 156.944444 [Nonnull, Nullable]
8 axon-server-connector-5.0.1 io.axoniq.axonserver.grpc.event.dcb 28 104 72 113 23 156.944444 [TaggedEvent, GetHeadResponse, Event, GetTailR...
9 axon-server-connector-5.0.1 io.grpc 23 51 72 113 23 156.944444 [StatusRuntimeException, Status, Status$Code, ...
10 axon-server-connector-5.0.1 io.axoniq.axonserver.connector 22 123 72 113 23 156.944444 [AxonServerConnection, ResultStream, ReplyChan...
11 axon-server-connector-5.0.1 org.slf4j 19 70 72 113 23 156.944444 [LoggerFactory, Logger]
12 axon-server-connector-5.0.1 io.axoniq.axonserver.grpc.query 14 98 72 113 23 156.944444 [QueryUpdate, QueryRequest, QueryResponse, Sub...
13 axon-server-connector-5.0.1 io.axoniq.axonserver.grpc.control 13 86 72 113 23 156.944444 [EventProcessorInfo, UpdateType, EventProcesso...
14 axon-server-connector-5.0.1 com.google.protobuf 8 29 72 113 23 156.944444 [ByteString, MessageLite]
15 axon-server-connector-5.0.1 io.axoniq.axonserver.connector.event 8 38 72 113 23 156.944444 [EventStream, EventChannel, AggregateEventStre...
16 axon-server-connector-5.0.1 io.axoniq.axonserver.grpc.command 8 63 72 113 23 156.944444 [CommandResponse, Command, CommandResponse$Bui...
17 axon-server-connector-5.0.1 io.axoniq.axonserver.connector.query 6 19 72 113 23 156.944444 [QueryHandler$UpdateHandler, QueryHandler, Que...
18 axon-server-connector-5.0.1 io.axoniq.axonserver.grpc.event 5 31 72 113 23 156.944444 [Event, EventWithToken, Event$Builder, Confirm...
19 axon-server-connector-5.0.1 io.axoniq.axonserver.connector.control 4 5 72 113 23 156.944444 [ControlChannel, ProcessorInstructionHandler]
20 axon-server-connector-5.0.1 io.grpc.stub 4 11 72 113 23 156.944444 [StreamObserver, ClientResponseObserver, Clien...
21 axon-server-connector-5.0.1 reactor.core.scheduler 2 2 72 113 23 156.944444 [Scheduler, Schedulers]
22 axon-server-connector-5.0.1 io.axoniq.axonserver.connector.admin 1 3 72 113 23 156.944444 [AdminChannel]
23 axon-server-connector-5.0.1 io.axoniq.axonserver.connector.command 1 3 72 113 23 156.944444 [CommandChannel]
24 axon-server-connector-5.0.1 io.axoniq.axonserver.connector.impl 1 3 72 113 23 156.944444 [ServerAddress]
25 axon-server-connector-5.0.1 io.grpc.netty.shaded.io.grpc.netty 1 1 72 113 23 156.944444 [GrpcSslContexts]
26 axon-server-connector-5.0.1 io.grpc.netty.shaded.io.netty.handler.ssl 1 2 72 113 23 156.944444 [SslContextBuilder]
27 axon-server-connector-5.0.1 javax.annotation 1 1 72 113 23 156.944444 [Nonnull]
28 axon-server-connector-5.0.1 org.springframework.boot.context.properties 1 2 72 113 23 156.944444 [ConfigurationProperties]
29 axon-spring-boot-autoconfigure-5.0.1 org.springframework.boot.autoconfigure.condition 42 72 70 87 36 124.285714 [ConditionalOnBean, AnyNestedCondition, Condit...
30 axon-spring-boot-autoconfigure-5.0.1 org.springframework.context.annotation 36 64 70 87 36 124.285714 [Bean, ConfigurationCondition$ConfigurationPha...
31 axon-spring-boot-autoconfigure-5.0.1 org.springframework.boot.autoconfigure 29 30 70 87 36 124.285714 [AutoConfiguration, AutoConfigureAfter, AutoCo...
32 axon-spring-boot-autoconfigure-5.0.1 org.springframework.boot.context.properties 20 26 70 87 36 124.285714 [EnableConfigurationProperties, ConfigurationP...
33 axon-spring-boot-autoconfigure-5.0.1 jakarta.annotation 12 25 70 87 36 124.285714 [Nonnull]
34 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.spring.config 9 35 70 87 36 124.285714 [SpringLifecycleRegistry, SpringAxonApplicatio...
35 axon-spring-boot-autoconfigure-5.0.1 org.springframework.boot.actuate.health 7 24 70 87 36 124.285714 [AbstractHealthIndicator, Status, Health$Build...
36 axon-spring-boot-autoconfigure-5.0.1 jakarta.persistence 5 8 70 87 36 124.285714 [EntityManagerFactory, PersistenceContext, Ent...
37 axon-spring-boot-autoconfigure-5.0.1 org.springframework.context 5 9 70 87 36 124.285714 [ApplicationContext, ApplicationContextAware]
38 axon-spring-boot-autoconfigure-5.0.1 org.apache.avro.message 4 10 70 87 36 124.285714 [SchemaStore, SchemaStore$Cache]
39 axon-spring-boot-autoconfigure-5.0.1 org.slf4j 4 6 70 87 36 124.285714 [Logger, LoggerFactory]

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-conversion-5.0.1 4 30 11 4 100.0 jakarta.annotation 4 25 100.000000 83.333333 [org.axonframework.conversion, org.axonframewo... [org.axonframework.conversion.ContentTypeConve...
1 axon-conversion-5.0.1 4 30 11 4 100.0 org.slf4j 3 3 75.000000 10.000000 [org.axonframework.conversion, org.axonframewo... [org.axonframework.conversion.ChainingContentT...
2 axon-conversion-5.0.1 4 30 11 4 100.0 com.fasterxml.jackson.core 1 1 25.000000 3.333333 [org.axonframework.conversion.json] [org.axonframework.conversion.json.JsonNodeToB...
3 axon-conversion-5.0.1 4 30 11 4 100.0 com.fasterxml.jackson.databind 1 5 25.000000 16.666667 [org.axonframework.conversion.json] [org.axonframework.conversion.json.JsonNodeToB...
4 axon-conversion-5.0.1 4 30 11 4 100.0 com.fasterxml.jackson.databind.node 1 2 25.000000 6.666667 [org.axonframework.conversion.json] [org.axonframework.conversion.json.JsonNodeToO...
5 axon-conversion-5.0.1 4 30 11 4 100.0 org.apache.avro 1 4 25.000000 13.333333 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.SpecificRec...
6 axon-conversion-5.0.1 4 30 11 4 100.0 org.apache.avro.generic 1 6 25.000000 20.000000 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.SpecificRec...
7 axon-conversion-5.0.1 4 30 11 4 100.0 org.apache.avro.io 1 1 25.000000 3.333333 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.ByteArrayTo...
8 axon-conversion-5.0.1 4 30 11 4 100.0 org.apache.avro.message 1 6 25.000000 20.000000 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.AvroConvert...
9 axon-conversion-5.0.1 4 30 11 4 100.0 org.apache.avro.specific 1 2 25.000000 6.666667 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.SpecificRec...
10 axon-conversion-5.0.1 4 30 11 4 100.0 org.apache.commons.lang3.tuple 1 1 25.000000 3.333333 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.DefaultSche...
11 axon-eventsourcing-5.0.1 7 100 6 7 100.0 jakarta.annotation 7 62 100.000000 62.000000 [org.axonframework.eventsourcing, org.axonfram... [org.axonframework.eventsourcing.EventSourcedE...
12 axon-eventsourcing-5.0.1 7 100 6 7 100.0 org.slf4j 2 6 28.571429 6.000000 [org.axonframework.eventsourcing.eventstore.in... [org.axonframework.eventsourcing.eventstore.in...
13 axon-eventsourcing-5.0.1 7 100 6 7 100.0 IdTypeParameterResolver 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation.re... [org.axonframework.eventsourcing.annotation.re...
14 axon-eventsourcing-5.0.1 7 100 6 7 100.0 ScannedEntityCreator 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation.re... [org.axonframework.eventsourcing.annotation.re...
15 axon-eventsourcing-5.0.1 7 100 6 7 100.0 WrappedEventCriteriaBuilderMethod 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation] [org.axonframework.eventsourcing.annotation.An...
16 axon-eventsourcing-5.0.1 7 100 6 7 100.0 jakarta.persistence 1 4 14.285714 4.000000 [org.axonframework.eventsourcing.eventstore.jpa] [org.axonframework.eventsourcing.eventstore.jp...
17 axon-metrics-micrometer-5.0.1 2 13 4 2 100.0 io.micrometer.core.instrument 2 12 100.000000 92.307692 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
18 axon-metrics-micrometer-5.0.1 2 13 4 2 100.0 io.micrometer.core.instrument.simple 1 1 50.000000 7.692308 [org.axonframework.extension.metrics.micrometer] [org.axonframework.extension.metrics.micromete...
19 axon-metrics-micrometer-5.0.1 2 13 4 2 100.0 jakarta.annotation 1 5 50.000000 38.461538 [org.axonframework.extension.metrics.micrometer] [org.axonframework.extension.metrics.micromete...
20 axon-metrics-micrometer-5.0.1 2 13 4 2 100.0 org.slf4j 1 1 50.000000 7.692308 [org.axonframework.extension.metrics.micrometer] [org.axonframework.extension.metrics.micromete...
21 axon-modelling-5.0.1 7 93 2 7 100.0 jakarta.annotation 7 77 100.000000 82.795699 [org.axonframework.modelling, org.axonframewor... [org.axonframework.modelling.PayloadBasedEntit...
22 axon-modelling-5.0.1 7 93 2 7 100.0 org.slf4j 3 3 42.857143 3.225806 [org.axonframework.modelling, org.axonframewor... [org.axonframework.modelling.SimpleEntityEvolv...
23 axon-server-connector-5.0.1 5 72 23 5 100.0 io.axoniq.axonserver.grpc 5 18 100.000000 25.000000 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.ErrorC...
24 axon-server-connector-5.0.1 5 72 23 5 100.0 jakarta.annotation 5 25 100.000000 34.722222 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.Metada...
25 axon-server-connector-5.0.1 5 72 23 5 100.0 com.google.protobuf 4 8 80.000000 11.111111 [org.axonframework.axonserver.connector.util, ... [org.axonframework.axonserver.connector.util.G...
26 axon-server-connector-5.0.1 5 72 23 5 100.0 io.axoniq.axonserver.connector 4 15 80.000000 20.833333 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.AxonSe...
27 axon-server-connector-5.0.1 5 72 23 5 100.0 org.slf4j 4 12 80.000000 16.666667 [org.axonframework.axonserver.connector.util, ... [org.axonframework.axonserver.connector.util.G...
28 axon-server-connector-5.0.1 5 72 23 5 100.0 io.grpc 3 7 60.000000 9.722222 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.AxonSe...
29 axon-server-connector-5.0.1 5 72 23 5 100.0 io.axoniq.axonserver.connector.control 2 4 40.000000 5.555556 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.AxonSe...

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-conversion-5.0.1 4 30 4 4 100.0 jakarta.annotation 4 25 100.000000 83.333333 [org.axonframework.conversion, org.axonframewo... [org.axonframework.conversion.ContentTypeConve...
1 axon-conversion-5.0.1 4 30 4 4 100.0 org.slf4j 3 3 75.000000 10.000000 [org.axonframework.conversion, org.axonframewo... [org.axonframework.conversion.ChainingContentT...
2 axon-conversion-5.0.1 4 30 4 4 100.0 com.fasterxml 1 5 25.000000 16.666667 [org.axonframework.conversion.json] [org.axonframework.conversion.json.JsonNodeToB...
3 axon-conversion-5.0.1 4 30 4 4 100.0 org.apache 1 9 25.000000 30.000000 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.AvroConvert...
4 axon-eventsourcing-5.0.1 7 100 6 7 100.0 jakarta.annotation 7 62 100.000000 62.000000 [org.axonframework.eventsourcing, org.axonfram... [org.axonframework.eventsourcing.EventSourcedE...
5 axon-eventsourcing-5.0.1 7 100 6 7 100.0 org.slf4j 2 6 28.571429 6.000000 [org.axonframework.eventsourcing.eventstore.in... [org.axonframework.eventsourcing.eventstore.in...
6 axon-eventsourcing-5.0.1 7 100 6 7 100.0 IdTypeParameterResolver 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation.re... [org.axonframework.eventsourcing.annotation.re...
7 axon-eventsourcing-5.0.1 7 100 6 7 100.0 ScannedEntityCreator 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation.re... [org.axonframework.eventsourcing.annotation.re...
8 axon-eventsourcing-5.0.1 7 100 6 7 100.0 WrappedEventCriteriaBuilderMethod 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation] [org.axonframework.eventsourcing.annotation.An...
9 axon-eventsourcing-5.0.1 7 100 6 7 100.0 jakarta.persistence 1 4 14.285714 4.000000 [org.axonframework.eventsourcing.eventstore.jpa] [org.axonframework.eventsourcing.eventstore.jp...
10 axon-metrics-micrometer-5.0.1 2 13 3 2 100.0 io.micrometer 2 12 100.000000 92.307692 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
11 axon-metrics-micrometer-5.0.1 2 13 3 2 100.0 jakarta.annotation 1 5 50.000000 38.461538 [org.axonframework.extension.metrics.micrometer] [org.axonframework.extension.metrics.micromete...
12 axon-metrics-micrometer-5.0.1 2 13 3 2 100.0 org.slf4j 1 1 50.000000 7.692308 [org.axonframework.extension.metrics.micrometer] [org.axonframework.extension.metrics.micromete...
13 axon-modelling-5.0.1 7 93 2 7 100.0 jakarta.annotation 7 77 100.000000 82.795699 [org.axonframework.modelling, org.axonframewor... [org.axonframework.modelling.PayloadBasedEntit...
14 axon-modelling-5.0.1 7 93 2 7 100.0 org.slf4j 3 3 42.857143 3.225806 [org.axonframework.modelling, org.axonframewor... [org.axonframework.modelling.SimpleEntityEvolv...
15 axon-server-connector-5.0.1 5 72 8 5 100.0 io.axoniq 5 44 100.000000 61.111111 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.ErrorC...
16 axon-server-connector-5.0.1 5 72 8 5 100.0 jakarta.annotation 5 25 100.000000 34.722222 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.Metada...
17 axon-server-connector-5.0.1 5 72 8 5 100.0 com.google 4 8 80.000000 11.111111 [org.axonframework.axonserver.connector.util, ... [org.axonframework.axonserver.connector.util.G...
18 axon-server-connector-5.0.1 5 72 8 5 100.0 org.slf4j 4 12 80.000000 16.666667 [org.axonframework.axonserver.connector.util, ... [org.axonframework.axonserver.connector.util.G...
19 axon-server-connector-5.0.1 5 72 8 5 100.0 io.grpc 3 10 60.000000 13.888889 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.Defaul...
20 axon-server-connector-5.0.1 5 72 8 5 100.0 javax.annotation 1 1 20.000000 1.388889 [org.axonframework.axonserver.connector] [org.axonframework.axonserver.connector.AxonSe...
21 axon-server-connector-5.0.1 5 72 8 5 100.0 org.springframework 1 1 20.000000 1.388889 [org.axonframework.axonserver.connector] [org.axonframework.axonserver.connector.AxonSe...
22 axon-server-connector-5.0.1 5 72 8 5 100.0 reactor.core 1 1 20.000000 1.388889 [org.axonframework.axonserver.connector.util] [org.axonframework.axonserver.connector.util.P...
23 axon-spring-boot-autoconfigure-5.0.1 7 70 8 7 100.0 org.springframework 6 54 85.714286 77.142857 [org.axonframework.extension.springboot, org.a... [org.axonframework.extension.springboot.JpaEve...
24 axon-spring-boot-autoconfigure-5.0.1 7 70 8 7 100.0 jakarta.annotation 4 12 57.142857 17.142857 [org.axonframework.extension.springboot, org.a... [org.axonframework.extension.springboot.EventP...
25 axon-spring-boot-autoconfigure-5.0.1 7 70 8 7 100.0 org.axonframework 3 8 42.857143 11.428571 [org.axonframework.extension.springboot, org.a... [org.axonframework.extension.springboot.EventP...
26 axon-spring-boot-autoconfigure-5.0.1 7 70 8 7 100.0 jakarta.persistence 2 4 28.571429 5.714286 [org.axonframework.extension.springboot.autoco... [org.axonframework.extension.springboot.autoco...
27 axon-spring-boot-autoconfigure-5.0.1 7 70 8 7 100.0 org.slf4j 2 2 28.571429 2.857143 [org.axonframework.extension.springboot.servic... [org.axonframework.extension.springboot.servic...
28 axon-spring-boot-autoconfigure-5.0.1 7 70 8 7 100.0 com.fasterxml 1 4 14.285714 5.714286 [org.axonframework.extension.springboot.autoco... [org.axonframework.extension.springboot.autoco...
29 axon-spring-boot-autoconfigure-5.0.1 7 70 8 7 100.0 io.axoniq 1 1 14.285714 1.428571 [org.axonframework.extension.springboot.autoco... [org.axonframework.extension.springboot.autoco...

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-5.0.1 axon-spring-boot-autoconfigure-5.0.1 axon-server-connector-5.0.1 axon-common-5.0.1 axon-conversion-5.0.1 axon-test-5.0.1 axon-eventsourcing-5.0.1 axon-modelling-5.0.1 axon-update-5.0.1 axon-tracing-opentelemetry-5.0.1 axon-metrics-micrometer-5.0.1
externalPackageName
IdTypeParameterResolver 0 0 0 0 0 0 1 0 0 0 0
ScannedEntityCreator 0 0 0 0 0 0 1 0 0 0 0
WrappedEventCriteriaBuilderMethod 0 0 0 0 0 0 1 0 0 0 0
com.fasterxml.jackson.annotation 3 0 0 0 0 0 0 0 0 0 0
com.fasterxml.jackson.core 0 0 0 0 1 0 0 0 0 0 0
... ... ... ... ... ... ... ... ... ... ... ...
org.testcontainers.containers.wait.strategy 0 0 0 0 0 1 0 0 0 0 0
org.testcontainers.utility 0 0 0 0 0 1 0 0 0 0 0
reactor.core.publisher 5 0 0 0 0 0 0 0 0 0 0
reactor.core.scheduler 0 0 1 0 0 0 0 0 0 0 0
reactor.util.concurrent 1 0 0 0 0 0 0 0 0 0 0

89 rows × 11 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-5.0.1 axon-server-connector-5.0.1 axon-spring-boot-autoconfigure-5.0.1 axon-common-5.0.1 axon-eventsourcing-5.0.1 axon-test-5.0.1 axon-modelling-5.0.1 axon-conversion-5.0.1 axon-update-5.0.1 axon-metrics-micrometer-5.0.1 axon-tracing-opentelemetry-5.0.1
externalPackageNameFirst2Levels
IdTypeParameterResolver 0 0 0 0 1 0 0 0 0 0 0
ScannedEntityCreator 0 0 0 0 1 0 0 0 0 0 0
WrappedEventCriteriaBuilderMethod 0 0 0 0 1 0 0 0 0 0 0
com.fasterxml 3 0 1 1 0 0 0 1 0 0 0
com.google 0 4 0 0 0 1 0 0 0 0 0
io.axoniq 0 5 1 0 0 0 0 0 0 0 0
io.grpc 0 3 0 0 0 0 0 0 0 0 0
io.micrometer 0 0 0 0 0 0 0 0 0 2 0
io.opentelemetry 0 0 0 0 0 0 0 0 0 0 1
jakarta.annotation 56 5 4 6 7 3 7 4 4 1 1
jakarta.persistence 1 0 2 1 1 0 0 0 0 0 0
jakarta.validation 1 0 0 0 0 0 0 0 0 0 0
javax.annotation 0 1 0 0 0 0 0 0 0 0 0
javax.cache 0 0 0 1 0 0 0 0 0 0 0
org.apache 0 0 1 0 0 0 0 1 0 0 0
org.awaitility 0 0 0 0 0 1 0 0 0 0 0
org.axonframework 0 0 3 0 0 0 0 0 0 0 0
org.ehcache 0 0 0 1 0 0 0 0 0 0 0
org.hamcrest 0 0 0 0 0 3 0 0 0 0 0
org.jetbrains 0 0 0 0 0 2 0 0 0 0 0
org.junit 0 0 0 0 0 1 0 0 0 0 0
org.reactivestreams 3 0 0 0 0 0 0 0 0 0 0
org.slf4j 14 4 2 4 2 1 3 3 3 1 1
org.springframework 0 1 6 0 0 0 0 0 0 0 0
org.testcontainers 0 0 0 0 0 1 0 0 0 0 0
reactor.core 5 1 0 0 0 0 0 0 0 0 0
reactor.util 1 0 0 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-5.0.1 5 16 6 320.000000 26 85 6 [io.opentelemetry.context.propagation, io.open... [TextMapGetter, ContextPropagators, TextMapPro...
1 axon-server-connector-5.0.1 72 113 23 156.944444 244 1215 23 [io.axoniq.axonserver.grpc, jakarta.annotation... [ErrorMessage, SerializedObject, ProcessingKey...
2 axon-spring-boot-autoconfigure-5.0.1 70 87 36 124.285714 220 411 36 [org.springframework.boot.autoconfigure.condit... [ConditionalOnBean, AnyNestedCondition, Condit...
3 axon-conversion-5.0.1 30 32 11 106.666667 99 421 11 [jakarta.annotation, org.apache.avro, org.apac... [Nullable, Nonnull, SchemaCompatibility$Incomp...
4 axon-metrics-micrometer-5.0.1 13 13 4 100.000000 46 152 4 [io.micrometer.core.instrument, jakarta.annota... [Tags, MeterRegistry, Counter, Tag, Clock, Gau...
5 axon-test-5.0.1 73 24 11 32.876712 94 456 11 [org.hamcrest, jakarta.annotation, com.google.... [Description, Matcher, StringDescription, Base...
6 axon-eventsourcing-5.0.1 100 20 6 20.000000 102 419 6 [jakarta.annotation, jakarta.persistence, org.... [Nonnull, Nullable, GeneratedValue, Column, Lo...
7 axon-common-5.0.1 150 28 11 18.666667 109 524 11 [jakarta.annotation, org.slf4j, javax.cache.ev... [Nonnull, Nullable, Logger, LoggerFactory, Cac...
8 axon-update-5.0.1 23 4 2 17.391304 28 129 2 [jakarta.annotation, org.slf4j] [Nonnull, Nullable, LoggerFactory, Logger]
9 axon-messaging-5.0.1 570 32 8 5.614035 602 3181 8 [jakarta.annotation, org.slf4j, com.fasterxml.... [Nonnull, Nullable, Logger, LoggerFactory, Jso...
10 axon-modelling-5.0.1 93 4 2 4.301075 92 586 2 [jakarta.annotation, org.slf4j] [Nonnull, Nullable, Logger, LoggerFactory]

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-metrics-micrometer-5.0.1 org.axonframework.extension.metrics.micrometer io.micrometer.core.instrument 37 136 12 [Clock, Tags, MeterRegistry, Counter, Tag, Tim... micrometer
1 axon-test-5.0.1 org.axonframework.test.matchers org.hamcrest 36 142 23 [TypeSafeMatcher, Description, Matcher, BaseMa... matchers
2 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.event io.axoniq.axonserver.grpc.event.dcb 28 104 14 [TaggedEvent, Event, Event$Builder, Tag, Tag$B... event
3 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.util io.grpc 17 35 13 [Status, Metadata$AsciiMarshaller, Metadata$Ke... util
4 axon-conversion-5.0.1 org.axonframework.conversion.avro org.apache.avro 16 54 10 [AvroRuntimeException, SchemaCompatibility$Inc... avro
5 axon-messaging-5.0.1 org.axonframework.messaging.eventhandling.proc... org.slf4j 15 72 24 [Logger, LoggerFactory] pooled
6 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.query io.axoniq.axonserver.grpc.query 14 98 11 [QueryRequest, QueryResponse, SubscriptionQuer... query
7 axon-server-connector-5.0.1 org.axonframework.axonserver.connector io.axoniq.axonserver.grpc 12 94 28 [ErrorMessage, InstructionAck$Builder, Instruc... connector
8 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.event org.slf4j 10 44 14 [LoggerFactory, Logger] event
9 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.query io.axoniq.axonserver.connector 10 37 11 [ReplyChannel, Registration, FlowControl, Axon... query
10 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.query io.axoniq.axonserver.grpc 9 50 11 [ErrorMessage, MetaDataValue, ProcessingInstru... query
11 axon-tracing-opentelemetry-5.0.1 org.axonframework.extension.tracing.opentelemetry io.opentelemetry.api.trace 9 46 5 [SpanBuilder, Span, SpanContext, StatusCode, T... opentelemetry
12 axon-tracing-opentelemetry-5.0.1 org.axonframework.extension.tracing.opentelemetry io.opentelemetry.context.propagation 9 15 5 [TextMapSetter, TextMapGetter, TextMapPropagat... opentelemetry
13 axon-common-5.0.1 org.axonframework.common.caching org.ehcache.event 8 30 13 [EventType, CacheEventListener, CacheEvent, Ev... caching
14 axon-common-5.0.1 org.axonframework.common.caching javax.cache.event 8 26 13 [CacheEntryRemovedListener, CacheEntryUpdatedL... caching
15 axon-conversion-5.0.1 org.axonframework.conversion.avro org.apache.avro.message 8 28 10 [SchemaStore, BinaryMessageDecoder, BinaryMess... avro
16 axon-conversion-5.0.1 org.axonframework.conversion.json com.fasterxml.jackson.databind 8 42 5 [JsonNode, ObjectMapper, JavaType] json
17 axon-messaging-5.0.1 org.axonframework.messaging.core.annotation org.slf4j 8 17 50 [Logger, LoggerFactory] annotation
18 axon-server-connector-5.0.1 org.axonframework.axonserver.connector io.axoniq.axonserver.grpc.control 8 46 28 [TopologyChange, UpdateType, NodeInfo$Builder,... connector
19 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.command io.axoniq.axonserver.grpc.command 8 63 6 [CommandResponse, Command, CommandResponse$Bui... command
20 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.event io.axoniq.axonserver.connector.event 8 38 14 [EventStream, EventChannel, AggregateEventStre... event
21 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.util io.axoniq.axonserver.grpc 8 81 13 [ProcessingKey, MetaDataValue, MetaDataValue$B... util
22 axon-update-5.0.1 org.axonframework.update org.slf4j 8 27 5 [Logger, LoggerFactory] update
23 axon-conversion-5.0.1 org.axonframework.conversion.avro org.apache.avro.generic 7 30 10 [GenericRecord, GenericData, GenericDatumReader] avro
24 axon-eventsourcing-5.0.1 org.axonframework.eventsourcing.eventstore.jpa jakarta.persistence 7 41 13 [EntityExistsException, GenerationType, Index,... jpa
25 axon-eventsourcing-5.0.1 org.axonframework.eventsourcing.eventstore.jpa org.slf4j 7 16 13 [Logger, LoggerFactory] jpa
26 axon-messaging-5.0.1 org.axonframework.messaging.core reactor.core.publisher 7 30 80 [Flux, Mono, FluxSink] core
27 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.command io.axoniq.axonserver.grpc 7 31 6 [ErrorMessage, SerializedObject, ProcessingKey... command
28 axon-test-5.0.1 org.axonframework.test.fixture org.hamcrest 7 45 31 [Description, StringDescription, CoreMatchers,... fixture
29 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.query io.axoniq.axonserver.connector.query 6 19 11 [QueryHandler$UpdateHandler, QueryHandler, Que... query
30 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.autoconfig org.axonframework.extension.spring.config 6 27 34 [SpringLifecycleRegistry, SpringAxonApplicatio... autoconfig
31 axon-common-5.0.1 org.axonframework.common org.slf4j 5 14 34 [Logger, LoggerFactory] common
32 axon-common-5.0.1 org.axonframework.common.configuration org.slf4j 5 27 46 [Logger, LoggerFactory] configuration
33 axon-messaging-5.0.1 org.axonframework.messaging.core org.reactivestreams 5 10 80 [Publisher, Subscription, Subscriber] core
34 axon-messaging-5.0.1 org.axonframework.messaging.core.interception jakarta.validation 5 16 19 [Validation, ConstraintViolation, Validator, V... interception
35 axon-messaging-5.0.1 org.axonframework.messaging.eventhandling.proc... jakarta.persistence 5 54 4 [Query, LockModeType, EntityManager, TypedQuery] jpa
36 axon-server-connector-5.0.1 org.axonframework.axonserver.connector io.axoniq.axonserver.connector 5 38 28 [AxonServerConnectionFactory, AxonServerConnec... connector
37 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.event io.axoniq.axonserver.grpc.event 5 31 14 [Event, EventWithToken, Event$Builder, Confirm... event
38 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.event io.axoniq.axonserver.connector 5 37 14 [AxonServerConnection, ResultStream] event
39 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.event io.axoniq.axonserver.grpc.control 5 40 14 [EventProcessorInfo, EventProcessorInfo$Segmen... event

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-5.0.1 org.axonframework.extension.springboot.autoconfig ConverterAutoConfiguration 16 45 11 16 [jakarta.annotation, org.springframework.boot.... [jakarta.annotation.Nonnull, org.springframewo... autoconfig org.axonframework.extension.springboot.autocon...
1 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.autoconfig AxonServerAutoConfiguration 14 22 10 14 [jakarta.annotation, org.springframework.boot.... [jakarta.annotation.Nonnull, org.springframewo... autoconfig org.axonframework.extension.springboot.autocon...
2 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.autoconfig AvroSchemaStoreAutoConfiguration 14 28 8 14 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
3 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.util AbstractQualifiedBeanCondition 12 24 8 12 [jakarta.annotation, org.slf4j, org.springfram... [jakarta.annotation.Nonnull, org.slf4j.Logger,... util org.axonframework.extension.springboot.util.Ab...
4 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.autoconfig JpaEventStoreAutoConfiguration 8 8 7 8 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
5 axon-server-connector-5.0.1 org.axonframework.axonserver.connector AxonServerConnectionManager$Builder 9 45 6 9 [io.axoniq.axonserver.connector, io.axoniq.axo... [io.axoniq.axonserver.connector.AxonServerConn... connector org.axonframework.axonserver.connector.AxonSer...
6 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.event AggregateBasedAxonServerEventStorageEngine 13 69 6 13 [io.axoniq.axonserver.grpc, jakarta.annotation... [io.axoniq.axonserver.grpc.MetaDataValue$Build... event org.axonframework.axonserver.connector.event.A...
7 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.event EventProcessorControlService 7 31 6 7 [jakarta.annotation, org.slf4j, io.axoniq.axon... [jakarta.annotation.Nonnull, org.slf4j.Logger,... event org.axonframework.axonserver.connector.event.E...
8 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.autoconfig JpaAutoConfiguration 8 13 6 8 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
9 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.autoconfig TransactionAutoConfiguration 7 9 6 7 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
10 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.util DefaultEntityRegistrar 6 7 6 6 [jakarta.annotation, org.springframework.boot.... [jakarta.annotation.Nonnull, org.springframewo... util org.axonframework.extension.springboot.util.De...
11 axon-conversion-5.0.1 org.axonframework.conversion.avro SpecificRecordBaseConverterStrategy 8 38 5 8 [jakarta.annotation, org.apache.avro.generic, ... [jakarta.annotation.Nonnull, org.apache.avro.g... avro org.axonframework.conversion.avro.SpecificReco...
12 axon-conversion-5.0.1 org.axonframework.conversion.avro AvroUtil 16 71 5 16 [jakarta.annotation, org.apache.avro, org.apac... [jakarta.annotation.Nonnull, org.apache.avro.S... avro org.axonframework.conversion.avro.AvroUtil
13 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.command AxonServerCommandBusConnector 9 40 5 9 [jakarta.annotation, org.slf4j, io.axoniq.axon... [jakarta.annotation.Nonnull, org.slf4j.Logger,... command org.axonframework.axonserver.connector.command...
14 axon-server-connector-5.0.1 org.axonframework.axonserver.connector.event AxonServerEventStorageEngine 12 53 5 12 [jakarta.annotation, org.slf4j, io.axoniq.axon... [jakarta.annotation.Nonnull, org.slf4j.Logger,... event org.axonframework.axonserver.connector.event.A...
15 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.autoconfig AxonTimeoutAutoConfiguration 5 6 5 5 [jakarta.annotation, org.springframework.boot.... [jakarta.annotation.Nonnull, org.springframewo... autoconfig org.axonframework.extension.springboot.autocon...
16 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.autoconfig ObjectMapperAutoConfiguration 9 12 5 9 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
17 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.autoconfig AxonAutoConfiguration 9 37 5 9 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
18 axon-spring-boot-autoconfigure-5.0.1 org.axonframework.extension.springboot.autoconfig CBORMapperAutoConfiguration 8 13 5 8 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
19 axon-conversion-5.0.1 org.axonframework.conversion.avro ByteArrayToGenericRecordConverter 6 22 4 6 [jakarta.annotation, org.apache.avro.generic, ... [jakarta.annotation.Nonnull, jakarta.annotatio... avro org.axonframework.conversion.avro.ByteArrayToG...

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-5.0.1 57 570 7 18 45 7.894737 31.578947
1 axon-common-5.0.1 13 150 10 7 16 10.666667 53.846154
2 axon-spring-boot-autoconfigure-5.0.1 7 70 31 7 31 44.285714 100.000000
3 axon-server-connector-5.0.1 5 72 20 5 51 70.833333 100.000000
4 axon-eventsourcing-5.0.1 7 100 5 4 9 9.000000 57.142857
5 axon-test-5.0.1 5 73 9 4 24 32.876712 80.000000
6 axon-conversion-5.0.1 4 30 10 3 15 50.000000 75.000000
7 axon-modelling-5.0.1 7 93 1 3 3 3.225806 42.857143
8 axon-update-5.0.1 5 23 1 3 7 30.434783 60.000000
9 axon-metrics-micrometer-5.0.1 2 13 3 2 12 92.307692 100.000000
10 axon-tracing-opentelemetry-5.0.1 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-common-5.0.1 axon-conversion-5.0.1 axon-eventsourcing-5.0.1 axon-messaging-5.0.1 axon-metrics-micrometer-5.0.1 axon-modelling-5.0.1 axon-server-connector-5.0.1 axon-spring-boot-autoconfigure-5.0.1 axon-test-5.0.1 axon-update-5.0.1
numberOfPackages
2 0.000000 0.0 28.571429 0.000000 100.0 0.000000 40.0 28.571429 40.0 0.0
3 0.000000 75.0 0.000000 5.263158 0.0 42.857143 60.0 42.857143 60.0 60.0
4 30.769231 100.0 0.000000 0.000000 0.0 0.000000 80.0 57.142857 0.0 80.0
5 0.000000 0.0 0.000000 8.771930 0.0 0.000000 100.0 0.000000 0.0 0.0
6 46.153846 0.0 0.000000 0.000000 0.0 0.000000 0.0 0.000000 0.0 0.0
7 0.000000 0.0 100.000000 0.000000 0.0 100.000000 0.0 0.000000 0.0 0.0
14 0.000000 0.0 0.000000 24.561404 0.0 0.000000 0.0 0.000000 0.0 0.0
56 0.000000 0.0 0.000000 98.245614 0.0 0.000000 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-5.0.1 57 7 1 1.0 3.714286 14 4.785892
1 axon-server-connector-5.0.1 5 20 1 1.0 1.900000 5 1.333772
2 axon-common-5.0.1 13 10 1 1.0 1.300000 4 0.948683
3 axon-conversion-5.0.1 4 10 1 1.0 1.200000 3 0.632456
4 axon-modelling-5.0.1 7 1 3 3.0 3.000000 3 0.000000
5 axon-spring-boot-autoconfigure-5.0.1 7 31 1 1.0 1.290323 3 0.528744
6 axon-test-5.0.1 5 9 1 1.0 1.222222 3 0.666667
7 axon-update-5.0.1 5 1 3 3.0 3.000000 3 0.000000
8 axon-eventsourcing-5.0.1 7 5 1 1.0 1.200000 2 0.447214
9 axon-metrics-micrometer-5.0.1 2 3 1 1.0 1.333333 2 0.577350
10 axon-tracing-opentelemetry-5.0.1 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-5.0.1 57 7 1.754386 1.754386 6.516291 24.561404 8.396302
1 axon-server-connector-5.0.1 5 20 20.000000 20.000000 38.000000 100.000000 26.675437
2 axon-common-5.0.1 13 10 7.692308 7.692308 10.000000 30.769231 7.297564
3 axon-conversion-5.0.1 4 10 25.000000 25.000000 30.000000 75.000000 15.811388
4 axon-modelling-5.0.1 7 1 42.857143 42.857143 42.857143 42.857143 0.000000
5 axon-spring-boot-autoconfigure-5.0.1 7 31 14.285714 14.285714 18.433180 42.857143 7.553481
6 axon-test-5.0.1 5 9 20.000000 20.000000 24.444444 60.000000 13.333333
7 axon-update-5.0.1 5 1 60.000000 60.000000 60.000000 60.000000 0.000000
8 axon-eventsourcing-5.0.1 7 5 14.285714 14.285714 17.142857 28.571429 6.388766
9 axon-metrics-micrometer-5.0.1 2 3 50.000000 50.000000 66.666667 100.000000 28.867513
10 axon-tracing-opentelemetry-5.0.1 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-5.0.1 570 7 2 2.0 7.428571 30 10.244627
1 axon-server-connector-5.0.1 72 20 1 3.5 5.200000 18 4.840618
2 axon-common-5.0.1 150 10 1 1.0 2.100000 8 2.183270
3 axon-conversion-5.0.1 30 10 1 2.5 3.100000 6 2.024846
4 axon-modelling-5.0.1 93 1 3 3.0 3.000000 3 0.000000
5 axon-spring-boot-autoconfigure-5.0.1 70 31 1 2.0 2.193548 7 1.536649
6 axon-test-5.0.1 73 9 1 1.0 3.333333 22 7.000000
7 axon-update-5.0.1 23 1 7 7.0 7.000000 7 0.000000
8 axon-eventsourcing-5.0.1 100 5 1 1.0 2.600000 6 2.302173
9 axon-metrics-micrometer-5.0.1 13 3 1 1.0 4.666667 12 6.350853
10 axon-tracing-opentelemetry-5.0.1 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-5.0.1 570 7 0.350877 0.350877 1.303258 5.263158 1.797303
1 axon-server-connector-5.0.1 72 20 1.388889 4.861111 7.222222 25.000000 6.723080
2 axon-common-5.0.1 150 10 0.666667 0.666667 1.400000 5.333333 1.455513
3 axon-conversion-5.0.1 30 10 3.333333 8.333333 10.333333 20.000000 6.749486
4 axon-modelling-5.0.1 93 1 3.225806 3.225806 3.225806 3.225806 0.000000
5 axon-spring-boot-autoconfigure-5.0.1 70 31 1.428571 2.857143 3.133641 10.000000 2.195213
6 axon-test-5.0.1 73 9 1.369863 1.369863 4.566210 30.136986 9.589041
7 axon-update-5.0.1 23 1 30.434783 30.434783 30.434783 30.434783 0.000000
8 axon-eventsourcing-5.0.1 100 5 1.000000 1.000000 2.600000 6.000000 2.302173
9 axon-metrics-micrometer-5.0.1 13 3 7.692308 7.692308 35.897436 92.307692 48.852715
10 axon-tracing-opentelemetry-5.0.1 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-common Axon Framework - Common test False org.springframework spring-test
1 axon-common Axon Framework - Common test False org.springframework spring-context-support
2 axon-common Axon Framework - Common test False org.glassfish.expressly expressly
3 axon-common Axon Framework - Common test False org.springframework.security spring-security-config
4 axon-common Axon Framework - Common test False com.tngtech.archunit archunit-junit5
... ... ... ... ... ... ...
189 axon-tracing-opentelemetry Axon Extension - Tracing - OpenTelemetry default False io.opentelemetry opentelemetry-api
190 axon-tracing-opentelemetry Axon Extension - Tracing - OpenTelemetry default False jakarta.annotation jakarta.annotation-api
191 axon-update Axon Framework - Update default False org.axonframework axon-common
192 axon-update Axon Framework - Update test False org.axonframework axon-common
193 axon-update Axon Framework - Update default False jakarta.annotation jakarta.annotation-api

194 rows × 6 columns