Platformlar arası yazılım - Cross-platform software

Bilgi işlemde , platformlar arası yazılım (ayrıca çok platformlu yazılım veya platformdan bağımsız yazılım ), çeşitli bilgi işlem platformlarında çalışmak üzere tasarlanmış bilgisayar yazılımıdır . Bazı platformlar arası yazılımlar, her platform için ayrı bir yapı gerektirir, ancak bazıları özel bir hazırlık olmaksızın herhangi bir platformda doğrudan çalıştırılabilir, yorumlanmış bir dilde yazılabilir veya yorumlayıcıların veya çalışma zamanı paketlerinin ortak veya standart olduğu taşınabilir bayt koduna derlenebilir. desteklenen tüm platformların bileşenleri.

Örneğin, bir çapraz platform uygulaması Microsoft Windows , Linux ve macOS üzerinde çalışabilir . Platformlar arası yazılım, birçok platformda veya iki platformda çalışabilir. Platformlar arası geliştirme için bazı çerçeveler Codename One , Kivy , Qt , Flutter , NativeScript , Xamarin , Phonegap , Ionic ve React Native'dir .

Platformlar

Platform , üzerinde bir işletim sisteminin (OS) veya uygulamanın çalıştığı işlemcinin (CPU) veya diğer donanımın türünü, işletim sisteminin türünü veya ikisinin birleşimini ifade edebilir. Ortak bir platform örneği , x86 mimarisi üzerinde çalışan Microsoft Windows işletim sistemidir . Diğer iyi bilinen masaüstü platformları, her ikisi de çapraz platform olan Linux / Unix ve macOS'tur . Bununla birlikte, akıllı telefonlar gibi aynı zamanda platform olan birçok cihaz var . Uygulamalar, üzerinde çalıştığı donanım, işletim sistemi veya sanal makine (VM) gibi belirli bir platformun özelliklerine bağlı olarak yazılabilir . Örneğin Java platformu , birçok işletim sistemi ve donanım türünde çalışan ortak bir VM platformudur.

Donanım

Bir donanım platformu, bir talimat seti mimarisine atıfta bulunabilir . Örneğin: x86 mimarisi ve IA-32 ve x86-64 gibi türevleri . Bu makineler, Linux, OpenBSD , NetBSD , macOS ve FreeBSD dahil olmak üzere diğer işletim sistemlerini çalıştırabilmelerine rağmen, genellikle Microsoft Windows'un bir sürümünü çalıştırır .

32 bit ARM mimariler (ve daha yeni 64-bit sürüm) akıllı telefonlar ve üzerinde yaygındır tablet bilgisayarlar Android, iOS ve diğer çalıştırmak, mobil işletim sistemleri .

Yazılım

Bir yazılım platformu , bir işletim sistemi veya programlama ortamı olabilir , ancak daha yaygın olarak her ikisinin birleşimidir. Java bayt kodunu yürütmek için işletim sisteminden bağımsız bir VM kullanan Java bir istisnadır . Yazılım platformlarına örnekler:

küçük/tarihi

Java

Java dili genellikle Java platformunun bir parçası olan bir VM üzerinde çalışacak şekilde derlendi. Java VM ( JVM ), tüm Java kodunu çalıştıran, yazılımda uygulanan bir CPU'dur. Bu, aynı kodun bir JVM uygulayan tüm sistemlerde çalışmasını sağlar. Java yazılımı, donanım tabanlı bir Java işlemcisi tarafından yürütülebilir . Bu daha çok gömülü sistemlerde kullanılır.

JVM'de çalışan Java kodunun, uygun ayrıcalıklar verilirse, disk G/Ç ve ağ erişimi gibi işletim sistemi ile ilgili hizmetlere erişimi vardır. JVM, sistem çağrılarını Java uygulaması adına yapar. Bu, kullanıcıların bir ACL'ye bağlı olarak uygun koruma düzeyine karar vermelerini sağlar . Örneğin, disk ve ağ erişimi genellikle masaüstü uygulamaları için etkinleştirilir, ancak tarayıcı tabanlı uygulamalar için etkinleştirilmez . Java Native Interface (JNI) da taşınabilirlik kaybı ile erişim OS özgü işlevler için kullanılabilir.

