Software multiplataforma - Cross-platform software

Na computação , o software de plataforma cruzada (também software de plataforma múltipla ou software independente de plataforma ) é um software de computador projetado para funcionar em várias plataformas de computação. Alguns softwares de plataforma cruzada requerem uma construção separada para cada plataforma, mas alguns podem ser executados diretamente em qualquer plataforma sem preparação especial, sendo escritos em uma linguagem interpretada ou compilados para bytecode portátil para o qual os intérpretes ou pacotes de tempo de execução são comuns ou padrão componentes de todas as plataformas suportadas.

Por exemplo, um aplicativo de plataforma cruzada pode ser executado no Microsoft Windows , Linux e macOS . O software de plataforma cruzada pode ser executado em muitas plataformas ou em apenas duas. Algumas estruturas para desenvolvimento de plataforma cruzada são Codename One , Kivy , Qt , Flutter , NativeScript , Xamarin , Phonegap , Ionic e React Native .

Plataformas

Plataforma pode se referir ao tipo de processador (CPU) ou outro hardware no qual um sistema operacional (SO) ou aplicativo é executado, o tipo de SO ou uma combinação dos dois. Um exemplo de plataforma comum é o sistema operacional Microsoft Windows em execução na arquitetura x86 . Outras plataformas de desktop bem conhecidas são Linux / Unix e macOS - ambos são plataformas cruzadas. Existem, no entanto, muitos dispositivos, como smartphones, que também são plataformas. Os aplicativos podem ser gravados para depender dos recursos de uma plataforma específica - hardware, sistema operacional ou máquina virtual (VM) em que é executado. Por exemplo, a plataforma Java é uma plataforma VM comum que roda em muitos sistemas operacionais e tipos de hardware.

Hardware

Uma plataforma de hardware pode se referir a uma arquitetura de conjunto de instruções . Por exemplo: arquitetura x86 e suas variantes, como IA-32 e x86-64 . Essas máquinas geralmente executam uma versão do Microsoft Windows, embora possam executar outros sistemas operacionais, incluindo Linux, OpenBSD , NetBSD , macOS e FreeBSD .

As arquiteturas ARM de 32 bits (e a versão mais recente de 64 bits ) são comuns em smartphones e tablets , que executam Android, iOS e outros sistemas operacionais móveis .

Programas

Uma plataforma de software pode ser um sistema operacional ou ambiente de programação , embora mais comumente seja uma combinação de ambos. Uma exceção é o Java , que usa uma VM independente do sistema operacional para executar o bytecode Java . Exemplos de plataformas de software são:

Menor / histórico

Java

A linguagem Java normalmente é compilada para ser executada em uma VM que faz parte da plataforma Java. O Java VM ( JVM ) é uma CPU implementada em software, que executa todo o código Java. Isso permite que o mesmo código seja executado em todos os sistemas que implementam uma JVM. O software Java pode ser executado por um processador Java baseado em hardware . Isso é usado principalmente em sistemas embarcados.

O código Java em execução na JVM tem acesso a serviços relacionados ao sistema operacional, como E / S de disco e acesso à rede, se os privilégios apropriados forem concedidos. A JVM faz as chamadas do sistema em nome do aplicativo Java. Isso permite que os usuários decidam o nível de proteção apropriado, dependendo de uma ACL . Por exemplo, o acesso ao disco e à rede geralmente é habilitado para aplicativos de desktop, mas não para miniaplicativos baseados em navegador . A Java Native Interface (JNI) também pode ser usada para acessar funções específicas do sistema operacional, com perda de portabilidade.

Atualmente, o software Java Standard Edition pode ser executado no Microsoft Windows, macOS, vários sistemas operacionais semelhantes ao Unix e vários sistemas operacionais em tempo real para dispositivos embarcados. Para aplicativos móveis, os plug-ins do navegador são usados ​​para dispositivos baseados em Windows e Mac, e o Android tem suporte integrado para Java. Existem também subconjuntos de Java, como Java Card ou Java Platform, Micro Edition , projetados para dispositivos com recursos limitados.

Implementação

