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.