I need to develop applications for a company on some major mobile OSes, specifically, iOS, Android and WP7.
I was initially planning to code three separate applications
this is one of those questions for which there is no answer and there are plenty of decent answers -- in general the answer is that unless there is some specialized device-driver code that is proprietary the general case of using the API as designed will avoid blunders
Java provides a rich abstraction layer though there is a proprietary protection exposed intentionally for licensing - my suggestion is to look at that as though you were going to protect something & that will answer your question better than any post can