Şu anda Java Standard Edition yazılımı Microsoft Windows, macOS, birkaç Unix benzeri işletim sistemi ve gömülü aygıtlar için birkaç gerçek zamanlı işletim sistemi üzerinde çalışabilir . Mobil uygulamalar için, Windows ve Mac tabanlı cihazlar için tarayıcı eklentileri kullanılır ve Android, Java için yerleşik desteğe sahiptir. Kaynak kısıtlı cihazlar için tasarlanmış Java Kartı veya Java Platformu, Micro Edition gibi Java alt kümeleri de vardır .

uygulama

Yazılımın çapraz platform olarak kabul edilebilmesi için birden fazla bilgisayar mimarisinde veya işletim sisteminde çalışıyor olması gerekir . Farklı işletim sistemleri farklı uygulama programlama arayüzlerine (API) sahip olduğundan, bu tür yazılımların geliştirilmesi zaman alıcı bir görev olabilir . Örneğin, Linux, Windows'tan farklı bir API kullanır.

Bir işletim sistemi için yazılan yazılım, işletim sisteminin desteklediği tüm mimarilerde otomatik olarak çalışmayabilir. Bir örnek, 2006'da x86-64 standartlarını uygulayan AMD64 veya Intel 64 işlemcilerde yerel olarak çalışmayan OpenOffice.org'dur ; 2012 yılına kadar "çoğunlukla" bu sistemlere taşındı. Yazılımın C veya C++ gibi popüler bir programlama dilinde yazılmış olması , o dili destekleyen tüm işletim sistemlerinde veya hatta aynı işletim sisteminin farklı sürümlerinde çalışacağı anlamına gelmez.

internet uygulamaları

Web uygulamaları tipik olarak platformlar arası olarak tanımlanır, çünkü ideal olarak herhangi bir web tarayıcısından erişilebilirler : tarayıcı platformdur. Web uygulamaları genellikle bir istemci-sunucu modeli kullanır , ancak karmaşıklık ve işlevsellik açısından büyük farklılıklar gösterir. Uyumluluk ihtiyacı ile özellik arzusunu uzlaştırmak zor olabilir.

Temel web uygulamaları, işlemlerin tamamını veya çoğunu durum bilgisi olmayan bir sunucudan gerçekleştirir ve sonucu istemci web tarayıcısına iletir. Uygulama ile tüm kullanıcı etkileşimi, basit veri istekleri ve sunucu yanıtları alışverişinden oluşur. Bu tür bir uygulama, World Wide Web uygulama geliştirmesinin ilk aşamalarında normdu . Bu tür uygulamalar , statik web sayfalarının sunulmasıyla aynı olan basit bir işlem modelini takip eder . Bugün, özellikle platformlar arası uyumluluğun ve basitliğin gelişmiş işlevsellikten daha önemli olduğu düşünüldüğünde, hala nispeten yaygındır.

Gelişmiş web uygulamalarının öne çıkan örnekleri arasında, Gmail'in Web arayüzü , A9.com , Google Haritalar web sitesi ve Microsoft'un Canlı Arama hizmeti (şimdi Bing ) bulunmaktadır. Bu tür uygulamalar rutin olarak yalnızca popüler web tarayıcılarının daha yeni sürümlerinde bulunan ek özelliklere bağlıdır. Bu özellikler, Ajax , JavaScript , Dinamik HTML , SVG ve zengin web uygulamalarının diğer bileşenlerini içerir . Eski sürümler genellikle bunlardan yoksundur.

Tasarım

Uyumluluk ve işlevsellik arasındaki rekabet nedeniyle çok sayıda tasarım stratejisi ortaya çıkmıştır.

Çoğu yazılım sistemi , platforma bağlı kodun en üst ve en alt katmanlarla sınırlı olduğu katmanlı bir mimari kullanır .

zarif bozulma

Zarif bozulma, tüm kullanıcılara ve platformlara aynı veya benzer işlevselliği sağlamaya çalışırken, bu işlevselliği daha sınırlı istemci tarayıcıları için en az ortak paydaya indirger. Örneğin, Gmail'e erişmek için sınırlı özellikli bir tarayıcı kullanmaya çalışan bir kullanıcı, Gmail'in işlevsellik azaltılmış, ancak yine de kullanımda olan temel moda geçtiğini fark edebilir.