Para que o software seja considerado plataforma cruzada, ele deve funcionar em mais de uma arquitetura de computador ou sistema operacional. O desenvolvimento de tal software pode ser uma tarefa demorada porque diferentes sistemas operacionais têm diferentes interfaces de programação de aplicativos (API). Por exemplo, o Linux usa uma API diferente do Windows.

O software escrito para um sistema operacional pode não funcionar automaticamente em todas as arquiteturas que o sistema operacional suporta. Um exemplo é o OpenOffice.org , que em 2006 não rodava nativamente nos processadores AMD64 ou Intel 64 que implementavam os padrões x86-64; em 2012, foi "principalmente" portado para esses sistemas. Só porque o software é escrito em uma linguagem de programação popular , como C ou C ++ , não significa que será executado em todos os sistemas operacionais que oferecem suporte a essa linguagem - ou mesmo em diferentes versões do mesmo sistema operacional.

Aplicativos da web

Os aplicativos da Web são normalmente descritos como multiplataforma porque, idealmente, são acessíveis a partir de qualquer navegador da Web : o navegador é a plataforma. Os aplicativos da Web geralmente empregam um modelo cliente-servidor , mas variam amplamente em complexidade e funcionalidade. Pode ser difícil conciliar o desejo por recursos com a necessidade de compatibilidade.

Os aplicativos da web básicos executam todo ou a maior parte do processamento de um servidor sem estado e passam o resultado para o navegador da web do cliente. Toda interação do usuário com o aplicativo consiste em trocas simples de solicitações de dados e respostas do servidor. Esse tipo de aplicativo era a norma nas fases iniciais do desenvolvimento de aplicativos da World Wide Web . Esses aplicativos seguem um modelo de transação simples , idêntico ao de servir páginas da web estáticas . Hoje, eles ainda são relativamente comuns, especialmente onde a compatibilidade e a simplicidade entre plataformas são consideradas mais críticas do que a funcionalidade avançada.

Exemplos proeminentes de aplicativos avançados da web incluem a interface da web para Gmail , A9.com , site do Google Maps e o serviço Live Search (agora Bing ) da Microsoft. Esses aplicativos dependem rotineiramente de recursos adicionais encontrados apenas nas versões mais recentes de navegadores da web populares. Esses recursos incluem Ajax , JavaScript , HTML dinâmico , SVG e outros componentes de aplicativos da web ricos . Freqüentemente, as versões mais antigas não possuem esses recursos.

Projeto

Por causa dos interesses conflitantes de compatibilidade e funcionalidade, surgiram várias estratégias de design.

Muitos sistemas de software usam uma arquitetura em camadas onde o código dependente da plataforma é restrito às camadas superiores e inferiores.

Degradação graciosa

A degradação graciosa tenta fornecer a mesma funcionalidade ou similar a todos os usuários e plataformas, enquanto diminui essa funcionalidade a um denominador comum para navegadores de cliente mais limitados. Por exemplo, um usuário que tenta usar um navegador de recursos limitados para acessar o Gmail pode perceber que o Gmail muda para o modo básico, com funcionalidade reduzida, mas ainda útil.

Múltiplas bases de código

Alguns softwares são mantidos em bases de código distintas para plataformas diferentes (hardware e sistema operacional), com funcionalidade equivalente. Isso requer mais esforço para manter o código, mas pode valer a pena onde a quantidade de código específico da plataforma é alta.

Base de código única

Essa estratégia depende de ter uma base de código que pode ser compilada em vários formatos específicos de plataforma. Uma técnica é a compilação condicional . Com essa técnica, o código comum a todas as plataformas não é repetido. Os blocos de código que são relevantes apenas para certas plataformas são tornados condicionais, para que sejam interpretados ou compilados apenas quando necessário. Outra técnica é a separação de funcionalidade, que desativa funcionalidades não suportadas por navegadores ou sistemas operacionais, ao mesmo tempo que fornece um aplicativo completo para o usuário. (Consulte também: Separação de interesses .) Essa técnica é usada no desenvolvimento da web, onde o código interpretado (como em linguagens de script) pode consultar a plataforma em que está sendo executado para executar diferentes blocos condicionalmente.

