Én størrelse passer ikke alle, hvorfor software ikke er universelt kompatibel

  • Harry James
  • 0
  • 1578
  • 139
Reklame

Du har lige downloadet en funktionspakkeopdatering til din foretrukne open source-app. Alt fungerer godt, og du bruger det på dine andre enheder - så det er på tide at rulle det ud til dem også.

Bortset fra at din skinnende nye Linux-bærbare computer ikke er kompatibel med din Windows-installationspakke. Hvad med din Android-tablet? iPhone? PS4? Hvorfor kan du ikke bare tage det stykke software og bruge det, hvor du vil? Lad os udforske nogle forskellige barrierer mod drømmen om “køb en gang, løb overalt.”

Softwareudvikling og OS-arkitektur

At forstå, hvorfor software ikke fungerer på tværs af operativsystemer, kræver lidt (bare lidt, jeg lover) viden om, hvordan software fremstilles.

Softwareudviklingsprocessen

I en meget grundlæggende softwareudviklingsflow til desktop, server og mobil (dvs. ikke webprogrammering vs. webudvikling: Hvad er forskellen? Programmering vs. webudvikling: hvad er forskellen? Du synes måske, at applikationsprogrammører og webudviklere gør det samme job , men det er langt fra sandheden. Her er de vigtigste forskelle mellem programmerere og webudviklere.), en programmør vil:

  1. Skriv nogle kode i en eller flere filer.
  2. Udarbejde koden til noget, computeren kan udføre.
  3. Prøve for at sikre, at programmet fungerer som forventet.
  4. Pakke og distribuere / distribuere softwaren.

Det er en kombination af det første og det andet trin, der vedrører os her. Processen med kompilering software, eller at omdanne den fra kode til dem og nuller, som en computer forstår (maskinsprog) er kompliceret. Vi kommer ikke ind på det i detaljer, men det er nyttigt at forstå på et højt niveau, hvad der sker.

OS Arkitektur

Et vigtigt punkt at forstå er, at et operativsystem ikke er en enkelt enhed. Snarere består den af ​​lag af software.

Operativsystemets kerner

Et operativsystem kerne er ansvarlig for at kommunikere med computerens hardware. Software kommunikerer sine kommandoer til kernen, som igen udsteder kommandoer til hardwaren til (for eksempel) at læse en fil fra harddisken eller tegne et vindue på skærmen. Det koordinerer dybest set alle oplysninger (uanset om det er lagrede data, beregninger eller brugerinput) mellem hardware og forskellige stykker software. Kernen gør al denne funktionalitet tilgængelig for software via systemopkald.

Billedkredit: Wikimedia Commons

Hvert operativsystemets kerne implementerer systemopkald forskelligt, hvad angår hvilke der er tilgængelige, hvad de kaldes, eller hvilke muligheder de tager. Som et resultat skal software tage højde for de systemopkald, der understøttes af kernen i hvert operativsystem, det målretter mod. Det systemopkald, du bruger til at sende data til GPU i Linux, kan have et andet navn, en liste over oplysninger, du har brug for, eller begge dele i Windows. Det nøjagtige opkald er muligvis ikke engang der.

Systembiblioteker

I mange tilfælde ringer software ikke direkte til kernen. I stedet kaldes det til systembiblioteker, eller samlinger af grundlæggende funktioner. Biblioteker findes så (for eksempel) hvert eneste program, der gemmer filer på harddisken, behøver ikke at skrive en funktion for at gøre det. I stedet for det ganske enkelt links til et systembibliotek og bruger en eksisterende funktion. GLibC-biblioteket til Linux er et fremragende eksempel, ligesom .DLL-filer i Win32 API eller indholdet af en Mac's / System / Library-bibliotek Sådan får du adgang til OS X-bibliotekmappen og hvorfor det er praktisk Sådan får du adgang til OS X-biblioteket Mappe og hvorfor det er praktisk De fleste OS X-biblioteksmapper er bedst at stå alene, men det er nyttigt at kende din vej ind og omkring Brugerbiblioteket. .

