Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

So basically, my company is looking to create an app that can be distributed on Linux, Mac OS X, and Windows. We are hoping for a cross platform solution. I have experience working with Java Swing years ago and thought it was reasonable, but not great. It assuredly did however work on all platforms just fine. Is Java and Swing still the end all be all of code once run everywhere, or are there other options for desktop apps?

share|improve this question

closed as too broad by Robert Harvey, Jimmy Hoffa, gnat, Jalayn, Mason Wheeler Aug 22 '13 at 18:14

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

    
I thought C was the king of cross-platform compatibility. I never found Swing a viable solution. –  Robert Harvey Aug 22 '13 at 17:41
    
@RobertHarvey What? If you do C, you have to compile for every single platform and deal with the GUI separately for each platform. There are definitely major applications written in Java (Eclipse, NetBeans, DBVisualizer, etc). I'm just wondering if there is something newer out there at this point. –  thatidiotguy Aug 22 '13 at 17:42
1  
@JimmyHoffa: He wants to write an app, not perform egghead research. As stated in the question, the principal concern is cross-compatibility, not esoteric-ness. –  Robert Harvey Aug 22 '13 at 18:05
5  
@thatidiotguy: Stack Exchange is not a recommendation engine. Recommendation questions are off-topic everywhere. –  Robert Harvey Aug 22 '13 at 18:11
1  
@RobertHarvey Well, all the top questions here are completely subjective in my opinion. They are all asking for some advice on a situation. I'm not sure what makes this different. –  thatidiotguy Aug 22 '13 at 19:10
show 11 more comments

1 Answer

You have basically three practical choices:

  1. Java, or a language that runs on the Java platform like Scala or Groovy
  2. HTML5, Javascript, CSS3 and Canvas (which will run on pretty much any modern browser), or
  3. Cross-Platform tools such as Xamarin and Appcelerator

I would avoid Swing. It's too labor-intensive, and there are far better alternatives out there.

If you're just looking for desktop compatibility, your choices become much broader, as Jimmy Hoffa correctly points out.

share|improve this answer
    
Pfft, there are many more choices, practicality is horribly over-subjective. TCL/tK is still a totally viable way of doing this stuff, as is SmallTalk great for desktop apps and has implementations across platforms. –  Jimmy Hoffa Aug 22 '13 at 18:03
    
On a phone? Sure, you can hack your way into cross-platform nirvana, but why would you want to, especially when the Apple store is involved? Thanks for the downvote, but my answer still holds; if you want to do this in any sensible way, you will avoid the lemonade stands. –  Robert Harvey Aug 22 '13 at 18:04
    
If he said mobile that's different; but he said desktop app on OSX, Linux, and Windows –  Jimmy Hoffa Aug 22 '13 at 18:07
    
If you're after cross-platform compatibility, why would you exclude phones? Phones are the gold standard for cross-compatibility problems. –  Robert Harvey Aug 22 '13 at 18:08
1  
Desktop UI and Mobile UI require such different designs, it's commonly agreed you create a separate UI for each, I would classify Mobile as a YAGNI if it's nowhere near the initial requirements; chances are if you even try to plan for it you'll end up with mobile requirements that require you to throw most if not all of the desktop app away to write it anyway –  Jimmy Hoffa Aug 22 '13 at 18:12
show 4 more comments

Not the answer you're looking for? Browse other questions tagged or ask your own question.