Information about Cross Platform



Cross-platform is a term which can refer to computer programs, operating systems, computer languages, programming languages, or other computer software and their implementations which can be made to work on multiple computer platforms. For example, a cross-platform application may run on Microsoft Windows on the x86 architecture, Linux on the x86 architecture and Mac OS X on either the PowerPC based Apple Macintosh or the x86 based Apple Macintosh systems. A cross-platform application could run on all common platforms, or simply more than one. This type of software could also correctly be called multi-platform software.

Platforms

Main article: Platform (computing)


A platform is a combination of hardware and software used to run software applications. A platform can be described simply as an operating system or computer architecture, or it could be the combination of both. Probably the most familiar platform is Microsoft Windows running on the x86 architecture. Other well-known desktop computer platforms include Linux and Mac OS X (both of which are themselves cross-platform). There are, however, many devices such as cellular telephones that are also effectively computer platforms but less commonly thought about in that way. Application software can be written to depend on the features of a particular platform—either the hardware, operating system, or virtual machine it runs on. The Java platform is a virtual machine platform which runs on many operating systems and hardware types, and is a common platform for software to be written for.

Hardware platforms

A hardware platform can refer to a computer’s architecture or processor architecture. For example, the x86 and x86-64 CPUs make up one of the most common computer architectures in use in home machines today. These machines commonly run Microsoft Windows, though they can run other operating systems as well, including Linux, OpenBSD, NetBSD, Mac OS X and FreeBSD.

Software platforms

Software platforms can either be an operating system or programming environment, though more commonly it is a combination of both. A notable exception to this is Java, which uses an operating system independent virtual machine for its compiled code, known in the world of Java as bytecode. Examples of software platforms include:

Java platform

Main article: Java platform


As previously noted, the Java platform is an exception to the general rule that an operating system is a software platform. The Java language provides a virtual machine, or a “virtual CPU” which runs all of the code that is written for the language. This enables the same executable binary to run on all systems which support the Java software, through the Java Virtual Machine. Java executables do not run directly on the operating system; that is, neither Windows nor Linux execute Java programs directly.

Because of this, however, Java is limited in that it does not directly support system-specific functionality. JNI can be used to access system specific functions, but then the code is likely no longer portable. Java programs can run on at least the Microsoft Windows, Mac OS X, Linux, and Solaris operating systems, and so the language is limited to functionality that exists on all these systems. This includes things such as computer networking, Internet sockets, but not necessarily raw hardware input/output.

Cross-platform software

In order for software to be considered cross-platform, it must be able to function on more than one computer architecture or operating system. This can be a time-consuming task given that different operating systems have different application programming interfaces or APIs (for example, Linux uses a different API for application software than Windows does).

Just because a particular operating system may run on different computer architectures, that does not mean that the software written for that operating system will automatically work on all architectures that the operating system supports. One example as of August, 2006 is OpenOffice.org, which does not yet natively run on the AMD64 or Intel64 lines of processors implementing the x86-64 64-bit standards for computers. This also means that just because a program is written in a popular programming language such as C or C++, it does not mean it will run on all operating systems that support that programming language.

Web applications

Web applications are typically described as cross-platform because, ideally, they are accessible from any of various web browsers within different operating systems. Such applications generally employ a client-server system architecture, and vary widely in complexity and functionality. This wide variability significantly complicates the goal of cross-platform capability, which is routinely at odds with the goal of advanced functionality.

Basic applications

Basic web applications perform all or most processing from a stateless web server, and pass the result to the client web browser. All user interaction with the application consists of simple exchanges of data requests and server responses. These types of applications were the norm in the early phases of World Wide Web application development. Such applications follow a simple transaction model, identical to that of serving static web pages. Today, they are still relatively common, especially where cross-platform compatibility and simplicity are deemed more critical than advanced functionality.

Advanced applications

Prominent examples of advanced web applications include the Web interface to Gmail, A9.com, and the maps.live.com section of Live Search. Such advanced applications routinely depend on additional features found only in the more recent versions of popular web browsers. These dependencies include Ajax, JavaScript, “Dynamic” HTML, SVG, and other components of rich internet applications. Older versions of popular browsers tend to lack support for certain features.

Design strategies

Because of the competing interests of cross-platform compatibility and advanced functionality, numerous alternative web application design strategies have emerged.

Such strategies include:
  • graceful degradation
  • separation of functionality
  • multiple codebase
  • third party libraries
