greenrobot/EventBus
56.6
Adequate · 24 September 2026
4.1k
lines of production code
Java
primary language
5
measurements over time
What this system is
This system is a high-performance, cross-platform event bus library designed for Java and Android environments. It facilitates asynchronous message passing and subscriber management through a robust API that supports both runtime reflection and compile-time annotation processing for optimized performance. The library provides platform-specific implementations for Android's main thread handling while maintaining compatibility with standard Java environments. Comprehensive test suites and performance benchmarks ensure reliability across different execution contexts.
How it got here
2012 — Gradle migration and project modernization
7 changes.
The project underwent a significant build system migration to Gradle, introducing a multi-module structure and modernizing Android project configurations. This period also involved cleaning up legacy code, removing deprecated APIs, and adding comprehensive documentation and licensing files to standardize the development workflow.
2014–2021 — Android decoupling and annotation processing
14 changes.
This period focused on decoupling the EventBus library from Android-specific dependencies to support non-Android environments, while simultaneously introducing an annotation processor to generate subscriber metadata at build time. The work included adding comprehensive test suites for both Android and Java environments, as well as updating build tooling and documentation styles.
Features
Added Android performance test suite for EventBus and Otto
Added a new performance testing framework in the EventBusPerformance module, featuring a test runner, setup activity, and specific test cases for both EventBus and Otto. The suite includes tests for event posting, subscriber registration, and thread mode handling, allowing users to benchmark the performance of event dispatching and subscription management on Android.
EventBusPerformance/src · high confidence
Added EventBus annotation processor service registration
The EventBusAnnotationProcessor is now registered as a Java annotation processor via the standard META-INF/services/javax.annotation.processing.Processor file, enabling the build-time subscriber index generation for the greenrobot EventBus library.
EventBusAnnotationProcessor/res · high confidence
Added project documentation, license, and build scripts
The repository now includes essential documentation and configuration files to support development and usage. A COMPARISON.md file was added to compare EventBus with Square's Otto, highlighting differences in features and performance. A CONTRIBUTING.md file was added to guide contributors on how to report issues and submit pull requests. The project's Apache 2.0 license was added. Additionally, the README.md was updated to provide a comprehensive getting started guide, including code snippets for defining events, subscribing, and posting events, as well as instructions for adding the library via Maven or Gradle. The Gradle wrapper scripts (gradlew and gradlew.bat) were also added to facilitate building the project.
(repo-wide) · high confidence
Android-specific event bus components added
The Android module now includes core Android-specific implementations: AndroidLogger for logging via Android's Logcat, DefaultAndroidMainThreadSupport for main-thread detection and HandlerPoster for message dispatch, and AndroidComponentsImpl to wire these components together. This enables the EventBus library to function correctly on Android by providing the necessary Android dependencies and main-thread support.
eventbus-android/src · high confidence
Introduces new meta-data classes for subscriber information
Added new classes in the \org.greenrobot.eventbus.meta\ package to support generated subscriber metadata. This includes the \SubscriberInfo\ and \SubscriberInfoIndex\ interfaces, along with concrete implementations like \AbstractSubscriberInfo\ and \SimpleSubscriberInfo\ for holding subscriber method details. These changes facilitate the use of pre-generated metadata for event subscribers, moving away from runtime reflection-based lookups.
EventBus/src/org/greenrobot/eventbus/meta · high confidence
New minimal Javadoc stylesheet for improved documentation appearance
A new CSS file (stylesheet.css) has been added to the javadoc-style directory, providing a minimal, clean visual style for generated Javadoc HTML. This includes specific styling for the document body, links, headings, code blocks, and navigation bars, ensuring a consistent and readable layout for API documentation.
javadoc-style · high confidence
New utility classes for asynchronous execution and error handling
Added new utility classes to the EventBus library to support non-Android usage and improve error handling. The new AsyncExecutor class allows running tasks in a thread pool and propagating exceptions as failure events. The ThrowableFailureEvent class provides a generic way to propagate thrown exceptions. The HasExecutionScope interface and ExceptionToResourceMapping class support scoping and error mapping, making the library more flexible for different environments.
EventBus/src/org/greenrobot/eventbus/util · high confidence
Behavioural changes
Added ProGuard rules and Android-specific configuration for EventBus
The EventBus Android module now includes ProGuard/R8 configuration files (consumer-rules.pro and proguard-rules.pro) to ensure that critical classes and constructors are preserved during code shrinking and obfuscation. Specifically, the default failure event class constructor and the AndroidComponentsImpl class are protected from removal or renaming, which prevents runtime reflection errors. Additionally, a .gitignore file and a README.md have been added to the module.
eventbus-android · medium confidence
Annotation processor skips fully generic event classes
The EventBusAnnotationProcessor now skips fully generic event classes, preventing the generation of subscriber index entries for them. This change ensures that only concrete, processable event types are included in the generated index, with fallback to reflection for skipped classes.
EventBusAnnotationProcessor/src · high confidence
Improved non-Android compatibility and logging abstraction
The library now supports non-Android environments more robustly. A new \Logger\ interface and \Logger.Default\ implementation replace the previous logging mechanism, allowing the library to function without Android dependencies. Additionally, the \EventBus\ will no longer crash when using \ThreadMode.MAIN\_ORDERED\ on non-Android platforms; instead, it falls back to the posting thread. The \MainThreadSupport\ interface and \AndroidComponents\ abstraction further decouple the core library from Android-specific implementations.
EventBus/src/org/greenrobot/eventbus · high confidence
Migrated EventBusTest from legacy Eclipse/ADT project structure to modern Android test configuration
The EventBusTest module has been refactored from the legacy Eclipse/ADT project format (using .classpath, .project, and project.properties files) to a modern Android test setup. The AndroidManifest.xml was updated to use the 'org.greenrobot.eventbus' package, added external storage permissions, and removed the old instrumentation test runner configuration in favor of a cleaner application setup. This change removes obsolete build metadata files and aligns the test project with current Android development standards.
EventBusTest · medium confidence
Performance test app migrated to new package and updated build target
The performance testing application has been moved to the 'org.greenrobot.eventbusperf' package, with corresponding updates to the AndroidManifest.xml and project configuration files. The Android build target has been raised from API level 16 to 17, and the project is no longer configured as a library (removing android.library=true). Additionally, the ProGuard configuration path has been updated to use backslashes for Windows compatibility, and the .gitignore file has been renamed to reflect the new directory structure.
EventBusPerformance · high confidence
Removed deprecated EventBus API
The EventBus class has been updated to remove deprecated methods, specifically the \unubscribeByEventType\ method which was previously used for unregistering subscribers. This change simplifies the public API by eliminating legacy registration and unregistration patterns that are no longer supported.
EventBus/src/de · high confidence
Removed legacy Android project configuration files
The legacy Eclipse project configuration files (.classpath, .project) and the AndroidManifest.xml for the EventBus module have been removed. This cleanup eliminates outdated build metadata and manifest definitions that are no longer required for the project's current build system.
EventBus · medium confidence
Updated Gradle wrapper to version 6.8.3
The Gradle wrapper has been updated to version 6.8.3, ensuring that the project uses a consistent and specific version of the Gradle build tool for all developers and CI environments.
gradle · high confidence
Test coverage
Added Android-specific test suite for EventBus; Added Java unit tests for EventBus core functionality; Added SubscriberInJar helper class for testing; Added indexed test suite for EventBus; Removed legacy EventBusBasicTest.
Dependencies
Migrated to Gradle build system with multi-module structure
The project has been converted to a Gradle-based build system, replacing previous build configurations. This introduces a multi-module structure including 'eventbus-java', 'eventbus-annotation-processor', 'eventbus-android', and various test/performance modules. The build now uses Java 8 compatibility, integrates the 'incap' library for annotation processing, and utilizes the 'gradle-nexus:publish-plugin' for publishing artifacts to Maven Central. Specific dependencies like 'com.squareup:otto:1.3.8' and 'junit:junit:4.13.2' are explicitly defined in the new build scripts.
(dependencies) · medium confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 54 → 57 (+2.1)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 93 → 95 (+2.2)
- Architecture 100 → 100 (+0.0)
- Maturity 43 → 45 (+2.1)
- Readiness 50 → 50 (+0.0)
- Security 65 → 72 (+6.5)
Resolved (12)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (12 lines × 2) (EventBusPerformance/src/org/greenrobot/eventbusperf/testsubject/PerfTestEventBus.java)
- Duplicated block (12 lines × 2) (EventBusPerformance/src/org/greenrobot/eventbusperf/testsubject/PerfTestEventBus.java)
- Duplicated block (9 lines × 2) (EventBusAnnotationProcessor/src/org/greenrobot/eventbus/annotationprocessor/EventBusAnnotationProcessor.java)
- Duplicated block (9 lines × 2) (EventBusPerformance/src/org/greenrobot/eventbusperf/testsubject/PerfTestEventBus.java)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Test reliability not included
- The module is published as org.greenrobot:eventbus (a Java-only artifact) rather than Android-specific code, so the README falsely claims it is an Android library. (eventbus-android/README.md)
- dormant codebase — no living knowledge left to concentrate
New (19)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (EventBusPerformance/src/org/greenrobot/eventbusperf/testsubject/PerfTestEventBus.java)
- Duplicated block (12 lines × 2) (EventBusPerformance/src/org/greenrobot/eventbusperf/testsubject/PerfTestEventBus.java)
- Duplicated block (20–21 lines × 2) (EventBusPerformance/src/org/greenrobot/eventbusperf/testsubject/PerfTestEventBus.java)
- Duplicated block (6 lines × 2) (EventBusPerformance/src/org/greenrobot/eventbusperf/testsubject/PerfTestEventBus.java)
- Duplicated block (7 lines × 2) (EventBus/src/org/greenrobot/eventbus/SubscriberMethod.java)
- Duplicated block (7 lines × 2) (EventBusPerformance/src/org/greenrobot/eventbusperf/testsubject/PerfTestEventBus.java)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- No ADRs found
- No dependency advisory monitoring
- TodoComment (EventBus/src/org/greenrobot/eventbus/Logger.java)
- TodoComment (EventBus/src/org/greenrobot/eventbus/Logger.java)
- TodoComment (EventBusTestJava/src/main/java/org/greenrobot/eventbus/EventBusInheritanceDisabledSubclassTest.java)
- TodoComment (EventBusTestJava/src/main/java/org/greenrobot/eventbus/EventBusInheritanceSubclassTest.java)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
greenrobot/EventBus was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 24 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 0194926b3bcf70cc0d7bfd3c5da16708dd5ab876 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-ae95d6cad036.