Jump to content

Electron (software framework)

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning
Electron
Original author(s)GitHub
Developer(s)OpenJS Foundation
Initial release15 July 2013; 12 years ago (2013-07-15)[1]
Stable release
34.2.0 / February 11, 2025; 11 months ago (2025-02-11)
Repositorygithub.com/electron/electron
Written inC++, JavaScript, Objective-C++ and Objective-C
Operating systemLinux, macOS, and Windows
PlatformIA-32, x86-64, ARM
LicenseMIT License[2]

Electron (이전에 Atom Shell으로 알려져 있음[3])은 OpenJS Foundation에 의해 개발되고 유지 관리되는 자유와 오픈-소스 소프트웨어 프레임워크입니다.[4] 그 프레임워크는 Chromium 웹 브라우저 엔진의 버전을 사용하고 Node.js 런타임 환경을 사용하여 렌더링되는 웹 기술 (비록 프론트-엔드 프레임워크와 WebAssembly와 같은 다른 기술이 가능할지라도, 주로 HTML, CSS, 및 JavaScript)을 사용하여 데스크탑 응용 프로그램을 작성하도록 설계되었습니다.[5] 그것은 역시 다양한 API를 Node.js 서비스와의 기본 통합과 프로세스-사이 통신 모듈과 같은 기능을 활성화하기 위해 사용합니다.

Electron은 원래 Atom에 대해 제작되었고[3] GitHub Desktop, Light Table,[6] Visual Studio Code, WordPress Desktop,[7]Eclipse Theia를 포함한 여러 다른 오픈-소스 프로젝트 뒤의 주요 GUI 프레임 워크입니다.[8]

Introduction

어떤 경우에서 리눅스 바이너리를 제공하는 않는 프로그램들이 있습니다. 다시 한번 어떤 경우에서 이들 중 일부는 electron으로 구동이 가능합니다.

게다가, electron이 설치되지 않는 곳에서 electron 프레임워크를 같이 넣어서 패키지로 묶을 경우 상당한 크기의 바이너리를 제공할 수 있습니다.

이러다 보니, 차라리 electron을 시스템에 설치해서, 불필요한 electron의 중복 설치를 줄이거나, 리눅스 바이너리를 제공하지 않는 프로그램을 Windows 운영 시스템에 대한 바이너리를 풀어서 electron으로 구동하는 것을 고려해 볼 수 있습니다.

Installation

데비안에서 패키지를 제공하지 않기 때문에, Building binary deb packages를 사용해서 패키지를 만들 수 있습니다.

2025년 2월 기준, 34.2.0 버전을 받을 수 있습니다.

  • chromedirver-v34.2.0-linux-x64.zip
  • electron-v34.2.0-linux-x64.zip

그런-다음 2개의 파일을 하나의 디렉토리에 풉니다. 이때, LICENSE 파일들이 같이 존재하므로 하나만 있어도 상관없습니다.

이제, 패키지로 만들 스크립트를 만드는데, 아치 패키지를 참조할 수 있습니다:

그것으로부터 소스를 푼 디렉토리에 electron-bin.install 파일을 만듭니다:

#!/bin/bash

_projectname=electron
_major=34
_pkgname="${_projectname}${_major}"
pkgname="${_pkgname}"-bin
_subver='2.0'
_pkgver="${_major}.${_subver}"
pkgver="${_pkgver/-/.}"
pkgrel=1

pkgdir=electron34-bin_34.2.0_amd64

install -Dm755 -d "${pkgdir}/usr/"{bin,lib/"${_pkgname}"}
find . -mindepth 1 -maxdepth 1 -type f ! -name "*.zip" ! -name "LICENSE*" -exec cp -r --no-preserve=ownership --preserve=mode -t "${pkgdir}/usr/lib/${_pkgname}/." {} +
cp -r --no-preserve=ownership --preserve=mode {locales,resources} "${pkgdir}/usr/lib/${_pkgname}"
chmod u+s "${pkgdir}/usr/lib/${_pkgname}/chrome-sandbox"
ln -nfs "/usr/lib/${_pkgname}/${_projectname}" "${pkgdir}/usr/bin/${_pkgname}"
install -Dm644 LICENSE* -t "${pkgdir}/usr/share/licenses/${pkgname}"

