Skip to content

API Design Review: Async & Future #680

@benjchristensen

Description

@benjchristensen

We have started collecting functionality related to Async.java, Observable.start, and similar such as in #645 and #622.

These do not directly apply to the goals of rxjava-core in enabling async Observable behavior but are valuable utilities for converting to and from Observable and executing work asynchronously.

Having them in the core however has the following drawbacks:

  • they increase API surface area, code and byte size
  • they complicate the mental model by mixing multiple different concepts
  • they are tied to the java.util.concurrent model
  • different Java libraries such as Guava and Akka have different models
  • each JVM language has different concurrency models and libraries
  • work can be executed asynchronous in many ways such as actors, event-loops or thread pools and rxjava-core is purposefully non-opinionated about the source of concurrency or asynchronocity

For these reasons it is felt that this functionality should be removed and/or not accepted into rxjava-core but instead placed in a contrib module. This is similar to how rxjava-android and rxjava-swing add additional functionality.

https://github.com/Netflix/RxJava/tree/master/rxjava-contrib

/cc @headinthebox and @jhusain

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions