How do I create a Cocoa Touch Framework?

What language should one prefer to develop desktop applications in, that targets all 3 operating systems (Linux, Windows and Mac OS X)?

  • Windows has it's own proprietary language and framework in C# and WPF. Mac OS X has Cocoa touch and the language of choice is Objective C. Correct me if I am wrong but applications developed on either of these frameworks cannot be run on them other OS than the one they were intended to. In that case, the language that is left out is Java which I believe can run across each of these Operating systems and reduces the time of development? Why would anyone prefer to develop in the proprietary languages when Java can serve the same benefit.

  • Answer:

    An important consideration is the user expectations. In retail software, people expect their software to have high performance and to use OS-specific widgets so that things like scrolling behavior, tabs, input accelerators, etc. all work in a consistent way. There are a few contexts, such as software development or science, where users value cross-platform availability and Java is a reasonable choice.

Larry O'Brien at Quora Visit the source

Was this solution helpful to you?

Other answers

From the perspective of a user, that's an easy question. I am a Mac user and I can't stand using Java Applications on the Mac because they are ugly and stand out like an eyesore. I feel the same way about Java apps on Linux. On Windows though, Sun took the time to make the Windows skin for Swing look quite close to native and I can tolerate Java apps on that platform. From the perspective of a developer, it all depends on whether your goal is to actually target all three platforms or not. If it is, then one could either use Java or something like or .

Nitin Madnani

You have almost as many language options as there are languages. Nearly every language out there has (at least) a compiler/vm built for the 3 major OSs. So in this case I'd suggest taking one which feels most comfortable. What you're really after is the UI design. There are some attempts at cross-system UIs ... e.g. wxWidgets / QT / GTK / Java's Swing / etc. Some aren't exactly native to all, others do attempt to use the current OS's native UI (e.g. wx). From this you need to choose a language with decent libs/links to work with the UI. Even if you're going with C# (or other DotNet) the Mono project has some good interop between all 3 OS's - though I'd suggest NOT going with the WinForms (unless you're doing a separatre UI only for Windows) - much easier would be to use GTK for all 3 (and much more native would be WPF for windows and GTK for Linux/Mac). But I'd definitely NOT recommend DotNet for inter OS programs - you'd run into issues as not everything is available everywhere. If you "really" want to make your program look native to the current OS, then you'd need to design 3 separate UIs with your actual program plugging into those depending on system. It would be the only way to get it looking as if it was designed for Mac / Linux / Windows without any possible inconsistencies. And then of course you need an IDE which can handle that UI design. Although it is possible to run a separate UI design and then your code through a separate IDE - it's always easier if the IDE incorporates it all into one. QT or one of the Java IDEs would probably be the best bet in this case, though you can try many of the others too. Alternative would be the "old" way of designing the UI through code. It's not necessarily more difficult than using a WYSIWYG UI designer, in some cases it's even easier. If going down this route, perhaps one of wx's bindins (like wxPython) might be the very thing.

Irné Barnard

The most ported platforms are the Java (JVM) and JavaScript (NodeJS) runtimes, you should use a programming language that targets one of these (Java, Scala, Clojure or Groovy for the JVM, JavaScript, CoffeeScript or ClojureScript for NodeJS). NodeJs is a rather new, and quite interesting, option. Its event-driven paradigm makes it natural for GUI programming; JavaScript is a simple and powerful language, and the ones atop it only get more powerful. As an example of a desktop app built on it (with the ClojureScript language), check the LightTable editor (http://lighttable.com). The JVM is another option; there are 2 GUI libraries, the popular but no-longer maintained Swing library and the more modern JavaFX library.  I like JavaFX a lot personally, especially the Scene Builder; if you want to do it in a more productive language, check ScalaFX. I don't know of another way to make cross-platform desktop applications in a high-productivity language; maybe Python, or Lua scripting for C++ ?

Val Waeselynck

I suggest to consider C++ programming language and one of these two GUI programming frameworks: Qt or wxWidgets. Although C# and Objective C may have some advantages, C/C++ is still the most standard programming language, available for many different platforms.

Michał Czardybon

One possible answer is actually Visual C#, which is discarded in the question details. Even though it is specific to Microsoft, they have been putting a lot of work on . Now, Silverlight is mostly a web based technology, but Microsoft integrated it with its desktop software using the , which allows you to create an out-of-browser (OOB) program. You can create desktop applications for the Windows platform using Microsoft's development tools. Similarly, you can create OOB applications for OS X. One example is Destop 2 (a social media tool). From what I understand, there is an open source version of Silverlight (for Linux) that should cover all the bases. It is called Moonlight. I know that Moonlight trails behind Silverlight, and I am not sure if it already offers OOB, though. Disclosure: I am not affiliated with Microsoft, nor do I endorse them.

Fernando Montenegro

What else better than javascript.... Anything that has a browser can run JavaScript. Unless ur doing something really specific and have special needs...

Sammy Li

I am not expert in programming, I'm just a developer looking to do business, so previous comment that such cases often end up using a $proprietary language like WinDev (WinDev create desktop applications in Java and .Net., which would be used to reduce my development time with C # .net and cross to other platforms) or QT (with suscription). The important thing is not how elegant the code is or if it's  a popular language , it is important that the end user is satisfied with the level of presentation, seaworthiness, performance, and low cost. 80% of the market are SMEs, and they do not want philosophies programming, want results at low costs. If you can sell a large project to a great company with great long time and budget would then Java is best, even to move desktop applications to web and mobile.

Victor Arreola

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.