Tethered debugging of code operating on physical T-Mobile G1 handsets is standard, rather than a paid option as is the case with iPhone and Symbian platforms. The debugger, loader, and file explorer use a USB interface presented to the host as a TCP/IP link. T-Mobile G1 presents as a USB Storage Profile device as well, but in this mode only music and pictures are visible. Through the debugger, the entire file system with the exception of protected user data can be read and altered.
Java is the de facto path to custom Android software. It provides garbage collection and true app isolation, and supports multi-threaded and server (background) applications. Android uses a broadcast/listen model in which running instances of Java classes are called Activities and are controlled by user or application-generated messages. Remote procedure calls (RPC) with marshaled data provide interprocess communication.
Each Android app is protected by running in a separate Linux user ID assigned when the application is installed. Self-issued certificates can be used to sign code, or the user can opt to install unsigned applications. A unique and innovative feature of Android lists privileged actions, like use of the network or access to the contacts database, at installation time, setting up a sort of informed consent that bypasses disruptive, "Mother, may I?" prompts at run-time.
I have written, debugged, and installed Java software for T-Mobile G1, and I can attest that once the tools are installed, it is remarkably easy. I have not attempted native code development, for which Google does not supply tools. However, native app necessities like the C standard library and other linkable libraries are present.
Unlike iPhone, the Android SDK is not bound by non-disclosure, an idiotic restriction that Apple needs to abandon. And unlike any other platform, Android uses published source code. The NDA on the iPhone SDK precludes me from comparing it to Android, which is a pity and Apple's loss. At present, sources for Android's Linux kernel are freely downloadable. Google has committed to releasing the source code for "most of Android" in the near future. This is a little vague, but it's good to know that Google's heart is in the right place.