This is awesome, Eric H.
This discussion is extremely appreciated and important to us. Really.
1. The Holy Grail is right. Amen to that. You folks are obviously seasoned Java technologists, at the very least. This goal has been our vision as well: Java is not just a language, but a tried and true platform. We want our products to reflect this fact. Having said that, it has been a process for us, so we aren't there quite yet. For example, the workflows of getting and using data from MPKs and GPKs do not translate to the Android platform. Android does not have what we call a "Local Runtime", also called a "Local Server". So, accessing data from an Android device, today, is by on-line services. Once you have the service data, the business logic and operations on those services are almost identical between the Android and desktop(Java Runtime) programming models. Does that make sense?
2. Our documentation for v1 was very basic, yet informative. However, I can't disagree with you that in some cases it was too basic, and there is much more work to do here for a better developer product, more code examples, deeper dives. We are continuing to enhance the docs as you can expect, and are fully emersed in this task right this moment. Your discussion here is extremely valuable in inspiring us to go deeper. By the way, have you spent time running the OOTB Sample Viewer application? It exposes lots of development concepts and code that has been of tremendous help to a lot of us. We'd value your feedback on it.
3. GP. Yep. Understood. A GPK is static in it's logic, but the in out parameters are certainly dynamic within you app. For example, you package a GP tool that takes Features in, and spits them out to a GDB. On the fly, your app defines the FeatureSet as the inputs, and the app can also dynamically determine where the GDB is to be written out. Now, back up. When the package was created from a running result in ArcMap, there certainly was static data used to operate against, but when the package is created after that, the operational data it worked on is basically "throw-away", not needed anymore. Do you know what I mean? Your package now holds the tool, but the previous data is now insignificant.
4. Nice! Both RCP and Swing. Music to my ears. :-). Anyway, the only issue is going to be, as I said before, with the Android platform. You will need to use the Andriod SDK to build that part of your solution. While the SDK for Android and the SDK for Java do share some fundamental parts of their core API, they still need to be 2 separate apps, built with 2 different SDKs. We need to continue to look at this and figure out if this still makes sense as we go along. Thanks for this discussion.
Silverlight: Yikes. We will have a closer look and see what we can do to fix this. Thanks for pointing that out.
I hear you. Code, code and more code. This is what a developer toolkit should lead with, I totally agree.
Thanks!