mkdir -p "$pkgdir/DEBIAN"

다음으로 control 파일을 적당히 만듭니다.

파일을 묶고 설치합니다.

Multi-version

여러 개의 바이너리 버전을 설치할 수 있기 때문에, 아치 패키지에서는 메타 패키지를 별도로 만듭니다.

데비안에서는 데비안 방식으로 적용할 수 있습니다:

  • sudo update-alternatives --install /usr/bin/electron electron /usr/bin/electron34 34
  • sudo update-alternatives --config electron

나중에 다른 버전을 설치할 경우에 숫자만 바꾸어서 설치하고, 두 번째 명령으로 원하는 버전을 선택할 수 있습니다.

Architecture

Electron 응용 프로그램에는 "main" 프로세스와 여러 "renderer" 프로세스가 포함됩니다. 주요 프로세스는 응용 프로그램에 대해 논리 (예를 들어, 메뉴, 쉘 명령, 수명주기 이벤트)를 실행하고 그런-다음 BrowserWindow 클래스의 인스턴스를 인스턴스화함으로써 여러 렌더러 프로세스를 시작할 수 있으며, 이는 HTMLCSS를 렌더링함으로써 화면에 나타나는 윈도우를 로드합니다.

주요 프로세스에서 nodeIntegration 필드가 true로 설정되면, 주요 프로세서와 렌더러 프로세스가 모두 Node.js 통합으로 실행될 수 있습니다.

Electron의 API의 대부분은 C++ 또는 Objective-C로 작성되었고 JavaScript 바인딩을 통해 응용 프로그램 코드에 직접 노출됩니다.[9]

History

2021년 9월, Electron은 로미엄 확장 안정의 릴리스 주기와 일치하고 주요 버전과 브라우저-기반 앱에게 브라우저 엔진의 최신 릴리스의 두 가지 주요 버전 내에 있어야 하는 Microsoft Store로부터 새로운 요구 사항을 준수하기 위해 주요 버전 사이에 8주 릴리스 주기로 이전했습니다.[10]

Electron는 종종 다른 모든 각 로미엄 릴리스를 따라 새로운 주요 버전을 출시합니다. 최신 3 가지 안정 버전은 Electron 팀에 의해 지원됩니다.[11]

