Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Software portability

From Wikipedia, the free encyclopedia
Ability of a program to run on different platforms with little alteration
Not to be confused withapplication portability.
This article is about portability in itself. For the work required to make software portable, seeporting. For other uses, seeportability.
icon
This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Software portability" – news ·newspapers ·books ·scholar ·JSTOR
(November 2011) (Learn how and when to remove this message)
Software portability can be exemplified with multiple devices running the same video game.

Software portability is a design objective forsource code to be easily made to run on differentplatforms. An aid to portability is the generalizedabstraction between the application logic andsystem interfaces. When software with the same functionality is produced for severalcomputing platforms, portability is the key issue for development cost reduction.

Strategies

[edit]

Software portability may involve:

  • Transferring installed program files to another computer of basically the same architecture.
  • Reinstalling a program from distribution files on another computer of basically the same architecture.
  • Buildingexecutable programs for different platforms fromsource code; this is what is usually understood by "porting".

Similar systems

[edit]

Whenoperating systems of the same family are installed on two computers withprocessors with similarinstruction sets it is often possible to transfer the files implementing program files between them.

In the simplest case, the file or files may simply be copied from one machine to the other. However, in many cases, the software isinstalled on a computer in a way which depends upon its detailed hardware, software, and setup, withdevice drivers for particular devices, using installed operating system and supporting software components, and using differentdrives ordirectories.

In some cases, software, usually described as "portable software", is specifically designed to run on different computers with compatible operating systems and processors, without any machine-dependent installation. Porting is no more than transferring specified directories and their contents. Software installed on portablemass storage devices such asUSB sticks can be used on any compatible computer on simply plugging the storage device in, and stores all configuration information on the removable device. Hardware- and software-specific information is often stored inconfiguration files in specified locations such as theregistry onWindows).

Software which is not portable in this sense must be modified much more to support the environment on the destination machine.

Different processors

[edit]

As of 2011 the majority of desktop and laptop computers usedmicroprocessors compatible with the 32- and 64-bitx86 instruction sets. Smaller portable devices use processors with different and incompatible instruction sets, such asARM. The difference between larger and smaller devices is such that detailed software operation is different; an application designed to display suitably on a large screen cannot simply be ported to a pocket-sized smartphone with a tiny screen even if the functionality is similar.

Web applications are required to be processor independent, so portability can be achieved by using web programming techniques, writing inJavaScript. Such a program can run in a common web browser. Suchweb applications must, for security reasons, have limited control over the host computer, especially regarding reading and writing files. Non-web programs, installed upon a computer in the normal manner, can have more control, and yet achieve system portability by linking to portable libraries providing the same interface on different systems.

Source code portability

[edit]

Software can be compiled andlinked from source code for different operating systems and processors if written in a programming language supporting compilation for the platforms. This is usually a task for the program developers; typical users have neither access to the source code nor the required skills.

Inopen-source environments such as Linux the source code is available to all. In earlier days source code was often distributed in a standardised format, and could be built into executable code with a standardMake tool for any particular system by moderately knowledgeable users if no errors occurred during the build. SomeLinux distributions distribute software to users in source form. In these cases there is usually no need for detailed adaptation of the software for the system; it is distributed in a way whichmodifies the compilation process to match the system.

Effort to port source code

[edit]

Even with seemingly portable languages likeC andC++, the effort to port source code can vary considerably. The authors ofUNIX/32V (1979) reported that "[t]he(Bourne) shell [...] required by far the largest conversion effort of any supposedly portable program, for the simple reason that it is not portable."[1]

Sometimes the effort consists of recompiling the source code, but sometimes it is necessary to rewrite major parts of the software. Many language specifications describe implementation defined behaviour (e.g. right shifting a signed integer in C can do alogical or anarithmetic shift). Operating system functions or third party libraries might not be available on the target system. Some functions can be available on a target system, but exhibit slightly different behavior such asutime() fails under Windows with EACCES, when it is called for a directory). The program code can contain unportable things, like the paths of include files, drive letters, or the backslash. Implementation defined things likebyte order and the size of anint can also raise the porting effort. In practice the claim of languages, likeC andC++, to have the WOCA (write once, compile anywhere) is arguable.

See also

[edit]

References

[edit]
  1. ^Thomas B. London and John F. Reiser (1978).A Unix operating system for the DEC VAX-11/780 computer. Bell Labs internal memo 78-1353-4.

Sources

[edit]
Qualities
Internal
External
Standards and lists
Processes
National
Other
Retrieved from "https://en.wikipedia.org/w/index.php?title=Software_portability&oldid=1229915379"
Category:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp