ems是什么意思| 00后属什么生肖| 嗷呜是什么意思| 翡翠是什么意思| 阿斗是什么意思| 口蘑不能和什么一起吃| 汗多尿少是什么原因| 猫不能吃什么东西| 肾综合征是什么病严重吗| 脱发厉害是什么原因引起的| 诱惑是什么意思| 什么的嗓音| 为什么经常刷牙还牙黄| 早早孕有什么征兆| 洗涤是什么意思| 高血压什么症状表现| 振五行属什么| 妊娠反应什么时候开始| 玻尿酸是干什么用的| 参考是什么意思| 让姨妈推迟吃什么药| 女生安全期是什么时候| 交工是什么意思| 肩周炎是什么症状| 真菌感染用什么药| 口舌痣是什么意思| 无创是什么检查| 基诺浦鞋属于什么档次| 脖子变粗了是什么原因| 屈曲是什么意思| 姐夫的爸爸叫什么| 垂头丧气是什么意思| 怀孕乳头会有什么变化| 梦见拉麦子是什么预兆| 阴道里面有个肉球是什么| 吃什么代谢快有助于减肥| 肾结石都有什么症状| S是什么牌子鞋| 神经炎吃什么药| 霍山石斛有什么功效| 家里为什么会有隐翅虫| kolumb是什么牌子| mo是什么元素| 食指有痣代表什么意思| 后脖子黑是什么原因| 月经量少是什么原因| 甲醛闻多了有什么症状| 蒲公英能治什么病| 压力大会有什么症状| 7777什么意思| 27度穿什么衣服合适| 码放是什么意思| 十二星座什么第一名| 为什么用英语怎么说| 2月什么星座的| 月经喝什么比较好| 什么是干眼症| 十月二十是什么星座| 为的多音字是什么| 微波炉不热是什么原因| 冬天吃什么| 王毅什么级别| 什么的树丛| 食道炎用什么药最好| 褥疮用什么药最好| 1103是什么星座| 晚上睡觉喉咙干燥是什么原因| 二垒是什么意思| 借鸡生蛋是什么意思| 看见黄鼠狼有什么预兆| 黄体酮吃多了有什么副作用| 乙肝135阳性是什么意思| 家里养什么宠物好| 女人切除子宫有什么影响| 喝柠檬水有什么好处和坏处| 表哥的儿子叫我什么| 特警属于什么编制| 胃大肚子大是什么原因| 1989年什么生肖| 出淤泥而不染是什么意思| 早搏的症状是什么表现| 鼻窦炎的症状是什么| 放的屁很臭是什么原因| 焦是什么意思| 月经两个月没来是什么原因| 黄体期什么意思| 鳄鱼吃什么| ws是什么意思| 牛肉炖什么好吃又营养| 蔓字五行属什么| 头晕应该挂什么科| 关节炎吃什么药| 生活惬意是什么意思| 原味是什么意思| 肺动脉流什么血| 四面受敌是什么动物| 就义是什么意思| 什么东西蛋白质最高| 口蜜腹剑是什么意思| 什么东西能加不能减| 水中加什么擦玻璃干净| 女同学过生日送什么礼物比较好| 资金流入股价下跌为什么| 6.22什么星座| 性交是什么感觉| 吃什么水果能降血压| 阑尾炎应该挂什么科| 雷锋是什么生肖| 什么时候排卵期| 六月五日是什么日子| 什么羊肉最好吃| 冲猴煞北是什么意思| 吃什么补内膜最快| 雍正为什么不杀十阿哥| 实体店是什么意思| 狗摇尾巴是什么意思| 什么是有氧运动包括哪些| 什么是单核细胞百分比| 7月7日是什么星座| 下一个台风什么时候来| 早餐什么时候吃最好| 瓶颈期什么意思| 考试前吃什么能让大脑发挥最佳| 总蛋白高是什么原因| 遇到黄鼠狼是什么征兆| 盐洗脸有什么好处| 魂牵梦绕是什么意思| 牙龈肿吃什么药| 肾有结晶是什么意思| 贵州有什么烟| 荨麻疹用什么药| 朴树是什么树| 炖牛肉放什么料| 58什么意思| 阑尾炎术后吃什么| sephora是什么牌子| 1030是什么星座| 猪狗不如是什么意思| 感冒喝什么茶| 什么叫小三阳| 大小脸去医院挂什么科| nicu是什么意思| 小孩血糖高是什么原因引起的| 黄鼠狼为什么叫黄大仙| 高血压是什么引起的| 一字马是什么意思| 梦见长大水是什么意思| 腱鞘炎挂什么科| 流苏是什么东西| 西瓜可以做成什么美食| 百无一用是什么意思| 什么时间立秋| 女生胸部发育到什么年龄| 嘴唇裂口是什么原因| 8月底是什么星座| 腿肿是什么原因引起的| 扪是什么意思| 山穷水尽的尽是什么意思| 蝎子喜欢吃什么| 中位数是什么| 什么样的人容易得痛风| picc什么意思| 紫苏叶有什么作用| 什么是射频| 扁桃体肥大吃什么药好得快| 小孩子晚上睡觉磨牙是什么原因| 荔枝对身体有什么好处| 糖化高是什么意思| 石斛有什么功效| 水肺潜水是什么意思| 无限极是干什么的| 4月24号是什么星座| 借你吉言是什么意思| 农历六月十七是什么日子| 650是什么意思| 喉咙疼吃什么消炎药| 共情是什么意思| 儿童结膜炎用什么眼药水| 复合是什么意思| 内分泌失调吃什么食物好| 孕妇喝什么汤| 黍米是什么米| 舌下含服是什么意思| 上午八点是什么时辰| 液基薄层细胞检测是什么| 麻风病是什么| 食品级pp材质是什么| 鲱鱼为什么那么臭| 正常白带什么颜色| 手抖是什么原因| 宫颈息肉是什么原因引起的| 城隍是什么意思| 口蜜什么剑| 细菌感染有什么症状表现| 釜底抽薪是什么计| 中午吃什么饭 家常菜| 白带异常吃什么药| 耳膜穿孔什么症状| 什么是早泄| eland是什么牌子| 什么烟危害最小| 窦缓是什么意思| 草口耳是什么字| 水可以做什么| 8月1日什么星座| 查血压高挂什么科室| 性激素是查什么| 梦见怀孕是什么预兆| 什么床垫最健康| 望惠存是什么意思| 什么叫活佛| 免疫肝是什么病| 女人味是什么| 胰腺癌有什么症状| 吃什么促进卵泡发育| 人体出汗多是什么原因| 翡翠是什么颜色| 儿保科主要是检查什么| 聚酯纤维是什么料子| 卡宾男装属于什么档次| 脂肪瘤应该挂什么科| 上海市市委书记是什么级别| 办狗证需要什么资料| 月经突然停止是什么原因| 室内机漏水是什么原因| 火气旺盛有什么症状| 肿瘤吃什么药可以消除| 2016属什么生肖| 南瓜是什么形状| 网线长什么样| 贡菜是什么菜| 爱的真正含义是什么| music什么意思| 深圳到香港需要办理什么手续| 不结婚的叫什么族| psv是什么| 石头五行属什么| 盆腔少量积液什么意思| 临床医生是什么意思| 太容易出汗是什么原因| 紧急避孕药什么时候吃有效| 尿肌酐高是什么原因| 外寒内热感冒吃什么药| 凝血五项是检查什么病| 杆菌是什么| 孕妇吃什么容易滑胎| 消化不良吃什么食物| 剥离是什么意思| 海豹是什么动物| 什么是肉桂| 86岁属什么生肖| 碘伏和碘酒有什么区别| 砧木是什么意思| 提拔是什么意思| 神经炎用什么药| 入园体检都检查什么| 匪气是什么意思| 接触隔离什么意思| 裤裙配什么上衣好看| 肾积水是什么病严重吗| 消纳是什么意思| 下巴长闭口是什么原因| 寸脉弱是什么原因| 什么胆忠心| 百度Jump to content

“海贸遗珍”清代广州外销艺术品在市博物.(图)

From Wikipedia, the free encyclopedia
(Redirected from Cross-platform)
Virtualbox about screen with representations of all major desktop operating system platforms
百度 要持续深入推进省直机关管党治党“宽松软”问题专项治理工作,从严务实解决党的领导弱化、党的建设缺失、全面从严治党不力等问题,再动员部署,再梳理查摆,再推动落实,瞄着问题查、追着问题改,认真查遗补漏,加强建章立制,巩固提高阶段性成果,推动“宽松软”真正走向“严紧硬”,把管党治党的螺丝拧得更紧,推动全面从严治党向纵深发展。

Within computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms.[1] Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.[2]

For example, a cross-platform application may run on Linux, macOS and Microsoft Windows. Cross-platform software may run on many platforms, or as few as two. Some frameworks for cross-platform development are Codename One, ArkUI-X, Kivy, Qt, GTK, Flutter, NativeScript, Xamarin, Apache Cordova, Ionic, and React Native.[3]

Platforms

[edit]

Platform can refer to the type of processor (CPU) or other hardware on which an operating system (OS) or application runs, the type of OS, or a combination of the two.[4] An example of a common platform is Android which runs on the ARM architecture family. Other well-known platforms are Linux/Unix, macOS and Windows, these are all cross-platform.[4] Applications can be written to depend on the features of a particular platform—either the hardware, OS, or virtual machine (VM) it runs on. For example, the Java platform is a common VM platform which runs on many OSs and hardware types.