Version history
Release Status Release date End of life date Chromium version Node.js version Module version N-API version ICU version
Old version, no longer maintained: v1.8.x Old version, no longer maintained: End-of-Life 12 December 2017 20 December 2018 59 8.2 57 ? ?
Old version, no longer maintained: v2.0.x Old version, no longer maintained: End-of-Life 1 May 2018 24 April 2019 61 8.9 57 ? ?
Old version, no longer maintained: v3.1.x Old version, no longer maintained: End-of-Life 18 September 2018 29 July 2019 66 10.2 64 3 ?
Old version, no longer maintained: v4.2.x Old version, no longer maintained: End-of-Life 20 December 2018 22 October 2019 69 10.11 69 3 62.2
Old version, no longer maintained: v5.1.x Old version, no longer maintained: End-of-Life 24 April 2019 4 February 2020 73 12.0 70 4 63.1
Old version, no longer maintained: v6.1.x Old version, no longer maintained: End-of-Life 29 July 2019 18 May 2020 76 12.4 73 4 64.2
Old version, no longer maintained: v7.3.x Old version, no longer maintained: End-of-Life 22 October 2019 25 August 2020 78 12.8 75 4 64.2
Old version, no longer maintained: v8.3.x Old version, no longer maintained: End-of-Life 4 February 2020 16 November 2020 80 12.13 76 5 65.1
Old version, no longer maintained: v9.4.x Old version, no longer maintained: End-of-Life 18 May 2020 2 March 2021 83 12.14 80 5 65.1
Old version, no longer maintained: v10.4.x Old version, no longer maintained: End-of-Life 25 August 2020 25 May 2021 85 12.16 82 5 65.1
Old version, no longer maintained: v11.4.x Old version, no longer maintained: End-of-Life 16 November 2020 30 August 2021 87 12.18 85 5 65.1
Old version, no longer maintained: v12.0.x Old version, no longer maintained: End-of-Life 2 March 2021 15 November 2021[12] 89 14.16 87 7 68.1
Old version, no longer maintained: v13.x.y Old version, no longer maintained: End-of-Life 25 May 2021 31 January 2022[13] 91 14.16 89 7 68.1
Old version, no longer maintained: v14.x.y Old version, no longer maintained: End-of-Life 30 August 2021 29 March 2022[14] 92 14.17 89 8 69.1
Old version, no longer maintained: v15.x.y Old version, no longer maintained: End-of-Life 21 September 2021 24 May 2022[15] 94 16.5 98 ? ?
Old version, no longer maintained: v16.x.y Old version, no longer maintained: End-of-Life 15 November 2021[12] 24 May 2022[15] 96 16.9 99 ? ?
Old version, no longer maintained: v17.x.y Old version, no longer maintained: End-of-Life 1 February 2022[13] 2 August 2022 98 16.13 101 ? ?
Old version, no longer maintained: v18.x.y Old version, no longer maintained: End-of-Life 29 March 2022[14] 26 September 2022[16] 100 16.13 103 ? ?
Old version, no longer maintained: v19.x.y Old version, no longer maintained: End-of-Life 24 May 2022[15] 29 November 2022[17] 102 16.14 106 ? ?
Old version, no longer maintained: v20.x.y Old version, no longer maintained: End-of-Life 2 August 2022[18] 7 February 2023 104 16.15 ? ? ?
Old version, no longer maintained: v21.x.y Old version, no longer maintained: End-of-Life 26 September 2022[16] 4 April 2023 106 16.16 ? ? ?
Old version, no longer maintained: v22.x.y Old version, no longer maintained: End-of-Life 30 November 2022[17] 10 October 2023 108 16.17 ? ? ?
Old version, no longer maintained: v23.x.y Old version, no longer maintained: End-of-Life 30 November 2022[19] 15 August 2023 110 18.12 ? ? ?
Old version, no longer maintained: v24.x.y Old version, no longer maintained: End-of-Life 4 April 2023[20] 10 October 2023 112 18.14 ? ? ?
Old version, no longer maintained: v25.x.y Old version, no longer maintained: End-of-Life 30 May 2023[21] 5 December 2023 114 18.15 ? ? ?
Old version, no longer maintained: v26.x.y Old version, no longer maintained: End-of-Life 15 August 2023[22] 20 February 2024 116 18.16 ? ? ?
Old version, no longer maintained: v27.x.y Old version, no longer maintained: End-of-Life 10 October 2023[23] 16 April 2024 118 18.17 ? ? ?
Old version, no longer maintained: v28.x.y Old version, no longer maintained: End-of-Life 5 December 2023[24] 11 June 2024 120 18.18 ? ? ?
Old version, no longer maintained: v29.x.y Old version, no longer maintained: End-of-Life 20 February 2024 20 August 2024 122 20.9 ? ? ?
Old version, no longer maintained: v30.x.y Old version, no longer maintained: End-of-life 16 April 2024 15 October 2024 124 20.11 ? ? ?
Old version, no longer maintained: v31.x.y Old version, no longer maintained: End-of-life 11 June 2024 7 January 2025 126 20.14 ? ? ?
Older version, yet still maintained: v32.x.y Older version, yet still maintained: Active 20 August 2024 4 March 2025 128 20.16 ? ? ?
Current stable version: v33.x.y Current stable version: Current[25] 15 October 2024 29 April 2025 130 20.18 ? ? ?

