Developing an Application for Windows and Mac

Posted on 2004-11-13
Last Modified: 2010-04-17
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!

Question by:ryan1107
    LVL 8

    Accepted Solution

    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.

    LVL 23

    Assisted Solution

    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.

    LVL 6

    Assisted Solution


    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.

    LVL 3

    Assisted Solution


    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

    Featured Post

    How to run any project with ease

    Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
    - Combine task lists, docs, spreadsheets, and chat in one
    - View and edit from mobile/offline
    - Cut down on emails

    Join & Write a Comment

    Suggested Solutions

    This article will show, step by step, how to integrate R code into a R Sweave document
    Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
    In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…
    In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …

    728 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    19 Experts available now in Live!

    Get 1:1 Help Now