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?

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

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    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
  • There are cross-platform GUI's that are much better than Swing. Having to compile doesn't make something incompatible. – Robert Harvey Aug 22 '13 at 17:43
  • 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

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.

  • 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

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