Bibliotecas de terceiros

Bibliotecas de terceiros tentam simplificar a capacidade de plataforma cruzada, ocultando as complexidades da diferenciação do cliente por trás de uma API única e unificada, às custas do aprisionamento do fornecedor .

Web design responsivo

Web design responsivo (RWD) é uma abordagem de design da Web que visa criar o layout visual de sites para fornecer uma experiência de visualização ideal - leitura e navegação fáceis com um mínimo de redimensionamento, panorâmica e rolagem - em uma ampla variedade de dispositivos, de dispositivos móveis telefones para monitores de computador desktop. Pouco ou nenhum código específico da plataforma é usado com essa técnica.

Testando

Os aplicativos de plataforma cruzada precisam de muito mais testes de integração . Alguns navegadores da web proíbem a instalação de versões diferentes na mesma máquina. Existem várias abordagens usadas para atingir várias plataformas, mas todas elas resultam em software que requer um esforço manual substancial para teste e manutenção. Técnicas como a virtualização completa às vezes são usadas como uma solução alternativa para esse problema.

Ferramentas como o Modelo de Objeto de Página permitem que testes de plataforma cruzada sejam feitos em script para que um caso de teste cubra várias versões de um aplicativo. Se versões diferentes tiverem interfaces de usuário semelhantes, todas podem ser testadas com um caso de teste.

Aplicações tradicionais

Os aplicativos da Web estão se tornando cada vez mais populares, mas muitos usuários de computador ainda usam softwares de aplicativos tradicionais que não dependem de uma arquitetura cliente / servidor da Web. A distinção entre aplicativos tradicionais e da web nem sempre é clara. Recursos, métodos de instalação e arquiteturas para aplicativos da web e tradicionais se sobrepõem e confundem a distinção. No entanto, essa distinção simplificadora é uma generalização comum e útil.

Software binário

O software de aplicativo tradicional foi distribuído como arquivos binários, especialmente arquivos executáveis . Os executáveis ​​suportam apenas a plataforma para a qual foram criados - o que significa que um único executável de plataforma cruzada pode ser muito inchado com código que nunca é executado em uma plataforma específica. Em vez disso, geralmente há uma seleção de executáveis, cada um construído para uma plataforma.

Para software que é distribuído como um executável binário, como aquele escrito em C ou C ++, deve haver uma construção de software para cada plataforma, usando um conjunto de ferramentas que traduz - transcompilar - uma única base de código em vários executáveis ​​binários. Por exemplo, o Firefox , um navegador de código aberto, está disponível no Windows, macOS ( PowerPC e x86 por meio do que a Apple Inc. chama de binário universal ), Linux e BSD em várias arquiteturas de computador. As quatro plataformas (neste caso, Windows, macOS, Linux e BSD) são distribuições executáveis ​​separadas, embora venham em grande parte do mesmo código-fonte .

O uso de conjuntos de ferramentas diferentes pode não ser suficiente para construir executáveis ​​funcionais para plataformas diferentes. Nesse caso, os programadores devem portar o código-fonte para a nova plataforma. Por exemplo, um aplicativo como o Firefox, que já roda no Windows na família x86, pode ser modificado e reconstruído para rodar no Linux no x86 (e potencialmente em outras arquiteturas) também. As múltiplas versões do código podem ser armazenadas como bases de código separadas ou mescladas em uma base de código.

Uma alternativa para a portabilidade é a virtualização de plataforma cruzada , onde os aplicativos compilados para uma plataforma podem ser executados em outra sem modificação do código-fonte ou dos binários. Como exemplo, o Rosetta da Apple , que é integrado em computadores Macintosh baseados em Intel , executa aplicativos compilados para a geração anterior de Macs que usavam CPUs PowerPC. Outro exemplo é o IBM PowerVM Lx86 , que permite que aplicativos Linux / x86 sejam executados sem modificações no sistema operacional Linux / Power.

Exemplo de software binário de plataforma cruzada:

  • O pacote de escritório LibreOffice é construído para Microsoft Windows, macOS, muitas distribuições Linux, FreeBSD , NettBSD , OpenBSD , Android, iOS, Chrome OS, Collabora Online baseado na web e muitos outros. Muitos deles são suportados em várias plataformas de hardware com arquiteturas de processador, incluindo IA-32 , x86-64 e ARM .

