Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 1.71 KB

RATIONALE.md

File metadata and controls

32 lines (23 loc) · 1.71 KB

Zipkin AWS Rationale

Many choices inherit rationale from upstream libraries. Become familiar with these, in order to deeply understand choices:

Why floor Java version 1.8

Brave and zipkin reporter support a floor version of Java 1.6. There are a few modules here that were lower than Java 1.8 when we moved the floor up to 1.8.

  • brave-instrumentation-aws-java-sdk-core - 1.7 (defined by aws-java-sdk-core)
  • brave-propagation-aws - 1.6 (defined by us)

All the other modules directly or indirectly required minimum Java 1.8. We decided to move the floor version up to 1.8 for convenience of the maintainers, and a bet that aws-java-sdk-core users are not reliant on JRE 1.7 or old versions of Android.

1.8 is more convenient as we can re-use tests with a different source level without resorting to Maven invoker to execute them. Notably, IDEA-85478 causes this problem, so interested parties should upvote or otherwise encourage that change.

What if users really are reliant on Java 1.7 bytecode?

If users rely on Java 1.7 bytecode for aws-java-sdk-core instrumentation, they will tell us.

We have accidentally broken compile versions or modularity before, and people have reported, and we promptly fixed. We can justify the effort of making brave-instrumentation-aws-java-sdk-core work in Java 1.7 again on demand (likely via use of invoker tests to isolate class versions).