
Electron i Chromium Embedded Framework (CEF) to dwie sprawdzone technologie umożliwiające wykorzystanie Chromium w aplikacjach komputerowych. Obie pozwalają programistom tworzyć oprogramowanie wyświetlające nowoczesne strony i interfejsy internetowe w systemach macOS, Windows i Linux. Służą jednak zasadniczo różnym celom.
Electron to kompletny framework do tworzenia aplikacji komputerowych, 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 rozległego doświadczenia w programowaniu natywnym. CEF jest natomiast frameworkiem do osadzania Chromium w istniejących lub nowych aplikacjach, zazwyczaj napisanych w C++ lub innych językach używanych do tworzenia oprogramowania natywnego.
Obie technologie są szeroko stosowane w oprogramowaniu produkcyjnym. Electron stanowi podstawę aplikacji takich jak Visual Studio Code, Slack, Discord i Notion, natomiast CEF jest wykorzystywany w produktach takich jak Spotify, Steam i OBS Studio. W WebCatalog wybraliśmy Electron do tworzenia naszych wieloplatformowych aplikacji komputerowych.
Jakie są więc różnice i kiedy warto wybrać jedną technologię zamiast drugiej?
Electron a CEF w skrócie
Chociaż zarówno Electron, jak i CEF korzystają z Chromium, znacznie różnią się architekturą, komfortem pracy programistów i docelowymi zastosowaniami.
| Cecha | Electron | Chromium Embedded Framework (CEF) |
|---|---|---|
| Rok powstania | 2013 | 2008 |
| Główny cel | Tworzenie kompletnych aplikacji komputerowych | Osadzanie Chromium w innych aplikacjach |
| Silnik przeglądarki | Chromium | Chromium |
| Główne języki | JavaScript, TypeScript | C, C++, z powiązaniami dla innych języków dostarczanymi przez podmioty zewnętrzne |
| Dołączony Node.js | Tak | Nie |
| Integracja natywna | Interfejsy 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 rozwiązaniom niestandardowym | Wbudowana obsługa w API |
| Rozmiar aplikacji | Zazwyczaj duży | Zależy od integracji, ale samo Chromium zajmuje dużo miejsca |
| Wydajność | Zależy od aplikacji | Zależy od aplikacji i sposobu integracji |
| Obsługa wielu platform | macOS, Windows, Linux | macOS, Windows, Linux |
| Ekosystem narzędzi do pakowania | Electron Forge, electron-builder | Zazwyczaj zarządzany przez aplikację hostującą |
| Najlepsze zastosowanie | Aplikacje komputerowe oparte na JavaScript | Aplikacje natywne wymagające osadzonych treści internetowych |
Najważniejsza różnica polega na tym, że Electron zapewnia framework aplikacyjny, a CEF — framework do osadzania przeglądarki. Niekoniecznie 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 jednolite środowisko uruchomieniowe aplikacji. Programiści tworzą proces główny, który zarządza oknami aplikacji, zdarzeniami jej cyklu życia i funkcjami natywnymi, podczas gdy procesy renderujące obsługują interfejs oparty na technologiach internetowych.
Ta 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 przyjmuje inne podejście. Zamiast dostarczać kompletny framework do tworzenia aplikacji komputerowych, pozwala programistom integrować 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 wewnątrz istniejącego okna aplikacji. Otaczający je 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ą, wczytywaniem zasobów, wykonywaniem kodu JavaScript oraz komunikacją między przeglądarką a aplikacją natywną. Korzysta również z wieloprocesowej architektury 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 zazwyczaj budowana wokół Chromium i Node.js. W przypadku CEF Chromium jest zwykle jednym z komponentów większej aplikacji.
CEF można również wykorzystać do tworzenia aplikacji, których interfejsy są w większości oparte na technologiach internetowych, ale programiści muszą samodzielnie zaimplementować większą część otaczającej je infrastruktury aplikacyjnej.
Ciekawostką historyczną jest to, że wczesne wersje Electron i NW.js korzystały z CEF. Electron z czasem 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 poszukujących kompletnego frameworka do tworzenia aplikacji komputerowych 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, CEF może być bardziej naturalnym wyborem.
Praca programisty: JavaScript a programowanie natywne
Jedną z największych zalet Electron jest niski próg wejścia. Programiści znający nowoczesne technologie internetowe mogą wykorzystać swoje dotychczasowe umiejętności do tworzenia aplikacji komputerowych bez nauki C++ lub frameworków interfejsu użytkownika specyficznych dla poszczególnych platform.
Integracja Electron z Node.js zapewnia dostęp do rozbudowanego ekosystemu pakietów obsługujących operacje na systemie plików, komunikację sieciową, bazy danych, procesy w tle i inne funkcje. Popularne technologie frontendowe, takie jak React, Vue, Svelte i Angular, mogą być używane bez istotnych zmian architektury.
CEF zaprojektowano przede wszystkim z myślą o interfejsach API w C i C++. Chociaż istnieją powiązania dla języków takich jak C#, Java, Python i Delphi dostarczane przez podmioty zewnętrzne, 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 lub wdrażania całkowicie nowego frameworka aplikacyjnego.
Jednak w przypadku zespołu skoncentrowanego na JavaScript, który rozpoczyna tworzenie nowej aplikacji komputerowej, CEF wymaga zazwyczaj więcej konfiguracji i pracy nad integracją natywną.
Różnica dotyczy również narzędzi. Electron korzysta ze sprawdzonych rozwiązań, 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 to programiści są zwykle odpowiedzialni za zintegrowanie frameworka z własnymi systemami budowania i wdrażania.
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, żadna z tych technologii nie eliminuje automatycznie narzutu zasobów związanego z uruchamianiem nowoczesnego silnika przeglądarki.
Obie technologie mogą używać wielu procesów do renderowania, akceleracji GPU, komunikacji sieciowej i innych funkcji przeglądarki. Zużycie pamięci i procesora zależy w dużej mierze od wyświetlanych treści, liczby aktywnych instancji przeglądarki oraz sposobu zarządzania zasobami przez aplikację.
CEF może zapewniać większą elastyczność przy integracji 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 wykorzystywać CEF do panelu ustawień lub osadzonego interfejsu internetowego, zachowując natywną implementację silnika renderującego, przetwarzania dokumentów i innych funkcji wrażliwych na wydajność.
Aplikacje Electron również mogą wykonywać kod natywny za pomocą dodatków Node.js, procesów zewnętrznych lub modułów natywnych. Architektura Electron jest jednak zasadniczo ukierunkowana na tworzenie samej aplikacji przy użyciu 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ć wyspecjalizowane sposoby renderowania dzięki dodatkowym integracjom, ale CEF udostępnia renderowanie poza ekranem jako ugruntowany element swojego API do osadzania.
Dla programistów oceniających wydajność najbardziej przydatne pomiary obejmują:
- Czas uruchamiania: Jak szybko aplikacja staje się gotowa do użycia.
- Zużycie pamięci: Wykorzystanie zasobów przy reprezentatywnych treściach przeglądarki i funkcjach natywnych.
- Zużycie procesora: Wydajność podczas renderowania, nawigacji i operacji w tle.
- Rozmiar aplikacji: Rozmiar pobieranych plików i zajętość 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 prowadzi automatycznie do radykalnego zmniejszenia rozmiaru aplikacji.
Programiści, którym zależy przede wszystkim na mniejszych pakietach aplikacji, mogą rozważyć alternatywy takie jak Tauri, które korzysta z komponentów WebView dostarczanych przez system.
Ani Electron, ani CEF nie należy uznawać za bezwzględnie szybszy bez przeprowadzenia testów wydajności rzeczywistej implementacji.
Bezpieczeństwo i aktualizacje przeglądarki
Zarówno Electron, jak i CEF opierają się na architekturze przeglądarki Chromium i jej mechanizmach bezpieczeństwa, ale za odpowiednią konfigurację aplikacji odpowiadają programiści.
Electron zapewnia funkcje takie jak izolowanie procesów renderujących w piaskownicy, izolacja kontekstu i komunikacja oparta na IPC między uprzywilejowanymi funkcjami aplikacji a treściami internetowymi. Dokumentacja bezpieczeństwa zaleca ograniczanie dostępu do Node.js, staranną walidację komunikatów IPC i traktowanie treści wczytywanych zdalnie jako niezaufanych.
CEF również obsługuje wieloprocesową architekturę Chromium i izolację bezpieczeństwa. 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, pozwalając programistom łączyć treści internetowe z funkcjami aplikacji. Te interfejsy należy projektować ostrożnie, zwłaszcza podczas wyświetlania stron podmiotów zewnętrznych.
| Kwestia bezpieczeństwa | Electron | CEF |
|---|---|---|
| Piaskownica Chromium | Obsługiwana | Obsługiwana |
| Uprzywilejowany dostęp do funkcji natywnych | Node.js i interfejsy API Electron | Natywne interfejsy API aplikacji hostującej |
| Komunikacja między JavaScript a kodem natywnym | Skrypty preload i IPC | Powiązania V8 i komunikaty 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 zabezpieczeń 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 dostarczają własne środowisko uruchomieniowe Chromium, dlatego programiści muszą udostępniać aktualizacje aplikacji, gdy pojawiają się poprawki bezpieczeństwa.
CEF udostępnia gałęzie wydań podążające za rozwojem 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ć podatne na luki, które zostały już usunięte w projekcie źródłowym.
W przypadku zespołów tworzących oprogramowanie wyświetlające dowolne strony internetowe dbanie o aktualność zabezpieczeń powinno być traktowane jako niezbędny element cyklu życia aplikacji, a nie sporadyczne zadanie.
Popularność: znane 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 aplikacji komputerowych do pracy, komunikacji i programowania. Microsoft używa Electron w Visual Studio Code, a inne znane produkty oparte na Electron to Slack, Discord, Notion, Figma, Signal Desktop i GitHub Desktop.
CEF jest również wykorzystywany przez duże firmy programistyczne, zwłaszcza przy integrowaniu interfejsów internetowych z aplikacjami o istniejącej architekturze natywnej.
Przykłady obejmują:
| 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 organizacja pracy |
| Figma Desktop | Electron | Aplikacja do projektowania |
| Spotify Desktop | CEF | Interfejs oparty na technologiach internetowych w kliencie komputerowym |
| Steam | CEF | Osadzone interfejsy internetowe w kliencie komputerowym |
| OBS Studio | CEF | Źródła przeglądarkowe, nakładki i doki przeglądarkowe |
Spotify jest szczególnie dobrze udokumentowanym przykładem wykorzystania CEF. Na swojej oficjalnej stronie poświęconej oprogramowaniu open source publikuje wersje CEF i Chromium powiązane z wydaniami Spotify Desktop.
OBS Studio to kolejny wyraźny przykład tego, dlaczego programiści wybierają CEF. Jego integracja obs-browser wykorzystuje CEF do udostępniania źródeł przeglądarkowych, dzięki którym użytkownicy mogą wyświetlać nakładki oparte na technologiach internetowych i inne treści w scenach transmisji. CEF jest komponentem OBS Studio, a nie frameworkiem użytym do zbudowania całej aplikacji.
Steam również wykorzystuje w swoim kliencie komputerowym osadzone komponenty internetowe oparte na Chromium, integrując interfejsy internetowe z szerszą infrastrukturą aplikacji natywnej.
Te przykłady ilustrują różnicę między technologiami. Electron jest często używany do tworzenia kompletnej aplikacji komputerowej, 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 lub 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łe stosowanie w ważnych produktach pokazują, że osadzanie Chromium pozostaje istotnym podejściem do tworzenia aplikacji komputerowych.
Electron z kolei zbudował wyjątkowo silny ekosystem wokół aplikacji komputerowych opartych na JavaScript. Jego duża popularność, sprawdzone narzędzia i udział największych firm technologicznych sprawiają, że jest atrakcyjny dla zespołów tworzących nowe produkty z wykorzystaniem technologii internetowych.
Te dwa frameworki mają różne mocne strony, ponieważ odpowiadają na odmienne wymagania architektoniczne.
Dlaczego w WebCatalog wybieramy Electron
W WebCatalog wybraliśmy Electron jako podstawę naszych wieloplatformowych aplikacji komputerowych, ponieważ dobrze odpowiada wymaganiom naszych produktów.
WebCatalog pozwala użytkownikom przekształcać strony internetowe w aplikacje komputerowe, niezależnie zarządzać wieloma kontami i porządkować aplikacje w systemach macOS, Windows i Linux. Nasze oprogramowanie musi obsługiwać strony stworzone 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 ma znaczenie dla kompatybilności. W przeciwieństwie do frameworków opartych na systemowych komponentach WebView pozwalają nam korzystać ze znanej wersji Chromium na wszystkich obsługiwanych platformach komputerowych.
WebCatalog nie jest jednak przede wszystkim aplikacją natywną, która potrzebuje osadzonego komponentu przeglądarki. Funkcje przeglądarkowe są centralnym elementem 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. Trwałe partycje sesji są szczególnie ważne, ponieważ umożliwiają użytkownikom utrzymywanie niezależnych sesji 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 z tych samych możliwości można byłoby zaimplementować przy użyciu CEF. Wymagałoby to jednak samodzielnego zbudowania i utrzymywania większej części infrastruktury natywnej.
Integracja Electron z Node.js jest także zgodna z naszym stosem technologicznym. Możemy implementować dużą część logiki naszych aplikacji komputerowych w TypeScript, współdzielić kod między produktami i korzystać z ekosystemu JavaScript.
Kolejną kwestią jest tworzenie oprogramowania na wiele platform. WebCatalog obsługuje macOS, Windows i Linux, w tym specyficzne dla platform sposoby pakowania aplikacji, integracje i zachowania systemowe. Sprawdzone interfejsy API Electron i narzędzia do dystrybucji ograniczają ilość kodu natywnego, który musimy utrzymywać.
Zdajemy sobie sprawę, że Electron wiąże się z narzutem. Dołączenie 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 go wykorzystujemy.
Na przykład wprowadziliśmy klony APFS, aby zmniejszyć zużycie miejsca na dysku przez generowane aplikacje na Maca, ograniczając nadmiarowe przechowywanie danych bez rezygnacji z kompatybilności 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 zasadniczo zbudowany wokół aplikacji internetowych i funkcji przeglądarkowych, Electron zapewnia podstawę, która pozwala pracować wydajniej i jest łatwiejsza w utrzymaniu.
W czym CEF ma przewagę
Chociaż w WebCatalog preferujemy Electron, CEF ma istotne zalety w przypadku aplikacji wymagających głębszej integracji z oprogramowaniem natywnym.
CEF jest szczególnie atrakcyjny dla programistów, którzy mają już rozbudowaną 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 aplikacji komputerowych. CEF udostępnia sprawdzone interfejsy API do takich zastosowań.
CEF daje również programistom dużą kontrolę nad integracją przeglądarki. Mogą dostosowywać obsługę żądań, nawigację, powiązania JavaScript, wczytywanie 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.
Warto rozważyć CEF 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 wyspecjalizowanymi interfejsami.
- Głęboka integracja z natywnymi funkcjami w C++. CEF udostępnia natywne interfejsy API i umożliwia szczegółową kontrolę nad zachowaniem przeglądarki.
- Utrzymywanie istniejącej aplikacji opartej na CEF. Migracja do Electron może wymagać znacznych zmian architektury bez przynoszenia 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 wiąże się jednak z większą odpowiedzialnością za infrastrukturę aplikacji. Programiści mogą być zmuszeni samodzielnie zaimplementować pakowanie, aktualizacje, zarządzanie oknami i integracje specyficzne dla poszczególnych platform.
Dla zespołów już przygotowanych do utrzymywania aplikacji natywnych może to być całkowicie uzasadnione. Dla zespołów skupionych na technologiach internetowych, które tworzą nowy produkt komputerowy, może to wprowadzać niepotrzebną złożoność.
Electron czy CEF: co wybrać?
Obie technologie są dojrzałe, aktywnie rozwijane i zdolne do obsługi zaawansowanego oprogramowania komputerowego. Lepszy wybór zależy przede wszystkim od tego, czy tworzysz nową aplikację komputerową opartą na technologiach internetowych, czy osadzasz funkcje internetowe w istniejącej aplikacji natywnej.
| Twój priorytet | Lepszy punkt wyjścia | Dlaczego |
|---|---|---|
| Nowa aplikacja komputerowa w JavaScript lub TypeScript | Electron | Kompletny framework aplikacyjny |
| Istniejąca aplikacja natywna w C++ | CEF | Integruje się z architekturą natywną |
| Minimalny zakres 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 komputerowych | Electron | Sprawdzony ekosystem dystrybucji |
| Bezpośrednia integracja z natywnym kodem C++ | CEF | Natywne interfejsy w C i C++ |
| Spójne Chromium na różnych platformach komputerowych | Dowolny | Oba zawierają Chromium |
| Złożone zarządzanie sesjami przeglądarki | Dowolny | Oba zapewniają funkcje zarządzania przeglądarką |
| Małe pakiety aplikacji | Żaden nie ma wrodzonej przewagi | 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 komputerowej 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. Te cechy zależą w dużej mierze od aplikacji, jej architektury i jakości implementacji.
Podsumowanie
Electron i Chromium Embedded Framework korzystają z tej samej bazowej technologii przeglądarkowej, ale rozwiązują różne problemy.
Electron zaprojektowano tak, aby ułatwić programistom internetowym tworzenie aplikacji komputerowych. Łączy Chromium, Node.js i natywne interfejsy API platform komputerowych we framework, który pozwala zespołom budować zaawansowane aplikacje przy użyciu JavaScript i TypeScript.
CEF zaprojektowano do osadzania Chromium w innych aplikacjach. Zapewnia kontrolę nad integracją przeglądarki na niższym poziomie i jest szczególnie cenny w aplikacjach natywnych, które potrzebują interfejsów opartych na technologiach internetowych lub specjalistycznych możliwości renderowania.
Obie technologie dowiodły swojej wartości w ważnych produktach używanych na co dzień. Electron stanowi podstawę aplikacji takich jak Visual Studio Code, Slack, Discord i Notion, natomiast CEF jest wykorzystywany w produktach takich jak Spotify, Steam i OBS Studio.
W WebCatalog wybraliśmy Electron, ponieważ nasze produkty są zasadniczo zbudowane wokół funkcji przeglądarkowych. 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 komputerowe.
CEF pozostaje doskonałym wyborem dla programistów pracujących nad aplikacjami natywnymi, zwłaszcza gdy Chromium ma być osadzone w istniejącej architekturze, a nie stanowić podstawę całego produktu.
Decyzja ostatecznie sprowadza się do tego, co tworzysz. Jeśli chcesz stworzyć kompletną aplikację komputerową przy użyciu technologii internetowych, Electron jest zwykle lepszym punktem wyjścia. Jeśli chcesz dodać Chromium do aplikacji natywnej, CEF będzie prawdopodobnie bardziej odpowiednim narzędziem.