Billedkredit: ScottXW via Wikimedia Commons

Systembiblioteker fungerer som en slags oversætter mellem applikationer og kernen til rutineopgaver. Ansøgninger foretages funktion opkald til disse biblioteker, der håndterer mange detaljer på lavt niveau. De kan også foretage systemopkald til kernen for nemheds skyld. Som du måske har gætt, betyder det, at disse biblioteker er skrevet til en bestemt kerne, og derfor ikke kan bruges på tværs af operativsystemer med forskellige kerner.

Operativsystemudførelsesoverskrifter

Den sidste vejspærring til universel software er formatet for eksekverbare filer til operativsystemerne. Et operativsystem forventer, at de filer, det kører, skal følge et bestemt binært filformat Alt, hvad du behøver at vide om filformater og deres egenskaber Alt, hvad du behøver at vide om filformater og deres egenskaber Vi bruger ordfilen om hverandre: musik, billede, regneark, slideshow , og så videre. Men hvad gør en fil alligevel til en "fil"? Lad os prøve og forstå denne grundlæggende del af computing. . F.eks. Skal eksekverbare og linkbare format (ELF) -filer, der kører på operativsystemer som Linux og FreeBSD, specificere bestemte egenskaber for filen i bestemte byte, som vist i nedenstående billede.

Det applikation binær grænseflade (ABI) vist dygtig er af særlig betydning. En kombination af tilgængelige opkald fra processor, kerne og systembiblioteker, en ABI ligner en applikationsprogrammeringsgrænseflade (API) ved at det definerer, hvordan to programmer kommunikerer med hinanden. Men API'en er noget, der bruges af programmerere (mennesker) i kildekoden til at indikere to stykker software skulle gerne tale med hinanden. ABI er det, der faktisk giver dem mulighed for det, når softwaren er samlet og kørt. Hvert operativsystem implementerer en bestemt ABI, der muligvis eller ikke ændrer mellem versioner af det samme operativsystem.

Generelt implementerer operativsystemer deres egen ABI, bestemt af en kombination af typen af ​​processor, kernen og eventuelle standardsystembiblioteker. Men nogle gange implementerer et operativsystem mere end et. FreeBSD har f.eks. Understøttelse af Linux-binære filer, fordi det giver en Linux ABI som tilføjelse til FreeBSD-kernen (i stedet for Linux-kernen). Dette adskiller sig fra virtualizatiton-programmer Hvad er en virtuel maskine? Alt hvad du behøver at vide, hvad er en virtuel maskine? Alt hvad du behøver at vide Virtuelle maskiner giver dig mulighed for at køre andre operativsystemer på din nuværende computer. Her er hvad du skal vide om dem. såsom VMWare eller VirtualBox, der bruger software til at simulere en hel maskine (hardware og alt). Som et resultat er denne type ABI-kompatibilitet hurtigere, men meget mere kræfter at vedligeholde. Dette er grunden til, at det er sjældent, selvom Microsoft for nylig så værdien Ubuntu er nu tilgængelig i Windows Store Ubuntu er nu tilgængelig i Windows Store Windows Insiders kan nu downloade og installere Ubuntu på Windows 10. Dette bringer Linux og Windows sammen i en uhellig union få forestillede sig nogensinde, at de ville leve længe nok til at være vidne til. ved at gøre det.

Undtagelse: fortolket software

Baseret på ovenstående har vi lært, at udviklere skriver software til en og kun én type målsystem. Bortset fra når de ikke gør det. Der er mange applikationer, som du kan downloade og køre på en Mac, derefter kopiere og køre på Windows, og måske endda kopiere igen og køre på Linux uden problemer. Hvordan er det muligt?

Ligger jeg indtil nu?