Graceful degradation attempts to provide the same or similar functionality to all users and platforms, while diminishing that functionality to a ‘least common denominator’ for more limited client browsers. For example, a user attempting to use a limited-feature browser to access Gmail may notice that Gmail switches to “Basic Mode,” with reduced functionality. Some view this strategy as a lesser form of cross-platform capability.

Separation of functionality attempts to simply omit those subsets of functionality that are not capable from within certain client browsers or operating systems, while still delivering a ‘complete’ application to the user. (see also Separation of concerns).

Multiple codebase applications present different versions of an application depending on the specific client in use. This strategy is arguably the most complicated and expensive way to fulfill cross-platform capability, since even different versions of the same client browser (within the same operating system) can differ dramatically between each other. This is further complicated by the support for “plugins” which may or may not be present for any given installation of a particular browser version.

Third party libraries attempt to simplify cross-platform capability by ‘hiding’ the complexities of client differentiation behind a single, unified API.

Testing strategies

One complicated aspect of cross-platform web application design is the need for software testing. In addition to the complications mentioned previously, there is the additional restriction that some browsers prohibit installation of different versions of the same browser on the same operating system. Techniques such as full virtualization are sometimes used as a workaround for this problem.

Traditional applications

Although web applications are becoming increasingly popular, many computer users still use traditional application software which does not rely on a client/web-server architecture. The distinction between “traditional” and “web” applications is not always unambiguous, however, because applications have many different features, installation methods and architectures; and some of these can overlap and occur in ways that blur the distinction. Nevertheless, this simplifying distinction is a common and useful generalization.

Binary software

Traditionally in modern computing, application software has been distributed to end-users as binary images, which are stored in executables, a specific type of binary file. Such executables only support the operating system and computer architecture that they were built for—which means that making a “cross-platform executable” would be something of a massive task, and is generally not done.

For software that is distributed as a binary executable, such as software written in C or C++, the programmer must build the software for each different operating system and computer architecture. For example, Mozilla Firefox, an open-source web browser, is available on Microsoft Windows, Mac OS X (both PowerPC and x86 through something Apple calls a Universal binary), and Linux (x86). The three platforms (in this case, Windows, OS X, and Linux) are separate executable distributions, although they come from the same source code.

In the context of binary software, cross-platform programs are written in the source code and then “translated” to each system that it runs on through compiling it on different platforms. Also, software can be ported to a new computer architecture or operating system so that the program becomes more cross-platform than it already is. Specifically, it is not possible to take a program such as Firefox built for Linux on the x86 and run it directly on Windows on the x86; but it is possible to rebuild it to work on Windows on the x86.

Scripts and interpreted languages

A script can be considered to be cross-platform if the scripting language is available on multiple platforms and the script only uses the facilities provided by the language. That is, a script written in Python for a Unix-like system will likely run with little or no modification on Windows, because Python also runs on Windows; there is also more than one implementation of Python that will run the same scripts (e.g., IronPython for .NET). The same goes for many of the open source programming languages that are available and are scripting languages.

Unlike binary executables, the same script can be used on all computers that have software to interpret the script. This is because the script is generally stored in plain text in a text file. There may be some issues, however, such as the type of new line character that sits between the lines. Generally, however, little or no work has to be done to make a script written for one system, run on another.

Some quite popular cross-platform scripting or interpreted languages are:

Video games

Cross-platform is a term that can also apply to video games. Such games are released on a range of video game consoles and handheld game consoles, which are specialized computers dedicated to the task of playing games (and thus, are a platform as any other computer). Examples of these games include: … which are spread across a variety of platforms, such as the Nintendo GameCube, PlayStation 2, Xbox, PC, and mobile devices.

In some cases, depending on the hardware of a particular system it may take longer than expected to create a video game across multiple platforms. So, a video game may only get released on a few platforms and then later released on the remaining platforms. Typically, this is what occurs when a new system is released, because the developers of the video game need to become acquainted with the hardware and software associated with the new console.

Some games may not become cross-platform because of licensing agreements between the developers and the maker of the video game console which state that the game will only be made for one particular console. As an example, Disney could create a new game and wish to release it on the latest Nintendo and Sony game consoles. If Disney licenses the game with Sony first, Disney may be required to only release the game on Sony’s console for a short time, or indefinitely—effectively prohibiting the game from cross-platform at least for a period of time.

