# Cronet impl (and shared) code
This directory contains the so-called Cronet "impl" code, which provides
working production implementations of the Cronet API. Currently this includes:
- The "native" CronetEngine implementation backed by `//net`, which is what most
people refer to as simply "Cronet" and comes with all the bells and whistles.
Relevant classes are typically identified by a `Cronet` prefix;
- The "fallback" or "Java" lightweight implementation backed by
`java.net.HttpURLConnection`. This implementation is much smaller and lacks
many features. Relevant classes are typically identified by a `Java` prefix.
This directory also contains so-called "shared" code, which is shared between
all Cronet packages, *including* the API package.
TODO(crbug.com/40947707): these should really be three distinct directories.
**IMPORTANT:** in most Cronet release channels (e.g. Google-internal, Maven,
AOSP) the API and impl code are expected to always be in sync with each other,
i.e. they come from the same build. That is NOT true, however, when loading
Cronet from Google Play Services. In that case the app will typically bundle a
Cronet API library that is from a different build/version than the Cronet native
impl code provided by Google Play Services on a given device. In practice this
means that **the API code and native impl code must be backwards and forwards
compatible with each other at the Java ABI level**. Note, though, that Google
Play Services only provides *native* Cronet - this is not an issue for the
fallback implementation.