Jedna velikost neodpovídá všemu, proč software není univerzálně kompatibilní

  • Michael Fisher
  • 0
  • 3814
  • 377
reklama

Právě jste si stáhli aktualizaci do své oblíbené aplikace s otevřeným zdrojovým kódem. Všechno funguje dobře a vy je používáte na ostatních zařízeních - je tedy na čase, abyste je mohli rozšířit i na ně.

Kromě toho, že nový lesklý notebook pro Linux není kompatibilní s instalačním balíčkem Windows. A co váš Android tablet? iPhone? PS4? Proč nemůžete prostě vzít ten kus softwaru a použít ho, kdekoli chcete? Pojďme prozkoumat některé různé překážky snu “koupit jednou, běžet kdekoli.”

Vývoj softwaru a architektura OS

Pochopení toho, proč software nefunguje napříč operačními systémy, vyžaduje trochu (jen trochu slibuji) znalost toho, jak se software vyrábí.

Proces vývoje softwaru

Ve velmi základním toku vývoje softwaru pro stolní počítače, servery a mobilní telefony (tj. Nikoli webové programování vs. vývoj webových aplikací: Jaký je rozdíl? , ale to je daleko od pravdy. Zde jsou klíčové rozdíly mezi programátory a vývojáři webu.), programátor:

  1. Zadejte nějaké kód do jednoho nebo více souborů.
  2. Sestavit kód do něčeho, co může počítač spustit.
  3. Test abyste se ujistili, že program funguje podle očekávání.
  4. Balení a distribuce / nasazení software.

Týká se nás kombinace prvního a druhého kroku. Proces kompilace software nebo jeho přeměna z kódu na ty a nuly, kterým počítač rozumí (strojový jazyk), je složitý. Nebudeme se k tomu dostat podrobně, ale je užitečné pochopit na vysoké úrovni, co se stane.

Architektura OS

Jeden důležitý bod k pochopení je, že operační systém není jediná entita. Spíše se skládá z vrstev softwaru.

Jádra operačního systému

Operační systém jádro odpovídá za komunikaci s hardwarem počítače. Software komunikuje své příkazy s jádrem, které zase vydává příkazy hardwaru, aby (například) přečetl soubor z pevného disku nebo nakreslil okno na obrazovku. V podstatě koordinuje všechny informace (ať už se jedná o uložená data, výpočty nebo vstup uživatele) mezi hardwarem a různými částmi softwaru. Jádro zpřístupňuje všechny tyto funkce softwaru prostřednictvím systémová volání.

Image Credit: Wikimedia Commons

Jádro každého operačního systému implementuje systémová volání jinak, pokud jde o to, které z nich jsou k dispozici, co se jim říká nebo jaké možnosti mají. V důsledku toho musí software brát v úvahu systémová volání podporovaná jádrem každého OS, na který cílí. Systémové volání, které používáte k odesílání dat na GPU v systému Linux, může mít v systému Windows jiné jméno, seznam informací, které potřebujete poskytnout, nebo obojí. Ten přesný hovor tam nemusí být vůbec.

Systémové knihovny

V mnoha případech software nehovoří přímo do jádra. Místo toho to volá systémové knihovny, nebo sbírky základních funkcí. Knihovny existují, takže (například) každý program, který ukládá soubory na pevný disk, k tomu nemusí psát žádnou funkci. Místo toho to prostě odkazy na systémová knihovna a používá existující funkci. Knihovna GLibC pro Linux je příkladem, stejně jako soubory .DLL v rozhraní Win32 API nebo obsah adresáře Mac / System / Library Jak získat přístup ke složce knihovny OS X a proč je to užitečné Jak přistupovat ke knihovně OS X Složka a proč je to užitečné Většina složek knihovny OS X je nejlépe ponechat na pokoji, ale je užitečné znát cestu v knihovně uživatelů a kolem nich. .

Image Credit: ScottXW prostřednictvím Wikimedia Commons