Scripts e linguagens interpretadas

Um script pode ser considerado multiplataforma se seu intérprete estiver disponível em várias plataformas e o script usar apenas os recursos integrados à linguagem. Por exemplo, um script escrito em Python para um sistema semelhante ao Unix provavelmente será executado com pouca ou nenhuma modificação no Windows, porque o Python também é executado no Windows; na verdade, existem muitas implementações (por exemplo, IronPython para .NET Framework ). O mesmo vale para muitas das linguagens de script de código aberto .

Ao contrário dos arquivos binários executáveis, o mesmo script pode ser usado em todos os computadores que possuem software para interpretar o script. Isso ocorre porque o script geralmente é armazenado em texto simples em um arquivo de texto . Pode haver alguns problemas triviais, como a representação de um novo caractere de linha .

Algumas linguagens de script de plataforma cruzada populares são:

  • bash - Um shell Unix comumente executado no Linux e outros sistemas modernos semelhantes ao Unix, bem como no Windows através da camada de compatibilidade Cygwin POSIX .
  • Perl - lançado pela primeira vez em 1987. Usado para programação CGI , pequenas tarefas de administração de sistema e muito mais.
  • PHP - mais usado para aplicativos da web.
  • Python - uma linguagem que se concentra no desenvolvimento rápido de aplicativos e na facilidade de escrita, em vez da eficiência do tempo de execução.
  • Ruby - Uma linguagem orientada a objetos que visa ser fácil de ler. Também pode ser usado na web através do Ruby on Rails .
  • Tcl - uma linguagem de programação dinâmica, adequada para uma ampla variedade de usos, incluindo aplicativos da Web e de desktop, rede, administração, teste e muitos mais.

Jogos de vídeo

Plataforma cruzada ou multiplataforma é um termo que também pode ser aplicado a videogames lançados em uma variedade de consoles de videogame . Exemplos de jogos de plataforma cruzada incluem: Miner 2049er , Tomb Raider: Legend , série FIFA , série NHL e Minecraft .

Cada um foi lançado em uma variedade de plataformas de jogos, como Wii , PlayStation 3 , Xbox 360 , computadores pessoais e dispositivos móveis .

As plataformas Sone são mais difíceis de escrever do que outras. Para compensar isso, um videogame pode ser lançado em algumas plataformas primeiro e depois em outras. Normalmente, isso acontece quando um novo sistema de jogo é lançado, porque os desenvolvedores de videogames precisam se familiarizar com seu hardware e software.

Alguns jogos podem não ser multiplataforma devido a acordos de licenciamento entre desenvolvedores e fabricantes de consoles de videogame que limitam o desenvolvimento a um console específico. Por exemplo, a Disney poderia criar um jogo com a intenção de ser lançado nos últimos consoles de jogos Nintendo e Sony . Se a Disney licenciar o jogo com a Sony primeiro, pode ser necessário lançar o jogo apenas no console da Sony por um curto período de tempo ou indefinidamente .

Jogo multiplataforma

Vários desenvolvedores implementaram maneiras de jogar jogos online usando plataformas diferentes. Psyonix , Epic Games , Microsoft e Valve possuem tecnologia que permite que jogadores de Xbox 360 e PlayStation 3 joguem com jogadores de PC, deixando a decisão de qual plataforma usar para os consumidores. O primeiro jogo a permitir esse nível de interatividade entre os jogos para PC e console foi o Quake 3 .

Jogos que possuem multi-plataforma jogo on-line incluem foguete League , Final Fantasy XIV , Street Fighter V , Killer Instinct , Paragon e Fable Fortune , e Minecraft com a sua actualização em conjunto melhor no Windows 10 , edições VR, Pocket Edition e Xbox One .

Programação

A programação de plataforma cruzada é a prática de escrever software deliberadamente para funcionar em mais de uma plataforma.

Abordagens

