Technology and compatibility in smartphones
Today on the market we have two dominating groups of cell phones and additionally one or two which are nowadays basically niche in nature, nevertheless there are still users of such devices. We are primarily referring here to hardware and system platforms. The biggest players are naturally Google’s Android and Apple’s iOS. On the other hand, the less relevant groups are Windows Phone / Windows 10 Mobile and Blackberry, which are no longer being developed and are basically going off the market at a fairly rapid pace – but are nevertheless still there, so they should also be taken into account.
So if you’re a software developer (or thinking about getting serious about it), there are really two paths to follow. Would you like to know more about them?
Software dedicated for a given operating system
The first path, the most traditional of all, involves developing an application specifically for a given operating system. You then use all of its built-in mechanisms and libraries (such as creating a standard interface with menus, buttons, etc.) to run the application., or typical functionality related to the system tools, such as copying, pasting, transferring data to other applications, etc.). In short, it is about full integration with the operating system.
This has its undoubted advantages. One of them is access to a number of development tools provided by the developer of the operating system and the ability to add an already finished application, for example to the company store (such as Google Play, or Apple Store). In addition, such application will be characterized by very high performance and the ability to use many capabilities of the device on which it will run. This is due to the fact that the finished program is a binary code compiled exactly for the platform and operating system. So by force it will be highly optimized.
However, this solution also has its drawbacks. The most serious one is that such an application will work only under the operating system for which it was designed (and on its newer versions). Moreover, there may be cases that devices with more specific architecture, deviating from the standard set by the system manufacturer, may have difficulties to properly run some more advanced applications.
The second disadvantage is that if you want to create your application for a new platform, you actually have to write it practically from scratch, also learning a completely new working environment. So you can always choose the second option!
Cross-platform portable software
The second option is to design the software so that it can be run on many different platforms. But before you get excited, you also need to know the disadvantages of this solution. The advantages are obvious – you design your application once, and then you can easily run it on different system and hardware platforms. Yes, this is an advantage that is hard to overestimate.
Such solution has also its drawbacks. The first and the most important is that for technical reasons (which we will discuss a little later) the finished application has very low performance. In other words, if you plan to create a game with advanced 3D graphics or an engineering application that performs a lot of calculations. then unfortunately this is not a good option for you. In fact, the method described in this section works best for simple applications that do not require too much from the hardware on which they work. There are, in general, three methods of creating such portable applications:
Java. It is a special programming language, very close to C++, which allows you to create applications complicated to a certain type of code called intermediate code. This code can then be run by appropriate software called a Java Virtual Machine. You can install this virtual machine on almost any device: a Windows personal computer, an Android tablet, a Windows Phone smartphone. Then you run your application and it works and looks the same on every device. Note that Apple devices are not included in this list, as Apple does not provide Java support for its cell phones and computers.
Flash. This is software created by Macromedia and further developed by Adobe. It is great for creating simple applications using animations and scripts – such as simple games, complex forms and so on. But as of January 2021, Flash is no longer being developed or supported by Adobe. Moreover, just like Java, Apple has not included support for this standard in its devices.