Systémové knihovny fungují jako druh překladače mezi aplikacemi a jádrem pro rutinní úkoly. Aplikace vytvářejí volání funkcí do těchto knihoven, které zpracovávají mnoho detailů na nízké úrovni. Pro zjednodušení mohou také provádět systémová volání do jádra. Jak jste možná uhodli, znamená to, že tyto knihovny jsou psány pro konkrétní jádro, a proto je nelze použít napříč operačními systémy s různými jádry.

Hlavičky spuštění operačního systému

Posledním blokováním univerzálního softwaru je formát spustitelných souborů pro operační systémy. OS očekává, že soubory, které spustí, budou sledovat konkrétní binární formát souboru Vše, co potřebujete vědět o formátech souborů a jejich vlastnostech Vše, co potřebujete vědět o souborových formátech a jejich vlastnostech Používáme textový soubor zaměnitelně: hudbu, obrázek, tabulku, prezentaci , a tak dále. Ale co vlastně dělá ze souboru „soubor“? Zkusme pochopit tuto základní část práce na počítači. . Například soubory spustitelného a propojitelného formátu (ELF), které běží na operačních systémech, jako jsou Linux a FreeBSD, musí určit určité vlastnosti souboru v určitých bajtech, jak ukazuje obrázek níže.

aplikační binární rozhraní (ABI) prokázané schopnosti mají zvláštní význam. Kombinace hovorů dostupných z procesoru, jádra a systémových knihoven, ABI je podobná aplikační programovací rozhraní (API) tím, že definuje, jak dva programy spolu komunikují. API je však něco, co používají programátoři (lidé) ve zdrojovém kódu k označení dvou kusů softwaru by měl mluvit k sobě navzájem. ABI je to, co jim ve skutečnosti umožňuje, jakmile je software zkompilován a spuštěn. Každý operační systém implementuje konkrétní ABI, které se může nebo nemusí měnit mezi verzemi stejného operačního systému.

Operační systémy obecně implementují své vlastní ABI, určené kombinací typu procesoru, jádra a všech standardních systémových knihoven. Někdy však operační systém implementuje více než jeden. FreeBSD má podporu například pro binární soubory Linux, protože poskytuje Linux ABI jako doplněk k jádru FreeBSD (místo Linuxového jádra). To se liší od virtualizačních programů Co je to virtuální stroj? Vše, co potřebujete vědět, co je virtuální stroj? Vše, co potřebujete vědět Virtuální stroje vám umožňují provozovat na vašem aktuálním počítači další operační systémy. Zde je to, co byste o nich měli vědět. jako je VMWare nebo VirtualBox, které používají software k simulaci celého počítače (hardware a vše). V důsledku toho je tento typ kompatibility ABI rychlejší, ale mnohem větší úsilí je udržovat. To je důvod, proč je to vzácné, ačkoli společnost Microsoft nedávno viděla hodnotu Ubuntu je nyní k dispozici v Windows Store Ubuntu je nyní k dispozici v Windows Store Windows Insiders si nyní mohou stáhnout a nainstalovat Ubuntu do Windows 10. Tím se Linux a Windows spojí v nezdvořilé spojení jen málokdo si představoval, že budou žít dost dlouho, aby byli svědky. v tom.

Výjimka: Interpretovaný software

Na základě výše uvedeného jsme se dozvěděli, že vývojáři píšou software pro jeden a pouze jeden typ cílového systému. Až na to, že ne. Existuje mnoho aplikací, které si můžete stáhnout a spustit na Macu, pak zkopírovat a spustit na Windows, a možná dokonce znovu kopírovat a běžet na Linuxu bez problémů. Jak je tohle možné?

Lhal jsem až dosud?

