
Electron i Chromium Embedded Framework (CEF) dvije su etablirane tehnologije za uvođenje Chromiuma u aplikacije za stolna računala. Obje omogućuju razvojnim programerima izradu softvera koji prikazuje moderne web-stranice i web-sučelja na sustavima macOS, Windows i Linux. Međutim, njihove su namjene u osnovi različite.
Electron je cjelovit razvojni okvir za aplikacije za stolna računala koji objedinjuje Chromium, Node.js i izvorne API-je operacijskog sustava. Razvojni programeri mogu izraditi cijele aplikacije koristeći JavaScript, TypeScript, HTML i CSS bez potrebe za opsežnim iskustvom u nativnom programiranju. CEF je, s druge strane, razvojni okvir za ugrađivanje Chromiuma u postojeće ili nove aplikacije, obično napisane u C++-u ili drugim nativnim jezicima.
Obje se tehnologije široko upotrebljavaju u produkcijskom softveru. Electron pokreće aplikacije kao što su Visual Studio Code, Slack, Discord i Notion, dok se CEF upotrebljava u proizvodima kao što su Spotify, Steam i OBS Studio. U WebCatalogu odabrali smo Electron za izradu svojih višeplatformskih aplikacija za stolna računala.
Koje su, dakle, razlike i kada ima smisla upotrijebiti jednu tehnologiju umjesto druge?
Electron i CEF na prvi pogled
Iako i Electron i CEF upotrebljavaju Chromium, znatno se razlikuju po arhitekturi, razvojnom iskustvu i predviđenoj primjeni.
| Značajka | Electron | Chromium Embedded Framework (CEF) |
|---|---|---|
| Prvi put predstavljen | 2013. | 2008. |
| Glavna namjena | Izrada cjelovitih aplikacija za stolna računala | Ugrađivanje Chromiuma u druge aplikacije |
| Mehanizam preglednika | Chromium | Chromium |
| Glavni jezici | JavaScript, TypeScript | C, C++, uz jezične poveznice trećih strana |
| Uključen Node.js | Da | Ne |
| Nativna integracija | Electronovi API-ji i nativni moduli za Node.js | Izravna integracija s nativnim kodom |
| Struktura aplikacije | Glavni proces i procesi za iscrtavanje | Aplikacija domaćin s Chromiumovim potprocesima |
| Iscrtavanje izvan zaslona | Moguće uz prilagođena rješenja | Ugrađena podrška kroz API |
| Veličina aplikacije | U pravilu velika | Ovisi o integraciji, no Chromium zauzima mnogo prostora |
| Performanse | Ovise o aplikaciji | Ovise o aplikaciji i integraciji |
| Višeplatformska podrška | macOS, Windows, Linux | macOS, Windows, Linux |
| Ekosustav za pakiranje | Electron Forge, electron-builder | Obično njime upravlja aplikacija domaćin |
| Najprikladniji za | Aplikacije za stolna računala temeljene na JavaScriptu | Nativne aplikacije kojima je potreban ugrađeni web-sadržaj |
Najvažnija je razlika u tome što Electron pruža razvojni okvir za aplikacije, dok CEF pruža okvir za ugrađivanje preglednika. Nisu nužno izravne zamjene jer djeluju na različitim razinama apstrakcije.
Arhitektura: cjelovit razvojni okvir nasuprot ugrađenom pregledniku
Electron objedinjuje Chromium i Node.js u jedinstveno izvršno okruženje za aplikacije. Razvojni programeri stvaraju glavni proces koji upravlja prozorima aplikacije, događajima životnog ciklusa i nativnim funkcionalnostima, dok procesi za iscrtavanje obrađuju web-sučelje.
Ta arhitektura omogućuje razvojnim programerima da većinu aplikacije napišu koristeći poznate alate za JavaScript i TypeScript. Electron pruža API-je za stvaranje prozora, upravljanje sesijama preglednika, rukovanje izbornicima, prikaz obavijesti, pristup sistemskim dijaloškim okvirima i integraciju s operacijskim sustavom.
CEF ima drukčiji pristup. Umjesto da pruža cjelovit razvojni okvir za aplikacije za stolna računala, omogućuje razvojnim programerima integraciju Chromiuma u aplikaciju koju sami izrađuju i nadziru.
Primjerice, razvojni programer koji izrađuje nativnu C++ aplikaciju može upotrijebiti CEF za prikaz web-sadržaja unutar postojećeg prozora aplikacije. Okolno sučelje, životni ciklus aplikacije, pozadinske usluge i ostale nativne funkcionalnosti ostaju pod njegovom kontrolom.
CEF pruža API-je za upravljanje instancama preglednika, navigacijom, učitavanjem resursa, izvršavanjem JavaScripta i komunikacijom između preglednika i nativne aplikacije. Također upotrebljava Chromiumovu višeprocesnu arhitekturu, s odvojenim procesima za iscrtavanje i druge funkcije preglednika.
Ta razlika utječe na način na koji razvojni programeri strukturiraju svoje aplikacije. Uz Electron, aplikacija se uglavnom gradi oko Chromiuma i Node.js-a. Uz CEF, Chromium je obično jedna komponenta unutar veće aplikacije.
CEF se može upotrebljavati i za izradu aplikacija čija su sučelja pretežno temeljena na webu, no razvojni programeri moraju sami implementirati veći dio prateće aplikacijske infrastrukture.
Zanimljiv je povijesni detalj da su rane verzije Electrona i NW.js-a upotrebljavale CEF. Electron je s vremenom prešao na izravniju integraciju s Chromiumom jer je CEF-ova apstrakcija otežavala implementaciju određenih značajki, osobito duboke integracije s Node.js-om.
Razvojnim programerima koji žele cjelovit okvir za izradu aplikacija za stolna računala pomoću web-tehnologija Electron uglavnom pruža jednostavniju polazišnu točku. Za razvojne programere koji već imaju nativnu aplikaciju i žele joj dodati web-funkcionalnosti CEF može biti prirodniji izbor.
Razvojno iskustvo: JavaScript nasuprot nativnom razvoju
Jedna od najvećih prednosti Electrona njegova je pristupačnost. Razvojni programeri upoznati s modernim web-razvojem mogu iskoristiti postojeće vještine za izradu aplikacija za stolna računala bez učenja C++-a ili razvojnih okvira za korisničko sučelje specifičnih za pojedinu platformu.
Electronova integracija s Node.js-om omogućuje pristup velikom ekosustavu paketa za operacije s datotečnim sustavom, mrežnu komunikaciju, baze podataka, pozadinske procese i druge funkcionalnosti. Popularne tehnologije za razvoj sučelja kao što su React, Vue, Svelte i Angular mogu se upotrebljavati bez značajnih arhitektonskih promjena.
CEF je prvenstveno osmišljen oko API-ja za C i C++. Iako postoje jezične poveznice trećih strana za jezike kao što su C#, Java, Python i Delphi, razvojni programeri i dalje moraju razumjeti arhitekturu nativne aplikacije te CEF-ove zahtjeve vezane uz procese, dretve i životni ciklus.
Za tim koji već održava nativnu aplikaciju to može biti prednost, a ne nedostatak. CEF omogućuje razvojnim programerima uvođenje modernog web-sučelja bez ponovnog pisanja postojećeg nativnog koda ili prihvaćanja potpuno novog aplikacijskog razvojnog okvira.
Međutim, timu usmjerenom na JavaScript koji započinje razvoj nove aplikacije za stolna računala CEF uglavnom zahtijeva više početnog postavljanja i rada na nativnoj integraciji.
Razlika se proteže i na alate. Electron ima prednost etabliranih alata kao što su Electron Forge i electron-builder, koji pojednostavnjuju pakiranje, potpisivanje koda, distribuciju i ažuriranje aplikacija. CEF pruža binarne distribucije i primjere, no razvojni programeri obično su sami odgovorni za integraciju okvira u vlastite sustave za izgradnju i isporuku.
To ne znači da CEF ima manje mogućnosti. Jednostavno odražava njegovu namjenu kao komponente za ugrađivanje, a ne cjelovite platforme za razvoj aplikacija.
Performanse, potrošnja memorije i veličina aplikacije
Budući da i Electron i CEF upotrebljavaju Chromium, nijedan ne uklanja automatski dodatnu potrošnju resursa povezanu s pokretanjem modernog mehanizma preglednika.
Obje tehnologije mogu upotrebljavati više procesa za iscrtavanje, GPU ubrzanje, mrežnu komunikaciju i druge funkcije preglednika. Potrošnja memorije i opterećenje procesora uvelike ovise o prikazanom sadržaju, broju aktivnih instanci preglednika i načinu na koji aplikacija upravlja resursima.
CEF može pružiti veću fleksibilnost kada se integrira u postojeću nativnu aplikaciju. Razvojni programeri mogu upotrebljavati Chromium samo za dijelove sučelja koji zahtijevaju web-tehnologije, dok ostale funkcionalnosti implementiraju izravno u nativnom kodu.
Primjerice, grafička aplikacija može upotrebljavati CEF za ploču s postavkama ili ugrađeno web-sučelje, dok njezin mehanizam za iscrtavanje, obrada dokumenata i druge funkcionalnosti osjetljive na performanse ostaju nativni.
Electronove aplikacije također mogu izvršavati nativni kod putem dodataka za Node.js, vanjskih procesa ili nativnih modula. Međutim, Electronova arhitektura općenito je usmjerena na izradu same aplikacije pomoću web-tehnologija.
Jedna posebno korisna mogućnost CEF-a jest iscrtavanje izvan zaslona. Umjesto prikazivanja web-sadržaja u tradicionalnom prozoru preglednika, CEF može iscrtavati sadržaj u međuspremnike koje aplikacija domaćin sama obrađuje i prikazuje. To je vrijedno za aplikacije kao što su pogoni za igre, softver za prijenos uživo i alati s prilagođenim sustavima za iscrtavanje.
Electron može podržati specijalizirane tijekove rada za iscrtavanje putem dodatnih integracija, no CEF izlaže iscrtavanje izvan zaslona kao etablirani dio svojeg API-ja za ugrađivanje.
Za razvojne programere koji procjenjuju performanse najkorisnija mjerenja uključuju:
- Vrijeme pokretanja: Koliko brzo aplikacija postaje spremna za upotrebu.
- Potrošnja memorije: Potrošnja resursa uz reprezentativan sadržaj preglednika i nativne funkcionalnosti.
- Opterećenje procesora: Performanse tijekom iscrtavanja, navigacije i pozadinskih operacija.
- Veličina aplikacije: Veličina preuzimanja i zauzeće prostora na disku nakon instalacije.
- Zahtjevi za iscrtavanje: Trebaju li aplikaciji obični prozori ili prilagođeno iscrtavanje izvan zaslona.
Važno je i razlikovati CEF od razvojnih okvira koji upotrebljavaju sistemski WebView. CEF uključuje Chromium umjesto da se oslanja na mehanizam preglednika koji je instalirao operacijski sustav. Zbog toga prelazak s Electrona na CEF ne rezultira automatski znatno manjom aplikacijom.
Razvojni programeri kojima su glavni prioritet manji aplikacijski paketi mogli bi razmotriti alternative kao što je Tauri, koji upotrebljava sistemske WebView komponente.
Ni Electron ni CEF ne treba smatrati bezuvjetno bržim bez usporednog mjerenja stvarne implementacije.
Sigurnost i ažuriranja preglednika
I Electron i CEF oslanjaju se na Chromiumovu arhitekturu preglednika i sigurnosne mehanizme, no razvojni programeri odgovorni su za odgovarajuće konfiguriranje svojih aplikacija.
Electron pruža značajke kao što su izolirano okruženje procesa za iscrtavanje, izolacija konteksta i komunikacija putem IPC-a između privilegiranih funkcionalnosti aplikacije i web-sadržaja. Njegova sigurnosna dokumentacija preporučuje ograničavanje pristupa Node.js-u, pažljivu provjeru IPC poruka i postupanje s udaljeno učitanim sadržajem kao s nepouzdanim.
CEF također podržava Chromiumovu višeprocesnu arhitekturu i sigurnosnu izolaciju. Međutim, budući da je CEF integriran u aplikaciju koju nadzire njezin razvojni programer, aplikacija domaćin odgovorna je za odluku o tome koje značajke preglednika, dopuštenja i nativne mogućnosti treba izložiti.
CEF podržava povezivanje s JavaScriptom i nativnu komunikaciju, što razvojnim programerima omogućuje povezivanje web-sadržaja s funkcionalnostima aplikacije. Ta sučelja moraju biti pažljivo osmišljena, osobito pri prikazivanju web-stranica trećih strana.
| Sigurnosni aspekt | Electron | CEF |
|---|---|---|
| Chromiumovo izolirano okruženje | Podržano | Podržano |
| Privilegirani nativni pristup | Node.js i Electronovi API-ji | Nativni API-ji aplikacije domaćina |
| Komunikacija između JavaScripta i nativnog koda | Skripte za predučitavanje i IPC | Poveznice za V8 i razmjena poruka između procesa |
| Izolacija udaljenog sadržaja | Izolirano okruženje procesa za iscrtavanje i izolacija konteksta | Chromiumova izolacija procesa i kontrole aplikacije domaćina |
| Sigurnosna ažuriranja preglednika | Nadogradnje verzije Electrona | Nadogradnje verzije CEF-a |
| Odgovornost za sigurnost aplikacije | Razvojni programer aplikacije | Razvojni programer aplikacije |
Još je jedan važan čimbenik održavanje preglednika. I Electron i CEF uglavnom distribuiraju vlastito izvršno okruženje Chromiuma, pa razvojni programeri moraju isporučivati ažuriranja aplikacije kada sigurnosni popravci postanu dostupni.
CEF pruža grane izdanja koje prate Chromium te binarne distribucije koje pojednostavnjuju taj postupak. Electron na sličan način održava izdanja koja uključuju ažuriranja Chromiuma i Node.js-a.
Nijedan pristup u potpunosti ne uklanja potrebu za stalnim održavanjem. Aplikacije koje upotrebljavaju starije verzije Chromiuma mogu ostati izložene ranjivostima koje su već ispravljene u izvornom projektu.
Za timove koji izrađuju softver za prikaz proizvoljnih web-stranica sigurnosno održavanje treba biti ključan dio životnog ciklusa aplikacije, a ne povremen zadatak.
Zastupljenost: velike aplikacije koje upotrebljavaju Electron i CEF
I Electron i CEF znatno su zastupljeni u produkcijskom softveru, no njihovi se obrasci upotrebe razlikuju.
Electron je osobito vidljiv među široko korištenim aplikacijama za stolna računala namijenjenima produktivnosti, komunikaciji i razvoju softvera. Microsoft upotrebljava Electron za Visual Studio Code, dok drugi poznati proizvodi temeljeni na Electronu uključuju Slack, Discord, Notion, Figmu, Signal Desktop i GitHub Desktop.
CEF također upotrebljavaju velike softverske tvrtke, osobito pri integraciji web-sučelja u aplikacije s postojećom nativnom arhitekturom.
Primjeri uključuju:
| Aplikacija | Tehnologija | Tipična primjena |
|---|---|---|
| Visual Studio Code | Electron | Višeplatformski uređivač koda |
| Slack | Electron | Timska komunikacija |
| Discord | Electron | Platforma za komunikaciju i zajednice |
| Notion | Electron | Bilješke i produktivnost |
| Figma Desktop | Electron | Aplikacija za dizajn |
| Spotify Desktop | CEF | Sučelje temeljeno na webu unutar klijenta za stolna računala |
| Steam | CEF | Ugrađena web-sučelja u klijentu za stolna računala |
| OBS Studio | CEF | Izvori preglednika, preklopni slojevi i ploče preglednika |
Spotify je posebno dobro dokumentiran primjer upotrebe CEF-a. Na njegovoj službenoj stranici otvorenog koda objavljuju se verzije CEF-a i Chromiuma povezane s izdanjima aplikacije Spotify Desktop.
OBS Studio pruža još jedan jasan primjer zašto razvojni programeri odabiru CEF. Njegova integracija obs-browser upotrebljava CEF za pružanje izvora preglednika, omogućujući korisnicima prikaz preklopnih slojeva temeljenih na webu i drugog sadržaja unutar scena za prijenos uživo. CEF je komponenta OBS Studija, a ne razvojni okvir kojim je izrađena cijela aplikacija.
Steam također upotrebljava ugrađene web-komponente temeljene na Chromiumu unutar svojeg klijenta za stolna računala, integrirajući web-sučelja sa širom infrastrukturom nativne aplikacije.
Ti primjeri ilustriraju razliku između tih tehnologija. Electron se često upotrebljava za izradu cijele aplikacije za stolna računala, dok se CEF često upotrebljava za uvođenje web-funkcionalnosti u aplikacije koje već imaju opsežne nativne komponente.
CEF ne treba promatrati kao malo poznatu ili zastarjelu alternativu. Nastao je 2008., prije Electrona, te se već godinama široko upotrebljava u komercijalnom softveru. Njegova duga povijest i kontinuirana upotreba u velikim proizvodima pokazuju da ugrađivanje Chromiuma ostaje važan pristup razvoju aplikacija za stolna računala.
Electron je, u međuvremenu, izgradio osobito snažan ekosustav oko aplikacija za stolna računala temeljenih na JavaScriptu. Njegova široka prihvaćenost, etablirani alati i sudjelovanje velikih tehnoloških tvrtki čine ga privlačnim timovima koji izrađuju nove proizvode pomoću web-tehnologija.
Ta dva razvojna okvira imaju različite prednosti jer su usmjerena na različite arhitektonske zahtjeve.
Zašto u WebCatalogu odabiremo Electron
U WebCatalogu odabrali smo Electron za pokretanje svojih višeplatformskih aplikacija za stolna računala jer dobro odgovara zahtjevima naših proizvoda.
WebCatalog omogućuje korisnicima pretvaranje web-stranica u aplikacije za stolna računala, neovisno upravljanje većim brojem računa i organiziranje aplikacija na sustavima macOS, Windows i Linux. Naš softver mora podržavati web-stranice koje su izradile tisuće različitih razvojnih programera, s različitim sustavima autentifikacije, mehanizmima pohrane, API-jima preglednika i JavaScript razvojnim okvirima.
I Electron i CEF pružaju dosljedno izvršno okruženje Chromiuma, što je važno za kompatibilnost. Za razliku od razvojnih okvira temeljenih na sistemskim WebView komponentama, omogućuju nam upotrebu poznate verzije Chromiuma na svim podržanim platformama za stolna računala.
Međutim, WebCatalog nije prvenstveno nativna aplikacija kojoj treba ugrađena komponenta preglednika. Funkcionalnosti preglednika u središtu su našeg proizvoda. Potrebna nam je opsežna kontrola nad prozorima, sesijama, pohranom, dopuštenjima, navigacijom i ponašanjem tijekom životnog ciklusa aplikacije.
Electron pruža zrele API-je za te zahtjeve. Njegova sučelja BrowserWindow, webContents i session omogućuju nam izradu funkcionalnosti nalik pregledniku pomoću JavaScripta i TypeScripta. Trajne particije sesija posebno su važne jer korisnicima omogućuju održavanje neovisnih sesija prijave za više računa na istoj web-stranici.
CEF također pruža API-je za upravljanje instancama preglednika, zahtjevima, pohranom i nativnom integracijom. U načelu bi se mnoge iste mogućnosti mogle implementirati pomoću CEF-a. Međutim, to bi od nas zahtijevalo da sami izradimo i održavamo više nativne infrastrukture.
Electronova integracija s Node.js-om također odgovara našem tehnološkom skupu. Velik dio logike naše aplikacije za stolna računala možemo implementirati pomoću TypeScripta, dijeliti kod između proizvoda i iskoristiti JavaScript ekosustav.
Višeplatformski razvoj još je jedan čimbenik. WebCatalog podržava macOS, Windows i Linux, uključujući pakiranje aplikacija, integracije i ponašanje sustava specifično za pojedinu platformu. Electronovi etablirani API-ji i alati za distribuciju smanjuju količinu nativnog koda koju moramo održavati.
Svjesni smo da Electron donosi dodatno opterećenje. Uključivanje Chromiuma povećava veličinu aplikacije, a aplikacije temeljene na pregledniku zahtijevaju pažljivo upravljanje resursima. Umjesto zamjene Electrona, usredotočili smo se na poboljšanje načina na koji ga upotrebljavamo.
Primjerice, uveli smo APFS klonove za smanjenje zauzeća diska za generirane Mac aplikacije, smanjujući suvišnu pohranu bez odricanja od kompatibilnosti s Chromiumom.
Naša odluka ne znači da je Electron univerzalno bolji od CEF-a. Da je WebCatalog prvenstveno nativna aplikacija s nekoliko ugrađenih web-sučelja, CEF bi mogao biti izvrstan izbor. No budući da je naš proizvod u osnovi izgrađen oko web-aplikacija i funkcionalnosti preglednika, Electron pruža temelj koji omogućuje produktivniji razvoj i jednostavnije održavanje.
U čemu CEF ima prednost
Iako je Electron naš prvi izbor u WebCatalogu, CEF ima važne prednosti za aplikacije koje zahtijevaju dublju integraciju s nativnim softverom.
CEF je posebno privlačan kada razvojni programeri već imaju etabliranu C++ aplikaciju i žele uvesti moderna web-sučelja bez zamjene postojeće arhitekture.
Njegova podrška za iscrtavanje izvan zaslona još je jedna značajna prednost. Aplikacije kao što su softver za prijenos uživo i pogoni za igre mogu trebati iscrtavati web-sadržaj izravno u prilagođene grafičke cjevovode umjesto u uobičajene prozore na radnoj površini. CEF pruža etablirane API-je za takve primjene.
CEF razvojnim programerima pruža i znatnu kontrolu nad integracijom preglednika. Mogu prilagoditi obradu zahtjeva, navigaciju, povezivanje s JavaScriptom, učitavanje resursa i način na koji instance preglednika stupaju u interakciju s nativnim komponentama aplikacije.
Za timove s velikim stručnim znanjem u nativnom razvoju ta fleksibilnost može nadmašiti praktičnost Electrona.
CEF vrijedi razmotriti kada:
- Dodajete web-sučelja postojećoj nativnoj aplikaciji. Razvojni programeri mogu zadržati trenutačnu arhitekturu aplikacije i ugraditi Chromium gdje je potreban.
- Izrađujete softver s prilagođenim zahtjevima za iscrtavanje. Iscrtavanje izvan zaslona omogućuje integraciju web-sadržaja u grafičke cjevovode i specijalizirana sučelja.
- Ostvarujete duboku integraciju s nativnim C++ funkcionalnostima. CEF izlaže nativne API-je i omogućuje detaljnu kontrolu nad ponašanjem preglednika.
- Održavate postojeću CEF aplikaciju. Migracija na Electron može donijeti znatne arhitektonske promjene bez značajnih koristi.
- Kombinirate nativna i web-sučelja. Razvojni programeri mogu upotrebljavati Chromium za odabrane dijelove aplikacije, a drugdje zadržati nativne komponente korisničkog sučelja.
CEF zahtijeva veću odgovornost za aplikacijsku infrastrukturu. Razvojni programeri možda će morati implementirati vlastito pakiranje, ažuriranje, upravljanje prozorima i integracije specifične za pojedinu platformu.
Za timove koji su već opremljeni za održavanje nativnih aplikacija to može biti sasvim razumno. Za timove usmjerene na web koji izrađuju novi proizvod za stolna računala to može unijeti nepotrebnu složenost.
Electron ili CEF: što odabrati?
Obje su tehnologije zrele, aktivno se razvijaju i sposobne su podržati sofisticiran softver za stolna računala. Bolji izbor prvenstveno ovisi o tome izrađujete li novu aplikaciju za stolna računala oko web-tehnologija ili ugrađujete web-funkcionalnosti u postojeću nativnu aplikaciju.
| Vaš prioritet | Bolja polazišna točka | Zašto |
|---|---|---|
| Nova aplikacija za stolna računala koja upotrebljava JavaScript ili TypeScript | Electron | Cjelovit razvojni okvir za aplikacije |
| Postojeća nativna C++ aplikacija | CEF | Integrira se u nativnu arhitekturu |
| Minimalan nativni razvoj | Electron | Node.js i JavaScript API-ji |
| Ugrađivanje web-sadržaja u nativne prozore | CEF | Osmišljen posebno za ugrađivanje |
| Iscrtavanje izvan zaslona i prilagođeni grafički cjevovodi | CEF | Namjenski API-ji za iscrtavanje |
| Opsežni alati za pakiranje i ažuriranje aplikacija za stolna računala | Electron | Etabliran distribucijski ekosustav |
| Izravna integracija s nativnim C++ kodom | CEF | Nativna sučelja za C i C++ |
| Dosljednost Chromiuma na različitim platformama za stolna računala | Bilo koji | Oba uključuju Chromium |
| Složeno upravljanje sesijama preglednika | Bilo koji | Oba pružaju mogućnosti upravljanja preglednikom |
| Mali aplikacijski paketi | Nijedan nema inherentnu prednost | Oba distribuiraju Chromium |
| Postojeći razvojni tim za JavaScript | Electron | Poznat tehnološki skup |
| Postojeći proizvod temeljen na CEF-u | CEF | Izbjegavanje nepotrebne migracije |
Za većinu web-programera koji započinju izradu nove višeplatformske aplikacije za stolna računala Electron je uglavnom praktičniji izbor. Pruža aplikacijsku arhitekturu, nativne integracije, razvojne alate i distribucijski ekosustav potrebne za izradu cjelovitog proizvoda bez razvijanja svega od nule.
CEF je često bolja opcija za razvojne programere koji već imaju nativnu aplikaciju ili trebaju specijalizirane mogućnosti ugrađivanja preglednika. Njegova fleksibilnost i izravna nativna integracija čine ga posebno korisnim za softver kao što su pogoni za igre, alati za prijenos uživo, industrijske aplikacije i složeni nativni proizvodi s ugrađenim web-sučeljima.
Nijedna tehnologija nije sama po sebi brža ili sigurnija. Te značajke uvelike ovise o aplikaciji, njezinoj arhitekturi i kvaliteti implementacije.
Završne misli
Electron i Chromium Embedded Framework dijele istu temeljnu tehnologiju preglednika, no rješavaju različite probleme.
Electron je osmišljen kako bi razvoj aplikacija za stolna računala učinio pristupačnim web-programerima. Objedinjuje Chromium, Node.js i nativne API-je za stolna računala u razvojni okvir koji timovima omogućuje izradu sofisticiranih aplikacija pomoću JavaScripta i TypeScripta.
CEF je osmišljen za ugrađivanje Chromiuma u druge aplikacije. Pruža kontrolu nad integracijom preglednika na nižoj razini te je posebno vrijedan za nativne aplikacije kojima su potrebna web-sučelja ili specijalizirane mogućnosti iscrtavanja.
Oba su dokazala svoju vrijednost u velikim produkcijskim softverskim proizvodima. Electron pokreće aplikacije kao što su Visual Studio Code, Slack, Discord i Notion, dok se CEF upotrebljava u proizvodima kao što su Spotify, Steam i OBS Studio.
U WebCatalogu odabrali smo Electron jer su naši proizvodi u osnovi izgrađeni oko funkcionalnosti preglednika. Njegovo dosljedno izvršno okruženje Chromiuma, zreli API-ji za upravljanje preglednikom i JavaScript ekosustav omogućuju nam učinkovit razvoj i održavanje višeplatformskih aplikacija za stolna računala.
CEF ostaje izvrstan izbor za razvojne programere koji rade s nativnim aplikacijama, osobito kada Chromium treba ugraditi u postojeću arhitekturu umjesto da služi kao temelj cijelog proizvoda.
Odluka se u konačnici svodi na ono što izrađujete. Ako želite izraditi cjelovitu aplikaciju za stolna računala pomoću web-tehnologija, Electron je obično bolja polazišna točka. Ako želite dodati Chromium nativnoj aplikaciji, CEF je vjerojatno prikladniji alat.


