views:

573

answers:

2

I need to write a web app (that also works offline) for windows and mac (and linux as well perhaps).

I was wondering if I should use something like air/flash/java for this, the advantage being I will only need to write the app once.

However, I was wondering if there are any disadvantages of doing it that way as opposed to writing it in c# for windows specifically and then objective-C/cocoa/whatever for mac. Will the functionality of the app be limited if i do it in Air/Java? Are there any advantages to writing it in the language specific to the platform?

If possible it would be nice to know what the advantages/disadvantages of both methods are as it would help me (and hopefully others) come to a decision on the best way to create such an app according to ones needs.

Any help would be much appreciated! Thanks.

+1  A: 

The first thing to realise is that writing cross platform applications that look and behave native on each target platform is a hard thing to do.

Using a cross platform kit (AIR/java):

  • Less work, in theory should be quicker to build
  • Common language and toolkit, only one thing to learn
  • Adding a new supported platform should be easy(ish), build installer, debug provide any native platform integration etc
  • There is a tendency towards only implementing the lowest common denominator feature. An example of this would be the java File api. It only supports the basic concepts of files where as Windows, OSX and linux all have addition
  • May still require platform specific integration code (maybe native) in order to get an acceptable level of integration.

Using the native toolkits:

  • A lot to learn, moving between Windows MFC (or .Net winforms) and Cococa is going to be quite jaring
  • Not only will you have different languages, you will also have different tooling
  • There is no limit or false ceiling to what can be achieved using the native toolkit gives you access to everything
  • Making your app look like it belongs on the platform (important for Macs) is pretty much out of the box

Personal recommendation: go with the language tool kit you know the best, depending on how thick your app is (you mentioned it's part online) you may be able to rewrite it in another language latter once you have a successful application.

Gareth Davis
Small correction: for AIR, there is no need for platform-specific integration - because AIR does not allow or support any platform-specific integration. ;)
fenomas
A: 

Much depends on the kind of app you will be writing. I use Adobe AIR for a lot of in-house tools.

If you write for AIR what you'll get is something that looks like a web page. That's fine, because people feel at home operating a browser interface--maybe even more at home than with a native app.

But, yes, you'll absolutely have limitations.

So what's your app?

Nosredna