Jak se ukazuje, existuje určitá kategorie softwaru, která vypadá na povrchu stejně jako to “běží všude.” Můžete si ji stáhnout a spustit na jakékoli podporované platformě - klíčovým slovem je “podporováno.” Ve skutečnosti stahujete zdrojový kód aplikace, zatímco jiná aplikace ( tlumočník) je druh spuštění zdrojového kódu přímo v reálném čase. Je to něco příliš zjednodušeného, ​​takže se podívejme přesně na to, jak to funguje s několika jazyky.

Jáva

Když Java poprvé vydala, byl to slib (doslova) “napsat jednou, běžet kdekoli.” Záměrem bylo vytvářet aplikace pomocí funkcí Java pro ukládání souborů, provádění výpočtů nebo vytváření okna aplikace. Pak Java Runtime Enviornment (JRE) pro každou podporovanou počítačovou platformu by spustil kód a přeložil je do nativních funkcí OS. Trik s Java tedy spočívá v tom, že neběží “přímo” na operačním systému. Běží v části JRE nazvané Virtuální stroj Java a to je to, co běží na operačním systému.

Vložením této další softwarové vrstvy mezi aplikaci a OS vám Java umožňuje soustředit se na sadu funkcí, které jsou stejné v různých operačních systémech. Řeknete Java, co chcete udělat, a nechte JVM, aby se váš systém staral o to, jak to skutečně udělat. Níže uvedený obrázek ukazuje toto v akci, kde Java Desktop Java Framework Application Framework zobrazuje stejnou aplikaci pro Mac (nahoře), Windows (na levé straně), “čistá Java” (uprostřed vpravo) a Linux (dole).

Image Credit: JIDE Software

Programy Java přesně ne “sestavit” v reálném čase. Spíše je kompilátor Java vykreslí “bytecode.” Bytecode si můžete představit jako napůl pečený program. Když vývojář uvolní aplikaci, je kompilován v maximální možné míře, aniž by věděl, na jakém OS bude spuštěn. Když ji skutečně spustíte, JVM bude “péct to po zbytek cesty” aby vyhovovaly funkcím konkrétního hostitelského OS.

Krajta

Oblíbeným interpretovaným jazykem je Python 5 důvodů, proč není programování Pythonu zbytečné 5 důvodů, proč není Python programování zbytečné Python - buď ho milujete nebo ho nenávidíte. Můžete dokonce houpat z jednoho konce na druhý jako kyvadlo. Bez ohledu na to, Python je jazyk, o kterém je těžké být ambivalentní. . Při spuštění skriptu Python interpret Python převede kód do pokynů pro operační systém. Může také fungovat podobně jako Java: když vy “import” kód mimo vaši aplikaci, je kompilován do bytecode při prvním spuštění. Poté bude tlumočník vědět, zda se v následujících bězích původní kód změnil, a poté jej překompiluje na nový bytecode.

Skvělý vedlejší produkt “na požádání” běh je, že můžete použít interpreta pro interaktivní vývoj skriptů. Jednoduše zadáním “krajta” na příkazovém řádku spustíte tlumočníka a můžete spustit kód a okamžitě vidět výsledky.

To znamená, že vývojáři mohou hrát a vylepšovat věci “žít.” Poté, co řádek kódu udělá, co chce, zkopírujte jej a vložte do souboru skriptu (což je mnohem efektivnější než “test kompilace kódu” cyklus, který musí neinterpretovaní programátoři jazyka dělat).

I když je software stejný, pravděpodobně není

Bohužel pro uživatele, technický průmysl se nevyvinul opravdu “univerzální” formát. A nikdy to nemůže udělat. Zavedení těchto typů norem často vede k a “nejmenší společný jmenovatel” řešení, s ústupky v zájmu získání souhlasu všech.

Co myslíš? Chtěli byste raději univerzálně kompatibilní software, i když to znamenalo, že to nebylo tak dobré? Nebo jste v pořádku s operačním systémem, který používáte, a nemáte zájem o aplikace z jiných platforem? Dejte nám vědět níže v komentářích!

Image Credits: Masterchief_Productions / Shutterstock




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.