Electron – wprowadzenie

W maju ukazała się wersja 1.0 Electrona – narzędzia do tworzenia aplikacji desktopowych z wykorzystaniem technologii webowych. Dla niewtajemniczonych – Electron to narzędzie, które wykorzystano przy tworzeniu takich aplikacji jak Slack, edytor Atom, Calypso dla WordPress.com czy Visual Studio Code. Ponieważ sam od dłuższego czasu korzystam z tego rozwiązania, chciałbym je Wam przybliżyć.

Dlaczego? Bo Electron idealnie nadaje się do tworzenia aplikacji, które korzystają np. z WordPressowego REST API – nie trzeba się uczyć zbyt wielu rzeczy jeżeli mamy na swoim koncie aplikacje SPA.

Jak to działa?

Łopatologicznie tłumacząc – Electron pozwala tworzyć aplikacje, która de facto składają się z dwóch elementów – serwera node.js oraz okien przeglądarki. Mamy więc główny wątek, który działa jak zwykła aplikacja napisana w node.js oraz wątki renderujące, które są niczym innym jak najnowszą wersją Chromium tylko bez interfejsu przeglądarki.

Zalety

Istnieje wiele zalet tego rozwiązania, a najważniejsze to:

  • Brak konieczności uczenia się nowych języków programowania,
  • Multiplatformowość,
  • Dostęp do najnowszych standardów (bo Chromium z reguły może się pochwalić najszybciej wsparciem dla najnowszych standardów),
  • Szerokie wsparcie dla różnych API systemowych w tym dostęp do systemu plików użytkownika,
  • Separacja wątku node.js i Chromium – tworzą one swoisty back-end i front-end,
  • Łatwa komunikacja między wątkami,
  • Możliwość korzystania z Chrome DevTools przy debugowaniu aplikacji – co jak co, ale front-end dysponuje obecnie moim zdaniem naprawdę fenomenalnymi narzędziami wspomagającymi debugowanie i analizę wydajności aplikacji.

Wady

Oczywiście istnieją też pewne wady o których trzeba pamiętać. Mi osobiście nasuwają się następujące problemy:

  • Wynikowy rozmiar aplikacji to co najmniej ~50MB – wynika to z wagi samego Chromium i V8 oraz kodu Electrona,
  • Brak ochrony kodu źródłowego – nie ma (i raczej w najbliższej przyszłości nie będzie) możliwości ukrycia kodu aplikacji przed oczami ciekawskich :),
  • Bardziej złożone aplikacje mogą wymagać skompilowania modułów node.js na konkretnej platformie,
  • W wypadku bardziej wymagających obliczeniowo aplikacji musimy pamiętać, że aplikacja przeglądarkowa będzie mniej wydajna niż dedykowana aplikacja desktopowa.

Warto zobaczyć

Wraz z wersją 1.0 ukazało się sporo ciekawych narzędzi i aplikacji:

  • Electron API Demos – zbiór pokazów możliwości aplikacji pisanych w Electronie,
  • Devtron – dodatek do Chrome DevTools jeszcze bardziej upraszczający debugowanie,
  • Spectron – narzędzie do tworzenia testów integracyjnych dla aplikacji

Czy warto?

Osobiście wierzę w to, że rozwiązania oparte o HTML, CSS i JS stopniowo będą wypierać natywne języki dla różnych platform – w świecie pełnym różnych platform potrzeba nam przede wszystkim zunifikowanego sposobu na tworzenie aplikacji działających w różnych środowiskach systemowych. Obecnie wciąż sporym ograniczeniem jest wydajność przeglądarek, ale z roku na rok widoczny jest coraz większy postęp w tym zakresie.

Warto też porównać Electrona z alternatywnym rozwiązaniem NW.js.