📜 ⬆️ ⬇️

What to write multi-platform desktop-application? Manager's view

Today, the authors of most applications can no longer afford to be released under one platform. Early adopters sit under poppies, the mainstream sits under Win32, and geeks and open source followers prefer Linux. Each of these audiences has unique properties, and therefore is important for most projects.

This article was conceived as an open attempt to understand what it is worth writing a multiplatform desktop application. I invite people to express their opinions with experience in creating such applications.

Initially, we define the criteria by which we will evaluate the various platforms. First and foremost is the convenience of the user. I am sure that you noticed common features of applications written for different platforms. The second is the interests of the project. My task is to build a successful business, not to play with various tools.
')
Denote the scope of the study. My application is a small utility for a “teapot” user that downloads files from the Internet: a minimum of GUI, a small set of functionality, the use of external C ++ libraries.

So, let's start. What are the options? I will consider Java, C #, C ++, Python. I would be glad if you tell me about other alternatives.

Java

This language / environment was originally conceived as something multiplatform. A large number of applications are written in Java, large projects like Eclipse use this particular framework.

A big minus of Java from the user's point of view is the need to install the framework. This is definitely more difficult than installing the Flash player and often becomes pain in the ass. And the size of the installer (I downloaded 80+ mb), and the constant confusion in the names (JRE, J2SE, JDK, JVM, ...) do not play into the hands of Java application developers.

Learning curve is critical for any project that puts on viral promotion. If 30% of your users will not be able to put a Java-machine (too lazy to download, inconvenient website, postponed "for later", ...) - your competitors will have a head start in 30%. This huge share of users, which my project cannot afford to lose.

All the applications I used to use did not use the Win32 native interface. I do not know what the developers were guided by, but from the point of view of the end user it looks very unpleasant.

Application examples : Eclipse, ZDE, client for Gnutella Limewire.
Pros : multiplatform, a large number of frames, the development of the framework.
Cons : the need to install the framework, curvature GUI, poor performance.

C #

C # and the .NET platform came out from under the wing of Microsoft, which has never been respected for multiplatform. This language was warmly received by the developers and the Mono project enthusiasts even made an analogue of the Linux / Unix / Mac Os X framework.

Similarly to Java, C # applications have a big disadvantage - the need to install the framework. I myself refused to install several applications that required this framework. Less advanced users will be even more demanding.

The rest - solid pluses, in my opinion.

Application examples :?
Pros : multiplatform, a large number of frames, good performance, the development of the framework.
Cons : the need to install the framework.

C ++

The old man reached out to our days and feels great. Many applications for Linux and Windows platforms are still written in this language.

Programs written in C ++ are an example for other distributive size and economical use of system resources (processor, memory). Nevertheless, developers have a lot of complaints about C ++. In my opinion, the language is “outdated” and its popularity will continue to decline, as confirmed by the TIOBE index .

From the point of view of the development of the project, compared with dynamic interpreted languages ​​(like Ruby and Python), development in this language may have less high speed and higher costs of changing the project. For a startup, which is not so important application performance, this can be a significant disadvantage.

Examples : Firefox,? ..
Pros : excellent performance, a large number of frames, a large number of libraries.
Cons : low speed development.

Python

The program MusicBrainz Picard made me look at Python as a platform for desktop applications. Despite its script essence, Python is easily assembled into one exe-file, without requiring the user to install additional components.

In the case of developing a small application, interpreted languages ​​like Python would be a big plus. The ease of writing and the high rate of change of the application is useful to any startup.

A huge disadvantage of various "fashionable" technologies is their low distribution, which means that there are serious problems in finding qualified personnel. The situation with the search for programmers is so deplorable, and if we confine ourselves to a narrow language, you can never find anyone. On the other hand, the most progressive developers have the courage to switch to a new language. It may happen that by choosing a “promising” language, we will immediately cut off millions of middle peasants, retaining a choice of several promising developers.

Example : MusicBrainz Picard, original BitTorrent.
Pros : high speed of development and changes, good integration with libraries in C and C ++.
Cons : few shots, poor performance.

findings

Unfortunately, any of the above platforms has its advantages and disadvantages; an unambiguous solution was not found. Choosing one of them today will bring advantages and disadvantages, the impact of which on the project we will see only tomorrow.

I still choose between C ++ and Python. The first is a “reliable” solution with known flaws. The second is “risky”, but interesting and promising. I hope your feedback will help me make the final choice. What platform would you choose in my place?

Ps. I am now looking for programmers in this startup (from ++ / python / php), so if you are interested please send your resume.

Source: https://habr.com/ru/post/25375/


All Articles