Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Cross-platform software
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Web applications=== [[Web application]]s are typically described as cross-platform because, ideally, they are accessible from any [[web browser]]: the browser is the platform. Web applications generally employ a [[client–server model]], but vary widely in complexity and functionality. It can be hard to reconcile the desire for features with the need for compatibility. Basic web applications perform all or most processing from a [[stateless 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. This type of application was the norm in the early phases of [[World Wide Web]] application development. Such applications follow a simple [[Transaction processing|transaction]] model, identical to that of serving [[static web page]]s. Today, they are still relatively common, especially where cross-platform compatibility and simplicity are deemed more critical than advanced functionality. Prominent examples of advanced web applications include the Web interface to [[Gmail]] and [[Google Maps]]. Such applications routinely depend on additional features found only in the more recent versions of popular web browsers. These features include [[Ajax (programming)|Ajax]], [[JavaScript]], [[Dynamic HTML]], [[SVG]], and other components of [[rich web applications]]. ==== Design <span class="anchor" id="Design strategies"></span> ==== Because of the competing interests of compatibility and functionality, numerous design strategies have emerged. Many software systems use a layered architecture where platform-dependent code is restricted to the upper- and lowermost layers. =====Graceful degradation===== 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 but still of use. =====Multiple codebases===== Some software is maintained in distinct codebases for different (hardware and OS) platforms, with equivalent functionality. This requires more effort to maintain the code, but can be worthwhile where the amount of platform-specific code is high. =====Single codebase===== This strategy relies on having one codebase that may be compiled to multiple platform-specific formats. One technique is [[conditional compilation]]. With this technique, code that is common to all platforms is not repeated. Blocks of code that are only relevant to certain platforms are made conditional, so that they are only [[interpreter (computer science)|interpreted]] or [[compiler|compiled]] when needed. Another technique is separation of functionality, which disables functionality not supported by browsers or OSs, while still delivering a complete application to the user. (See also: [[Separation of concerns]].) This technique is used in web development where interpreted code (as in scripting languages) can query the platform it is running on to execute different blocks conditionally.<ref>{{cite journal|last=Corti|first=Sascha P.|title=Browser and Feature Detection|journal=MSDN Magazine|date=October 2011|url=http://msdn.microsoft.com/en-us/magazine/hh475813.aspx|access-date=28 January 2014}}</ref> =====Third-party libraries===== Third-party libraries attempt to simplify cross-platform capability by hiding the complexities of client differentiation behind a single, unified API, at the expense of [[vendor lock-in]]. =====Responsive web design===== [[Responsive web design]] (RWD) is a Web design approach aimed at crafting the visual layout of sites to provide an optimal viewing experience—easy reading and navigation with a minimum of resizing, panning, and scrolling—across a wide range of devices, from mobile phones to desktop computer monitors. Little or no platform-specific code is used with this technique. ==== Testing <span class="anchor" id="Testing strategies"></span>==== Cross-platform applications need much more [[integration testing]]. Some web browsers prohibit installation of different versions on the same machine. There are several approaches used to target multiple platforms, but all of them result in software that requires substantial manual effort for testing and maintenance.<ref>{{Cite book|last=Choudhary|first=S.R.|title=Companion Proceedings of the 36th International Conference on Software Engineering |chapter=Cross-platform testing and maintenance of web and mobile applications |date=2014|pages=642–645|doi=10.1145/2591062.2591097|isbn=9781450327688|s2cid=1903037|hdl=1853/53588|hdl-access=free |url=https://repository.gatech.edu/server/api/core/bitstreams/c283fd1a-551d-4b0e-a7da-7add80df2328/content }}</ref> Techniques such as [[full virtualization]] are sometimes used as a workaround for this problem. Tools such as the Page Object Model allow cross-platform tests to be scripted so that one test case covers multiple versions of an app. If different versions have similar user interfaces, all can be tested with one test case.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)