2

I would like to develop an application that will run on Windows x86, macOS, Linux, Android, Windows 10 Mobile and iOS.

My main interest is to code both the business logic and the GUI of the application only once, preferrably in one programming language and GUI, and compile/deploy the application to any of these platforms. The application shall look like a native application, i.e. have an application Window on Windows/Linux/macOS and run in fullscreen on mobile OS's.

I am totally aware that the look and feel of such an application is not what users of all operating systems might expect, this is a compromise one needs to go with with such requirements.

There are quite a few questions on this site on this topic, however I found none that really has covering all these operating systems in it, one (like Android) is missing in many cases. Other questions limit to one programming language. Starting from scratch, I believe the chosen programming language should depend on my needs and not the other way around.

I am interested in a complete Toolkit:

  • GUI designer
  • compiler / deploy utilities
  • IDE for coding, debugging, refactoring, ...
  • code the application once, build/deploy for any of these platforms
  • Are you really sure you want to write a native GUI? I wrote a python-gtk GUI some months ago. It's difficult, takes much longer than estimated and for me the most important part: you are on your own. Check how many questions and answers are here on StackOverflow about jquery and related tools, then compare this number to the number of questions about gtk or qt. Please ask yourself again: Why a native GUI and not HTML with JavaScript? – guettli Nov 24 '16 at 20:41
  • @guettli I would like to use whatever is the easiest thing and what can be packed into an application on all these platforms, in a way that it at least looks like a native app or similar. My background is writing native code, I have read names like html5, javascript, jquery and others endless times, but I never came to a conclusion how these technologies are best used to create applications that can be deployed as installable packages. – FourtyTwo Nov 25 '16 at 22:56
  • Writing native code always seems complicated to me, but why do I e.g. not see any mention of html here: en.wikipedia.org/wiki/… ? I would be happy about an answer to my question that shows how a toolkit instrumenting html + javascript can be used to create future-proof cross platform apps! – FourtyTwo Nov 25 '16 at 22:57
  • You said "Writing native code always seems complicated to me". Do you have fun doing so? If not, why do you do it? Next topic: Why nobody mentioned HTML? I don't know. Must people think at gtk+qt if they hear native GUI. It's like a reaction, not like thinking :-) – guettli Nov 28 '16 at 13:11
1

You could write your application in HTML and use Apache Cordova and Github Electron to convert it into apps that work on all these platforms. They would look and feel like native apps, but would be web pages behind the scenes. It would be hard to find a GUI designer for HTML, but you could use any responsive CSS framework, such as Twitter Bootstrap.

Ideally, it would be possible to get the same codebase to work across these platforms. In practice, however, you may need for example some specific CSS rules for certain platforms to fix certain edge cases. There would also be some other differences - for example implementing notifications would be different for desktop and mobile. But since 90% of the code would be shared among these apps, maintenance would be easy and you would save a lot of code rework.

0

The closest thing to what you are asking for that I'm aware of would be Qt.

Using Qt, you can write GUI applications once and deploy them across desktop, mobile and embedded operating systems without rewriting the source code.

Hers a list of the supported configurations: http://doc.qt.io/qt-5/supported-platforms.html

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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