4 ms·
Could you elaborate on what you think the elaborate on what the "right" tools would be?
by joekim 10y ago
Could you elaborate on what you think the elaborate on what the "right" tools would be?
- pjmlp 10y agoWrite in native languages, common to all platforms, using the OS specific APIs in each platform with the help on an abstraction layer. Lets pick C++ as an example of native language. Design the application architecture with the abstract ideas of what should be available across all platforms, but keeping in mind the native idioms. For each of such concepts, provide an interface (pure abstract classes in C++ speak) with an implementation for each OS. The actual cpp files are selected during the build process according to the OS being compiled, without any kind of #ifdefs. Then showing a notification to the user using this architecture is as simple as. auto notification = NotificationService.instance(); notification->show("New email available!"); Or opening a file, using the platform specific file dialogs: auto filePicker = Pickers.file_instance() auto filename = filePicker->open_file(); This are just two basic examples, the idea is not to replicate Qt, wxWidgets, JUCE,... rather pick just the concepts required for the application, not to build a full blown framework. This is the approach taken by quite a few companies. Of course, there is also the shortcut of using something like Qt, but then you need to live with the problem that the widgets aren't native, rather emulated. On the other hand, still outperforms any browser based application. The craziness with Electron based apps isn't nothing new to us oldies. Since the early days of the web, OSes have supported web widgets like MSHTML on Windows, Windows packaged Web Applications introduced on Windows Active Desktop, Mozilla's XUL and many others. They were never a match to native UI/UX.