Hardware

[edit]

A hardware platform can refer to an instruction set architecture. For example: ARM or the x86 architecture. These machines can run different operating systems.

Smartphones and tablets generally run ARM architecture, these often run Android or iOS and other mobile operating systems.

Software

[edit]

A software platform can be either an operating system (OS) or programming environment, though more commonly it is a combination of both. An exception is Java, which uses an OS-independent virtual machine (VM) to execute Java bytecode. Some software platforms are:

Minor, historical

Java

[edit]

The Java language is typically compiled to run on a VM that is part of the Java platform. The Java virtual machine (Java VM, JVM) is a CPU implemented in software, which runs all Java code. This enables the same code to run on all systems that implement a JVM. Java software can be executed by a hardware-based Java processor. This is used mostly in embedded systems.

Java code running in the JVM has access to OS-related services, like disk input/output (I/O) and network access, if the appropriate privileges are granted. The JVM makes the system calls on behalf of the Java application. This lets users to decide the appropriate protection level, depending on an access-control list (ACL). For example, disk and network access is usually enabled for desktop applications, but not for browser-based applets. The Java Native Interface (JNI) can also be used to access OS-specific functions, with a loss of portability.

Currently, Java Standard Edition software can run on Microsoft Windows, macOS, several Unix-like OSs, and several real-time operating systems for embedded devices. For mobile applications, browser plugins are used for Windows and Mac based devices, and Android has built-in support for Java. There are also subsets of Java, such as Java Card or Java Platform, Micro Edition, designed for resource-constrained devices.

Implementation

[edit]

For software to be considered cross-platform, it must function on more than one computer architecture or OS. Developing such software can be a time-consuming task because different OSs have different application programming interfaces (API).

Software written for one OS may not automatically work on all architectures that OS supports. Just because software is written in a popular programming language such as C or C++, it does not mean it will run on all OSs that support that language—or even on different versions of the same OS.

Web applications

[edit]

Web applications 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 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.

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, JavaScript, Dynamic HTML, SVG, and other components of rich web applications.

Design

[edit]

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
[edit]

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
[edit]

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
[edit]

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 interpreted or 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.[6]

Third-party libraries
[edit]

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
[edit]

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

[edit]

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.[7] 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.

Traditional applications

[edit]

Web applications are becoming increasingly popular but 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 clear. Features, installation methods and architectures for web and traditional applications overlap and blur the distinction. Nevertheless, this simplifying distinction is a common and useful generalization.

Binary software

[edit]

Traditional application software has been distributed as binary files, especially executable files. Executables only support the platform they were built for—which means that a single cross-platform executable could be very bloated with code that never executes on a particular platform. Instead, generally there is a selection of executables, each built for one platform.

