Reklama
Práve ste si stiahli aktualizáciu svojej obľúbenej aplikácie s otvoreným zdrojom. Všetko funguje dobre a vy ho používate na svojich ďalších zariadeniach - preto je čas to rozšíriť aj na nich.
Okrem nového lesklého laptopu so systémom Linux nie je kompatibilný s inštalačným balíkom systému Windows. A čo tablet Android? iPhone? PS4? Prečo si nemôžete vziať ten kus softvéru a použiť ho, kdekoľvek chcete? Pozrime sa na niekoľko rôznych prekážok, ktoré bránia snau „kúpiť raz, bežať kdekoľvek“.
Vývoj softvéru a architektúra OS
Pochopenie toho, prečo softvér nefunguje naprieč operačnými systémami, vyžaduje trochu (len trochu, sľubujem) znalosť toho, ako sa softvér vyrába.
Proces vývoja softvéru
Vo veľmi základnom postupe vývoja softvéru pre stolné počítače, servery a mobilné zariadenia (napr. nie web Programovanie vs. Vývoj webu: Aký je rozdiel?Možno si myslíte, že programátori aplikácií a vývojári webových stránok vykonávajú rovnakú prácu, ale to nie je ani zďaleka pravda. Tu sú kľúčové rozdiely medzi programátormi a webovými vývojármi. Čítaj viac ), programátor:
- Zadajte nejaké kód do jedného alebo viacerých súborov.
- kompilácie kód na niečo, čo počítač dokáže vykonať.
- skúška aby program zabezpečil fungovanie podľa očakávaní.
- Balenie a distribúcia / nasadenie softvér.
Týka sa nás tu kombinácia prvého a druhého kroku. Proces zostavovanie softvér alebo jeho premena z kódu na tie a nuly, ktorým počítač rozumie (strojový jazyk), je zložitý. Nebudeme sa k tomu dostať veľmi podrobne, ale je užitočné pochopiť na vysokej úrovni, čo sa stane.
Architektúra OS
Jedným dôležitým bodom na pochopenie je, že operačný systém nie je jediný subjekt. Skôr pozostáva z vrstiev softvéru.
Jadrá operačného systému
Operačný systém jadro je zodpovedný za komunikáciu s hardvérom počítača. Softvér komunikuje svoje príkazy s jadrom, ktoré následne vydáva príkazy hardvéru, aby (napríklad) prečítal súbor z pevného disku alebo nakreslil okno na obrazovku. V podstate koordinuje všetky informácie (či už ide o uložené údaje, výpočty alebo vstup používateľa) medzi hardvérom a rôznymi časťami softvéru. Jadro sprístupňuje všetky tieto funkcie softvéru prostredníctvom systémové volania.
Jadro každého operačného systému implementuje systémové hovory odlišne, z hľadiska toho, ktoré sú dostupné, čo nazývajú alebo aké možnosti využívajú. Softvér preto musí brať do úvahy systémové volania podporované jadrom každého operačného systému, na ktorý je zameraný. Systémové volanie, ktoré používate na odosielanie údajov na GPU v systéme Linux, môže mať v systéme Windows odlišné meno, zoznam informácií, ktoré potrebujete poskytnúť, alebo obe. Tento presný hovor nemusí byť vôbec k dispozícii.
Knižnice systému
V mnohých prípadoch softvér nehovorí priamo do jadra. Namiesto toho to volá systémové knižnicealebo zbierky základných funkcií. Knižnice tak existujú (napríklad) každý program, ktorý ukladá súbory na pevný disk, nemusí na to písať funkciu. Namiesto toho to jednoducho odkazy na systémová knižnica a používa existujúcu funkciu. Knižnica GLibC pre Linux je ukážkovým príkladom, rovnako ako súbory .DLL v rozhraní Win32 API alebo obsah adresára Mac / System / Library Ako získať prístup k priečinku knižnice OS X a prečo je to užitočnéVäčšina priečinkov knižnice OS X je najlepšie nechať na pokoji, ale je užitočné poznať vašu cestu v knižnici používateľov a okolo nej. Čítaj viac .
Systémové knižnice fungujú ako druh prekladača medzi aplikáciami a jadrom pre bežné úlohy. Aplikácie robia volania funkcií do týchto knižníc, ktoré spracúvajú veľa detailov nízkej úrovne. Pre zjednodušenie môžu tiež vykonať systémové hovory do jadra. Ako ste si asi mysleli, znamená to, že tieto knižnice sú napísané pre konkrétne jadro, a preto ich nemožno použiť vo všetkých operačných systémoch s rôznymi kernelmi.
Hlavičky vykonávania operačného systému
Posledným blokovaním univerzálneho softvéru je formát spustiteľných súborov pre operačné systémy. OS očakáva, že súbory, ktoré spustí, budú sledovať konkrétne formát binárneho súboru Všetko, čo potrebujete vedieť o súborových formátoch a ich vlastnostiachPoužívame súbor slov zameniteľne: hudbu, obrázok, tabuľku, prezentáciu atď. Čo vlastne robí zo súboru „súbor“? Skúsme porozumieť tejto základnej časti výpočtovej techniky. Čítaj viac . Napríklad súbory spustiteľného a prepojiteľného formátu (ELF), ktoré fungujú v operačných systémoch, ako sú Linux a FreeBSD musia špecifikovať určité vlastnosti súboru v určitých bajtoch, ako je uvedené nižšie image.
binárne rozhranie aplikácie (ABI) preukázané schopnosti majú osobitný význam. Kombinácia hovorov dostupných z procesorov, jadier a systémových knižníc, ABI je podobná aplikačné programovacie rozhranie (API) tým, že definuje, ako dva programy spolu komunikujú. API je však niečo, čo používajú programátori (ľudia) v zdrojovom kóde na označenie dvoch častí softvéru mali by hovoriť k sebe navzájom. ABI je to, čo im v skutočnosti umožňuje, keď je softvér zostavený a spustený. Každý operačný systém implementuje konkrétne ABI, ktoré sa môže alebo nemusí medzi verziami toho istého OS meniť.
Operačné systémy vo všeobecnosti implementujú svoje vlastné ABI, určené kombináciou typu procesora, jadra a akýchkoľvek štandardných systémových knižníc. Ale niekedy OS implementuje viac ako jeden. FreeBSD má podporu napríklad pre binárne súbory Linux, pretože poskytuje Linux ABI ako doplnok k jadru FreeBSD (namiesto Linuxového jadra). To sa líši od virtualizačné programy Čo je to virtuálny počítač? Všetko, čo potrebujete vedieťVirtuálne stroje vám umožňujú spúšťať na aktuálnom počítači ďalšie operačné systémy. Tu by ste o nich mali vedieť. Čítaj viac ako VMWare alebo VirtualBox, ktoré používajú softvér na simuláciu celého počítača (hardvér a všetky). V dôsledku toho je tento typ kompatibility ABI rýchlejší, ale oveľa väčšie úsilie na jeho udržanie. Preto je to zriedkavé Microsoft nedávno videl túto hodnotu Ubuntu je teraz k dispozícii v obchode Windows StoreInsideri Windows môžu teraz stiahnuť a nainštalovať Ubuntu do Windows 10. Týmto sa Linux a Windows spájajú v nesvätý zväzok, ktorý si niekedy predstavovali, že budú žiť dosť dlho, aby boli svedkami. Čítaj viac v tom.
Výnimka: Interpretovaný softvér
Na základe vyššie uvedeného sme sa dozvedeli, že vývojári píšu softvér pre jeden a iba jeden typ cieľového systému. Až na to, že nie. Existuje mnoho aplikácií, ktoré si môžete stiahnuť a spustiť na počítači Mac, potom ich skopírovať a spustiť v systéme Windows, a možno dokonca znova kopírovať a spúšťať v systéme Linux bez problémov. Ako je to možné?
Ležal som doteraz?
Ako sa ukazuje, existuje určitá kategória softvéru, ktorý vyzerá na povrchu, akoby „bežal všade“. Môžete si ho stiahnuť a spustiť na ľubovoľnom podporovaná platforma - kľúčové slovo je „podporované“. V skutočnosti sťahujete zdrojový kód aplikácie, zatiaľ čo iná aplikácia (Ďalej len tlmočník) je spustenie zdrojového kódu priamo v reálnom čase. Je to niečo príliš zjednodušené, takže sa pozrime, ako presne to funguje s niekoľkými jazykmi.
Jáva
Pri prvom uvedení jazyka Java bolo sľubné (doslova) „písať raz, bežať kdekoľvek“. Zámerom bolo vytvoriť aplikácií pomocou funkcií Java na ukladanie súborov, vykonávanie výpočtov alebo vytváranie aplikácií okno. Potom Java Runtime Enviornment (JRE) pre každú podporovanú počítačovú platformu by spustil kód a preložil ich do pôvodných funkcií operačného systému. Trik s Java teda spočíva v tom, že sa v operačnom systéme nespúšťa „priamo“. Beží v časti nazývanej JRE Virtuálny stroj Java a to je to, čo beží na operačnom systéme.
Vložením tejto dodatočnej softvérovej vrstvy medzi aplikáciu a OS vám Java umožňuje zamerať sa na množinu funkcií, ktoré sú rovnaké pre všetky operačné systémy. Povedzte Java, čo chcete urobiť, a nechajte JVM pre váš systém starať sa o to, ako to skutočne urobiť. Nižšie uvedený obrázok ukazuje, že v akcii, kde Java Desktop Application Framework spoločnosti JIDE Software zobrazuje rovnakú aplikáciu pre Mac (hore), Windows (vľavo), „čistú Javu“ (v strede vpravo) a Linux (dole).
Programy Java sa v reálnom čase „nekompilujú“. Kompilátor Java ich skôr prevedie do „bajtkódu“. Bytecode si môžete predstaviť ako napoly pečený program. Keď vývojár uvoľní aplikáciu, zostaví sa tak, ako je to možné, bez toho, aby vedel, na ktorom OS bude bežať. Keď ho skutočne spustíte, JVM „ho upečie zvyšok cesty“, aby vyhovoval funkciám konkrétneho hostiteľského OS.
krajta
Populárnym tlmočeným jazykom je krajta 5 dôvodov, prečo nie je programovanie Pythonu zbytočnéPython - Buď to miluješ, alebo ho nenávidíš. Môžete sa dokonca húpať z jedného konca na druhý ako kyvadlo. Bez ohľadu na to je Python jazykom, o ktorom sa ťažko dá rozprávať. Čítaj viac . Keď spustíte skript Python, interpret jazyka Python prevedie kód do pokynov pre operačný systém. Môže tiež fungovať podobne ako Java: keď „importujete“ kód z vašej aplikácie, bude pri prvom spustení kompilovaný na bytecode. Potom bude tlmočník vedieť, či sa v nasledujúcich cykloch pôvodný kód zmenil, a potom ho znova zostaví na nový bajtkód.
Skvelým vedľajším produktom tohto behu na požiadanie je to, že tlmočníka môžete použiť na interaktívne vývoj skriptov. Jednoduchým zadaním „python“ do príkazového riadka spustíte tlmočníka a môžete spustiť kód a okamžite zobraziť výsledky.
To znamená, že vývojári môžu hrať a vylepšovať veci „naživo“. Akonáhle riadok kódu urobí, čo chce, skopírujte ho a vložte do súbor skriptu (ktorý je omnoho efektívnejší ako cyklus „kód-kompilácia-test“, ktorý musia urobiť nevykladaní jazyční programátori).
Aj keď je softvér rovnaký, pravdepodobne nie
Nanešťastie pre používateľov technický priemysel nevyvinul skutočne „univerzálny“ formát. A nikdy to nemôže urobiť. Zavedenie týchto typov noriem často vedie k riešeniu „najmenej spoločného menovateľa“ a ústupky v záujme získania súhlasu všetkých.
Co si myslis? Mali by ste radšej univerzálne kompatibilný softvér, aj keď to znamenalo, že to nebolo také dobré? Alebo ste v poriadku s operačným systémom, ktorý používate, a nezaujímate sa o aplikácie z iných platforiem? Dajte nám vedieť nižšie v komentároch!
Kredity obrázkov: Masterchief_Productions / Shutterstock
Aaron bol v oblasti technológie ako obchodný analytik a projektový manažér už pätnásť rokov a je lojálnym používateľom Ubuntu (už od Breezy Badgera). Medzi jeho záujmy patrí otvorený zdroj, aplikácie pre malé podniky, integrácia systémov Linux a Android a práca s počítačom v režime obyčajného textu.