I think you are missing something here: App Engine is a specific platform for specific needs. To quote Wikipedia:
Compared to other scalable hosting services such as Amazon EC2, App Engine provides more infrastructure to make it easy to write scalable applications, but can only run a limited range of applications designed for that infrastructure.
If you are writing for GAEJ then you are writing for that specific platform/framework, just as you would for J2EE5 or J2EE1.4 or a none EJB host or mobile application etc..
In my experience and to generalize:
1. Threads: Not used in web applications
2. Writing to file: Only used for file upload (images, pdf etc..) where streaming to a RDB would create a performance hit) - store in BigTable rather
3. Network access: Used to be used where SOAP services are used today. ..and then there is System.exit which is not implemented, probably a good thing, it used to do horrible thing in tomcat years ago :)
I short, it is as much of a lock in as the Spring framework or J2EE itself, two of the most popular business application frameworks.