For software that is distributed as a binary executable, such as that written in C or C++, there must be a software build for each platform, using a toolset that translates—transcompiles—a single codebase into multiple binary executables. For example, Firefox, an open-source web browser, is available on Windows, macOS (both PowerPC and x86 through what Apple Inc. calls a Universal binary), Linux, and BSD on multiple computer architectures. The four platforms (in this case, Windows, macOS, Linux, and BSD) are separate executable distributions, although they come largely from the same source code. In rare cases, executable code built for several platforms is combined into a single executable file called a fat binary.

The use of different toolsets may not be enough to build a working executables for different platforms. In this case, programmers must port the source code to the new platform. For example, an application such as Firefox, which already runs on Windows on the x86 family, can be modified and re-built to run on Linux on the x86 (and potentially other architectures) as well. The multiple versions of the code may be stored as separate codebases, or merged into one codebase.

An alternative to porting is cross-platform virtualization, where applications compiled for one platform can run on another without modification of the source code or binaries. As an example, Apple's Rosetta, which is built into Intel-based Macintosh computers, runs applications compiled for the previous generation of Macs that used PowerPC CPUs. Another example is IBM PowerVM Lx86, which allows Linux/x86 applications to run unmodified on the Linux/Power OS.

Example of cross-platform binary software:

Scripts and interpreted languages

[edit]

A script can be considered to be cross-platform if its interpreter is available on multiple platforms and the script only uses the facilities built into the language. For example, 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; indeed there are many implementations (e.g. IronPython for .NET Framework). The same goes for many of the open-source scripting languages.

Unlike binary executable files, 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 trivial issues, such as the representation of a new line character.

Some popular cross-platform scripting languages are:

Video games

[edit]

Cross-platform or multi-platform is a term that can also apply to video games released on a range of video game consoles. Examples of cross-platform games include: Miner 2049er, Tomb Raider: Legend, FIFA series, NHL series and Minecraft.

Each has been released across a variety of gaming platforms, such as the Wii, PlayStation 3, Xbox 360, personal computers, and mobile devices.

Some platforms are harder to write for than others, requiring more time to develop the video game to the same standard. To offset this, a video game may be released on a few platforms first, then later on others. Typically, this happens when a new gaming system is released, because video game developers need to acquaint themselves with its hardware and software.

Some games may not be cross-platform because of licensing agreements between developers and video game console manufacturers that limit development to one particular console. As an example, Disney could create a game with the intention of release on the latest Nintendo and Sony game consoles. Should Disney license the game with Sony first, it may be required to release the game solely on Sony's console for a short time or indefinitely.

Cross-platform play

[edit]

Several developers have implemented ways to play games online while using different platforms. Psyonix, Epic Games, Microsoft, and Valve all possess technology that allows Xbox 360 and PlayStation 3 gamers to play with PC gamers, leaving the decision of which platform to use to consumers. The first game to allow this level of interactivity between PC and console games (Dreamcast with specially produced keyboard and mouse) was Quake 3.[11][12]

Games that feature cross-platform online play include Rocket League, Final Fantasy XIV, Street Fighter V, Killer Instinct, Paragon and Fable Fortune, and Minecraft with its Better Together update on Windows 10, VR editions, Pocket Edition and Xbox One.

Programming

[edit]

Cross-platform programming is the practice of deliberately writing software to work on more than one platform.

Approaches

[edit]

There are different ways to write a cross-platform application. One approach is to create multiple versions of the same software in different source trees—in other words, the Microsoft Windows version of an application might have one set of source code files and the Macintosh version another, while a FOSS *nix system might have a third. While this is straightforward, compared to developing for only one platform it can cost much more to pay a larger team or release products more slowly. It can also result in more bugs to be tracked and fixed.

Another approach is to use software that hides the differences between the platforms. This abstraction layer insulates the application from the platform. Such applications are platform agnostic. Applications that run on the JVM are built this way.