Existem diferentes maneiras de escrever um aplicativo de plataforma cruzada. Uma abordagem é criar várias versões do mesmo software em diferentes árvores de origem - em outras palavras, a versão do Microsoft Windows de um aplicativo pode ter um conjunto de arquivos de código-fonte e a versão do Macintosh outro, enquanto um sistema FOSS * nix pode ter um terceiro. Embora isso seja direto, em comparação com o desenvolvimento para apenas uma plataforma, pode custar muito mais pagar uma equipe maior ou lançar produtos mais lentamente. Isso também pode resultar em mais bugs a serem rastreados e corrigidos.

Outra abordagem é usar um software que esconda as diferenças entre as plataformas. Essa camada de abstração isola o aplicativo da plataforma. Esses aplicativos são independentes de plataforma . Os aplicativos executados na JVM são construídos dessa maneira.

Alguns aplicativos combinam vários métodos de programação de plataforma cruzada para criar o aplicativo final. Um exemplo é o navegador Firefox, que usa abstração para construir alguns dos componentes de nível inferior, com subárvores de origem separadas para a implementação de recursos específicos da plataforma (como a GUI) e a implementação de mais de uma linguagem de script para facilitar a portabilidade do software . O Firefox implementa XUL , CSS e JavaScript para estender o navegador, além dos clássicos plug-ins de navegador no estilo Netscape . Muito do próprio navegador é escrito em XUL, CSS e JavaScript.

Kits de ferramentas e ambientes

