Skip to content

Latest commit

 

History

History
6981 lines (6551 loc) · 174 KB

File metadata and controls

6981 lines (6551 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 106 695 899 4946 120 1231 [Nonnull, Nullable]
1 org.slf4j 38 74 133 469 120 1231 [Logger, LoggerFactory]
2 jakarta.persistence 6 18 42 179 120 1231 [EntityManager, EntityManagerFactory, TypedQue...
3 io.axoniq.axonserver.connector 5 16 23 124 120 1231 [AxonServerConnectionFactory, AxonServerConnec...
4 io.axoniq.axonserver.grpc 5 18 40 271 120 1231 [ErrorMessage, InstructionAck$Builder, Instruc...
5 reactor.core.publisher 5 8 14 49 120 1231 [MonoSink, Mono, Flux, FluxSink]
6 com.fasterxml.jackson.annotation 3 6 19 33 120 1231 [JsonIgnore, JsonTypeInfo$Id, JsonProperty, Js...
7 com.fasterxml.jackson.databind 3 8 13 64 120 1231 [JsonNode, SerializationFeature, ObjectMapper,...
8 io.grpc 3 7 23 51 120 1231 [ManagedChannelBuilder, ClientInterceptor, Sta...
9 io.micrometer.core.instrument 3 13 37 141 120 1231 [MeterRegistry, Timer, Timer$Builder, Clock, T...
10 org.hamcrest 3 22 44 196 120 1231 [Matcher, Description, CoreMatchers, StringDes...
11 org.reactivestreams 3 6 8 27 120 1231 [Publisher, Subscription, Subscriber]
12 org.springframework.boot.actuate.health 3 4 7 24 120 1231 [Status, Health$Builder, AbstractHealthIndicat...
13 org.springframework.boot.autoconfigure 3 22 36 37 120 1231 [AutoConfigureAfter, AutoConfigureBefore, Auto...
14 org.springframework.boot.autoconfigure.condition 3 37 55 90 120 1231 [ConditionalOnMissingBean, ConditionalOnClass,...
15 org.springframework.context.annotation 3 31 41 77 120 1231 [Bean, Conditional, Primary, ConfigurationCond...
16 com.fasterxml.jackson.databind.node 2 3 5 28 120 1231 [ArrayNode, ObjectNode, JsonNodeType]
17 io.axoniq.axonserver.grpc.control 2 6 13 86 120 1231 [TopologyChange, UpdateType, CommandSubscripti...
18 io.grpc.stub 2 3 4 11 120 1231 [StreamObserver, ClientCallStreamObserver, Cli...
19 org.apache.avro 2 5 17 56 120 1231 [AvroRuntimeException, SchemaCompatibility$Inc...

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 106 695 899 4946 120 1231 [Nonnull, Nullable]
1 org.slf4j 38 74 133 469 120 1231 [Logger, LoggerFactory]
2 org.springframework 8 63 205 344 120 1231 [AutoConfigureAfter, ConditionalOnMissingBean,...
3 com.fasterxml 6 14 38 126 120 1231 [JsonNode, SerializationFeature, ArrayNode, Ob...
4 io.axoniq 6 45 153 849 120 1231 [ErrorMessage, InstructionAck$Builder, Instruc...
5 jakarta.persistence 6 18 42 179 120 1231 [EntityManager, EntityManagerFactory, TypedQue...
6 reactor.core 6 9 16 51 120 1231 [MonoSink, Mono, Flux, FluxSink, Scheduler, Sc...
7 com.google 5 9 12 36 120 1231 [JsonElement, JsonParser, JsonArray, JsonObjec...
8 io.grpc 3 10 29 65 120 1231 [StreamObserver, ManagedChannelBuilder, GrpcSs...
9 io.micrometer 3 13 39 145 120 1231 [MeterRegistry, Timer, Timer$Builder, Clock, T...
10 org.axonframework 3 10 22 64 120 1231 [EventProcessorSettings$ProcessorMode, EventPr...
11 org.hamcrest 3 22 44 196 120 1231 [Matcher, Description, CoreMatchers, StringDes...
12 org.reactivestreams 3 6 8 27 120 1231 [Publisher, Subscription, Subscriber]
13 org.apache 2 12 42 144 120 1231 [AvroRuntimeException, SpecificRecordBase, Sch...
14 org.junit 2 2 9 30 120 1231 [ParameterResolutionException, BeforeEachCallb...
15 tools.jackson 2 9 24 84 120 1231 [JsonMapper$Builder, JacksonException, ObjectM...
16 io.opentelemetry 1 5 21 70 120 1231 [SpanKind, TextMapSetter, Span, Tracer, Contex...
17 jakarta.validation 1 2 5 16 120 1231 [ConstraintViolation, Validation, ValidatorFac...
18 javax.cache 1 2 12 48 120 1231 [CacheEntryRemovedListener, Factory, CacheEntr...
19 org.awaitility 1 1 2 3 120 1231 [ConditionFactory, Awaitility]

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 10 38 1 15 2.5 3.8 4.104198 16.666667 100.000000 ... 31 5.0 7.400000 9.020963 1.282051 30.434783 5.677029 10.113492 9.523561 [axon-test-5.0.3, axon-common-5.0.3, axon-trac...
1 jakarta.persistence 4 6 1 2 1.5 1.5 0.577350 3.389831 28.571429 ... 5 4.0 4.250000 0.500000 0.690846 6.666667 3.282051 3.480404 2.519490 [axon-common-5.0.3, axon-eventsourcing-5.0.3, ...
2 com.fasterxml.jackson.databind 3 3 1 1 1.0 1.0 0.000000 6.666667 20.000000 ... 5 2.0 2.666667 2.081666 0.641026 14.285714 2.666667 5.864469 7.363005 [axon-common-5.0.3, axon-conversion-5.0.3, axo...
3 com.fasterxml.jackson.databind.node 2 2 1 1 1.0 1.0 0.000000 6.666667 20.000000 ... 2 1.5 1.500000 0.707107 0.641026 5.714286 3.177656 3.177656 3.587337 [axon-common-5.0.3, axon-conversion-5.0.3]
4 io.axoniq.axonserver.connector 2 5 1 4 2.5 2.5 2.121320 14.285714 80.000000 ... 15 8.0 8.000000 9.899495 1.333333 20.833333 11.083333 11.083333 13.788582 [axon-server-connector-5.0.3, axon-spring-boot...
5 io.axoniq.axonserver.connector.control 2 3 1 2 1.5 1.5 0.707107 14.285714 40.000000 ... 4 2.5 2.500000 2.121320 1.333333 5.555556 3.444444 3.444444 2.985562 [axon-server-connector-5.0.3, axon-spring-boot...
6 org.apache.avro 2 2 1 1 1.0 1.0 0.000000 14.285714 20.000000 ... 4 2.5 2.500000 2.121320 1.333333 11.428571 6.380952 6.380952 7.138411 [axon-conversion-5.0.3, axon-spring-boot-autoc...
7 org.apache.avro.message 2 2 1 1 1.0 1.0 0.000000 14.285714 20.000000 ... 6 4.5 4.500000 2.121320 4.000000 17.142857 10.571429 10.571429 9.293403 [axon-conversion-5.0.3, axon-spring-boot-autoc...
8 tools.jackson.databind 2 2 1 1 1.0 1.0 0.000000 14.285714 20.000000 ... 5 4.0 4.000000 1.414214 4.000000 14.285714 9.142857 9.142857 7.273098 [axon-conversion-5.0.3, axon-spring-boot-autoc...
9 tools.jackson.databind.json 2 2 1 1 1.0 1.0 0.000000 14.285714 20.000000 ... 1 1.0 1.000000 0.000000 1.333333 2.857143 2.095238 2.095238 1.077496 [axon-conversion-5.0.3, axon-spring-boot-autoc...

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 10 1 15 2.5 3.8 4.104198
1 jakarta.persistence 4 1 2 1.5 1.5 0.577350
2 com.fasterxml.jackson.databind 3 1 1 1.0 1.0 0.000000
3 com.fasterxml.jackson.databind.node 2 1 1 1.0 1.0 0.000000
4 io.axoniq.axonserver.connector 2 1 4 2.5 2.5 2.121320
5 io.axoniq.axonserver.connector.control 2 1 2 1.5 1.5 0.707107
6 org.apache.avro 2 1 1 1.0 1.0 0.000000
7 org.apache.avro.message 2 1 1 1.0 1.0 0.000000
8 tools.jackson.databind 2 1 1 1.0 1.0 0.000000
9 tools.jackson.databind.json 2 1 1 1.0 1.0 0.000000
10 IdTypeParameterResolver 1 1 1 1.0 1.0 0.000000
11 ScannedEntityCreator 1 1 1 1.0 1.0 0.000000
12 WrappedEventCriteriaBuilderMethod 1 1 1 1.0 1.0 0.000000
13 com.fasterxml.jackson.annotation 1 1 1 1.0 1.0 0.000000
14 com.fasterxml.jackson.core 1 1 1 1.0 1.0 0.000000
15 com.google.gson 1 1 1 1.0 1.0 0.000000
16 com.google.protobuf 1 4 4 4.0 4.0 0.000000
17 io.axoniq.axonserver.connector.admin 1 1 1 1.0 1.0 0.000000
18 io.axoniq.axonserver.connector.command 1 1 1 1.0 1.0 0.000000
19 io.axoniq.axonserver.connector.event 1 1 1 1.0 1.0 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 10 16.666667 100.000000 28.571429 47.447135 29.761886
1 jakarta.persistence 4 3.389831 28.571429 10.476190 13.228410 11.200896
2 com.fasterxml.jackson.databind 3 6.666667 20.000000 14.285714 13.650794 6.689304
3 com.fasterxml.jackson.databind.node 2 6.666667 20.000000 13.333333 13.333333 9.428090
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 20.000000 17.142857 17.142857 4.040610
7 org.apache.avro.message 2 14.285714 20.000000 17.142857 17.142857 4.040610
8 tools.jackson.databind 2 14.285714 20.000000 17.142857 17.142857 4.040610
9 tools.jackson.databind.json 2 14.285714 20.000000 17.142857 17.142857 4.040610
10 IdTypeParameterResolver 1 14.285714 14.285714 14.285714 14.285714 0.000000
11 ScannedEntityCreator 1 14.285714 14.285714 14.285714 14.285714 0.000000
12 WrappedEventCriteriaBuilderMethod 1 14.285714 14.285714 14.285714 14.285714 0.000000
13 com.fasterxml.jackson.annotation 1 1.694915 1.694915 1.694915 1.694915 0.000000
14 com.fasterxml.jackson.core 1 20.000000 20.000000 20.000000 20.000000 0.000000
15 com.google.gson 1 16.666667 16.666667 16.666667 16.666667 0.000000
16 com.google.protobuf 1 80.000000 80.000000 80.000000 80.000000 0.000000
17 io.axoniq.axonserver.connector.admin 1 20.000000 20.000000 20.000000 20.000000 0.000000
18 io.axoniq.axonserver.connector.command 1 20.000000 20.000000 20.000000 20.000000 0.000000
19 io.axoniq.axonserver.connector.event 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 10 1 31 5.0 7.400000 9.020963
1 jakarta.persistence 4 4 5 4.0 4.250000 0.500000
2 com.fasterxml.jackson.databind 3 1 5 2.0 2.666667 2.081666
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 tools.jackson.databind 2 3 5 4.0 4.000000 1.414214
9 tools.jackson.databind.json 2 1 1 1.0 1.000000 0.000000
10 IdTypeParameterResolver 1 1 1 1.0 1.000000 0.000000
11 ScannedEntityCreator 1 1 1 1.0 1.000000 0.000000
12 WrappedEventCriteriaBuilderMethod 1 1 1 1.0 1.000000 0.000000
13 com.fasterxml.jackson.annotation 1 2 2 2.0 2.000000 0.000000
14 com.fasterxml.jackson.core 1 1 1 1.0 1.000000 0.000000
15 com.google.gson 1 1 1 1.0 1.000000 0.000000
16 com.google.protobuf 1 8 8 8.0 8.000000 0.000000
17 io.axoniq.axonserver.connector.admin 1 1 1 1.0 1.000000 0.000000
18 io.axoniq.axonserver.connector.command 1 1 1 1.0 1.000000 0.000000
19 io.axoniq.axonserver.connector.event 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 10 1.282051 30.434783 5.677029 10.113492 9.523561
1 jakarta.persistence 4 0.690846 6.666667 3.282051 3.480404 2.519490
2 com.fasterxml.jackson.databind 3 0.641026 14.285714 2.666667 5.864469 7.363005
3 com.fasterxml.jackson.databind.node 2 0.641026 5.714286 3.177656 3.177656 3.587337
4 io.axoniq.axonserver.connector 2 1.333333 20.833333 11.083333 11.083333 13.788582
5 io.axoniq.axonserver.connector.control 2 1.333333 5.555556 3.444444 3.444444 2.985562
6 org.apache.avro 2 1.333333 11.428571 6.380952 6.380952 7.138411
7 org.apache.avro.message 2 4.000000 17.142857 10.571429 10.571429 9.293403
8 tools.jackson.databind 2 4.000000 14.285714 9.142857 9.142857 7.273098
9 tools.jackson.databind.json 2 1.333333 2.857143 2.095238 2.095238 1.077496
10 IdTypeParameterResolver 1 1.000000 1.000000 1.000000 1.000000 0.000000
11 ScannedEntityCreator 1 1.000000 1.000000 1.000000 1.000000 0.000000
12 WrappedEventCriteriaBuilderMethod 1 1.000000 1.000000 1.000000 1.000000 0.000000
13 com.fasterxml.jackson.annotation 1 0.345423 0.345423 0.345423 0.345423 0.000000
14 com.fasterxml.jackson.core 1 2.857143 2.857143 2.857143 2.857143 0.000000
15 com.google.gson 1 1.282051 1.282051 1.282051 1.282051 0.000000
16 com.google.protobuf 1 11.111111 11.111111 11.111111 11.111111 0.000000
17 io.axoniq.axonserver.connector.admin 1 1.388889 1.388889 1.388889 1.388889 0.000000
18 io.axoniq.axonserver.connector.command 1 1.388889 1.388889 1.388889 1.388889 0.000000
19 io.axoniq.axonserver.connector.event 1 6.944444 6.944444 6.944444 6.944444 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 10 38 1 15 2.5 3.8 4.104198 16.666667 100.000000 ... 31 5.0 7.40 9.020963 1.282051 30.434783 5.677029 10.113492 9.523561 [axon-test-5.0.3, axon-common-5.0.3, axon-trac...
1 com.fasterxml 4 4 1 1 1.0 1.0 0.000000 1.694915 20.000000 ... 5 2.0 2.50 1.732051 0.345423 14.285714 1.653846 4.484707 6.614947 [axon-common-5.0.3, axon-conversion-5.0.3, axo...
2 jakarta.persistence 4 6 1 2 1.5 1.5 0.577350 3.389831 28.571429 ... 5 4.0 4.25 0.500000 0.690846 6.666667 3.282051 3.480404 2.519490 [axon-common-5.0.3, axon-eventsourcing-5.0.3, ...
3 com.google 2 5 1 4 2.5 2.5 2.121320 16.666667 80.000000 ... 8 4.5 4.50 4.949747 1.282051 11.111111 6.196581 6.196581 6.950195 [axon-test-5.0.3, axon-server-connector-5.0.3]
4 io.axoniq 2 6 1 5 3.0 3.0 2.828427 14.285714 100.000000 ... 44 22.5 22.50 30.405592 1.333333 61.111111 31.222222 31.222222 42.269272 [axon-server-connector-5.0.3, axon-spring-boot...
5 org.apache 2 2 1 1 1.0 1.0 0.000000 14.285714 20.000000 ... 9 6.0 6.00 4.242641 4.000000 25.714286 14.857143 14.857143 15.354319 [axon-conversion-5.0.3, axon-spring-boot-autoc...
6 reactor.core 2 6 1 5 3.0 3.0 2.828427 8.474576 20.000000 ... 8 4.5 4.50 4.949747 1.381693 1.388889 1.385291 1.385291 0.005089 [axon-messaging-5.0.3, axon-server-connector-5...
7 tools.jackson 2 2 1 1 1.0 1.0 0.000000 14.285714 20.000000 ... 5 4.5 4.50 0.707107 5.333333 14.285714 9.809524 9.809524 6.330289 [axon-conversion-5.0.3, axon-spring-boot-autoc...
8 IdTypeParameterResolver 1 1 1 1 1.0 1.0 0.000000 14.285714 14.285714 ... 1 1.0 1.00 0.000000 1.000000 1.000000 1.000000 1.000000 0.000000 [axon-eventsourcing-5.0.3]
9 ScannedEntityCreator 1 1 1 1 1.0 1.0 0.000000 14.285714 14.285714 ... 1 1.0 1.00 0.000000 1.000000 1.000000 1.000000 1.000000 0.000000 [axon-eventsourcing-5.0.3]
10 WrappedEventCriteriaBuilderMethod 1 1 1 1 1.0 1.0 0.000000 14.285714 14.285714 ... 1 1.0 1.00 0.000000 1.000000 1.000000 1.000000 1.000000 0.000000 [axon-eventsourcing-5.0.3]
11 io.grpc 1 3 3 3 3.0 3.0 0.000000 60.000000 60.000000 ... 10 10.0 10.00 0.000000 13.888889 13.888889 13.888889 13.888889 0.000000 [axon-server-connector-5.0.3]
12 io.micrometer 1 3 3 3 3.0 3.0 0.000000 100.000000 100.000000 ... 13 13.0 13.00 0.000000 81.250000 81.250000 81.250000 81.250000 0.000000 [axon-metrics-micrometer-5.0.3]
13 io.opentelemetry 1 1 1 1 1.0 1.0 0.000000 100.000000 100.000000 ... 5 5.0 5.00 0.000000 100.000000 100.000000 100.000000 100.000000 0.000000 [axon-tracing-opentelemetry-5.0.3]
14 jakarta.validation 1 1 1 1 1.0 1.0 0.000000 1.694915 1.694915 ... 2 2.0 2.00 0.000000 0.345423 0.345423 0.345423 0.345423 0.000000 [axon-messaging-5.0.3]
15 javax.cache 1 1 1 1 1.0 1.0 0.000000 6.666667 6.666667 ... 2 2.0 2.00 0.000000 1.282051 1.282051 1.282051 1.282051 0.000000 [axon-common-5.0.3]
16 org.awaitility 1 1 1 1 1.0 1.0 0.000000 16.666667 16.666667 ... 1 1.0 1.00 0.000000 1.282051 1.282051 1.282051 1.282051 0.000000 [axon-test-5.0.3]
17 org.axonframework 1 3 3 3 3.0 3.0 0.000000 42.857143 42.857143 ... 10 10.0 10.00 0.000000 13.333333 13.333333 13.333333 13.333333 0.000000 [axon-spring-boot-autoconfigure-5.0.3]
18 org.ehcache 1 1 1 1 1.0 1.0 0.000000 6.666667 6.666667 ... 3 3.0 3.00 0.000000 1.923077 1.923077 1.923077 1.923077 0.000000 [axon-common-5.0.3]
19 org.hamcrest 1 3 3 3 3.0 3.0 0.000000 50.000000 50.000000 ... 22 22.0 22.00 0.000000 28.205128 28.205128 28.205128 28.205128 0.000000 [axon-test-5.0.3]

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

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.3 io.opentelemetry.api.trace 9 46 5 16 6 320.000000 [Tracer, SpanKind, Span, SpanBuilder, StatusCo...
1 axon-tracing-opentelemetry-5.0.3 io.opentelemetry.context.propagation 9 15 5 16 6 320.000000 [ContextPropagators, TextMapPropagator, TextMa...
2 axon-tracing-opentelemetry-5.0.3 jakarta.annotation 3 8 5 16 6 320.000000 [Nonnull]
3 axon-tracing-opentelemetry-5.0.3 io.opentelemetry.context 2 7 5 16 6 320.000000 [Context, Scope]
4 axon-tracing-opentelemetry-5.0.3 org.slf4j 2 7 5 16 6 320.000000 [Logger, LoggerFactory]
5 axon-tracing-opentelemetry-5.0.3 io.opentelemetry.api 1 2 5 16 6 320.000000 [GlobalOpenTelemetry]
6 axon-server-connector-5.0.3 io.axoniq.axonserver.grpc 40 271 72 113 23 156.944444 [MetaDataValue$DataCase, ProcessingKey, Proces...
7 axon-server-connector-5.0.3 jakarta.annotation 31 181 72 113 23 156.944444 [Nonnull, Nullable]
8 axon-server-connector-5.0.3 io.axoniq.axonserver.grpc.event.dcb 28 104 72 113 23 156.944444 [SequencedEvent, StreamEventsResponse, Tag, St...
9 axon-server-connector-5.0.3 io.grpc 23 51 72 113 23 156.944444 [ManagedChannelBuilder, Status, Metadata, Meta...
10 axon-server-connector-5.0.3 io.axoniq.axonserver.connector 22 123 72 113 23 156.944444 [AxonServerConnectionFactory, AxonServerConnec...
11 axon-server-connector-5.0.3 org.slf4j 19 70 72 113 23 156.944444 [Logger, LoggerFactory]
12 axon-server-connector-5.0.3 io.axoniq.axonserver.grpc.query 14 98 72 113 23 156.944444 [QueryUpdate, QueryRequest, QueryResponse, Que...
13 axon-server-connector-5.0.3 io.axoniq.axonserver.grpc.control 13 86 72 113 23 156.944444 [UpdateType, TopologyChange, CommandSubscripti...
14 axon-server-connector-5.0.3 com.google.protobuf 8 29 72 113 23 156.944444 [ByteString, MessageLite]
15 axon-server-connector-5.0.3 io.axoniq.axonserver.connector.event 8 38 72 113 23 156.944444 [AggregateEventStream, EventChannel, AppendEve...
16 axon-server-connector-5.0.3 io.axoniq.axonserver.grpc.command 8 63 72 113 23 156.944444 [Command, CommandResponse, Command$Builder, Co...
17 axon-server-connector-5.0.3 io.axoniq.axonserver.connector.query 6 19 72 113 23 156.944444 [QueryHandler$UpdateHandler, QueryHandler, Que...
18 axon-server-connector-5.0.3 io.axoniq.axonserver.grpc.event 5 31 72 113 23 156.944444 [Event, Event$Builder, EventWithToken, Confirm...
19 axon-server-connector-5.0.3 io.axoniq.axonserver.connector.control 4 5 72 113 23 156.944444 [ControlChannel, ProcessorInstructionHandler]
20 axon-server-connector-5.0.3 io.grpc.stub 4 11 72 113 23 156.944444 [StreamObserver, ClientCallStreamObserver, Cli...
21 axon-server-connector-5.0.3 reactor.core.scheduler 2 2 72 113 23 156.944444 [Scheduler, Schedulers]
22 axon-server-connector-5.0.3 io.axoniq.axonserver.connector.admin 1 3 72 113 23 156.944444 [AdminChannel]
23 axon-server-connector-5.0.3 io.axoniq.axonserver.connector.command 1 3 72 113 23 156.944444 [CommandChannel]
24 axon-server-connector-5.0.3 io.axoniq.axonserver.connector.impl 1 3 72 113 23 156.944444 [ServerAddress]
25 axon-server-connector-5.0.3 io.grpc.netty.shaded.io.grpc.netty 1 1 72 113 23 156.944444 [GrpcSslContexts]
26 axon-server-connector-5.0.3 io.grpc.netty.shaded.io.netty.handler.ssl 1 2 72 113 23 156.944444 [SslContextBuilder]
27 axon-server-connector-5.0.3 javax.annotation 1 1 72 113 23 156.944444 [Nonnull]
28 axon-server-connector-5.0.3 org.springframework.boot.context.properties 1 2 72 113 23 156.944444 [ConfigurationProperties]
29 axon-spring-boot-autoconfigure-5.0.3 org.springframework.boot.autoconfigure.condition 52 84 75 100 39 133.333333 [AnyNestedCondition, AllNestedConditions, Cond...
30 axon-spring-boot-autoconfigure-5.0.3 org.springframework.context.annotation 40 74 75 100 39 133.333333 [ConfigurationCondition$ConfigurationPhase, Be...
31 axon-spring-boot-autoconfigure-5.0.3 org.springframework.boot.autoconfigure 33 34 75 100 39 133.333333 [AutoConfigureAfter, AutoConfiguration, AutoCo...
32 axon-spring-boot-autoconfigure-5.0.3 org.springframework.boot.context.properties 20 26 75 100 39 133.333333 [EnableConfigurationProperties, NestedConfigur...
33 axon-spring-boot-autoconfigure-5.0.3 jakarta.annotation 15 30 75 100 39 133.333333 [Nullable, Nonnull]
34 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.spring.config 13 42 75 100 39 133.333333 [SpringComponentRegistry, SpringLifecycleRegis...
35 axon-spring-boot-autoconfigure-5.0.3 org.springframework.boot.actuate.health 7 24 75 100 39 133.333333 [SimpleStatusAggregator, Status, Health$Builde...
36 axon-spring-boot-autoconfigure-5.0.3 jakarta.persistence 6 13 75 100 39 133.333333 [EntityManagerFactory, EntityManager, Persiste...
37 axon-spring-boot-autoconfigure-5.0.3 org.springframework.boot.context.properties.bind 5 11 75 100 39 133.333333 [ConstructorBinding, DefaultValue, Bindable, B...
38 axon-spring-boot-autoconfigure-5.0.3 org.springframework.context 5 9 75 100 39 133.333333 [ApplicationContextAware, ApplicationContext]
39 axon-spring-boot-autoconfigure-5.0.3 org.apache.avro.message 4 10 75 100 39 133.333333 [SchemaStore, SchemaStore$Cache]

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.3 5 35 15 5 100.0 jakarta.annotation 5 30 100.000000 85.714286 [org.axonframework.conversion, org.axonframewo... [org.axonframework.conversion.ChainedConverter...
1 axon-conversion-5.0.3 5 35 15 5 100.0 org.slf4j 4 4 80.000000 11.428571 [org.axonframework.conversion, org.axonframewo... [org.axonframework.conversion.ChainingContentT...
2 axon-conversion-5.0.3 5 35 15 5 100.0 com.fasterxml.jackson.core 1 1 20.000000 2.857143 [org.axonframework.conversion.jackson2] [org.axonframework.conversion.jackson2.JsonNod...
3 axon-conversion-5.0.3 5 35 15 5 100.0 com.fasterxml.jackson.databind 1 5 20.000000 14.285714 [org.axonframework.conversion.jackson2] [org.axonframework.conversion.jackson2.ByteArr...
4 axon-conversion-5.0.3 5 35 15 5 100.0 com.fasterxml.jackson.databind.node 1 2 20.000000 5.714286 [org.axonframework.conversion.jackson2] [org.axonframework.conversion.jackson2.JsonNod...
5 axon-conversion-5.0.3 5 35 15 5 100.0 org.apache.avro 1 4 20.000000 11.428571 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.SpecificRec...
6 axon-conversion-5.0.3 5 35 15 5 100.0 org.apache.avro.generic 1 6 20.000000 17.142857 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.SpecificRec...
7 axon-conversion-5.0.3 5 35 15 5 100.0 org.apache.avro.io 1 1 20.000000 2.857143 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.ByteArrayTo...
8 axon-conversion-5.0.3 5 35 15 5 100.0 org.apache.avro.message 1 6 20.000000 17.142857 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.SpecificRec...
9 axon-conversion-5.0.3 5 35 15 5 100.0 org.apache.avro.specific 1 2 20.000000 5.714286 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.SpecificRec...
10 axon-conversion-5.0.3 5 35 15 5 100.0 org.apache.commons.lang3.tuple 1 1 20.000000 2.857143 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.DefaultSche...
11 axon-conversion-5.0.3 5 35 15 5 100.0 tools.jackson.core 1 3 20.000000 8.571429 [org.axonframework.conversion.jackson] [org.axonframework.conversion.jackson.JacksonC...
12 axon-conversion-5.0.3 5 35 15 5 100.0 tools.jackson.databind 1 5 20.000000 14.285714 [org.axonframework.conversion.jackson] [org.axonframework.conversion.jackson.JacksonC...
13 axon-conversion-5.0.3 5 35 15 5 100.0 tools.jackson.databind.json 1 1 20.000000 2.857143 [org.axonframework.conversion.jackson] [org.axonframework.conversion.jackson.JacksonC...
14 axon-conversion-5.0.3 5 35 15 5 100.0 tools.jackson.databind.node 1 2 20.000000 5.714286 [org.axonframework.conversion.jackson] [org.axonframework.conversion.jackson.JsonNode...
15 axon-eventsourcing-5.0.3 7 100 6 7 100.0 jakarta.annotation 7 60 100.000000 60.000000 [org.axonframework.eventsourcing, org.axonfram... [org.axonframework.eventsourcing.CriteriaResol...
16 axon-eventsourcing-5.0.3 7 100 6 7 100.0 org.slf4j 2 6 28.571429 6.000000 [org.axonframework.eventsourcing.eventstore.in... [org.axonframework.eventsourcing.eventstore.in...
17 axon-eventsourcing-5.0.3 7 100 6 7 100.0 IdTypeParameterResolver 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation.re... [org.axonframework.eventsourcing.annotation.re...
18 axon-eventsourcing-5.0.3 7 100 6 7 100.0 ScannedEntityCreator 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation.re... [org.axonframework.eventsourcing.annotation.re...
19 axon-eventsourcing-5.0.3 7 100 6 7 100.0 WrappedEventCriteriaBuilderMethod 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation] [org.axonframework.eventsourcing.annotation.An...
20 axon-eventsourcing-5.0.3 7 100 6 7 100.0 jakarta.persistence 1 4 14.285714 4.000000 [org.axonframework.eventsourcing.eventstore.jpa] [org.axonframework.eventsourcing.eventstore.jp...
21 axon-metrics-micrometer-5.0.3 3 16 7 3 100.0 io.micrometer.core.instrument 3 13 100.000000 81.250000 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
22 axon-metrics-micrometer-5.0.3 3 16 7 3 100.0 io.micrometer.core.instrument.simple 2 2 66.666667 12.500000 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
23 axon-metrics-micrometer-5.0.3 3 16 7 3 100.0 jakarta.annotation 2 7 66.666667 43.750000 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
24 axon-metrics-micrometer-5.0.3 3 16 7 3 100.0 org.springframework.boot.autoconfigure 1 1 33.333333 6.250000 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
25 axon-metrics-micrometer-5.0.3 3 16 7 3 100.0 org.springframework.boot.autoconfigure.condition 1 1 33.333333 6.250000 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
26 axon-metrics-micrometer-5.0.3 3 16 7 3 100.0 org.springframework.boot.context.properties 1 2 33.333333 12.500000 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
27 axon-metrics-micrometer-5.0.3 3 16 7 3 100.0 org.springframework.context.annotation 1 1 33.333333 6.250000 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
28 axon-modelling-5.0.3 7 92 2 7 100.0 jakarta.annotation 7 76 100.000000 82.608696 [org.axonframework.modelling, org.axonframewor... [org.axonframework.modelling.PayloadBasedEntit...
29 axon-modelling-5.0.3 7 92 2 7 100.0 org.slf4j 2 2 28.571429 2.173913 [org.axonframework.modelling, org.axonframewor... [org.axonframework.modelling.SimpleEntityEvolv...

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.3 5 35 5 5 100.0 jakarta.annotation 5 30 100.000000 85.714286 [org.axonframework.conversion, org.axonframewo... [org.axonframework.conversion.ChainedConverter...
1 axon-conversion-5.0.3 5 35 5 5 100.0 org.slf4j 4 4 80.000000 11.428571 [org.axonframework.conversion, org.axonframewo... [org.axonframework.conversion.ChainingContentT...
2 axon-conversion-5.0.3 5 35 5 5 100.0 com.fasterxml 1 5 20.000000 14.285714 [org.axonframework.conversion.jackson2] [org.axonframework.conversion.jackson2.ByteArr...
3 axon-conversion-5.0.3 5 35 5 5 100.0 org.apache 1 9 20.000000 25.714286 [org.axonframework.conversion.avro] [org.axonframework.conversion.avro.SpecificRec...
4 axon-conversion-5.0.3 5 35 5 5 100.0 tools.jackson 1 5 20.000000 14.285714 [org.axonframework.conversion.jackson] [org.axonframework.conversion.jackson.JacksonC...
5 axon-eventsourcing-5.0.3 7 100 6 7 100.0 jakarta.annotation 7 60 100.000000 60.000000 [org.axonframework.eventsourcing, org.axonfram... [org.axonframework.eventsourcing.CriteriaResol...
6 axon-eventsourcing-5.0.3 7 100 6 7 100.0 org.slf4j 2 6 28.571429 6.000000 [org.axonframework.eventsourcing.eventstore.in... [org.axonframework.eventsourcing.eventstore.in...
7 axon-eventsourcing-5.0.3 7 100 6 7 100.0 IdTypeParameterResolver 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation.re... [org.axonframework.eventsourcing.annotation.re...
8 axon-eventsourcing-5.0.3 7 100 6 7 100.0 ScannedEntityCreator 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation.re... [org.axonframework.eventsourcing.annotation.re...
9 axon-eventsourcing-5.0.3 7 100 6 7 100.0 WrappedEventCriteriaBuilderMethod 1 1 14.285714 1.000000 [org.axonframework.eventsourcing.annotation] [org.axonframework.eventsourcing.annotation.An...
10 axon-eventsourcing-5.0.3 7 100 6 7 100.0 jakarta.persistence 1 4 14.285714 4.000000 [org.axonframework.eventsourcing.eventstore.jpa] [org.axonframework.eventsourcing.eventstore.jp...
11 axon-metrics-micrometer-5.0.3 3 16 3 3 100.0 io.micrometer 3 13 100.000000 81.250000 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
12 axon-metrics-micrometer-5.0.3 3 16 3 3 100.0 jakarta.annotation 2 7 66.666667 43.750000 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
13 axon-metrics-micrometer-5.0.3 3 16 3 3 100.0 org.springframework 1 2 33.333333 12.500000 [org.axonframework.extension.metrics.micromete... [org.axonframework.extension.metrics.micromete...
14 axon-modelling-5.0.3 7 92 2 7 100.0 jakarta.annotation 7 76 100.000000 82.608696 [org.axonframework.modelling, org.axonframewor... [org.axonframework.modelling.PayloadBasedEntit...
15 axon-modelling-5.0.3 7 92 2 7 100.0 org.slf4j 2 2 28.571429 2.173913 [org.axonframework.modelling, org.axonframewor... [org.axonframework.modelling.SimpleEntityEvolv...
16 axon-server-connector-5.0.3 5 72 8 5 100.0 io.axoniq 5 44 100.000000 61.111111 [org.axonframework.axonserver.connector, org.a... [org.axonframework.axonserver.connector.Defaul...
17 axon-server-connector-5.0.3 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...
18 axon-server-connector-5.0.3 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...
19 axon-server-connector-5.0.3 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...
20 axon-server-connector-5.0.3 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...
21 axon-server-connector-5.0.3 5 72 8 5 100.0 javax.annotation 1 1 20.000000 1.388889 [org.axonframework.axonserver.connector] [org.axonframework.axonserver.connector.AxonSe...
22 axon-server-connector-5.0.3 5 72 8 5 100.0 org.springframework 1 1 20.000000 1.388889 [org.axonframework.axonserver.connector] [org.axonframework.axonserver.connector.AxonSe...
23 axon-server-connector-5.0.3 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...
24 axon-spring-boot-autoconfigure-5.0.3 7 75 9 7 100.0 org.springframework 6 60 85.714286 80.000000 [org.axonframework.extension.springboot, org.a... [org.axonframework.extension.springboot.TagsCo...
25 axon-spring-boot-autoconfigure-5.0.3 7 75 9 7 100.0 jakarta.annotation 4 15 57.142857 20.000000 [org.axonframework.extension.springboot, org.a... [org.axonframework.extension.springboot.EventP...
26 axon-spring-boot-autoconfigure-5.0.3 7 75 9 7 100.0 org.axonframework 3 10 42.857143 13.333333 [org.axonframework.extension.springboot, org.a... [org.axonframework.extension.springboot.EventP...
27 axon-spring-boot-autoconfigure-5.0.3 7 75 9 7 100.0 jakarta.persistence 2 5 28.571429 6.666667 [org.axonframework.extension.springboot.autoco... [org.axonframework.extension.springboot.autoco...
28 axon-spring-boot-autoconfigure-5.0.3 7 75 9 7 100.0 org.slf4j 2 2 28.571429 2.666667 [org.axonframework.extension.springboot.servic... [org.axonframework.extension.springboot.servic...
29 axon-spring-boot-autoconfigure-5.0.3 7 75 9 7 100.0 com.fasterxml 1 2 14.285714 2.666667 [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.3 axon-spring-boot-autoconfigure-5.0.3 axon-server-connector-5.0.3 axon-common-5.0.3 axon-conversion-5.0.3 axon-test-5.0.3 axon-eventsourcing-5.0.3 axon-metrics-micrometer-5.0.3 axon-modelling-5.0.3 axon-update-5.0.3 axon-tracing-opentelemetry-5.0.3
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
... ... ... ... ... ... ... ... ... ... ... ...
tools.jackson.core 0 0 0 0 1 0 0 0 0 0 0
tools.jackson.databind 0 1 0 0 1 0 0 0 0 0 0
tools.jackson.databind.json 0 1 0 0 1 0 0 0 0 0 0
tools.jackson.databind.node 0 0 0 0 1 0 0 0 0 0 0
tools.jackson.dataformat.cbor 0 1 0 0 0 0 0 0 0 0 0

95 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.3 axon-server-connector-5.0.3 axon-spring-boot-autoconfigure-5.0.3 axon-common-5.0.3 axon-test-5.0.3 axon-eventsourcing-5.0.3 axon-conversion-5.0.3 axon-modelling-5.0.3 axon-update-5.0.3 axon-metrics-micrometer-5.0.3 axon-tracing-opentelemetry-5.0.3
externalPackageNameFirst2Levels
IdTypeParameterResolver 0 0 0 0 0 1 0 0 0 0 0
ScannedEntityCreator 0 0 0 0 0 1 0 0 0 0 0
WrappedEventCriteriaBuilderMethod 0 0 0 0 0 1 0 0 0 0 0
com.fasterxml 3 0 1 1 0 0 1 0 0 0 0
com.google 0 4 0 0 1 0 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 3 0
io.opentelemetry 0 0 0 0 0 0 0 0 0 0 1
jakarta.annotation 58 5 4 9 4 7 5 7 4 2 1
jakarta.persistence 2 0 2 1 0 1 0 0 0 0 0
jakarta.validation 1 0 0 0 0 0 0 0 0 0 0
javax.annotation 1 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 1 0 0 0 0
org.awaitility 0 0 0 0 1 0 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 3 0 0 0 0 0 0
org.jetbrains 0 0 0 0 2 0 0 0 0 0 0
org.junit 0 0 0 0 2 0 0 0 0 0 0
org.reactivestreams 3 0 0 0 0 0 0 0 0 0 0
org.slf4j 15 4 2 4 1 2 4 2 3 0 1
org.springframework 0 1 6 0 0 0 0 0 0 1 0
org.testcontainers 0 0 0 0 1 0 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
tools.jackson 0 0 1 0 0 0 1 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.3 5 16 6 320.000000 26 85 6 [io.opentelemetry.context.propagation, io.open... [ContextPropagators, TextMapPropagator, TextMa...
1 axon-server-connector-5.0.3 72 113 23 156.944444 242 1197 23 [io.axoniq.axonserver.grpc, jakarta.annotation... [MetaDataValue$DataCase, ProcessingKey, Proces...
2 axon-spring-boot-autoconfigure-5.0.3 75 100 39 133.333333 259 485 39 [org.springframework.boot.autoconfigure.condit... [AnyNestedCondition, AllNestedConditions, Cond...
3 axon-metrics-micrometer-5.0.3 16 20 7 125.000000 55 170 7 [io.micrometer.core.instrument, jakarta.annota... [Clock, MeterRegistry, Timer, Timer$Builder, T...
4 axon-conversion-5.0.3 35 40 15 114.285714 127 517 15 [jakarta.annotation, org.apache.avro, org.apac... [Nonnull, Nullable, AvroRuntimeException, Sche...
5 axon-test-5.0.3 78 32 12 41.025641 105 496 12 [org.hamcrest, jakarta.annotation, org.junit.j... [Matcher, Description, TypeSafeMatcher, BaseMa...
6 axon-eventsourcing-5.0.3 100 20 6 20.000000 101 389 6 [jakarta.annotation, jakarta.persistence, org.... [Nonnull, Nullable, EntityManager, TypedQuery,...
7 axon-common-5.0.3 156 29 11 18.589744 116 560 11 [jakarta.annotation, org.slf4j, org.ehcache.ev... [Nonnull, Nullable, Logger, LoggerFactory, Eve...
8 axon-update-5.0.3 23 4 2 17.391304 28 129 2 [jakarta.annotation, org.slf4j] [Nonnull, Nullable, Logger, LoggerFactory]
9 axon-messaging-5.0.3 579 35 9 6.044905 633 3386 9 [jakarta.annotation, org.slf4j, com.fasterxml.... [Nonnull, Nullable, Logger, LoggerFactory, Jso...
10 axon-modelling-5.0.3 92 4 2 4.347826 89 558 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-test-5.0.3 org.axonframework.test.matchers org.hamcrest 36 142 23 [BaseMatcher, Description, Matcher, TypeSafeMa... matchers
1 axon-metrics-micrometer-5.0.3 org.axonframework.extension.metrics.micrometer io.micrometer.core.instrument 35 134 11 [MeterRegistry, Timer, Timer$Builder, Clock, T... micrometer
2 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.event io.axoniq.axonserver.grpc.event.dcb 28 104 14 [GetSequenceAtResponse, TaggedEvent, Event, Ge... event
3 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.util io.grpc 17 35 13 [Status, Metadata, Metadata$AsciiMarshaller, M... util
4 axon-conversion-5.0.3 org.axonframework.conversion.avro org.apache.avro 16 54 10 [AvroRuntimeException, SchemaCompatibility$Inc... avro
5 axon-messaging-5.0.3 org.axonframework.messaging.eventhandling.proc... org.slf4j 15 87 24 [Logger, LoggerFactory] pooled
6 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.query io.axoniq.axonserver.grpc.query 14 98 11 [SubscriptionQuery, QueryResponse, QueryReques... query
7 axon-server-connector-5.0.3 org.axonframework.axonserver.connector io.axoniq.axonserver.grpc 12 94 28 [ErrorMessage, InstructionAck$Builder, Instruc... connector
8 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.event org.slf4j 10 44 14 [LoggerFactory, Logger] event
9 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.query io.axoniq.axonserver.connector 10 37 11 [FlowControl, Registration, ReplyChannel, Resu... query
10 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.query io.axoniq.axonserver.grpc 9 50 11 [ErrorMessage, SerializedObject$Builder, MetaD... query
11 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.springboot.autoconfig org.axonframework.extension.spring.config 9 33 41 [SpringComponentRegistry, SpringLifecycleRegis... autoconfig
12 axon-tracing-opentelemetry-5.0.3 org.axonframework.extension.tracing.opentelemetry io.opentelemetry.api.trace 9 46 5 [SpanKind, Span, Tracer, SpanBuilder, StatusCo... opentelemetry
13 axon-tracing-opentelemetry-5.0.3 org.axonframework.extension.tracing.opentelemetry io.opentelemetry.context.propagation 9 15 5 [TextMapSetter, TextMapPropagator, TextMapGett... opentelemetry
14 axon-common-5.0.3 org.axonframework.common.caching org.ehcache.event 8 30 13 [EventOrdering, EventFiring, EventType, CacheE... caching
15 axon-common-5.0.3 org.axonframework.common.caching javax.cache.event 8 26 13 [CacheEntryRemovedListener, CacheEntryUpdatedL... caching
16 axon-conversion-5.0.3 org.axonframework.conversion.avro org.apache.avro.message 8 28 10 [SchemaStore, BinaryMessageEncoder, BinaryMess... avro
17 axon-conversion-5.0.3 org.axonframework.conversion.jackson tools.jackson.databind 8 39 5 [ObjectMapper, JavaType, JsonNode] jackson
18 axon-conversion-5.0.3 org.axonframework.conversion.jackson2 com.fasterxml.jackson.databind 8 42 5 [ObjectMapper, JsonNode, JavaType] jackson2
19 axon-messaging-5.0.3 org.axonframework.messaging.core.annotation org.slf4j 8 17 51 [Logger, LoggerFactory] annotation
20 axon-server-connector-5.0.3 org.axonframework.axonserver.connector io.axoniq.axonserver.grpc.control 8 46 28 [TopologyChange, UpdateType, CommandSubscripti... connector
21 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.command io.axoniq.axonserver.grpc.command 8 63 6 [Command$Builder, CommandResponse$Builder, Com... command
22 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.event io.axoniq.axonserver.connector.event 8 38 14 [DcbEventChannel$AppendEventsTransaction, DcbE... event
23 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.util io.axoniq.axonserver.grpc 8 81 13 [ProcessingKey, ProcessingInstruction$Builder,... util
24 axon-test-5.0.3 org.axonframework.test.extension org.junit.jupiter.api.extension 8 28 4 [ParameterResolutionException, BeforeEachCallb... extension
25 axon-update-5.0.3 org.axonframework.update org.slf4j 8 27 5 [LoggerFactory, Logger] update
26 axon-conversion-5.0.3 org.axonframework.conversion.avro org.apache.avro.generic 7 29 10 [GenericRecord, GenericData, GenericDatumReader] avro
27 axon-eventsourcing-5.0.3 org.axonframework.eventsourcing.eventstore.jpa org.slf4j 7 16 13 [Logger, LoggerFactory] jpa
28 axon-eventsourcing-5.0.3 org.axonframework.eventsourcing.eventstore.jpa jakarta.persistence 7 40 13 [EntityManager, TypedQuery, Index, GenerationT... jpa
29 axon-messaging-5.0.3 org.axonframework.messaging.core reactor.core.publisher 7 30 80 [Mono, Flux, FluxSink] core
30 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.command io.axoniq.axonserver.grpc 7 31 6 [ErrorMessage, ProcessingInstruction$Builder, ... command
31 axon-test-5.0.3 org.axonframework.test.fixture org.hamcrest 7 47 32 [Matcher, Description, CoreMatchers, StringDes... fixture
32 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.query io.axoniq.axonserver.connector.query 6 19 11 [QueryHandler, QueryHandler$UpdateHandler, Que... query
33 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.springboot.autoconfig org.springframework.context.annotation 6 10 41 [ConfigurationCondition$ConfigurationPhase, Co... autoconfig
34 axon-common-5.0.3 org.axonframework.common org.slf4j 5 14 34 [LoggerFactory, Logger] common
35 axon-common-5.0.3 org.axonframework.common.configuration org.slf4j 5 27 46 [LoggerFactory, Logger] configuration
36 axon-common-5.0.3 org.axonframework.common.jpa jakarta.persistence 5 11 4 [EntityManager, EntityManagerFactory] jpa
37 axon-messaging-5.0.3 org.axonframework.messaging.core org.reactivestreams 5 10 80 [Subscription, Subscriber, Publisher] core
38 axon-messaging-5.0.3 org.axonframework.messaging.core.interception jakarta.validation 5 16 21 [ConstraintViolation, Validation, ValidatorFac... interception
39 axon-messaging-5.0.3 org.axonframework.messaging.core.unitofwork.tr... jakarta.persistence 5 16 2 [EntityManagerFactory, EntityManager, EntityTr... jpa

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.3 org.axonframework.extension.springboot.autoconfig ConverterAutoConfiguration 17 53 12 17 [jakarta.annotation, org.springframework.boot.... [jakarta.annotation.Nonnull, org.springframewo... autoconfig org.axonframework.extension.springboot.autocon...
1 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.springboot.autoconfig AxonServerAutoConfiguration 14 24 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.3 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.3 org.axonframework.extension.springboot.util AbstractQualifiedBeanCondition 12 24 8 12 [org.slf4j, jakarta.annotation, org.springfram... [org.slf4j.Logger, org.slf4j.LoggerFactory, ja... util org.axonframework.extension.springboot.util.Ab...
4 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.springboot.autoconfig EventProcessingAutoConfiguration 10 17 7 10 [jakarta.annotation, org.springframework.boot.... [jakarta.annotation.Nonnull, org.springframewo... autoconfig org.axonframework.extension.springboot.autocon...
5 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.springboot.autoconfig JpaTransactionAutoConfiguration 8 11 7 8 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
6 axon-metrics-micrometer-5.0.3 org.axonframework.extension.metrics.micrometer... MicrometerMetricsAutoConfiguration 10 18 6 10 [io.micrometer.core.instrument, io.micrometer.... [io.micrometer.core.instrument.MeterRegistry, ... springboot org.axonframework.extension.metrics.micrometer...
7 axon-server-connector-5.0.3 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...
8 axon-server-connector-5.0.3 org.axonframework.axonserver.connector.event AggregateBasedAxonServerEventStorageEngine 13 64 6 13 [io.axoniq.axonserver.grpc, jakarta.annotation... [io.axoniq.axonserver.grpc.MetaDataValue$Build... event org.axonframework.axonserver.connector.event.A...
9 axon-server-connector-5.0.3 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...
10 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.springboot.autoconfig JpaEventStoreAutoConfiguration 7 8 6 7 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
11 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.springboot.autoconfig ObjectMapperAutoConfiguration 11 14 6 11 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
12 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.springboot.autoconfig AxonAutoConfiguration 12 48 6 12 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
13 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.springboot.autoconfig JpaAutoConfiguration 8 14 6 8 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
14 axon-spring-boot-autoconfigure-5.0.3 org.axonframework.extension.springboot.autoconfig JdbcTransactionAutoConfiguration 7 10 6 7 [org.springframework.boot.autoconfigure, org.s... [org.springframework.boot.autoconfigure.AutoCo... autoconfig org.axonframework.extension.springboot.autocon...
15 axon-spring-boot-autoconfigure-5.0.3 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...
16 axon-conversion-5.0.3 org.axonframework.conversion.avro AvroUtil 16 71 5 16 [org.apache.avro, jakarta.annotation, org.apac... [org.apache.avro.SchemaCompatibility$Incompati... avro org.axonframework.conversion.avro.AvroUtil
17 axon-conversion-5.0.3 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...
18 axon-conversion-5.0.3 org.axonframework.conversion.jackson JacksonConverter 9 42 5 9 [jakarta.annotation, tools.jackson.databind, t... [jakarta.annotation.Nonnull, jakarta.annotatio... jackson org.axonframework.conversion.jackson.JacksonCo...
19 axon-server-connector-5.0.3 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...

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.3 59 579 7 20 48 8.290155 33.898305
1 axon-common-5.0.3 15 156 10 7 18 11.538462 46.666667
2 axon-spring-boot-autoconfigure-5.0.3 7 75 35 7 36 48.000000 100.000000
3 axon-server-connector-5.0.3 5 72 20 5 51 70.833333 100.000000
4 axon-test-5.0.3 6 78 10 5 25 32.051282 83.333333
5 axon-conversion-5.0.3 5 35 14 4 20 57.142857 80.000000
6 axon-eventsourcing-5.0.3 7 100 5 4 9 9.000000 57.142857
7 axon-metrics-micrometer-5.0.3 3 16 2 3 13 81.250000 100.000000
8 axon-update-5.0.3 5 23 1 3 7 30.434783 60.000000
9 axon-modelling-5.0.3 7 92 1 2 2 2.173913 28.571429
10 axon-tracing-opentelemetry-5.0.3 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.3 axon-conversion-5.0.3 axon-eventsourcing-5.0.3 axon-messaging-5.0.3 axon-metrics-micrometer-5.0.3 axon-modelling-5.0.3 axon-server-connector-5.0.3 axon-spring-boot-autoconfigure-5.0.3 axon-test-5.0.3 axon-update-5.0.3
numberOfPackages
2 0.000000 0.0 28.571429 3.389831 66.666667 28.571429 40.0 28.571429 33.333333 0.0
3 0.000000 0.0 0.000000 5.084746 100.000000 0.000000 60.0 42.857143 50.000000 60.0
4 26.666667 80.0 0.000000 0.000000 0.000000 0.000000 80.0 57.142857 66.666667 80.0
5 0.000000 100.0 0.000000 8.474576 0.000000 0.000000 100.0 0.000000 0.000000 0.0
7 0.000000 0.0 100.000000 0.000000 0.000000 100.000000 0.0 0.000000 0.000000 0.0
9 60.000000 0.0 0.000000 0.000000 0.000000 0.000000 0.0 0.000000 0.000000 0.0
15 0.000000 0.0 0.000000 25.423729 0.000000 0.000000 0.0 0.000000 0.000000 0.0
58 0.000000 0.0 0.000000 98.305085 0.000000 0.000000 0.0 0.000000 0.000000 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.3 59 7 1 2.0 4.000000 15 5.066228
1 axon-server-connector-5.0.3 5 20 1 1.0 1.900000 5 1.333772
2 axon-common-5.0.3 15 10 1 1.0 1.300000 4 0.948683
3 axon-conversion-5.0.3 5 14 1 1.0 1.214286 4 0.801784
4 axon-metrics-micrometer-5.0.3 3 2 2 2.5 2.500000 3 0.707107
5 axon-spring-boot-autoconfigure-5.0.3 7 35 1 1.0 1.285714 3 0.518563
6 axon-test-5.0.3 6 10 1 1.0 1.200000 3 0.632456
7 axon-update-5.0.3 5 1 3 3.0 3.000000 3 0.000000
8 axon-eventsourcing-5.0.3 7 5 1 1.0 1.200000 2 0.447214
9 axon-modelling-5.0.3 7 1 2 2.0 2.000000 2 0.000000
10 axon-tracing-opentelemetry-5.0.3 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.3 59 7 1.694915 3.389831 6.779661 25.423729 8.586827
1 axon-server-connector-5.0.3 5 20 20.000000 20.000000 38.000000 100.000000 26.675437
2 axon-common-5.0.3 15 10 6.666667 6.666667 8.666667 26.666667 6.324555
3 axon-conversion-5.0.3 5 14 20.000000 20.000000 24.285714 80.000000 16.035675
4 axon-metrics-micrometer-5.0.3 3 2 66.666667 83.333333 83.333333 100.000000 23.570226
5 axon-spring-boot-autoconfigure-5.0.3 7 35 14.285714 14.285714 18.367347 42.857143 7.408043
6 axon-test-5.0.3 6 10 16.666667 16.666667 20.000000 50.000000 10.540926
7 axon-update-5.0.3 5 1 60.000000 60.000000 60.000000 60.000000 0.000000
8 axon-eventsourcing-5.0.3 7 5 14.285714 14.285714 17.142857 28.571429 6.388766
9 axon-modelling-5.0.3 7 1 28.571429 28.571429 28.571429 28.571429 0.000000
10 axon-tracing-opentelemetry-5.0.3 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.3 579 7 2 4.0 7.857143 31 10.463087
1 axon-server-connector-5.0.3 72 20 1 3.5 5.200000 18 4.840618
2 axon-common-5.0.3 156 10 1 1.0 2.300000 8 2.263233
3 axon-conversion-5.0.3 35 14 1 2.5 3.071429 6 1.899971
4 axon-metrics-micrometer-5.0.3 16 2 2 7.5 7.500000 13 7.778175
5 axon-spring-boot-autoconfigure-5.0.3 75 35 1 2.0 2.285714 8 1.724758
6 axon-test-5.0.3 78 10 1 1.0 3.100000 22 6.640783
7 axon-update-5.0.3 23 1 7 7.0 7.000000 7 0.000000
8 axon-eventsourcing-5.0.3 100 5 1 1.0 2.600000 6 2.302173
9 axon-modelling-5.0.3 92 1 2 2.0 2.000000 2 0.000000
10 axon-tracing-opentelemetry-5.0.3 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.3 579 7 0.345423 0.690846 1.357019 5.354059 1.807096
1 axon-server-connector-5.0.3 72 20 1.388889 4.861111 7.222222 25.000000 6.723080
2 axon-common-5.0.3 156 10 0.641026 0.641026 1.474359 5.128205 1.450790
3 axon-conversion-5.0.3 35 14 2.857143 7.142857 8.775510 17.142857 5.428489
4 axon-metrics-micrometer-5.0.3 16 2 12.500000 46.875000 46.875000 81.250000 48.613591
5 axon-spring-boot-autoconfigure-5.0.3 75 35 1.333333 2.666667 3.047619 10.666667 2.299677
6 axon-test-5.0.3 78 10 1.282051 1.282051 3.974359 28.205128 8.513824
7 axon-update-5.0.3 23 1 30.434783 30.434783 30.434783 30.434783 0.000000
8 axon-eventsourcing-5.0.3 100 5 1.000000 1.000000 2.600000 6.000000 2.302173
9 axon-modelling-5.0.3 92 1 2.173913 2.173913 2.173913 2.173913 0.000000
10 axon-tracing-opentelemetry-5.0.3 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 default True org.hibernate.orm hibernate-core
1 axon-common Axon Framework - Common test False org.glassfish.expressly expressly
2 axon-common Axon Framework - Common test False org.hibernate.validator hibernate-validator
3 axon-common Axon Framework - Common default False org.slf4j slf4j-api
4 axon-common Axon Framework - Common default True jakarta.annotation jakarta.annotation-api
... ... ... ... ... ... ...
200 axon-tracing-opentelemetry Axon Extension - Tracing - OpenTelemetry default False jakarta.annotation jakarta.annotation-api
201 axon-tracing-opentelemetry Axon Extension - Tracing - OpenTelemetry provided False com.google.code.findbugs jsr305
202 axon-update Axon Framework - Update default False org.axonframework axon-common
203 axon-update Axon Framework - Update test False org.axonframework axon-common
204 axon-update Axon Framework - Update default False jakarta.annotation jakarta.annotation-api

205 rows × 6 columns