Some applications mix various methods of cross-platform programming to create the final application. An example is the Firefox web browser, which uses abstraction to build some of the lower-level components, with separate source subtrees for implementing platform-specific features (like the GUI), and the implementation of more than one scripting language to ease software 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.

Toolkits and environments

[edit]

There are many tools[13][14] available to help the process of cross-platform programming:

  • 8th: a development language which utilizes Juce as its GUI layer. It currently supports Android, iOS, Windows, macOS, Linux and Raspberry Pi.
  • Anant Computing: A mobile application platform that works in all Indian languages, including their keyboards, and also supports AppWallet and native performance in all OSs.
  • AppearIQ: a framework that supports the workflow of app development and deployment in an enterprise environment. Natively developed containers present hardware features of the mobile devices or tablets through an API to HTML5 code thus facilitating the development of mobile apps that run on different platforms.
  • Boden: a UI framework written in C++.
  • Cairo: a free software library used to provide a vector graphics-based, device-independent API. It is designed to provide primitives for 2-dimensional drawing across a number of different backends. Cairo is written in C and has bindings for many programming languages.
  • Cocos2d: an open-source toolkit and game engine for developing 2D and simple 3D cross-platform games and applications.
  • Codename One: an open-source Write Once Run Anywhere (WORA) framework for Java and Kotlin developers.
  • Delphi: an IDE which uses a Pascal-based language for development. It supports Android, iOS, Windows, macOS, Linux.
  • Ecere SDK: a GUI and 2D/3D graphics toolkit and IDE, written in eC and with support for additional languages such as C and Python. It supports Linux, FreeBSD, Windows, Android, macOS and the Web through Emscripten or Binaryen  (WebAssembly).
  • Eclipse: an open-source development environment. Implemented in Java with a configurable architecture which supports many tools for software development. Add-ons are available for several languages, including Java and C++.
  • FLTK: an open-source toolkit, but more lightweight because it restricts itself to the GUI.
  • Flutter: A cross-platform UI framework for IOS, Android, Mac, Windows and developed by Google.
  • fpGUI: An open-source widget toolkit that is completely implemented in Object Pascal. It currently supports Linux, Windows and a bit of Windows CE.
  • GeneXus: A Windows rapid software development solution for cross-platform application creation and deployment based on knowledge representation and supporting C#, COBOL, Java including Android and BlackBerry smart devices, Objective-C for Apple mobile devices, RPG, Ruby, Visual Basic, and Visual FoxPro.
  • GLBasic: A BASIC dialect and compiler that generates C++ code. It includes cross compilers for many platforms and supports numerous platform (Windows, Mac, Linux, Android, iOS and some exotic handhelds).
  • Godot: an SDK which uses Godot Engine.
  • GTK+: An open-source widget toolkit for Unix-like systems with X11 and Microsoft Windows.
  • Haxe: An open-source language.
  • Juce: An application framework written in C++, used to write native software on numerous systems (Microsoft Windows, POSIX, macOS), with no change to the code.
  • Kivy: an open-source cross-platform UI framework written in Python. It supports Android, iOS, Linux, OS X, Windows and Raspberry Pi.
  • LEADTOOLS: Cross-platform SDK libraries to integrate recognition, document, medical, imaging, and multimedia technologies into Windows, iOS, macOS, Android, Linux and web applications.[15]
  • LiveCode: a commercial cross-platform rapid application development language inspired by HyperTalk.
  • Lazarus: A programming environment for the FreePascal Compiler. It supports the creation of self-standing graphical and console applications and runs on Linux, MacOSX, iOS, Android, WinCE, Windows and WEB.
  • Max/MSP: A visual programming language that encapsulates platform-independent code with a platform-specific runtime environment into applications for macOS and Windows A cross-platform Android runtime. It allows unmodified Android apps to run natively on iOS and macOS
  • Mendix: a cloud-based low-code application development platform.
  • MonoCross: an open-source model–view–controller design pattern where the model and controller are cross-platform but the view is platform-specific.[16]
  • Mono: An open-source cross-platform version of Microsoft .NET (a framework for applications and programming languages)
  • MoSync: an open-source SDK for mobile platform app development in the C++ family.
  • Mozilla application framework: an open-source platform for building macOS, Windows and Linux applications.
  • OpenGL: a 3D graphics library.
  • Pixel Game Maker MV: A proprietary 2D game development software for Windows for developing Windows and Nintendo Switch games.
  • PureBasic: a proprietary language and IDE for building macOS, Windows and Linux applications.
  • ReNative: The universal development SDK to build multi-platform projects with React Native. Includes latest iOS, tvOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG webOS, macOS/OSX, Windows, KaiOS, Firefox OS and Firefox TV platforms.
  • Qt: an application framework and widget toolkit for Unix-like systems with X11, Microsoft Windows, macOS, and other systems—available under both proprietary and open-source licenses.
  • Simple and Fast Multimedia Library: A multimedia C++ API that provides low and high level access to graphics, input, audio, etc.
  • Simple DirectMedia Layer: an open-source multimedia library written in C that creates an abstraction over various platforms' graphics, sound, and input APIs. It runs on OSs including Linux, Windows and macOS and is aimed at games and multimedia applications.
  • Smartface: a native app development tool to create mobile applications for Android and iOS, using WYSIWYG design editor with JavaScript code editor.
  • Tcl/Tk
  • Titanium Mobile: open source cross-platform framework for Android and iOS development.
  • U++: a C++ GUI framework for performance. It includes a set of libraries (GUI, SQL, etc..), and IDE. It supports Windows, macOS and Linux.
  • Unity: Another cross-platform SDK which uses Unity Engine.
  • Uno Platform: Windows, macOS, iOS, Android, WebAssembly and Linux using C#.
  • Unreal: A cross-platform SDK which uses Unreal Engine.
  • V-Play Engine: V-Play is a cross-platform development SDK based on the popular Qt framework. V-Play apps and games are created within Qt Creator.
  • WaveMaker: A low-code development tool to create responsive web and hybrid mobile (Android & iOS) applications.
  • WinDev: an Integrated Development Environment for Windows, Linux, .Net and Java, and web browers. Optimized for business and industrial applications.
  • wxWidgets: an open-source widget toolkit that is also an application framework.[17] It runs on Unix-like systems with X11, Microsoft Windows and macOS.
  • Xojo: a RAD IDE that uses an object-oriented programming language to compile desktop, web and iOS apps. Xojo supports natively compiling to Windows, macOS, iOS and Linux, and can also create compiled web apps that are able to be run as standalone servers or through CGI.