Several developers have developed ways to play games online while using different platforms. Epic Games, Microsoft and Valve Software all have this technology, that allows XBox 360 gamers and PS3 gamers to play with PC gamers, allowing gamers to finally decide which platform is the best for a game. The first game released to allow this interactivity between PC and Console games was Shadowrun.

Platform independent software

Software that is platform independent does not rely on any special features of any single platform, or, if it does, handles those special features such that it can deal with multiple platforms. All algorithms, such as the quicksort algorithm, are able to be implemented on different platforms.

Porting software

Main article: Porting


Computer software that runs on a subset of all available computer architectures or operating systems can be altered to work on new architectures or operating systems through a process called porting. For example, as of August, 2006, work is underway to port the OpenOffice.org software application to a 64-bit architecture.

Cross-platform programming

Cross-platform programming is the practice of actively writing software that will work on more than one platform.

Approaches to cross-platform programming

There are different ways of approaching the problem of writing a cross-platform application program. One such approach is simply to create multiple versions of the same program in different source trees—in other words, the Windows version of a program would have one set of source code files and the Macintosh version could have another. While this is a straightforward approach to the problem, it has the potential to be considerably more expensive in development cost, development time, or both. The idea behind this is to create two different programs that look and act similar to each other. It is also possible that this means of developing a cross-platform application will result in more problems with bug tracking and fixing, because the two different source trees would have different programmers, and thus different defects in each version.

Another approach that is used is to depend on pre-existing software that hides the differences between the platforms—called abstraction of the platform—such that the program itself is unaware of the platform it is running on. It could be said that such programs are platform agnostic. Programs that run on the Java Virtual Machine (JVM) are built in this fashion.

Some applications mix various methods of cross-platform programming to create the final application. An example of this is the Firefox web browser, which uses abstraction to build some of the lower-level components, and the implementation of more than one scripting language to help facilitate ease of portability. Firefox implements XUL, CSS and JavaScript for extending the browser, in addition to classic Netscape-style browser plugins. Much of the browser itself is written in XUL, CSS, and JavaScript, as well.

Cross-platform programming toolkits

There are a number of tools which are available to help facilitate the process of cross-platform programming:
  • Simple DirectMedia Layer—An open source cross-platform multimedia library written in C that creates an abstraction over various platforms’ graphics, sound, and input APIs. It runs on many operating systems including Linux, Windows and Mac OS X and is aimed at games and multimedia applications.
  • wxWidgets—An open source widget toolkit that is also an application framework. It runs on Unix-like systems, Microsoft Windows and MacOS X. It permits applications written to use it to run on all of the systems that it supports, if the application does not use any operating system-specific programming in addition to it.
  • Qt—An application framework and widget toolkit for Unix-like systems, Microsoft Windows, MacOS X, and other systems—available under both open source and commercial licenses.
  • GTK+—An open source widget toolkit for Unix-like systems and Microsoft Windows.
  • FLTK—Another open source cross platform toolkit, but more light weight because it restricts itself to the GUI.
  • Mozilla—An open source platform for building Mac, Windows and Linux applications.
  • Mono (and more specifically, Microsoft .NET)—A cross-platform framework for applications and programming languages.
  • molib—A robust commercial application toolkit library that abstracts the system calls through C++ objects (such as the file system, database system and thread implementation.). This allows for the creation of applications that compile and run under MS-Windows, Mac OS/X, GNU/Linux, and other uses (Sun OS, AIX, HP-UX, 32/64 bit, SMP). Use in concert with the sandbox to create GUI-based applications.

Cross-platform development environments