Usage

Electron으로 구축된 데스크탑 응용 프로그램에는 Atom,[26] balenaEtcher,[27] Eclipse Theia,[8] Microsoft Teams before 2.0,[28][29] Slack,[30]Visual Studio Code이 있습니다.[31][32] Brave 브라우저는 크로미엄을 직접 사용하도록 다시 작성하기 전에 Electron을 기반으로 했습니다.[33]

Reception

Electron에 대한 가장 공통적인 비판은 간단한 프로그램에 대해 사용될 때 소프트웨어 블로트가 필요하다는 것입니다.[34] 결과로써, Michael Larabel은 프레임워크를 "대부분의 리눅스 데스크탑 사용자들 중에서도 자원이 많고, 대부분의 데스크탑과 잘 통합되지 않고, 일반적으로 멸시하는 것으로 유명한 것"으로 언급해 왔습니다.[35] 연구자들은 Electron의 대규모 기능의 모음이 소스 JavaScript 파일에 대한 쓰기 접근을 갖는 악의적인 행위자에 의해 하이재킹될 수 있음을 보여주었습니다. 이것은 *nix 시스템에서 루트 접근을 요구하고 Electron 개발자에 의해 취약점으로 고려되지 않습니다.[36] Electron이 항상 최신 버전의 크로미엄을 기반으로 하는 것은 아니라는 점을 우려하는 사람들은 프로그레시브 웹 응용 프로그램을 대안으로 권장해 왔습니다.[37]

See also