Challenges

[edit]

There are many challenges when developing cross-platform software:

  • Testing cross-platform applications may 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", a take on Sun Microsystems' "write once, run anywhere" marketing slogan.
  • Developers are often restricted to using the lowest common denominator subset of features which are available on all platforms. This may hinder the application's performance or prohibit developers from using the most advanced features of each platform.
  • Different platforms often have different user interface conventions, which cross-platform applications do not always accommodate. For example, applications developed for macOS and GNOME are supposed to place the most important button on the right-hand side of a window or dialog, whereas Microsoft Windows and KDE have the opposite convention. Though many of these differences are subtle, a cross-platform application which does not conform to these conventions may feel clunky or alien to the user. When working quickly, such opposing conventions may even result in data loss, such as in a dialog box confirming whether to save or discard changes.
  • Scripting languages and VM bytecode must be translated into native executable code each time they are used, imposing a performance penalty. This penalty can be alleviated using techniques like just-in-time compilation; but some computational overhead may be unavoidable.
  • Different platforms require the use of native package formats such as RPM and MSI. Multi-platform installers such as InstallAnywhere address this need.
  • Cross-platform execution environments may suffer cross-platform security flaws, creating a fertile environment for cross-platform malware.[18]

See also

[edit]

References

[edit]
  1. ^ "Design Guidelines: Glossary". java.sun.com. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  2. ^ "SDD Technology blog: Definition of cross platform". SDD Technology. Retrieved 2025-08-06.
  3. ^ Lee P Richardson (2025-08-06). "Xamarin vs Ionic: A Mobile, Cross Platform, Shootout".
  4. ^ a b "Platform Definition". The Linux Information Project. Retrieved 2025-08-06.
  5. ^ "About Mono". mono-project.com. Retrieved 2025-08-06.
  6. ^ Corti, Sascha P. (October 2011). "Browser and Feature Detection". MSDN Magazine. Retrieved 28 January 2014.
  7. ^ Choudhary, S.R. (2014). "Cross-platform testing and maintenance of web and mobile applications". Companion Proceedings of the 36th International Conference on Software Engineering. pp. 642–645. doi:10.1145/2591062.2591097. hdl:1853/53588. ISBN 9781450327688. S2CID 1903037.
  8. ^ Mehrotra, Pranob (2025-08-06). "Collabora Office suite gets a new layout for Android tablets and Chromebooks". XDA-Developers. Retrieved 2025-08-06. Collabora Office is a popular open-source alternative to the Microsoft Office suite. It's based on LibreOffice, and it's available on a variety of platforms, including Windows, Linux, iOS, and Android. This year in July, a major update for the office suite brought support for Chrome OS devices.
  9. ^ "Collabora Office on iOS and Android Just got Better!". Adfinis. 2025-08-06. Retrieved 2025-08-06. ...touch optimized interfaces: one for tablets and one for phone screens. ...(iOS, iPadOS, Chromebooks, Android).
  10. ^ "Nextcloud Ubuntu Appliance adds Collabora Online to Raspberry Pi image". MuyLinux. 2025-08-06. Retrieved 2025-08-06. the first viable self-hosted web office solution for the popular Raspberry Pi 4 platform
  11. ^ Cribba. Quake III Arena, Giant Bombcast, February 15, 2013.
  12. ^ A Closer Look At The Dreamcast Internet Starter Kit
  13. ^ The GUI Toolkit, Framework Page
  14. ^ "Platform Independent FAQ". Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  15. ^ "Cross-Platform SDK Libraries for Recognition, Document, Medical, Imaging, and Multimedia". www.leadtools.com. Retrieved 2025-08-06.
  16. ^ "12 benefits of Xamarin Cross-platform app development". HeadWorks. 15 Mar 2019.
  17. ^ WxWidgets Description
  18. ^ Warren, Tom (2025-08-06). "Microsoft bids farewell to Windows 7 and the millions of PCs that still run it". The Verge. Retrieved 2025-08-06.