Cross-platform applications can also be built using proprietary IDEs, or so-called Rapid Application Development tools. There are a number of development environments which allow developers to build and deploy applications across multiple platforms:
  • Eclipse—An Open source software framework and IDE extendable through plug-ins including the C++ Development Toolkit. Eclipse is available on any operating system with a modern Java virtual machine (including Windows, Linux, and Mac OS X, Sun, HP-UX, and other systems).
  • IntelliJ IDEA—A proprietary IDE
  • NetBeans—An Open source software framework and IDE extendable through plug-ins. NetBeans is available on any operating system with a modern Java virtual machine (including Windows, Linux, and Mac OS X, Sun, HP-UX, and other systems). Similar to Eclipse in features and functionality. Promoted by Sun Microsystems
  • Omnis Studio—A proprietary IDE or Rapid Application Development tool for creating enterprise and web applications for Windows, Linux, and Mac OS X.
  • Runtime Revolution—a proprietary IDE, compiler engine and CGI builder that cross compiles to Windows, Mac OS X (PPC, Intel), Linux, Solaris, BSD, and Irix.
  • —A free/open source, cross platform IDE. It is developed in C++ using wxWidgets. Using a plugin architecture, its capabilities and features are defined by the provided plugins.
  • Lazarus (software)—Lazarus is a cross platform Visual IDE developed for and supported by the open source Free Pascal compiler. It aims to provide a Rapid Application Development Delphi Clone for Pascal and Object Pascal developers.
  • REALbasic—REALbasic (RB) is an object-oriented dialect of the BASIC programming language developed and commercially marketed by REAL Software, Inc in Austin, Texas for Mac OS X, Microsoft Windows, and Linux.

Criticisms of cross-platform development

There are certain issues associated with cross-platform development. Some of these include:
  • Cross-platform techniques may increase application development time, especially for developers who are unaccustomed to using them. Developers who are trained to write software using platform-dependent APIs, such as the Microsoft Windows API, may have to be retrained to use a completely new set of platform-independent APIs. This increased development time may not always be justifiable, especially when the application’s target audience has overwhelmingly adopted a single platform.
  • Testing cross-platform applications may also be considerably more complicated, since different platforms can exhibit slightly different behaviors or subtle bugs. This problem has led some developers to deride cross-platform development as “Write Once, Debug Everywhere”, an ironic take on Sun’s “Write Once, Run Anywhere” marketing slogan.
  • Developers are often restricted to using the subset of features which are available on all platforms. This may hinder the application's performance or prohibit developers from using platforms’ most advanced features.
  • Different platforms often have different user interface conventions, which cross-platform applications do not always accommodate. For example, applications developed for Mac OS X and GNOME are supposed to place the most important button on the right-hand side of windows and dialogs, whereas Microsoft Windows and KDE have the opposite convention. Though many of these differences are subtle, a cross-platform application which does not conform appropriately to these conventions may feel clunky or alien to the user.
  • Scripting languages and virtual machines must be translated into native executable code each time the application is executed, imposing a performance penalty. This performance hit can be alleviated using advanced techniques like just-in-time compilation; but even using such techniques, some performance overhead may be unavoidable.

Books

See also

A computer program is one or more instructions that are intended for execution by a computer. Specifically, it is a symbol or combination of symbols forming an algorithm that may or may not terminate, and that algorithm is written in a programming language.
..... Click the link for more information.
An operating system (OS) is the software that manages the sharing of the resources of a computer. An operating system processes system data and user input, and responds by allocating and managing tasks and internal system resources as a service to users and programs of the
..... Click the link for more information.
The term computer language includes a wide variety of languages used to communicate with computers. It is broader than the more commonly-used term programming language. Programming languages are a subset of computer languages.
..... Click the link for more information.
A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. Programming languages, like natural languagess, are defined by syntactic and semantic rules which describe their structure and meaning respectively.
..... Click the link for more information.
Computer software is a general term used to describe a collection of computer programs, procedures and documentation that perform some task on a computer system. [1]
..... Click the link for more information.
computer is a machine which manipulates data according to a list of instructions.

Computers take numerous physical forms. The first devices that resemble modern computers date to the mid-20th century (around 1940 - 1941), although the computer concept and various machines
..... Click the link for more information.
In computing, a platform describes some sort of framework, either in hardware or software, which allows software to run. Typical platforms include a computer's architecture, operating system, or programming languages and their runtime libraries.
..... Click the link for more information.
Application software is a subclass of computer software that employs the capabilities of a computer directly and thoroughly to a task that the user wishes to perform. This should be contrasted with system software which is involved in integrating a computer's various capabilities,
..... Click the link for more information.
Microsoft Windows

Screenshot of Windows Vista Ultimate, the latest version of Microsoft Windows.
Company/developer: Microsoft Corporation
OS family: MS-DOS/9x-based, Windows CE, Windows NT
Source model: Closed source