Som det viser sig, er der en kategori af software, der bare ser på overfladen “kører overalt.” Du kan downloade og køre den på enhver understøttet platform - nøgleordet er “understøttet.” Faktisk downloader du kildekoden til applikationen, mens en anden applikation (the tolk) er slags at køre kildekoden direkte i realtid. Dette er noget af en forenkling, så lad os se nærmere på, hvordan dette fungerer med et par sprog.

Java

Da Java først blev frigivet, var det løftet (bogstaveligt talt) “skriv en gang, løb hvor som helst.” Ideen var at oprette applikationer ved hjælp af Java-funktioner til, hvordan man gemmer filer, foretager beregninger eller oprette et applikationsvindue. Derefter a Java Runtime Enviornment (JRE) for hver understøttet computerplatform kører koden og oversætter disse til native OS-funktioner. Tricket til Java er altså, at det ikke kører “direkte” på operativsystemet. Det kører i en del af JRE kaldet the Java Virtual Machine og det er det, der kører på operativsystemet.

Ved at indsætte dette ekstra softwarelag mellem applikationen og OS giver Java dig mulighed for at fokusere på et sæt funktioner, der er det samme på tværs af operativsystemer. Du fortæller Java, hvad du vil gøre, og lader JVM til dit system bekymre dig om, hvordan du rent faktisk gør det. Nedenstående billede viser dette i handling, hvor JIDE Softwares Java Desktop Application Framework viser det samme program til Mac (øverst), Windows (midten til venstre), “ren Java” (midt til højre) og Linux (nederst).

Billedkredit: JIDE-software

Java-programmer er ikke præcist “udarbejde” sig selv i realtid. Snarere vil Java-kompilatoren gengive dem ind i “bytekode.” Du kan tænke på bytecode som et halvbagt program. Når udvikleren frigiver applikationen, er den samlet så meget som den kan være uden at vide, hvilket operativsystem det vil køre på. Når du faktisk starter det, vil JVM “bager det resten af ​​vejen” til at passe til funktionerne i værts OS.

Python

Et populært tolket sprog er Python 5 grunde til, at Python-programmering ikke er ubrugelig 5 grunde til, at Python-programmering ikke er ubrugelig Python - Du elsker enten det, eller du hader det. Du kan endda svinge fra den ene ende til den anden som en pendul. Uanset hvad er Python et sprog, der er svært at være ambivalent med. . Når du kører et Python-script, oversætter Python-tolken kode til instruktioner til OS. Det kan også fungere på lignende måde som Java: når du “importere” kode uden for din applikation, den kompileres til bytekode første gang den køres. Derefter vil tolken vide, om den oprindelige kode ved senere kørsler er ændret, på hvilket tidspunkt den vil kompilere den igen til en ny bytekode.

Et cool biprodukt af dette “on-demand” kørsel er, at du kan bruge tolken til at udvikle dine scripts interaktivt. Ved blot at skrive “python” på kommandolinjen starter du tolken, og du kan køre kode og se resultaterne med det samme.

Dette betyder, at udviklere kan lege rundt og justere ting “Direkte.” Når en kodelinje først gør det, de vil, skal du kopiere og indsætte den i en script-fil (hvilket er meget mere effektivt end “kode-compile-test” cyklus, som ikke-tolke sprogprogrammører skal gøre).

Selv når software er den samme, er det sandsynligvis ikke

Desværre for brugerne har teknologibranchen ikke udviklet en rigtig “universel” format. Og det gør det måske aldrig. Indførelse af disse typer standarder resulterer ofte i en “mindst fællesnævner” løsning med indrømmelser i interesse for at få alles godkendelse.

Hvad synes du? Vil du hellere have universelt kompatibel software, selvom det betød, at det ikke var så godt? Eller er du i orden med det operativsystem, du bruger, og har ingen interesse i apps fra andre platforme? Fortæl os det nedenfor i kommentarerne!

Billedkreditter: Masterchief_Productions / Shutterstock




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.