司是什么级别 紫色五行属什么 侍中是什么官 五年是什么婚 经常饿肚子会导致什么后果
梦到考试是什么意思 屁很多是什么原因造成的 直肠疾病都有什么症状 脚后跟疼为什么 天天喝啤酒对身体有什么危害
驻唱是什么意思 37属什么 眼睛发炎吃什么药 911是什么电话 偏头痛吃什么药见效快
双肾尿酸盐结晶是什么意思 亚铁是什么 7.1是什么星座 狗可以吃什么 做造影是什么意思
矽肺病是什么症状hcv9jop4ns9r.cn 经常头疼什么原因zhongyiyatai.com 网是什么结构的字onlinewuye.com 吸烟有害健康为什么国家还生产烟yanzhenzixun.com 吃土豆有什么好处hcv9jop3ns6r.cn
看中医挂什么科hcv8jop0ns5r.cn 早搏吃什么药最管用hcv9jop4ns0r.cn 安徽有什么好吃的hcv9jop0ns0r.cn 老年人尿血是什么原因hcv8jop4ns0r.cn dumpling是什么意思hcv7jop4ns5r.cn
道是什么hcv8jop6ns8r.cn 美国是什么洲hcv9jop5ns3r.cn 睡醒后嘴巴苦什么原因cj623037.com 早上四点是什么时辰hcv8jop2ns2r.cn 嗓子吞咽疼痛吃什么药hcv7jop9ns2r.cn
吃什么死的比较舒服hcv8jop0ns6r.cn 百合有什么作用hcv8jop3ns1r.cn 36周检查什么项目hcv7jop5ns1r.cn 孩子咳嗽吃什么药效果好hcv8jop2ns9r.cn 什么人不能吃香蕉hcv7jop7ns1r.cn
百度