Oprogramowanie wieloplatformowe

Oprogramowanie wieloplatformowe to oprogramowanie zaprojektowane do pracy na wielu platformach .

Uważa się, że wiele języków programowania jest wieloplatformowych. Rzeczywiście, wystarczy opracować kompilator przeznaczony do generowania kodu wykonywalnego zrozumiałego dla każdego z procesorów, z którego chce się korzystać.

W związku z tym mielibyśmy: jeden język programowania i kompilator dla każdego typu procesora. (procesory należałoby uznać za tego samego typu, gdyby miały identyczną strukturę)

Na przykład oprogramowanie zaprojektowane przy użyciu biblioteki graficznej GTK + w systemie Linux nie będzie działać tak, jak jest w systemie Windows, nawet jeśli architektura jest taka sama. Mimo że językiem jest C , wewnętrzne działanie zarządzania wyświetlaniem jest inne. Tutaj dotykamy pojęcia przenośności programu.

Problem szybko pojawia się dla programistów: wybór platformy dla programu oznacza ograniczenie jego odbiorców. Ten problem staje się bardziej złożony, ponieważ sektor IT ma tendencję do dywersyfikacji, zarówno w systemie operacyjnym ( Linux , Mac OS itp.), Jak i sprzęcie ( GSM , PDA itp.).

Różne rozwiązania techniczne

Aby umożliwić oprogramowaniu dotarcie do jak największej liczby odbiorców, można zastosować trzy techniki:

Języki kompilowane za pomocą bibliotek wieloplatformowych

Szybkość wykonania i integracja są ważnymi czynnikami w wielu zmianach. Konieczne jest wtedy przejrzenie kompilowanych języków . Ponieważ różne systemy obsługują wiele rzeczy w różny sposób, musisz przejść przez biblioteki wieloplatformowe, aby uzyskać abstrakcję potrzebną do programowania międzyplatformowego.

Kolejną zaletą skompilowanych programów jest to, że mogą być używane bezpośrednio przez użytkownika końcowego. Udostępniając bibliotekę wraz z produktem, nie jest konieczne korzystanie z interpretera ani maszyny wirtualnej.

Istnieje jednak jedna wada korzystania z programów skompilowanych dla wielu platform: dystrybucja. Rzeczywiście konieczne jest skompilowanie wersji programu dla każdego systemu operacyjnego i dla każdej architektury, a to dla każdej wersji programu. W przypadku oprogramowania open source nie stanowi to tak naprawdę problemu, ponieważ wystarczy zapewnić środki do kompilacji w każdym systemie operacyjnym.

Niektóre z bardziej popularnych bibliotek wieloplatformowych obejmują wxWidgets i Qt . Te dwie biblioteki zapewniają bardzo kompletny framework, który umożliwia jednorazowe tworzenie aplikacji dla wielu systemów (Linux, Mac OS, Windows, Windows CE, Palm OS itp.).

Haxe

Jako innowacyjne podejście w tego typu języku uważamy Haxe , który jest wolnym oprogramowaniem i który pozwala generować kod źródłowy w języku docelowym, a nie w kodzie binarnym. Jego składnia jest typu ECMA , ale model obiektowy - czyli API , zależy od platformy docelowej. Na przykład, możesz zaprogramować w Haxe do generowania JavaScript ; następnie używamy składni Haxe, ale manipulujemy obiektami zdefiniowanymi przez JavaScript i wyświetlanymi przez przeglądarkę internetową , takimi jak obiekt okna, style itp. Haxe pozwala wykorzystać wszystkie przydatne pojęcia współczesnych języków, takie jak dziedziczenie , struktury , wyliczenia ...

Obecnie możesz generować kod C ++ , ActionScript , JavaScript (dla przeglądarek lub Node.js ), Java , C # , kod php za pomocą Haxe . Kiedy wdrażamy aplikację zakodowaną w Haxe po stronie klienta i po stronie serwera , możemy udostępnić model aplikacji i możemy wykorzystać „  Haxe Remoting  ” do komunikacji między dwiema częściami aplikacji.

Aby zakończyć ten nietypowy język, społeczność Haxe utrzymuje imponującą liczbę bibliotek. Niektóre pozwalają nawet na konwersję modelu obiektowego z jednej platformy na inną w czasie kompilacji. Ma to na celu skompilowanie tego samego kodu Haxe w kilku językach docelowych. Biblioteka NME pozwala na konwersję programu Haxe napisanego dla Flash ActionScript do języka C ++, dla iOS , Androida , Windows , Linuksa , Mac OS . Podobnie biblioteka Cocktail konwertuje kod JavaScript Haxe na ActionScript, C ++ itp. i pozwala na tworzenie natywnych aplikacji i aplikacji internetowych w HTML / CSS z Haxe JS dla interaktywności i logiki. Jest to już celem produktów takich jak Adobe PhoneGap , ale abstrakcja jest wykonywana w czasie kompilacji, więc nie ma spadku wydajności (patrz akapit dotyczący języków interpretowanych), a Haxe nadal umożliwia dostęp do natywnych interfejsów API  (w) platformie docelowej, dla której nie jest częścią HTML.