Birden çok kod tabanı

Bazı yazılımlar, eşdeğer işlevselliğe sahip farklı (donanım ve işletim sistemi) platformları için farklı kod tabanlarında korunur. Bu, kodu korumak için daha fazla çaba gerektirir, ancak platforma özel kod miktarının yüksek olduğu durumlarda faydalı olabilir.

Tek kod tabanı

Bu strateji, birden çok platforma özgü formatta derlenebilen bir kod tabanına sahip olmaya dayanır. Bir teknik koşullu derlemedir . Bu teknikle tüm platformlarda ortak olan kod tekrarlanmaz. Yalnızca belirli platformlarla ilgili olan kod blokları, yalnızca gerektiğinde yorumlanmaları veya derlenmeleri için koşullu hale getirilir . Başka bir teknik, tarayıcılar veya işletim sistemleri tarafından desteklenmeyen işlevselliği devre dışı bırakırken, kullanıcıya eksiksiz bir uygulama sunmaya devam eden işlevselliğin ayrılmasıdır. (Ayrıca bakınız: Endişelerin ayrılması .) Bu teknik, yorumlanmış kodun (kodlama dillerinde olduğu gibi) farklı blokları koşullu olarak yürütmek için üzerinde çalıştığı platformu sorgulayabildiği web geliştirmede kullanılır.

Üçüncü taraf kitaplıkları

Üçüncü taraf kitaplıkları, satıcı bağımlılığı pahasına, istemci farklılaşmasının karmaşıklıklarını tek bir birleşik API'nin arkasına saklayarak platformlar arası yeteneği basitleştirmeye çalışır .

Duyarlı Web tasarımı

Duyarlı web tasarımı (RWD), mobil cihazlardan çok çeşitli cihazlarda en uygun görüntüleme deneyimi (minimum yeniden boyutlandırma, kaydırma ve kaydırma ile kolay okuma ve gezinme) sağlamak için sitelerin görsel düzenini oluşturmayı amaçlayan bir Web tasarımı yaklaşımıdır. telefonları masaüstü bilgisayar monitörlerine. Bu teknikte platforma özel kod çok az kullanılır veya hiç kullanılmaz.

Test yapmak

Platformlar arası uygulamalar çok daha fazla entegrasyon testine ihtiyaç duyar . Bazı web tarayıcıları, aynı makineye farklı sürümlerin yüklenmesini yasaklar. Birden çok platformu hedeflemek için kullanılan çeşitli yaklaşımlar vardır, ancak bunların tümü, test ve bakım için önemli ölçüde manuel çaba gerektiren yazılımlarla sonuçlanır. Tam sanallaştırma gibi teknikler bazen bu soruna geçici bir çözüm olarak kullanılır.

Sayfa Nesnesi Modeli gibi araçlar, platformlar arası testlerin komut dosyasının yazılmasına izin verir, böylece bir test senaryosu bir uygulamanın birden çok sürümünü kapsar. Farklı sürümlerin benzer kullanıcı arayüzleri varsa, hepsi tek bir test senaryosu ile test edilebilir.

Geleneksel uygulamalar

Web uygulamaları giderek daha popüler hale geliyor, ancak birçok bilgisayar kullanıcısı hala bir istemci/web-sunucu mimarisine dayanmayan geleneksel uygulama yazılımlarını kullanıyor. Geleneksel ve web uygulamaları arasındaki ayrım her zaman net değildir. Web ve geleneksel uygulamalar için özellikler, kurulum yöntemleri ve mimariler örtüşüyor ve bu ayrımı bulanıklaştırıyor. Bununla birlikte, bu basitleştirici ayrım, yaygın ve faydalı bir genellemedir.

ikili yazılım

Geleneksel uygulama yazılımı, ikili dosyalar, özellikle yürütülebilir dosyalar olarak dağıtılmıştır . Yürütülebilir dosyalar yalnızca oluşturuldukları platformu destekler; bu, tek bir platformlar arası yürütülebilir dosyanın belirli bir platformda hiçbir zaman yürütülmeyen kodla çok şişirilebileceği anlamına gelir. Bunun yerine, genellikle her biri bir platform için oluşturulmuş bir dizi yürütülebilir dosya vardır.

