I too was concerned about lock in; however, it is really not that bad. I have been on AppEngine from the moment they supported Java. I created an abstraction layer between my program logic and whatever services it uses. This has allowed me to take the exact same compiled jars and run them on AppEngine using the datastore for persistence or in some other servlet container using SQL Server for persistence.
Just one additional advantage of using this approach is that I can use text files for testing and the program logic doesn't know the difference.
Just one additional advantage of using this approach is that I can use text files for testing and the program logic doesn't know the difference.
That's how I got rid of the lock in issue.