..... Click the link for more information.
The generic term x86 refers to the "CISC" type instruction set of the most commercially successful CPU architecture[1] in the history of personal computing, used in processors from Intel, AMD, VIA, and others.
..... Click the link for more information.
Linux (pronunciation: IPA: /ˈlɪnʊks/, lin-uks) is a Unix-like computer operating system. Linux is one of the most prominent examples of free software and open source development; its underlying source code can be
..... Click the link for more information.
The generic term x86 refers to the "CISC" type instruction set of the most commercially successful CPU architecture[1] in the history of personal computing, used in processors from Intel, AMD, VIA, and others.
..... Click the link for more information.
Mac OS X (IPA: /mæk.oʊ.ɛs.tɛn/) is a line of graphical operating systems developed, marketed, and sold by Apple Inc., the latest of which is pre-loaded on all currently shipping Macintosh computers.
..... Click the link for more information.
PowerPC is a RISC microprocessor architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM. Originally intended for personal computers, PowerPC CPUs have since become popular embedded and high-performance processors as well.
..... Click the link for more information.
Macintosh, commonly known as Mac, is a brand name which covers several lines of personal computers designed, developed, and marketed by Apple Inc. Named after the McIntosh variety of apple, the original Macintosh was released on January 24, 1984.
..... Click the link for more information.
The generic term x86 refers to the "CISC" type instruction set of the most commercially successful CPU architecture[1] in the history of personal computing, used in processors from Intel, AMD, VIA, and others.
..... Click the link for more information.
Macintosh, commonly known as Mac, is a brand name which covers several lines of personal computers designed, developed, and marketed by Apple Inc. Named after the McIntosh variety of apple, the original Macintosh was released on January 24, 1984.
..... Click the link for more information.
Application software is a subclass of computer software that employs the capabilities of a computer directly and thoroughly to a task that the user wishes to perform. This should be contrasted with system software which is involved in integrating a computer's various capabilities,
..... Click the link for more information.
In computing, a platform describes some sort of framework, either in hardware or software, which allows software to run. Typical platforms include a computer's architecture, operating system, or programming languages and their runtime libraries.
..... Click the link for more information.
Microsoft Windows

Screenshot of Windows Vista Ultimate, the latest version of Microsoft Windows.
Company/developer: Microsoft Corporation
OS family: MS-DOS/9x-based, Windows CE, Windows NT
Source model: Closed source

..... Click the link for more information.
The generic term x86 refers to the "CISC" type instruction set of the most commercially successful CPU architecture[1] in the history of personal computing, used in processors from Intel, AMD, VIA, and others.
..... Click the link for more information.
Linux (pronunciation: IPA: /ˈlɪnʊks/, lin-uks) is a Unix-like computer operating system. Linux is one of the most prominent examples of free software and open source development; its underlying source code can be
..... Click the link for more information.
Mac OS X (IPA: /mæk.oʊ.ɛs.tɛn/) is a line of graphical operating systems developed, marketed, and sold by Apple Inc., the latest of which is pre-loaded on all currently shipping Macintosh computers.
..... Click the link for more information.
mobile phone or cell phone is a long-range, portable electronic device used for mobile communication. In addition to the standard voice function of a telephone, current mobile phones can support many additional services such as SMS for text messaging, email, packet switching
..... Click the link for more information.
Application software is a subclass of computer software that employs the capabilities of a computer directly and thoroughly to a task that the user wishes to perform. This should be contrasted with system software which is involved in integrating a computer's various capabilities,
..... Click the link for more information.
''Virtual Machine Manager redirects here. For the virtual machine monitoring application from Microsoft, see System Center Virtual Machine Manager
In computer science, a virtual machine
..... Click the link for more information.
computer architecture is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements (especially speeds and interconnections) and design implementations for the various parts of a computer —
..... Click the link for more information.
CPU design is the design engineering task of producing a CPU, a component of computer hardware. It is a subfield of electronics engineering and computer engineering.

Overview

CPU design focuses on these areas:
  1. Datapaths (such as ALUs and pipelines)

..... Click the link for more information.
The generic term x86 refers to the "CISC" type instruction set of the most commercially successful CPU architecture[1] in the history of personal computing, used in processors from Intel, AMD, VIA, and others.
..... Click the link for more information.
x86-64 is a 64-bit superset of the x86 instruction set architecture. The x86-64 instruction set natively supports Intel's x86 and was designed by Advanced Micro Devices (AMD), who have since renamed it AMD64.
..... Click the link for more information.


This article is copied from an article on Wikipedia.org - the free encyclopedia created and edited by online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of the wikipedia encyclopedia articles provide accurate and timely information please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.
Herod_Archelaus


page counter