Windows、MacOSX、iOS、Androidをターゲットに小さなアプリを作るんですが、どうやって開発しようか迷っています
iOSやAndroidは、最終的にはネイティブアプリにして、マーケットでリリースしたいです

言語がC#みたいなプラットフォーム限定言語ではなくJavaとかでも、そのOSのAPIを使う時点で互換性は取れないですよね?
ここでいう互換性とは、同一のソースからビルトして、全てのプラットフォームで動作するってことです。
(そもそもiOSは、Javaで書いたものはビルトできないとかはさておき)

そうなると、各OSのAPIをラップしたライブラリを持つクロスプラットフォームフレームワークを使うしかないんでしょうか?