Existem ferramentas mant disponíveis para ajudar o processo de programação de plataforma cruzada:

  • 8º: uma linguagem de desenvolvimento que utiliza Juce como sua camada GUI. Atualmente suporta Android, iOS, Windows, macOS, Linux e Raspberry Pi.
  • Anant Computing : Uma plataforma de aplicativo móvel que funciona em todos os idiomas indianos, incluindo seus teclados, e também oferece suporte a AppWallet e desempenho nativo em todos os sistemas operacionais.
  • AppearIQ : uma estrutura que oferece suporte ao fluxo de trabalho de desenvolvimento e implantação de aplicativos em um ambiente corporativo. Os contêineres desenvolvidos de forma nativa apresentam recursos de hardware dos dispositivos móveis ou tablets por meio de uma API para código HTML5, facilitando assim o desenvolvimento de aplicativos móveis que rodam em diferentes plataformas.
  • Boden: uma estrutura de IU escrita em C ++.
  • Cairo : uma biblioteca de software livre usada para fornecer uma API independente de dispositivo baseada em gráficos vetoriais. Ele é projetado para fornecer primitivas para desenho bidimensional em vários back-ends diferentes. Cairo é escrito em C e possui ligações para muitas linguagens de programação.
  • Cocos2d : um kit de ferramentas e mecanismo de jogo de código aberto para o desenvolvimento de jogos e aplicativos 2D e 3D simples de plataforma cruzada.
  • Codename One : uma estrutura de código aberto Write Once Run Anywhere (WORA) para desenvolvedores Java e Kotlin.
  • Delphi : um IDE que usa uma linguagem baseada em Pascal para o desenvolvimento. Suporta Android, iOS, Windows, macOS, Linux.
  • Ecere SDK: uma GUI e kit de ferramentas de gráficos 2D / 3D e IDE, escrito em eC e com suporte para linguagens adicionais, como C e Python. Suporta Linux, FreeBSD, Windows, Android, macOS e Web através de Emscripten ou Binaryen (WebAssembly).
  • Eclipse : um ambiente de desenvolvimento de código aberto. Implementado em Java com uma arquitetura configurável que suporta diversas ferramentas de desenvolvimento de software. Os complementos estão disponíveis para várias linguagens, incluindo Java e C ++.
  • FLTK : um kit de ferramentas de código aberto, mas mais leve porque se restringe à GUI.
  • Flutter : uma estrutura de interface de usuário de plataforma cruzada para Android e iOS desenvolvida pelo Google .
  • fpGUI : Um kit de ferramentas de widget de código aberto totalmente implementado em Object Pascal. Atualmente suporta Linux, Windows e um pouco de Windows CE.
  • GeneXus : Uma solução de desenvolvimento rápido de software Windows para criação e implantação de aplicações multiplataforma baseada em representação de conhecimento e suporte a C # , COBOL , Java incluindo dispositivos inteligentes Android e BlackBerry, Objective-C para dispositivos móveis Apple , RPG , Ruby , Visual Basic , e Visual FoxPro .
  • GLBasic : Um dialeto e compilador BASIC que gera código C ++. Inclui compiladores cruzados para muitas plataformas e suporta várias plataformas (Windows, Mac, Linux, Android, iOS e alguns dispositivos portáteis exóticos).
  • Godot : um SDK que usa Godot Engine.
  • GTK + : Um kit de ferramentas de widget de código aberto para sistemas do tipo Unix com X11 e Microsoft Windows.
  • Haxe : uma linguagem de código aberto.
  • Juce : Uma estrutura de aplicativo escrita em C ++, usada para escrever software nativo em vários sistemas (Microsoft Windows, POSIX, macOS), sem nenhuma alteração no código.
  • Kivy : um framework de interface do usuário de plataforma cruzada de código aberto escrito em Python . Suporta Android , iOS , Linux , OS X , Windows e Raspberry Pi .
  • LEADTOOLS : Bibliotecas SDK de plataforma cruzada para integrar tecnologias de reconhecimento, documentos, médicas, de imagem e multimídia em Windows, iOS, macOS, Android, Linux e aplicativos da web.
  • LiveCode : uma linguagem de desenvolvimento rápido de aplicativos de plataforma cruzada comercial inspirada no HyperTalk.
  • Lazarus : Um ambiente de programação para o Compilador FreePascal. Ele suporta a criação de aplicativos gráficos e de console independentes e é executado em Linux, MacOSX, iOS, Android, WinCE, Windows e WEB.
  • Max / MSP : uma linguagem de programação visual que encapsula código independente de plataforma com um ambiente de tempo de execução específico da plataforma em aplicativos para macOS e Windows. Um tempo de execução do Android de plataforma cruzada. Ele permite que aplicativos Android não modificados sejam executados nativamente no iOS e macOS
  • Mendix : uma plataforma de desenvolvimento de aplicativos de baixo código baseada em nuvem.
  • MonoCross : um padrão de design de modelo-visão-controlador de código aberto onde o modelo e o controlador são multiplataforma, mas a visão é específica da plataforma.
  • Mono : uma versão de plataforma cruzada de código aberto do Microsoft .NET (uma estrutura para aplicativos e linguagens de programação)
  • MoSync : um SDK de código aberto para desenvolvimento de aplicativos de plataforma móvel na família C ++.
  • Framework de aplicativos Mozilla : uma plataforma de código aberto para a construção de aplicativos macOS, Windows e Linux.
  • Uma estrutura JavaScript / TypeScript de plataforma cruzada para desenvolvimento Android e iOS.
  • OpenGL : uma biblioteca de gráficos 3D.
  • Pixel Game Maker MV : Um software de desenvolvimento de jogos 2D proprietário para Windows para o desenvolvimento de jogos Windows e Nintendo Switch .
  • PureBasic : uma linguagem proprietária e IDE para construir aplicativos macOS, Windows e Linux.
  • ReNative : O SDK de desenvolvimento universal para construir projetos multiplataforma com React Native. Inclui as mais recentes plataformas iOS, tvOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG webOS, macOS / OSX, Windows, KaiOS, Firefox OS e Firefox TV.
  • Qt : uma estrutura de aplicativo e um kit de ferramentas de widget para sistemas do tipo Unix com X11 , Microsoft Windows, macOS e outros sistemas - disponíveis sob licenças proprietárias e de código aberto .
  • Biblioteca multimídia simples e rápida: uma API C ++ multimídia que fornece acesso de baixo e alto nível a gráficos, entrada, áudio, etc.
  • Camada DirectMedia simples : uma biblioteca multimídia de código aberto escrita em C que cria uma abstração sobre gráficos, sons e APIs de entrada de várias plataformas . Ele roda em sistemas operacionais, incluindo Linux, Windows e macOS e é voltado para jogos e aplicativos de multimídia.
  • Smartface : uma ferramenta nativa de desenvolvimento de aplicativos para criar aplicativos móveis para Android e iOS, usando o editor de design WYSIWYG com editor de código JavaScript.
  • Tcl / Tk
  • Ultimate ++ : um framework de desenvolvimento rápido de aplicativos C ++ focado na produtividade dos programadores. Inclui um conjunto de bibliotecas (GUI, SQL, etc.) e um ambiente de desenvolvimento integrado. Suporta sistemas operacionais Windows e Unix-like.
  • Unity : outro SDK de plataforma cruzada que usa o Unity Engine.
  • Plataforma Uno : Windows, macOS, iOS, Android, WebAssembly e Linux usando C #.
  • Unreal : Um SDK de plataforma cruzada que usa Unreal Engine.
  • V-Play Engine : V-Play é um SDK de desenvolvimento de plataforma cruzada baseado no popular framework Qt. Aplicativos e jogos V-Play são criados dentro do Qt Creator.
  • WaveMaker : Uma ferramenta de desenvolvimento de baixo código para criar aplicativos web responsivos e aplicativos móveis híbridos (Android e iOS).
  • WinDev: um ambiente de desenvolvimento integrado para Windows, Linux, .Net e Java e navegadores da web. Otimizado para aplicações comerciais e industriais.
  • wxWidgets : um kit de ferramentas de widget de código aberto que também é uma estrutura de aplicativo . Ele roda em sistemas do tipo Unix com X11 , Microsoft Windows e macOS.
  • Xojo : um RAD IDE que usa uma linguagem de programação orientada a objetos para criar aplicativos de desktop, web e iOS. Xojo faz aplicativos de desktop compilados nativos para macOS, Windows, Linux e Raspberry Pi. Ele cria aplicativos web compilados que podem ser executados como servidores autônomos ou por meio de CGI. E recentemente adicionou a capacidade de criar aplicativos iOS nativos.

