
Electron i Chromium Embedded Framework (CEF) to dwie sprawdzone technologie umożliwiające wykorzystanie Chromium w aplikacjach desktopowych. Obie pozwalają programistom tworzyć oprogramowanie wyświetlające nowoczesne witryny i interfejsy internetowe w systemach macOS, Windows i Linux. Służą jednak zasadniczo różnym celom.
Electron to kompletny framework do tworzenia aplikacji desktopowych, który łączy Chromium, Node.js i natywne interfejsy API systemu operacyjnego. Programiści mogą tworzyć całe aplikacje przy użyciu JavaScript, TypeScript, HTML i CSS bez konieczności posiadania rozległego doświadczenia w programowaniu natywnym. CEF natomiast jest frameworkiem do osadzania Chromium w istniejących lub nowych aplikacjach, zwykle napisanych w C++ lub innych językach natywnych.
Obie technologie są szeroko stosowane w oprogramowaniu produkcyjnym. Electron stanowi podstawę takich aplikacji jak Visual Studio Code, Slack, Discord i Notion, a CEF jest wykorzystywany w produktach takich jak Spotify, Steam i OBS Studio. W WebCatalog wybraliśmy Electron do tworzenia naszych wieloplatformowych aplikacji desktopowych.
Jakie są więc różnice i kiedy warto wybrać jedno rozwiązanie zamiast drugiego?
Electron a CEF w skrócie
Choć Electron i CEF korzystają z Chromium, znacząco różnią się architekturą, wygodą pracy programisty i docelowymi zastosowaniami.
| Cecha | Electron | Chromium Embedded Framework (CEF) |
|---|---|---|
| Rok powstania | 2013 | 2008 |
| Główne przeznaczenie | Tworzenie kompletnych aplikacji desktopowych | Osadzanie Chromium w innych aplikacjach |
| Silnik przeglądarki | Chromium | Chromium |
| Główne języki | JavaScript, TypeScript | C, C++, z powiązaniami do innych języków dostarczanymi przez podmioty trzecie |
| Dołączony Node.js | Tak | Nie |
| Integracja natywna | API Electron i natywne moduły Node.js | Bezpośrednia integracja z kodem natywnym |
| Struktura aplikacji | Proces główny i procesy renderujące | Aplikacja hostująca z podprocesami Chromium |
| Renderowanie poza ekranem | Możliwe dzięki niestandardowym rozwiązaniom | Wbudowana obsługa w API |
| Rozmiar aplikacji | Zwykle duży | Zależy od integracji, ale samo Chromium zajmuje dużo miejsca |
| Wydajność | Zależy od aplikacji | Zależy od aplikacji i integracji |
| Obsługa wielu platform | macOS, Windows, Linux | macOS, Windows, Linux |
| Ekosystem narzędzi do pakowania | Electron Forge, electron-builder | Zwykle zarządzany przez aplikację hostującą |
| Najlepsze zastosowanie | Aplikacje desktopowe oparte na JavaScript | Aplikacje natywne wymagające osadzonych treści internetowych |
Najważniejsza różnica polega na tym, że Electron zapewnia framework aplikacji, a CEF — framework do osadzania przeglądarki. Nie zawsze są one bezpośrednimi zamiennikami, ponieważ działają na różnych poziomach abstrakcji.
Architektura: kompletny framework a osadzona przeglądarka
Electron łączy Chromium i Node.js w jedno środowisko uruchomieniowe aplikacji. Programiści tworzą proces główny, który zarządza oknami aplikacji, zdarzeniami cyklu życia i funkcjami natywnymi, natomiast procesy renderujące obsługują interfejs oparty na technologiach internetowych.
Taka architektura pozwala programistom pisać większość kodu aplikacji za pomocą znanych narzędzi JavaScript i TypeScript. Electron udostępnia interfejsy API do tworzenia okien, zarządzania sesjami przeglądarki, obsługi menu, wyświetlania powiadomień, korzystania z systemowych okien dialogowych i integracji z systemem operacyjnym.
CEF stosuje inne podejście. Zamiast zapewniać kompletny framework aplikacji desktopowej, umożliwia programistom integrację Chromium z aplikacją, którą sami tworzą i kontrolują.
Na przykład programista tworzący natywną aplikację w C++ może użyć CEF do wyświetlania treści internetowych w istniejącym oknie aplikacji. Otaczający interfejs, cykl życia aplikacji, usługi działające w tle i pozostałe funkcje natywne pozostają pod kontrolą programisty.
CEF udostępnia interfejsy API do zarządzania instancjami przeglądarki, nawigacją, ładowaniem zasobów, wykonywaniem JavaScript i komunikacją między przeglądarką a aplikacją natywną. Wykorzystuje też wieloprocesową architekturę Chromium, z oddzielnymi procesami do renderowania i innych funkcji przeglądarki.
Ta różnica wpływa na sposób organizacji aplikacji. W przypadku Electron aplikacja jest zwykle budowana wokół Chromium i Node.js. W przypadku CEF Chromium jest zazwyczaj jednym z komponentów większej aplikacji.
CEF można również wykorzystywać do tworzenia aplikacji, których interfejsy są oparte głównie na technologiach internetowych, ale programiści muszą samodzielnie zaimplementować większą część otaczającej je infrastruktury aplikacji.
Ciekawostką historyczną jest to, że wczesne wersje Electron i NW.js korzystały z CEF. Z czasem Electron przeszedł na bardziej bezpośrednią integrację z Chromium, ponieważ warstwa abstrakcji CEF utrudniała implementację niektórych funkcji, zwłaszcza głębokiej integracji z Node.js.
Dla programistów szukających kompletnego frameworka do tworzenia aplikacji desktopowych przy użyciu technologii internetowych Electron jest zazwyczaj prostszym punktem wyjścia. Dla tych, którzy mają już aplikację natywną i chcą dodać do niej funkcje internetowe, bardziej naturalnym wyborem może być CEF.
Praca programisty: JavaScript a programowanie natywne
Jedną z największych zalet Electron jest niski próg wejścia. Programiści zaznajomieni z nowoczesnym tworzeniem aplikacji internetowych mogą wykorzystać posiadane umiejętności do budowania aplikacji desktopowych bez nauki C++ czy frameworków interfejsu użytkownika specyficznych dla danej platformy.
Integracja Electron z Node.js zapewnia dostęp do bogatego ekosystemu pakietów obsługujących operacje na systemie plików, komunikację sieciową, bazy danych, procesy w tle i inne funkcje. Popularnych technologii frontendowych, takich jak React, Vue, Svelte i Angular, można używać bez istotnych zmian architektury.
CEF jest zaprojektowany przede wszystkim z myślą o interfejsach API w C i C++. Choć istnieją powiązania do języków takich jak C#, Java, Python i Delphi dostarczane przez podmioty trzecie, programiści nadal muszą rozumieć architekturę aplikacji natywnej oraz wymagania CEF dotyczące procesów, wątków i cyklu życia.
Dla zespołu, który już utrzymuje aplikację natywną, może to być zaletą, a nie wadą. CEF pozwala wprowadzić nowoczesny interfejs internetowy bez przepisywania istniejącego kodu natywnego czy wdrażania zupełnie nowego frameworka aplikacji.
Jednak w przypadku zespołu skupionego na JavaScript, który rozpoczyna tworzenie nowej aplikacji desktopowej, CEF zwykle wymaga więcej pracy przy konfiguracji i integracji natywnej.
Różnica dotyczy także narzędzi. Electron korzysta ze sprawdzonych narzędzi, takich jak Electron Forge i electron-builder, które upraszczają pakowanie, podpisywanie kodu, dystrybucję aplikacji i aktualizacje. CEF udostępnia dystrybucje binarne i przykłady, ale za integrację frameworka z własnymi systemami budowania i wdrażania zwykle odpowiadają programiści.
Nie oznacza to, że CEF ma mniejsze możliwości. Odzwierciedla to po prostu jego przeznaczenie jako komponentu do osadzania, a nie kompletnej platformy do tworzenia aplikacji.
Wydajność, zużycie pamięci i rozmiar aplikacji
Ponieważ zarówno Electron, jak i CEF korzystają z Chromium, żadne z tych rozwiązań nie eliminuje automatycznie narzutu zasobów związanego z uruchamianiem nowoczesnego silnika przeglądarki.
Obie technologie mogą wykorzystywać wiele procesów do renderowania, akceleracji GPU, komunikacji sieciowej i innych funkcji przeglądarki. Zużycie pamięci i obciążenie procesora w dużej mierze zależą od wyświetlanych treści, liczby aktywnych instancji przeglądarki oraz sposobu zarządzania zasobami przez aplikację.
CEF może zapewniać większą elastyczność po zintegrowaniu z istniejącą aplikacją natywną. Programiści mogą używać Chromium tylko w tych częściach interfejsu, które wymagają technologii internetowych, a pozostałe funkcje implementować bezpośrednio w kodzie natywnym.
Na przykład aplikacja graficzna może korzystać z CEF w panelu ustawień lub osadzonym interfejsie internetowym, zachowując natywną implementację silnika renderującego, przetwarzania dokumentów i innych funkcji, dla których wydajność ma kluczowe znaczenie.
Aplikacje Electron również mogą wykonywać kod natywny za pośrednictwem dodatków Node.js, procesów zewnętrznych lub modułów natywnych. Architektura Electron jest jednak zasadniczo ukierunkowana na tworzenie samej aplikacji za pomocą technologii internetowych.
Szczególnie przydatną funkcją CEF jest renderowanie poza ekranem. Zamiast wyświetlać treści internetowe w tradycyjnym oknie przeglądarki, CEF może renderować je do buforów, które aplikacja hostująca samodzielnie przetwarza i wyświetla. Jest to cenne w takich zastosowaniach jak silniki gier, oprogramowanie do transmisji strumieniowych i narzędzia z niestandardowymi systemami renderowania.
Electron może obsługiwać specjalistyczne procesy renderowania dzięki dodatkowym integracjom, ale CEF udostępnia renderowanie poza ekranem jako standardową część swojego API do osadzania.
Dla programistów oceniających wydajność najbardziej przydatne pomiary obejmują:
- Czas uruchamiania: jak szybko aplikacja staje się gotowa do użytku.
- Zużycie pamięci: zużycie zasobów przy reprezentatywnych treściach w przeglądarce i funkcjach natywnych.
- Obciążenie procesora: wydajność podczas renderowania, nawigacji i operacji w tle.
- Rozmiar aplikacji: rozmiar pobieranego pakietu i miejsce zajmowane na dysku po instalacji.
- Wymagania dotyczące renderowania: czy aplikacja potrzebuje zwykłych okien, czy niestandardowego renderowania poza ekranem.
Ważne jest również odróżnienie CEF od frameworków korzystających z systemowych komponentów WebView. CEF zawiera Chromium, zamiast polegać na silniku przeglądarki zainstalowanym przez system operacyjny. W rezultacie przejście z Electron na CEF nie sprawia automatycznie, że aplikacja staje się znacznie mniejsza.
Programiści, którym zależy przede wszystkim na mniejszych pakietach aplikacji, mogą rozważyć alternatywy, takie jak Tauri, które korzysta z systemowych komponentów WebView.
Bez testów porównawczych rzeczywistej implementacji nie należy uznawać ani Electron, ani CEF za jednoznacznie szybsze rozwiązanie.
Bezpieczeństwo i aktualizacje przeglądarki
Zarówno Electron, jak i CEF opierają się na architekturze przeglądarki i mechanizmach bezpieczeństwa Chromium, ale za odpowiednią konfigurację aplikacji odpowiadają programiści.
Electron zapewnia takie funkcje jak izolacja procesów renderujących w piaskownicy, izolacja kontekstu oraz komunikacja oparta na IPC między uprzywilejowanymi funkcjami aplikacji a treściami internetowymi. Dokumentacja dotycząca bezpieczeństwa zaleca ograniczanie dostępu do Node.js, staranną walidację komunikatów IPC i traktowanie zdalnie ładowanych treści jako niezaufanych.
CEF również obsługuje wieloprocesową architekturę Chromium i mechanizmy izolacji zapewniające bezpieczeństwo. Ponieważ jednak CEF jest integrowany z aplikacją kontrolowaną przez jej twórcę, to aplikacja hostująca odpowiada za określenie, które funkcje przeglądarki, uprawnienia i możliwości natywne mają być udostępniane.
CEF obsługuje powiązania JavaScript i komunikację z kodem natywnym, umożliwiając programistom łączenie treści internetowych z funkcjami aplikacji. Interfejsy te trzeba projektować ostrożnie, zwłaszcza gdy wyświetlane są witryny podmiotów trzecich.
| Aspekt bezpieczeństwa | Electron | CEF |
|---|---|---|
| Piaskownica Chromium | Obsługiwana | Obsługiwana |
| Uprzywilejowany dostęp do funkcji natywnych | Node.js i API Electron | Natywne API aplikacji hostującej |
| Komunikacja JavaScript z kodem natywnym | Skrypty preload i IPC | Powiązania V8 i komunikacja między procesami |
| Izolacja treści zdalnych | Piaskownica procesów renderujących i izolacja kontekstu | Izolacja procesów Chromium i mechanizmy kontroli aplikacji hostującej |
| Aktualizacje bezpieczeństwa przeglądarki | Aktualizacje wersji Electron | Aktualizacje wersji CEF |
| Odpowiedzialność za bezpieczeństwo aplikacji | Twórca aplikacji | Twórca aplikacji |
Kolejną ważną kwestią jest utrzymanie przeglądarki. Zarówno Electron, jak i CEF zazwyczaj dystrybuują własne środowisko uruchomieniowe Chromium, więc programiści muszą dostarczać aktualizacje aplikacji, gdy pojawiają się poprawki bezpieczeństwa.
CEF udostępnia gałęzie wydań podążające za Chromium oraz dystrybucje binarne, które upraszczają ten proces. Podobnie Electron utrzymuje wydania zawierające aktualizacje Chromium i Node.js.
Żadne z tych podejść nie eliminuje całkowicie potrzeby bieżącego utrzymania. Aplikacje korzystające ze starszych wersji Chromium mogą pozostawać narażone na luki, które zostały już naprawione w projekcie źródłowym.
Zespoły tworzące oprogramowanie wyświetlające dowolne witryny internetowe powinny traktować utrzymanie bezpieczeństwa jako niezbędny element cyklu życia aplikacji, a nie sporadyczne zadanie.
Popularność: najważniejsze aplikacje korzystające z Electron i CEF
Zarówno Electron, jak i CEF są szeroko wykorzystywane w oprogramowaniu produkcyjnym, ale sposoby ich użycia są różne.
Electron jest szczególnie widoczny wśród popularnych desktopowych aplikacji do produktywności, komunikacji i programowania. Microsoft używa Electron w Visual Studio Code, a do innych znanych produktów opartych na Electron należą Slack, Discord, Notion, Figma, Signal Desktop i GitHub Desktop.
CEF jest również wykorzystywany przez duże firmy programistyczne, szczególnie do integrowania interfejsów internetowych z aplikacjami o istniejącej architekturze natywnej.
Przykłady:
| Aplikacja | Technologia | Typowe zastosowanie |
|---|---|---|
| Visual Studio Code | Electron | Wieloplatformowy edytor kodu |
| Slack | Electron | Komunikacja zespołowa |
| Discord | Electron | Platforma komunikacyjna i społecznościowa |
| Notion | Electron | Notatki i produktywność |
| Figma Desktop | Electron | Aplikacja do projektowania |
| Spotify Desktop | CEF | Interfejs oparty na technologiach internetowych w kliencie desktopowym |
| Steam | CEF | Osadzone interfejsy internetowe w kliencie desktopowym |
| OBS Studio | CEF | Źródła przeglądarkowe, nakładki i doki przeglądarkowe |
Spotify to szczególnie dobrze udokumentowany przykład wykorzystania CEF. Na jego oficjalnej stronie poświęconej oprogramowaniu open source publikowane są wersje CEF i Chromium powiązane z wydaniami Spotify Desktop.
OBS Studio stanowi kolejny wyraźny przykład powodów, dla których programiści wybierają CEF. Jego integracja obs-browser korzysta z CEF do udostępniania źródeł przeglądarkowych, umożliwiając użytkownikom wyświetlanie nakładek internetowych i innych treści w scenach transmisji. CEF jest komponentem OBS Studio, a nie frameworkiem użytym do zbudowania całej aplikacji.
Steam również korzysta w swoim kliencie desktopowym z osadzonych komponentów internetowych opartych na Chromium, integrując interfejsy internetowe z rozbudowaną infrastrukturą aplikacji natywnej.
Przykłady te ilustrują różnicę między tymi technologiami. Electron jest często wykorzystywany do tworzenia kompletnej aplikacji desktopowej, natomiast CEF służy często do wprowadzania funkcji internetowych do aplikacji, które mają już rozbudowane komponenty natywne.
CEF nie należy postrzegać jako mało znanej czy przestarzałej alternatywy. Powstał w 2008 roku, wcześniej niż Electron, i od wielu lat jest szeroko wykorzystywany w oprogramowaniu komercyjnym. Jego długa historia i ciągła obecność w najważniejszych produktach pokazują, że osadzanie Chromium nadal jest istotnym podejściem do tworzenia aplikacji desktopowych.
Electron z kolei zbudował szczególnie silny ekosystem wokół aplikacji desktopowych opartych na JavaScript. Jego popularność, sprawdzone narzędzia i udział dużych firm technologicznych sprawiają, że jest atrakcyjny dla zespołów tworzących nowe produkty przy użyciu technologii internetowych.
Oba frameworki mają różne mocne strony, ponieważ odpowiadają na różne wymagania architektoniczne.
Dlaczego w WebCatalog wybieramy Electron
W WebCatalog wybraliśmy Electron jako podstawę naszych wieloplatformowych aplikacji desktopowych, ponieważ dobrze odpowiada wymaganiom naszych produktów.
WebCatalog pozwala użytkownikom przekształcać witryny w aplikacje desktopowe, niezależnie zarządzać wieloma kontami i organizować aplikacje w systemach macOS, Windows i Linux. Nasze oprogramowanie musi obsługiwać witryny tworzone przez tysiące różnych programistów, z różnymi systemami uwierzytelniania, mechanizmami przechowywania danych, interfejsami API przeglądarki i frameworkami JavaScript.
Zarówno Electron, jak i CEF zapewniają spójne środowisko uruchomieniowe Chromium, co jest istotne dla zgodności. W przeciwieństwie do frameworków opartych na systemowych komponentach WebView pozwalają nam korzystać ze znanej wersji Chromium na wszystkich obsługiwanych platformach desktopowych.
WebCatalog nie jest jednak przede wszystkim aplikacją natywną, która potrzebuje osadzonego komponentu przeglądarki. Funkcje przeglądarkowe stanowią sedno naszego produktu. Potrzebujemy rozbudowanej kontroli nad oknami, sesjami, przechowywaniem danych, uprawnieniami, nawigacją i zachowaniem aplikacji w całym jej cyklu życia.
Electron udostępnia dojrzałe interfejsy API odpowiadające tym wymaganiom. Interfejsy BrowserWindow, webContents i session pozwalają nam tworzyć funkcje podobne do przeglądarki przy użyciu JavaScript i TypeScript. Szczególnie ważne są trwałe partycje sesji, ponieważ pozwalają użytkownikom utrzymywać niezależne sesje logowania dla wielu kont w tej samej witrynie.
CEF również udostępnia interfejsy API do zarządzania instancjami przeglądarki, żądaniami, przechowywaniem danych i integracją natywną. Zasadniczo wiele tych samych możliwości można byłoby zaimplementować przy użyciu CEF. Wymagałoby to jednak samodzielnego zbudowania i utrzymywania większej ilości infrastruktury natywnej.
Integracja Electron z Node.js pasuje również do naszego stosu technologicznego. Możemy implementować znaczną część logiki aplikacji desktopowych w TypeScript, współdzielić kod między produktami i korzystać z ekosystemu JavaScript.
Kolejnym czynnikiem jest tworzenie oprogramowania na wiele platform. WebCatalog obsługuje macOS, Windows i Linux, w tym specyficzne dla tych platform pakowanie aplikacji, integracje i zachowania systemowe. Sprawdzone interfejsy API i narzędzia dystrybucji Electron zmniejszają ilość kodu natywnego, który musimy utrzymywać.
Zdajemy sobie sprawę, że Electron wprowadza narzut. Dołączanie Chromium zwiększa rozmiar aplikacji, a aplikacje oparte na przeglądarce wymagają starannego zarządzania zasobami. Zamiast zastępować Electron, skupiliśmy się na ulepszaniu sposobu, w jaki z niego korzystamy.
Na przykład wprowadziliśmy klony APFS, aby ograniczyć miejsce zajmowane na dysku przez generowane aplikacje na Maca, zmniejszając ilość redundantnie przechowywanych danych bez rezygnowania ze zgodności z Chromium.
Nasza decyzja nie oznacza, że Electron jest zawsze lepszy od CEF. Gdyby WebCatalog był przede wszystkim aplikacją natywną z kilkoma osadzonymi interfejsami internetowymi, CEF mógłby być doskonałym wyborem. Ponieważ jednak nasz produkt jest zbudowany zasadniczo wokół aplikacji internetowych i funkcji przeglądarkowych, Electron zapewnia podstawę, która ułatwia produktywne tworzenie i utrzymanie oprogramowania.
Gdzie CEF ma przewagę
Choć w WebCatalog preferujemy Electron, CEF ma istotne zalety w przypadku aplikacji wymagających głębszej integracji z oprogramowaniem natywnym.
CEF jest szczególnie atrakcyjny, gdy programiści mają już rozwiniętą aplikację w C++ i chcą wprowadzić nowoczesne interfejsy internetowe bez zastępowania istniejącej architektury.
Obsługa renderowania poza ekranem to kolejna istotna zaleta. Aplikacje takie jak oprogramowanie do transmisji strumieniowych i silniki gier mogą wymagać renderowania treści internetowych bezpośrednio w niestandardowych potokach graficznych zamiast w konwencjonalnych oknach desktopowych. CEF zapewnia sprawdzone interfejsy API do takich zastosowań.
CEF daje też programistom znaczną kontrolę nad integracją przeglądarki. Mogą dostosowywać obsługę żądań, nawigację, powiązania JavaScript, ładowanie zasobów oraz sposób interakcji instancji przeglądarki z natywnymi komponentami aplikacji.
Dla zespołów z dużym doświadczeniem w programowaniu natywnym ta elastyczność może przeważać nad wygodą Electron.
CEF warto rozważyć w następujących sytuacjach:
- Dodawanie interfejsów internetowych do istniejącej aplikacji natywnej. Programiści mogą zachować obecną architekturę aplikacji i osadzić Chromium tam, gdzie jest potrzebne.
- Tworzenie oprogramowania o niestandardowych wymaganiach dotyczących renderowania. Renderowanie poza ekranem pozwala integrować treści internetowe z potokami graficznymi i specjalistycznymi interfejsami.
- Głęboka integracja z natywnymi funkcjami C++. CEF udostępnia natywne interfejsy API i pozwala szczegółowo kontrolować zachowanie przeglądarki.
- Utrzymywanie istniejącej aplikacji CEF. Migracja do Electron może wymagać znacznych zmian architektonicznych bez istotnych korzyści.
- Łączenie interfejsów natywnych i internetowych. Programiści mogą używać Chromium w wybranych częściach aplikacji, zachowując natywne komponenty interfejsu w pozostałych.
CEF wymaga jednak wzięcia większej odpowiedzialności za infrastrukturę aplikacji. Programiści mogą być zmuszeni do samodzielnego zaimplementowania pakowania, aktualizacji, zarządzania oknami i integracji specyficznych dla poszczególnych platform.
Dla zespołów, które są już przygotowane do utrzymywania aplikacji natywnych, może to być całkowicie rozsądne rozwiązanie. Zespołom skupionym na technologiach internetowych, które tworzą nowy produkt desktopowy, może to niepotrzebnie komplikować pracę.
Electron a CEF: co wybrać?
Obie technologie są dojrzałe, aktywnie rozwijane i zdolne obsługiwać zaawansowane oprogramowanie desktopowe. Lepszy wybór zależy przede wszystkim od tego, czy tworzysz nową aplikację desktopową opartą na technologiach internetowych, czy osadzasz funkcje internetowe w istniejącej aplikacji natywnej.
| Twój priorytet | Lepszy punkt wyjścia | Dlaczego |
|---|---|---|
| Nowa aplikacja desktopowa wykorzystująca JavaScript lub TypeScript | Electron | Kompletny framework aplikacji |
| Istniejąca natywna aplikacja w C++ | CEF | Integracja z architekturą natywną |
| Minimum programowania natywnego | Electron | Node.js i interfejsy API JavaScript |
| Osadzanie treści internetowych w natywnych oknach | CEF | Zaprojektowany specjalnie do osadzania |
| Renderowanie poza ekranem i niestandardowe potoki graficzne | CEF | Dedykowane interfejsy API do renderowania |
| Rozbudowane narzędzia do pakowania i aktualizowania aplikacji desktopowych | Electron | Sprawdzony ekosystem dystrybucji |
| Bezpośrednia integracja z natywnym kodem C++ | CEF | Natywne interfejsy C i C++ |
| Spójna wersja Chromium na różnych platformach desktopowych | Dowolne z nich | Oba dołączają Chromium |
| Złożone zarządzanie sesjami przeglądarki | Dowolne z nich | Oba zapewniają możliwości zarządzania przeglądarką |
| Małe pakiety aplikacji | Żadne nie ma przewagi wynikającej z samej architektury | Oba dystrybuują Chromium |
| Istniejący zespół programistów JavaScript | Electron | Znany stos technologiczny |
| Istniejący produkt oparty na CEF | CEF | Uniknięcie niepotrzebnej migracji |
Dla większości programistów internetowych rozpoczynających tworzenie nowej wieloplatformowej aplikacji desktopowej Electron jest zazwyczaj bardziej praktycznym wyborem. Zapewnia architekturę aplikacji, integracje natywne, narzędzia programistyczne i ekosystem dystrybucji potrzebne do zbudowania kompletnego produktu bez tworzenia wszystkiego od podstaw.
CEF jest często lepszą opcją dla programistów, którzy mają już aplikację natywną lub potrzebują specjalistycznych możliwości osadzania przeglądarki. Jego elastyczność i bezpośrednia integracja natywna sprawiają, że jest szczególnie przydatny w oprogramowaniu takim jak silniki gier, narzędzia do transmisji strumieniowych, aplikacje przemysłowe i złożone produkty natywne z osadzonymi interfejsami internetowymi.
Żadna z tych technologii nie jest z natury szybsza ani bezpieczniejsza. Cechy te zależą w dużej mierze od aplikacji, jej architektury i jakości implementacji.
Podsumowanie
Electron i Chromium Embedded Framework wykorzystują tę samą bazową technologię przeglądarki, ale rozwiązują różne problemy.
Electron został zaprojektowany tak, aby ułatwić programistom internetowym tworzenie aplikacji desktopowych. Łączy Chromium, Node.js i natywne interfejsy API środowiska desktopowego w framework, który pozwala zespołom budować zaawansowane aplikacje przy użyciu JavaScript i TypeScript.
CEF jest przeznaczony do osadzania Chromium w innych aplikacjach. Zapewnia kontrolę nad integracją przeglądarki na niższym poziomie i jest szczególnie cenny w aplikacjach natywnych wymagających interfejsów opartych na technologiach internetowych lub specjalistycznych możliwości renderowania.
Oba rozwiązania dowiodły swojej wartości w najważniejszych produktach używanych na co dzień. Electron stanowi podstawę takich aplikacji jak Visual Studio Code, Slack, Discord i Notion, a CEF jest wykorzystywany w produktach takich jak Spotify, Steam i OBS Studio.
W WebCatalog wybraliśmy Electron, ponieważ nasze produkty są zbudowane przede wszystkim wokół funkcji przeglądarkowych. Jego spójne środowisko uruchomieniowe Chromium, dojrzałe interfejsy API do zarządzania przeglądarką i ekosystem JavaScript pozwalają nam efektywnie tworzyć i utrzymywać wieloplatformowe aplikacje desktopowe.
CEF pozostaje doskonałym wyborem dla programistów pracujących nad aplikacjami natywnymi, zwłaszcza gdy Chromium ma zostać osadzone w istniejącej architekturze, a nie stanowić fundament całego produktu.
Ostatecznie decyzja zależy od tego, co tworzysz. Jeśli chcesz stworzyć kompletną aplikację desktopową przy użyciu technologii internetowych, Electron jest zwykle lepszym punktem wyjścia. Jeśli chcesz dodać Chromium do aplikacji natywnej, CEF prawdopodobnie będzie bardziej odpowiednim narzędziem.