C veya C++ ile yazılanlar gibi ikili yürütülebilir dosya olarak dağıtılan yazılımlar için , her platform için, tek bir kod tabanını birden çok ikili yürütülebilir dosyaya çeviren—dönüştüren—bir araç seti kullanan bir yazılım yapısı olmalıdır . Örneğin, Firefox , açık kaynak web tarayıcısı, Windows üzerinde kullanılabilir, MacOS (hem PowerPC ve x86 neyi aracılığıyla Apple Inc bir çağıran Evrensel ikili çoklu bilgisayar mimarileri üzerine), Linux ve BSD. Dört platform (bu durumda, Windows, macOS, Linux ve BSD), büyük ölçüde aynı kaynak kodundan gelmelerine rağmen ayrı yürütülebilir dağıtımlardır .

Farklı platformlar için çalışan bir yürütülebilir dosya oluşturmak için farklı araç setlerinin kullanılması yeterli olmayabilir. Bu durumda, zorunluluk programcıları port yeni platforma kaynak kodunu. Örneğin, x86 ailesinde Windows üzerinde halihazırda çalışan Firefox gibi bir uygulama, Linux üzerinde x86'da (ve potansiyel olarak diğer mimarilerde) çalışacak şekilde değiştirilebilir ve yeniden oluşturulabilir. Kodun birden çok sürümü ayrı kod tabanları olarak saklanabilir veya tek bir kod tabanında birleştirilebilir.

Taşımaya bir alternatif , bir platform için derlenen uygulamaların kaynak kodu veya ikili dosyaları değiştirmeden başka bir platformda çalışabildiği çapraz platform sanallaştırmadır . Örnek olarak, Intel tabanlı Macintosh bilgisayarlarda yerleşik olarak bulunan Apple'ın Rosetta'sı , PowerPC CPU'larını kullanan önceki nesil Mac'ler için derlenmiş uygulamaları çalıştırır. Başka bir örnek, Linux/x86 uygulamalarının Linux/Power OS üzerinde değiştirilmeden çalışmasına izin veren IBM PowerVM Lx86'dır .

Platformlar arası ikili yazılım örneği:

  • LibreOffice ofis paketi Microsoft Windows, MacOS, birçok Linux dağıtımı için inşa edilmiştir FreeBSD , NettBSD , OpenBSD , Android, iOS, Chrome OS web tabanlı Collabora Online'da ve diğerleri. Bunların çoğu, IA-32 , x86-64 ve ARM dahil olmak üzere işlemci mimarilerine sahip çeşitli donanım platformlarında desteklenir .

Komut dosyaları ve yorumlanmış diller

Bir komut dosyası, yorumlayıcısı birden fazla platformda mevcutsa ve komut dosyası yalnızca dilde yerleşik özellikleri kullanıyorsa, platformlar arası olarak kabul edilebilir . Örneğin, Unix benzeri bir sistem için Python'da yazılmış bir komut dosyası , Python ayrıca Windows'ta da çalıştığından, muhtemelen Windows'ta çok az değişiklikle veya hiç değişiklik yapılmadan çalışacaktır; aslında pek çok uygulama vardır (örneğin .NET Framework için IronPython ). Aynı şey açık kaynaklı betik dillerinin çoğu için de geçerlidir .

İkili yürütülebilir dosyalardan farklı olarak, aynı komut dosyası, komut dosyasını yorumlamak için yazılıma sahip tüm bilgisayarlarda kullanılabilir. Bunun nedeni, komut dosyasının genellikle düz metin olarak bir metin dosyasında saklanmasıdır . Yeni bir satır karakterinin temsili gibi bazı önemsiz sorunlar olabilir .