Desafios

Existem muitos desafios ao desenvolver software de plataforma cruzada.

  • Testar aplicativos de plataforma cruzada pode ser consideravelmente mais complicado, uma vez que plataformas diferentes podem exibir comportamentos ligeiramente diferentes ou bugs sutis. Esse problema levou alguns desenvolvedores a ridicularizar o desenvolvimento de plataforma cruzada como "escreva uma vez, depure em todos os lugares", uma visão do slogan de marketing " escreva uma vez, execute em qualquer lugar " da Sun Microsystems .
  • Os desenvolvedores geralmente estão restritos a usar o subconjunto de recursos de menor denominador comum que está disponível em todas as plataformas. Isso pode prejudicar o desempenho do aplicativo ou impedir que os desenvolvedores usem os recursos mais avançados de cada plataforma.
  • Plataformas diferentes geralmente têm convenções de interface de usuário diferentes, que os aplicativos de plataforma cruzada nem sempre acomodam. Por exemplo, os aplicativos desenvolvidos para macOS e GNOME devem colocar o botão mais importante no lado direito de uma janela ou caixa de diálogo, enquanto o Microsoft Windows e o KDE têm a convenção oposta. Embora muitas dessas diferenças sejam sutis, um aplicativo de plataforma cruzada que não esteja em conformidade com essas convenções pode parecer desajeitado ou estranho para o usuário. Ao trabalhar rapidamente, essas convenções opostas podem até resultar em perda de dados , como em uma caixa de diálogo confirmando se deve salvar ou descartar as alterações.
  • Linguagens de script e bytecode VM devem ser traduzidos em código executável nativo cada vez que são usados, impondo uma penalidade de desempenho. Essa penalidade pode ser atenuada usando técnicas como compilação just-in-time ; mas alguma sobrecarga computacional pode ser inevitável.
  • Diferentes plataformas requerem o uso de formatos de pacote nativos, como RPM e MSI . Instaladores multiplataforma, como o InstallAnywhere, atendem a essa necessidade.
  • Ambientes de execução de plataforma cruzada podem sofrer falhas de segurança de plataforma cruzada, criando um ambiente fértil para malware de plataforma cruzada.

Veja também

Referências