References

  1. ^ "electron/electron". GitHub. Archived from the original on 2 August 2016. Retrieved 8 May 2018.
  2. ^ "electron/LICENSE at master". GitHub. Archived from the original on 12 May 2017. Retrieved 3 July 2020.
  3. ^ a b Sawicki, Kevin (23 April 2015). "Atom Shell is now Electron". Electron. Archived from the original on 9 November 2017. Retrieved 6 January 2022.
  4. ^ "Build cross-platform desktop apps with JavaScript, HTML, and CSS | Electron". Archived from the original on 9 May 2022. Retrieved February 1, 2023.
  5. ^ "Electron Internals: Using Node as a Library". electronjs.org. 8 August 2016. Archived from the original on 9 November 2017. Retrieved 3 July 2020.
  6. ^ Horner, Gabriel (10 December 2015). "Light Table 0.8.0". lighttable.com. Archived from the original on 13 December 2015. Retrieved 3 July 2020.
  7. ^ "GitHub Repository". GitHub. Archived from the original on 19 February 2016. Retrieved 16 June 2019.
  8. ^ a b "Theia - Cloud and Desktop IDE Platform". theia-ide.org. Archived from the original on 20 April 2018. Retrieved 2021-12-31.
  9. ^ "From native to JavaScript in Electron | Electron Blog". electronjs.org. 19 March 2019. Archived from the original on 26 April 2019. Retrieved 2019-04-26.
  10. ^ "New Electron Release Cadence | Electron". electronjs.org. 14 July 2021. Archived from the original on 14 July 2021. Retrieved 9 February 2022.
  11. ^ "Electron Releases | Electron". electronjs.org. Archived from the original on 16 December 2022. Retrieved 2022-12-16.
  12. ^ a b "Release electron v16.0.0 · electron/electron". GitHub. Archived from the original on 6 December 2021. Retrieved 3 December 2021.
  13. ^ a b "Release electron v17.0.0 · electron/electron". GitHub. Archived from the original on 12 February 2022. Retrieved 28 February 2022.
  14. ^ a b "Release electron v18.0.0 · electron/electron". GitHub. Archived from the original on 4 May 2022. Retrieved 4 May 2022.
  15. ^ a b c "Release electron v19.0.0 · electron/electron". GitHub. Archived from the original on 31 May 2022. Retrieved 31 May 2022.
  16. ^ a b "Release electron v21.0.0 · electron/electron". GitHub. Archived from the original on 16 December 2022. Retrieved 2022-12-16.
  17. ^ a b "Release electron v22.0.0 · electron/electron". GitHub. Archived from the original on 15 December 2022. Retrieved 2022-12-16.
  18. ^ "Release electron v20.0.0 · electron/electron". GitHub. Archived from the original on 16 December 2022. Retrieved 2022-12-16.
  19. ^ "Release electron v23.0.0 · electron/electron". GitHub. Archived from the original on 23 September 2023. Retrieved 2023-09-23.
  20. ^ "Release electron v24.0.0 · electron/electron". GitHub. Archived from the original on 23 September 2023. Retrieved 2023-09-23.
  21. ^ "Release electron v25.0.0 · electron/electron". GitHub. Archived from the original on 23 September 2023. Retrieved 2023-09-23.
  22. ^ "Release electron v26.0.0 · electron/electron". GitHub. Archived from the original on 23 September 2023. Retrieved 2023-09-23.
  23. ^ "Release electron v27.0.0 · electron/electron". GitHub. 2023-10-10. Archived from the original on 11 October 2023. Retrieved 2023-10-11.
  24. ^ "Release electron v28.0.0 · electron/electron". GitHub. 2023-12-04. Archived from the original on 14 December 2023. Retrieved 2023-12-14.
  25. ^ "Release electron v33.0.0 · electron/electron". GitHub. 14 October 2024. Retrieved 16 October 2024.
  26. ^ Sawicki, Kevin (23 April 2015). "Atom Shell is now Electron". Electron. Archived from the original on 16 October 2019. Retrieved 15 July 2017.
  27. ^ "Etcher on GitHub". GitHub. Archived from the original on 16 November 2018. Retrieved 7 July 2020.
  28. ^ msdmaguire. "How Microsoft Teams uses memory - Microsoft Teams". docs.microsoft.com. Archived from the original on 8 December 2020. Retrieved 2021-11-12.
  29. ^ Redmond, Tony (25 June 2021). "Teams 2.0 Moves Away from Electron to Embrace Edge WebView2". Office 365 for IT Pros. Retrieved 2 August 2024.
  30. ^ "Building hybrid applications with Electron". Several People Are Coding. 25 October 2016. Archived from the original on 16 October 2019. Retrieved 12 August 2017.
  31. ^ Bright, Peter (29 April 2015). "Microsoft's new Code editor is built on Google's Chromium". Ars Technica. Archived from the original on 7 May 2015. Retrieved 18 November 2015.
  32. ^ "Open Source project". GitHub. 29 March 2022. Archived from the original on 23 November 2015. Retrieved 20 May 2018.
  33. ^ Singh, Jagmeet (2017-01-03). "People are now even doing machine learning in JavaScript". Open Source For U. Archived from the original on 7 January 2017. Retrieved 2022-08-26.
  34. ^ Proven, Liam (2021-11-19). "Some FOSS gems: Franz, RamBox, Pidgin and more". The Register. Archived from the original on 19 November 2021. Retrieved 2022-08-26.
  35. ^ Larabel, Michael (2019-02-09). "Electron Apps Are Bad, So Now You Can Create Desktop Apps With HTML5 + Golang". Phoronix. Archived from the original on 26 August 2022. Retrieved 2022-08-26.
  36. ^ Gallagher, Sean (2019-08-07). "Skype, Slack, other Electron based apps can be easily backdoored". Ars Technica. Archived from the original on 7 August 2019. Retrieved 2022-08-26.
  37. ^ Hoffman, Chris (2019-08-15). "That native app is probably just an old web browser". How To Geek. Archived from the original on 15 August 2019. Retrieved 2022-08-26.