Bazı popüler platformlar arası komut dosyası dilleri şunlardır:

  • bash – Bir Unix kabuğu, genellikle Linux ve diğer modern Unix benzeri sistemlerde ve ayrıca Windows'ta Cygwin POSIX uyumluluk katmanı aracılığıyla çalışır .
  • Perl – İlk olarak 1987'de yayınlandı. CGI programlama, küçük sistem yönetimi görevleri ve daha fazlası için kullanılır.
  • PHP – Çoğunlukla web uygulamaları için kullanılır.
  • Python – Çalışma zamanı verimliliği yerine hızlı uygulama geliştirmeye ve yazma kolaylığına odaklanan bir dil .
  • Ruby – Okunması kolay olmayı amaçlayan nesne yönelimli bir dil. Ruby on Rails aracılığıyla web üzerinde de kullanılabilir .
  • Tcl – Web ve masaüstü uygulamaları, ağ oluşturma, yönetim, test etme ve çok daha fazlasını içeren çok çeşitli kullanımlara uygun dinamik bir programlama dili.

Video oyunları

Çapraz platform veya çoklu platform, çeşitli video oyun konsollarında yayınlanan video oyunları için de geçerli olabilecek bir terimdir . Çapraz platform oyunlarına örnekler: Miner 2049er , Tomb Raider: Legend , FIFA serisi , NHL serisi ve Minecraft .

Her biri Wii , PlayStation 3 , Xbox 360 , kişisel bilgisayarlar ve mobil cihazlar gibi çeşitli oyun platformlarında yayınlandı .

Sone platformları için yazmak diğerlerinden daha zordur. Bunu dengelemek için, bir video oyunu önce birkaç platformda, sonra diğerlerinde yayınlanabilir. Tipik olarak bu, yeni bir oyun sistemi piyasaya sürüldüğünde olur, çünkü video oyunu geliştiricilerinin donanım ve yazılım hakkında bilgi sahibi olmaları gerekir.

Bazı oyunlar, geliştiriciler ve video oyun konsolu üreticileri arasındaki geliştirmeyi belirli bir konsolla sınırlayan lisans anlaşmaları nedeniyle platformlar arası olmayabilir. Örnek olarak Disney , en son Nintendo ve Sony oyun konsollarında piyasaya sürülme niyetiyle bir oyun yaratabilir . Disney'in oyunu önce Sony'ye lisanslaması durumunda, oyunun yalnızca Sony'nin konsolunda kısa bir süre veya süresiz olarak yayınlanması gerekebilir .

Platformlar arası oyun

Birkaç geliştirici, farklı platformları kullanırken çevrimiçi oyun oynamanın yollarını uygulamıştır. Psyonix , Epic Games , Microsoft ve Valve , Xbox 360 ve PlayStation 3 oyuncularının PC oyuncularıyla oynamasına izin veren ve hangi platformun kullanılacağı kararını tüketicilere bırakan teknolojiye sahiptir. PC ve konsol oyunları arasında bu düzeyde etkileşime izin veren ilk oyun Quake 3 oldu .

Çapraz platform özelliği Oyunları çevrimiçi oyun bulunmaktadır Roket Ligi , Final Fantasy XIV , Street Fighter V , Katil İçgüdü , Paragon ve Fable Fortune , ve Minecraft onun Birlikten Kuvvet Doğar güncelleme ile ilgili Windows'un 10 , VR sürümleri, Pocket Edition elektronik ve Xbox One .

Programlama

Platformlar arası programlama, birden fazla platformda çalışmak için kasıtlı olarak yazılım yazma uygulamasıdır.

Yaklaşımlar

Platformlar arası uygulama yazmanın farklı yolları vardır. Bir yaklaşım, farklı kaynak ağaçlarında aynı yazılımın birden çok sürümünü oluşturmaktır - başka bir deyişle, bir uygulamanın Microsoft Windows sürümünde bir dizi kaynak kod dosyası ve bir başka Macintosh sürümü olabilirken, bir FOSS *nix sisteminin bir üçüncü. Bu basit olsa da, yalnızca bir platform için geliştirmeye kıyasla, daha büyük bir ekibe ödeme yapmak veya ürünleri daha yavaş piyasaya sürmek çok daha pahalıya mal olabilir. Ayrıca daha fazla hatanın izlenmesine ve düzeltilmesine neden olabilir.

Diğer bir yaklaşım ise platformlar arasındaki farkları gizleyen yazılımlar kullanmaktır. Bu soyutlama katmanı , uygulamayı platformdan yalıtır. Bu tür uygulamalar platformdan bağımsızdır . JVM üzerinde çalışan uygulamalar bu şekilde oluşturulur.

