I want to write an app that will stream MP3s from a server to any of the three major smartphone operating systems in the US (iPhone, Blackberry, and Android).
Here is the tradeoff I'm concerned with: if I write the app natively, it will make for the best user experience and give me the capability to add many more features if I want, but I will have 3 separate codebases, which violates the DRY principle.
If I use one of the frameworks out there to write it in Javascript/HTML (e.g. Rhomobile Rhodes), then I have one codebase for all the major platforms, so I'm not violating DRY and the development process is simpler in that respect, but a) the user experience will suffer, and b) I did some simple tests using SoundManager to play MP3 files with Javascript on the iPhone, and it started sucking right away (e.g. the second phase of the experiment after "cool, I can play an MP3" was "I have no access to ID3 tags? That sucks.").
I'm wondering if someone experienced in developing for multiple mobile platforms could confirm or dis-confirm my impression: is cross-platform development with Javascript and HTML viable (particularly for a multimedia app)? Or is "developing and maintaining three separate native codebases" the way to go here?
Thanks in advance.
Edit: this question assumes that I have to do this as an app. I understand that it may be much better to just serve up mp3s and let the users iPhone/Android/Blackberry Media Player handle them, but for my purposes those solutions are outside of the framework of this question.