Developing an Application for Windows and Mac

This is urgent and worth 500 points.  

I am an experienced Windows developer with no knowledge or experience of Macintosh.

I have developed a stand-alone Windows application using VB.NET and a MS Access database.   A company is interested in my product, but they say it also needs to run on a Macintosh.  What would be the preferred solution?

Do most commerical software solutions have two versions?  One for Windows and one for Mac?

I have heard of RealBasic.  Don't know anything other than what I have read online though.

What about redesigning my app to run as a local website...would it then run on a Mac?  The app currently uses ADO with a MS Access database.  

Thanks in advance for your expert advice!

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

If it was hosted on a webserver that would work, as long as the Mac user didn't have to download any activex controls or interface ADO. Instead of this real basic you speak of, which I've heard of too, but wouldn't trust.... Your going to have to rewrite it in java or that new delphi based language that borland put out (kliex, or whatever it's called).

I don't see any quick solutions to your problem, sorry.


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
As you have discovered, platform portability can be severely impacted by early
design decisions.   Microsoft goes to great lengths to ensure that its toolkits
and technologies inhibit portability across platforms.  

When you choose to use those technologies, you are committing yourself
to single platform deployments.  You mis-judged your customer base, allowing
you to make a fatal design error with regards to deployment platforms.

If you decide early in the design that your application should be portable
across platforms, there are several things you can do to make it easier.

1) If appropriate, choose a Model-View-Controller design.
 a) Choose platform-agnostic technologies [below] for the Model.  This is the
     heart of the app, that which differentiates your app from a word processor
     or a game.
 b) For the View and Controller, choose either platform-specific technology
     [Win32, X11, Aqua] or portable technology [Swing, AWT, Qt]  Choosing
     a cross-platform technology like Qt makes it easier to port your app.
     Choosing platform specific technology makes it easier to make your app
     look native [indeed, it is native] and to leverage features unique to the
     platform.  However you must re-create the View for each platform.

2) Choose a programming language that is easily portable across platforms.
 C, C++, Java, Python, Perl are relatively portable languages.  C#, VB, shell
 scripts, batch files, etc are markedly less portable.

3) For larger third-party components, for instance a database, either abstract
 the interface [ODBC, JDBC, etc], or pick a portable product [MySQL, Berkeley db,
 CTree++, etc], or both.

4) For common library and OS interfaces, either provide an abstraction or use
 the standard libraries and portable interfaces like stdio, stdlib, STL, ANSI, ISO,
 Posix, etc.  Microsoft provides Win32 interfaces to common functions like opening
 files, parsing strings, etc that provide little or no benefit over using the standard

5) Abstract mechanisms that differ greatly across platforms, like preferences management.


You could rewrite your applications business logic as a WebService.  
For example, write it in and host it and your data on a Windows box.

Then you would only have to duplicate the client UI portion of your application on the various platiforms.
You have a variety of options for writing the client UI that accesses the data via the Web Service.
Client option 1:  Windows EXE which talks to Web Service directly.
Client option 2: Java Application which talks to Web Service directly.
Client option 3: Application EXE (writen in some language) which talks to Web Service directly.
Client option 4: Browser based (HTML/DHTML/Flash) application which use a CGI script (ASP/JSP/PERL/PHP) which talks to the Web Service.


I know design issues are very essential, howeever if redesign and rewriting of the application is the absolute last measure, you could try running your application using a Windows emulator for MAC.

The popular Wine project for UNIX/Linux is being written for MAC and is called the darwine project. Details here:

However, Idont think they would have ported MDAC as of yet and do not support .NET.

the ray of hope here is the CLI implementation on Mac codenamed Rotor. That would help u run your .NET apps on MAc
The support and compatibility however is limited.
here is more information

hope this helps
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.