Bazı uygulamalar, son uygulamayı oluşturmak için çeşitli platformlar arası programlama yöntemlerini karıştırır. Bir örnek, platforma özgü özellikleri (GUI gibi) uygulamak için ayrı kaynak alt ağaçları ve yazılım taşınabilirliğini kolaylaştırmak için birden fazla komut dosyası dilinin uygulanmasıyla, alt düzey bileşenlerin bazılarını oluşturmak için soyutlamayı kullanan Firefox web tarayıcısıdır. . Firefox , tarayıcıyı genişletmek için klasik Netscape tarzı tarayıcı eklentilerine ek olarak XUL , CSS ve JavaScript'i uygular . Tarayıcının çoğu XUL, CSS ve JavaScript ile yazılmıştır.

Araç setleri ve ortamlar

Platformlar arası programlama sürecine yardımcı olacak mant araçları vardır:

  • 8. GUI katmanı olarak Juce'u kullanan bir geliştirme dili . Şu anda Android, iOS, Windows, macOS, Linux ve Raspberry Pi'yi desteklemektedir.
  • Anant Computing : Klavyeleri dahil tüm Hint dillerinde çalışan ve ayrıca tüm işletim sistemlerinde AppWallet ve yerel performansı destekleyen bir mobil uygulama platformu.
  • AppearIQ : kurumsal bir ortamda uygulama geliştirme ve devreye alma iş akışını destekleyen bir çerçeve. Yerel olarak geliştirilen kapsayıcılar, mobil cihazların veya tabletlerin donanım özelliklerini bir API aracılığıyla HTML5 koduna sunar ve böylece farklı platformlarda çalışan mobil uygulamaların geliştirilmesini kolaylaştırır.
  • Boden: C++ ile yazılmış bir UI çerçevesi.
  • Kahire : vektör grafik tabanlı, cihazdan bağımsız bir API sağlamak için kullanılan ücretsiz bir yazılım kitaplığı. Bir dizi farklı arka uçta 2 boyutlu çizim için temel öğeler sağlamak üzere tasarlanmıştır. Kahire, C ile yazılmıştır ve birçok programlama dili için bağlamalara sahiptir.
  • Cocos2d : 2B ve basit 3B çapraz platform oyunları ve uygulamaları geliştirmek için açık kaynaklı bir araç takımı ve oyun motoru.
  • Codename One : Java ve Kotlin geliştiricileri için açık kaynaklı bir Write Once Run Anywhere (WORA) çerçevesi.
  • Delphi : Geliştirme için Pascal tabanlı bir dil kullanan bir IDE. Android, iOS, Windows, macOS, Linux'u destekler.
  • Ecere SDK: IDE, yazılı araç seti ve bir GUI ve 2D / 3D grafik EC ve C ve Python gibi ek diller için destek. Emscripten veya Binaryen (WebAssembly) aracılığıyla Linux, FreeBSD, Windows, Android, macOS ve Web'i destekler.
  • Eclipse : açık kaynaklı bir geliştirme ortamı. Java'da, yazılım geliştirme için birçok aracı destekleyen yapılandırılabilir bir mimariyle uygulanmaktadır. Java ve C++ dahil olmak üzere çeşitli diller için eklentiler mevcuttur.
  • FLTK : açık kaynaklı bir araç takımıdır, ancak kendisini GUI ile sınırladığı için daha hafiftir.
  • Flutter : Google tarafından geliştirilen Android ve iOS için platformlar arası bir UI çerçevesi .
  • fpGUI : Tamamen Object Pascal'da uygulanan açık kaynaklı bir widget araç takımı. Şu anda Linux, Windows ve biraz Windows CE'yi desteklemektedir.
  • GeneXus : Bilgi gösterimine dayalı ve Android ve BlackBerry akıllı cihazları dahil C# , COBOL , Java , Apple mobil cihazları için Objective-C , RPG , Ruby , Visual Basic ve Görsel FoxPro .
  • GLBasic : C++ kodu üreten bir BASIC lehçesi ve derleyicisi. Birçok platform için çapraz derleyiciler içerir ve çok sayıda platformu destekler (Windows, Mac, Linux, Android, iOS ve bazı egzotik el bilgisayarları).
  • Godot : Godot Motorunu kullanan bir SDK.
  • GTK+ : X11 ve Microsoft Windows ile Unix benzeri sistemler için açık kaynaklı bir widget araç seti.
  • Haxe : Açık kaynaklı bir dil.
  • Juce : C++ ile yazılmış, çok sayıda sistemde (Microsoft Windows, POSIX, macOS) yerel yazılım yazmak için kullanılan, kodda herhangi bir değişiklik yapılmadan bir uygulama çerçevesi.
  • Kivy : Python ile yazılmış açık kaynaklı bir çapraz platform UI çerçevesi . Bu destekler Android'i , iOS , Linux , OS X , Windows'u ve Ahududu Pi .
  • LEADTOOLS : Tanıma, belge, tıbbi, görüntüleme ve multimedya teknolojilerini Windows, iOS, macOS, Android, Linux ve web uygulamalarına entegre etmek için platformlar arası SDK kitaplıkları.
  • LiveCode : HyperTalk'tan ilham alan ticari bir platformlar arası hızlı uygulama geliştirme dili.
  • Lazarus : FreePascal Derleyicisi için bir programlama ortamı. Bağımsız grafik ve konsol uygulamalarının oluşturulmasını destekler ve Linux, MacOSX, iOS, Android, WinCE, Windows ve WEB üzerinde çalışır.
  • Max/MSP : Platformdan bağımsız kodu, platforma özgü bir çalışma zamanı ortamıyla macOS ve Windows uygulamalarına dönüştüren bir görsel programlama dili . Değiştirilmemiş Android uygulamalarının iOS ve macOS'ta yerel olarak çalışmasına izin verir
  • Mendix : bulut tabanlı düşük kodlu bir uygulama geliştirme platformu.
  • MonoCross : model ve denetleyicinin platformlar arası olduğu ancak görünümün platforma özel olduğu açık kaynaklı bir model-görünüm-kontrolör tasarım modeli.
  • Mono : Microsoft .NET'in açık kaynaklı bir çapraz platform sürümü (uygulamalar ve programlama dilleri için bir çerçeve)
  • MoSync : C++ ailesinde mobil platform uygulama geliştirme için açık kaynaklı bir SDK.
  • Mozilla uygulama çerçevesi : macOS, Windows ve Linux uygulamaları oluşturmak için açık kaynaklı bir platform.
  • Android ve iOS geliştirme için platformlar arası JavaScript/TypeScript çerçevesi.
  • OpenGL : bir 3B grafik kitaplığı.
  • Pixel Game Maker MV : Windows ve Nintendo Switch oyunları geliştirmek için Windows için tescilli bir 2D oyun geliştirme yazılımı .
  • PureBasic : macOS, Windows ve Linux uygulamaları oluşturmak için özel bir dil ve IDE.
  • ReNative : React Native ile çok platformlu projeler oluşturmak için evrensel geliştirme SDK'sı. En son iOS, tvOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG webOS, macOS/OSX, Windows, KaiOS, Firefox OS ve Firefox TV platformlarını içerir.
  • Qt : Bir uygulama çerçevesi ve Widget araç için Unix benzeri sistemlerde X11 Microsoft Windows, MacOS, ve diğer sistemlerle-kullanılabilir hem özel ve altında açık kaynak lisansı .
  • Basit ve Hızlı Multimedya Kitaplığı: Grafiklere, girişe, sese vb. düşük ve yüksek düzeyde erişim sağlayan bir multimedya C++ API'si .
  • Basit DirectMedia Katmanı : C ile yazılmış, çeşitli platformların grafikleri, sesleri ve giriş API'leri üzerinde bir soyutlama oluşturan açık kaynaklı bir multimedya kitaplığı . Linux, Windows ve macOS dahil olmak üzere işletim sistemlerinde çalışır ve oyunlara ve multimedya uygulamalarına yöneliktir.
  • Smartface : JavaScript kod düzenleyicili WYSIWYG tasarım düzenleyicisini kullanarak Android ve iOS için mobil uygulamalar oluşturmak için yerel bir uygulama geliştirme aracı .
  • Tcl/Tk
  • Ultimate++ : programcıların üretkenliğine odaklanan bir C++ hızlı uygulama geliştirme çerçevesi. Bir dizi kitaplık (GUI, SQL, vb.) ve entegre bir geliştirme ortamı içerir. Windows ve Unix benzeri işletim sistemlerini destekler.
  • Unity : Unity Engine kullanan başka bir platformlar arası SDK.
  • Uno Platformu : C# kullanan Windows, macOS, iOS, Android, WebAssembly ve Linux.
  • Unreal : Unreal Engine kullanan platformlar arası bir SDK.
  • V-Play Engine : V-Play, popüler Qt çerçevesine dayalı bir çapraz platform geliştirme SDK'sıdır. V-Play uygulamaları ve oyunları, Qt Creator içinde oluşturulur.
  • WaveMaker : Duyarlı web ve hibrit mobil (Android ve iOS) uygulamaları oluşturmak için düşük kodlu bir geliştirme aracı.
  • WinDev: Windows, Linux, .Net ve Java ve web tarayıcıları için Entegre Geliştirme Ortamı. İş ve endüstriyel uygulamalar için optimize edilmiştir.
  • wxWidgets : aynı zamanda bir uygulama çerçevesi olan açık kaynaklı bir widget araç seti . X11 , Microsoft Windows ve macOS ile Unix benzeri sistemlerde çalışır .
  • Xojo : masaüstü, web ve iOS uygulamaları oluşturmak için nesne yönelimli bir programlama dili kullanan bir RAD IDE. Xojo, macOS, Windows, Linux ve Raspberry Pi için yerel, derlenmiş masaüstü uygulamaları yapar. Bağımsız sunucular olarak veya CGI aracılığıyla çalıştırılabilen derlenmiş web uygulamaları oluşturur. Ve yakın zamanda yerel iOS uygulamaları oluşturma özelliğini ekledi.