Języki interpretowane

Języki interpretowane oferują inne podejście do problemu. Takie języki są interpretowane za każdym razem, gdy program jest używany, więc jeśli dla danej platformy istnieje interpreter , program będzie działał na tej platformie. Jednak użycie jest tak łatwe, jeśli wszystko, co jest używane w programie, jest częścią standardowych bibliotek. Aby korzystać z zaawansowanych funkcji, konieczne jest skorzystanie z bibliotek wieloplatformowych (np. Wciąż wxWidgets i Qt ).

Dystrybucja oprogramowania w języku tłumaczonym jest znacznie łatwiejsza, ale często trzeba zapewnić odpowiedniego tłumacza. Innym problemem jest to, że podane są źródła oprogramowania, co może powodować problemy, jeśli kod zawiera proces, który należy zachować w tajemnicy.

Języki częściowo tłumaczone

Najnowszym podejściem do tworzenia aplikacji wieloplatformowych jest użycie języków częściowo interpretowanych. Te języki są kompilowane do kodu pośredniego, który jest interpretowany. Takie podejście ma te same zalety co kody interpretowane, ale zapewnia większą szybkość wykonywania.

Głównym przykładem jest język Java firmy Sun Microsystems . Ten język jest kompilowany do kodu bajtowego Java, który jest następnie interpretowany przez maszynę wirtualną . Kod bajtowy można wykonać na każdej platformie, na której zaimplementowano maszynę wirtualną. Język Java można skompilować do kodu natywnego (na przykład za pomocą GCJ ), ale wtedy traci on swoją przenośność. Dystrybucja Javy stwarza problem maszyny wirtualnej, konieczne jest jej rozpowszechnienie wraz z oprogramowaniem, co nie zawsze jest bardzo łatwe.

Framework do tworzenia aplikacji międzyplatformowych

Istnieje kilka frameworków umożliwiających tworzenie wieloplatformowych aplikacji i oprogramowania, wśród nich znajdujemy:

Uwagi

  1. W języku francuskim przed rodnikiem należy dodać przedrostek „multi”  ; słowo nie może mieć łącznika zgodnie z poprawkami pisowni zaproponowanymi przez Najwyższą Radę Języka Francuskiego w jej raporcie z 1990 r. , który sugeruje zastąpienie łącznika w niektórych wyrazach złożonych spoiną, nadając pisowni „wieloplatformową”.
  2. W English często mówimy o oprogramowanie cross-platform i niezależne od platformy oprogramowania lub oprogramowania wieloplatformowym .
  3. „  Haxe Syntax  ” .
  4. (en) Definicja usług zdalnych .
  5. (w) „  Wprowadzenie do„ Haxe Remoting ”  ” .
  6. (w) „  Biblioteki społeczności Haxe  ” .
  7. (w) „  Witryna internetowa biblioteki NME  ” .
  8. (w) „  Strona internetowa biblioteki Koktajl  ” .
  9. (w) El Hassane Ettifouri Abdelkader Rhouati Walid Dahhane and Toumi Bouchentouf , Proceedings of the Mediterranean Conference on Information & Communication Technology 2015 , Springer, Ham,1 st styczeń 2016( DOI  10.1007 / 978-3-319-30298-0_42 , czytaj online ) , str.  403–411
  10. El Hassane Ettifouri , Abdelkader Rhouati , Jamal Berrich i Toumi Bouchentouf , „  Toward a Merged Approach for Cross-platform Applications (Web, Mobile and Desktop)  ”, Proceedings of the 2017 International Conference on Smart Digital Environment , ACM, iCSDE '17, Oprócz tego musisz wiedzieć o tym więcej.2017, s.  207-213 ( ISBN  9781450352819 , DOI  10.1145 / 3128128.3128160 , czytaj online , dostęp 17 września 2017 )
  11. D. Kramer , T. Clark i S. Oussena , „  MobDSL: język specyficzny dla domeny do wdrażania wielu platform mobilnych  ”, Międzynarodowa konferencja IEEE 2010 na temat sieciowych systemów wbudowanych dla aplikacji korporacyjnych ,1 st listopad 2010, s.  1-7 ( DOI  10.1109 / NESEA.2010.5678062 , przeczytano online , dostęp 17 kwietnia 2017 )

Link zewnętrzny