Electron (software framework)
| Electron | |
|---|---|
| Original author(s) | GitHub |
| Developer(s) | OpenJS Foundation |
| Initial release | 15 July 2013[1] |
| Stable release | 34.2.0
/ February 11, 2025 |
| Repository | github |
| Written in | C++, JavaScript, Objective-C++ and Objective-C |
| Operating system | Linux, macOS, and Windows |
| Platform | IA-32, x86-64, ARM |
| License | MIT 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 클래스의 인스턴스를 인스턴스화함으로써 여러 렌더러 프로세스를 시작할 수 있으며, 이는 HTML과 CSS를 렌더링함으로써 화면에 나타나는 윈도우를 로드합니다.
주요 프로세스에서 nodeIntegration 필드가 true로 설정되면, 주요 프로세서와 렌더러 프로세스가 모두 Node.js 통합으로 실행될 수 있습니다.
Electron의 API의 대부분은 C++ 또는 Objective-C로 작성되었고 JavaScript 바인딩을 통해 응용 프로그램 코드에 직접 노출됩니다.[9]
History
2021년 9월, Electron은 크로미엄 확장 안정의 릴리스 주기와 일치하고 주요 버전과 브라우저-기반 앱에게 브라우저 엔진의 최신 릴리스의 두 가지 주요 버전 내에 있어야 하는 Microsoft Store로부터 새로운 요구 사항을 준수하기 위해 주요 버전 사이에 8주 릴리스 주기로 이전했습니다.[10]
Electron는 종종 다른 모든 각 크로미엄 릴리스를 따라 새로운 주요 버전을 출시합니다. 최신 3 가지 안정 버전은 Electron 팀에 의해 지원됩니다.[11]
| Release | Status | Release date | End of life date | Chromium version | Node.js version | Module version | N-API version | ICU version |
|---|---|---|---|---|---|---|---|---|
| v1.8.x | End-of-Life | 12 December 2017 | 20 December 2018 | 59 | 8.2 | 57 | ? | ? |
| v2.0.x | End-of-Life | 1 May 2018 | 24 April 2019 | 61 | 8.9 | 57 | ? | ? |
| v3.1.x | End-of-Life | 18 September 2018 | 29 July 2019 | 66 | 10.2 | 64 | 3 | ? |
| v4.2.x | End-of-Life | 20 December 2018 | 22 October 2019 | 69 | 10.11 | 69 | 3 | 62.2 |
| v5.1.x | End-of-Life | 24 April 2019 | 4 February 2020 | 73 | 12.0 | 70 | 4 | 63.1 |
| v6.1.x | End-of-Life | 29 July 2019 | 18 May 2020 | 76 | 12.4 | 73 | 4 | 64.2 |
| v7.3.x | End-of-Life | 22 October 2019 | 25 August 2020 | 78 | 12.8 | 75 | 4 | 64.2 |
| v8.3.x | End-of-Life | 4 February 2020 | 16 November 2020 | 80 | 12.13 | 76 | 5 | 65.1 |
| v9.4.x | End-of-Life | 18 May 2020 | 2 March 2021 | 83 | 12.14 | 80 | 5 | 65.1 |
| v10.4.x | End-of-Life | 25 August 2020 | 25 May 2021 | 85 | 12.16 | 82 | 5 | 65.1 |
| v11.4.x | End-of-Life | 16 November 2020 | 30 August 2021 | 87 | 12.18 | 85 | 5 | 65.1 |
| v12.0.x | End-of-Life | 2 March 2021 | 15 November 2021[12] | 89 | 14.16 | 87 | 7 | 68.1 |
| v13.x.y | End-of-Life | 25 May 2021 | 31 January 2022[13] | 91 | 14.16 | 89 | 7 | 68.1 |
| v14.x.y | End-of-Life | 30 August 2021 | 29 March 2022[14] | 92 | 14.17 | 89 | 8 | 69.1 |
| v15.x.y | End-of-Life | 21 September 2021 | 24 May 2022[15] | 94 | 16.5 | 98 | ? | ? |
| v16.x.y | End-of-Life | 15 November 2021[12] | 24 May 2022[15] | 96 | 16.9 | 99 | ? | ? |
| v17.x.y | End-of-Life | 1 February 2022[13] | 2 August 2022 | 98 | 16.13 | 101 | ? | ? |
| v18.x.y | End-of-Life | 29 March 2022[14] | 26 September 2022[16] | 100 | 16.13 | 103 | ? | ? |
| v19.x.y | End-of-Life | 24 May 2022[15] | 29 November 2022[17] | 102 | 16.14 | 106 | ? | ? |
| v20.x.y | End-of-Life | 2 August 2022[18] | 7 February 2023 | 104 | 16.15 | ? | ? | ? |
| v21.x.y | End-of-Life | 26 September 2022[16] | 4 April 2023 | 106 | 16.16 | ? | ? | ? |
| v22.x.y | End-of-Life | 30 November 2022[17] | 10 October 2023 | 108 | 16.17 | ? | ? | ? |
| v23.x.y | End-of-Life | 30 November 2022[19] | 15 August 2023 | 110 | 18.12 | ? | ? | ? |
| v24.x.y | End-of-Life | 4 April 2023[20] | 10 October 2023 | 112 | 18.14 | ? | ? | ? |
| v25.x.y | End-of-Life | 30 May 2023[21] | 5 December 2023 | 114 | 18.15 | ? | ? | ? |
| v26.x.y | End-of-Life | 15 August 2023[22] | 20 February 2024 | 116 | 18.16 | ? | ? | ? |
| v27.x.y | End-of-Life | 10 October 2023[23] | 16 April 2024 | 118 | 18.17 | ? | ? | ? |
| v28.x.y | End-of-Life | 5 December 2023[24] | 11 June 2024 | 120 | 18.18 | ? | ? | ? |
| v29.x.y | End-of-Life | 20 February 2024 | 20 August 2024 | 122 | 20.9 | ? | ? | ? |
| v30.x.y | End-of-life | 16 April 2024 | 15 October 2024 | 124 | 20.11 | ? | ? | ? |
| v31.x.y | End-of-life | 11 June 2024 | 7 January 2025 | 126 | 20.14 | ? | ? | ? |
| v32.x.y | Active | 20 August 2024 | 4 March 2025 | 128 | 20.16 | ? | ? | ? |
| v33.x.y | 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
- ^ "electron/electron". GitHub. Archived from the original on 2 August 2016. Retrieved 8 May 2018.
- ^ "electron/LICENSE at master". GitHub. Archived from the original on 12 May 2017. Retrieved 3 July 2020.
- ^ 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.
- ^ "Build cross-platform desktop apps with JavaScript, HTML, and CSS | Electron". Archived from the original on 9 May 2022. Retrieved February 1, 2023.
- ^ "Electron Internals: Using Node as a Library". electronjs.org. 8 August 2016. Archived from the original on 9 November 2017. Retrieved 3 July 2020.
- ^ Horner, Gabriel (10 December 2015). "Light Table 0.8.0". lighttable.com. Archived from the original on 13 December 2015. Retrieved 3 July 2020.
- ^ "GitHub Repository". GitHub. Archived from the original on 19 February 2016. Retrieved 16 June 2019.
- ^ a b "Theia - Cloud and Desktop IDE Platform". theia-ide.org. Archived from the original on 20 April 2018. Retrieved 2021-12-31.
- ^ "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.
- ^ "New Electron Release Cadence | Electron". electronjs.org. 14 July 2021. Archived from the original on 14 July 2021. Retrieved 9 February 2022.
- ^ "Electron Releases | Electron". electronjs.org. Archived from the original on 16 December 2022. Retrieved 2022-12-16.
- ^ a b "Release electron v16.0.0 · electron/electron". GitHub. Archived from the original on 6 December 2021. Retrieved 3 December 2021.
- ^ a b "Release electron v17.0.0 · electron/electron". GitHub. Archived from the original on 12 February 2022. Retrieved 28 February 2022.
- ^ a b "Release electron v18.0.0 · electron/electron". GitHub. Archived from the original on 4 May 2022. Retrieved 4 May 2022.
- ^ a b c "Release electron v19.0.0 · electron/electron". GitHub. Archived from the original on 31 May 2022. Retrieved 31 May 2022.
- ^ a b "Release electron v21.0.0 · electron/electron". GitHub. Archived from the original on 16 December 2022. Retrieved 2022-12-16.
- ^ a b "Release electron v22.0.0 · electron/electron". GitHub. Archived from the original on 15 December 2022. Retrieved 2022-12-16.
- ^ "Release electron v20.0.0 · electron/electron". GitHub. Archived from the original on 16 December 2022. Retrieved 2022-12-16.
- ^ "Release electron v23.0.0 · electron/electron". GitHub. Archived from the original on 23 September 2023. Retrieved 2023-09-23.
- ^ "Release electron v24.0.0 · electron/electron". GitHub. Archived from the original on 23 September 2023. Retrieved 2023-09-23.
- ^ "Release electron v25.0.0 · electron/electron". GitHub. Archived from the original on 23 September 2023. Retrieved 2023-09-23.
- ^ "Release electron v26.0.0 · electron/electron". GitHub. Archived from the original on 23 September 2023. Retrieved 2023-09-23.
- ^ "Release electron v27.0.0 · electron/electron". GitHub. 2023-10-10. Archived from the original on 11 October 2023. Retrieved 2023-10-11.
- ^ "Release electron v28.0.0 · electron/electron". GitHub. 2023-12-04. Archived from the original on 14 December 2023. Retrieved 2023-12-14.
- ^ "Release electron v33.0.0 · electron/electron". GitHub. 14 October 2024. Retrieved 16 October 2024.
- ^ Sawicki, Kevin (23 April 2015). "Atom Shell is now Electron". Electron. Archived from the original on 16 October 2019. Retrieved 15 July 2017.
- ^ "Etcher on GitHub". GitHub. Archived from the original on 16 November 2018. Retrieved 7 July 2020.
- ^ msdmaguire. "How Microsoft Teams uses memory - Microsoft Teams". docs.microsoft.com. Archived from the original on 8 December 2020. Retrieved 2021-11-12.
- ^ 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.
- ^ "Building hybrid applications with Electron". Several People Are Coding. 25 October 2016. Archived from the original on 16 October 2019. Retrieved 12 August 2017.
- ^ 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.
- ^ "Open Source project". GitHub. 29 March 2022. Archived from the original on 23 November 2015. Retrieved 20 May 2018.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
External links