Zorluklar

Platformlar arası yazılım geliştirirken birçok zorluk vardır.

  • Farklı platformlar biraz farklı davranışlar veya ince hatalar sergileyebileceğinden, platformlar arası uygulamaları test etmek çok daha karmaşık olabilir. Bu sorun, bazı geliştiricilerin platformlar arası geliştirmeyi "bir kez yaz, her yerde hata ayıkla", Sun Microsystems'in "bir kez yaz, her yerde çalıştır " pazarlama sloganı gibi alay etmelerine neden oldu .
  • Geliştiriciler genellikle , tüm platformlarda bulunan özelliklerin en düşük ortak payda alt kümesini kullanmakla sınırlıdır . Bu, uygulamanın performansını engelleyebilir veya geliştiricilerin her platformun en gelişmiş özelliklerini kullanmasını engelleyebilir.
  • Farklı platformlar genellikle, platformlar arası uygulamaların her zaman uymadığı farklı kullanıcı arabirimi kurallarına sahiptir. Örneğin, macOS ve GNOME için geliştirilen uygulamaların en önemli düğmeyi bir pencerenin veya iletişim kutusunun sağ tarafına yerleştirmesi beklenirken, Microsoft Windows ve KDE bunun tersi bir kurala sahiptir. Bu farklılıkların çoğu incelikli olsa da, bu sözleşmelere uymayan bir çapraz platform uygulaması, kullanıcıya hantal veya yabancı gelebilir. Hızlı çalışırken, bu tür karşıt kurallar, değişikliklerin kaydedilip kaydedilmeyeceğini onaylayan bir iletişim kutusunda olduğu gibi veri kaybına bile neden olabilir .
  • Komut dosyası dilleri ve VM bayt kodu, her kullanıldıklarında yerel yürütülebilir koda çevrilerek bir performans cezası uygulanır. Bu ceza, tam zamanında derleme gibi teknikler kullanılarak hafifletilebilir ; ancak bazı hesaplama yükü kaçınılmaz olabilir.
  • Farklı platformlar, RPM ve MSI gibi yerel paket biçimlerinin kullanılmasını gerektirir . InstallAnywhere gibi çok platformlu yükleyiciler bu ihtiyacı karşılar.
  • Platformlar arası yürütme ortamları, platformlar arası güvenlik açıklarına maruz kalabilir ve bu da platformlar arası kötü amaçlı yazılımlar için verimli bir ortam oluşturur.

Ayrıca bakınız

Referanslar