The platform independence - more accurate than cross-platform and general portable - is in the information technology called the property that a program on different platforms can be executed. From the English this property is borrowed as a cross platform called.
As a rule, a program always needs a so-called runtime environment in which it can be executed (or started) and can run stably over the entire execution period. With the property platform-independent or, more precisely, cross-platform , programs are described in more detail that are run on different platforms - i.e. computer systems with differences in architecture , processor , translator , operating system (in this case also called cross- operating system ) and other utility programs that are necessary for translation or execution are - are executable. The degree of platform independence is also known as portability refers (in English portability ). This includes not only the existing platform independence , but also the estimated amount of work that would be required to convert a program into a cross-platform one. This process is also known as porting or migration .
There are different forms of platform independence:
- Web applications that are executed by the browser.
- The operating system does not matter here, it just needs to have a web browser that meets certain requirements .
- Hybrid apps
- Applications that can be run on different operating systems and different mobile devices regardless of the platform.
- Multi-channel apps
- Applications that can be run independently of the device and operating system. These devices can be both mobile and, in contrast to hybrid apps, stationary.
- Software present in intermediate code
- Programs that are either in the form of bytecode , such as mainly Java programs, or a portable, interpretable source code ( Python , Perl , PHP and others).
- Fat Binaries and Universal Binaries
- Program packages that contain several executable versions. The operating system starts the appropriate version without the user having to do anything. Examples of "fat binaries" are the OpenStep program format and the "fat binaries" under Mac OS , which can be executed on both Motorola 680x0- based Apple computers and PowerPC Macs. Universal binaries under macOS run on PowerPC as well as on x86 -32-bit or x86-64-bit. The prerequisite for being able to create a “fat binary” at all is the portability of the source code, especially with regard to the byte order ( endianness ) and the length of a pointer variable.
- Source code portability
- This form of platform independence is often found in C programs for Unix : The source code contains instructions that allow operating system differences to be compensated. There are plenty of tools available for this purpose, such as GNU Autoconf . Another option is to use system-independent libraries such as Qt and GTK + . Many programs portable in source code are already available in prefabricated versions across platforms.
- Limited platform independence
- is given if, for example, the program can only run on a certain type of processor, but on otherwise different hardware architectures. This is often the case with programs written in assembly languages, as was often found in the early days of microcomputers under CP / M ; Today, assembly language is mostly only used for particularly time-critical program points, and for the purpose of platform independence, a high-level language version of the same program functions is usually included. Even programs that only work on a certain operating system family , regardless of the CPU type, are platform-independent to a limited extent.
In Server range where very early with virtual machines worked and virtual CPUs, it looks when it comes to platform independence something different from what you would expect from classic Unix / Linux knows -Portierungen ago - the latter grasp Working increasingly desktop space walk , due to the strong focus on x86 PCs in terms of platform independence, however, often cause more headaches than classic Unix applications .
Today, relative platform independence is most often achieved through the use of runtime environments of languages such as Java or .NET . However, this apparent independence is bought at the cost of a dependency on the runtime environment, which is now the platform at its core .
However, the term "portability" does not really get to the heart of the matter in both cases, since the concepts involved were platform-independent from the start - i.e. all APIs on each target system must be simulated in advance so that the software is necessarily executable. Otherwise a Java VM , for example, would not be able to be certified. The runtime environments themselves are also not available on every platform, which in the case of .NET, for example, has led to developments such as that of the Mono project . Porting is usually not possible at all for licensing or patent law reasons, so one can only speak of a form of limited platform independence.
The portability can for example be estimated via:
P = 1−(Ü+A)/E
- Ü Transfer effort (especially recompilation)
- A Adjustment effort (changing the source code, e.g. when replacing operating system interfaces)
- E Development effort for new developments
A portability of 1 corresponds to the compatibility , so the program can run on the target system without changes; if the source code is portable, a result of> 90% can usually be expected; whereas a portability close to 0 suggests a new development of the program. Portability is not a measure of the ability of a program to run on the target platform; H. Even a portability of 99% does not necessarily mean that the program can be used, it just means that porting requires significantly less effort compared to a new development.
- Platform independence - page at e-teaching.org ; As of February 21, 2011
- portable. In: Digital dictionary of the German language . Retrieved September 20, 2018 - associated noun portability ; solely on software this feature is based ( ibid like a narrower term ) as a portable software called
- cross-platform - more rarely cross platform written (and is also occasionally probably only in phrases such as "Cross platform application", "cross-platform application language" and "Cross platform development" to find) - from the English cross-platform or cross platform borrowed ; literally "cross platform " or probably also "crossing platform ", see also:
- Günter Rothhardt: Software Engineering Practice . 2. unchangeable Edition. VEB Verlag Technik Berlin, 1988, Chapter 2, p. 139