일렉트론 (소프트웨어 프레임워크)
1. 개요
일렉트론은 데스크톱 애플리케이션을 만들기 위한 오픈 소스 프레임워크이다. 2013년 아톰 셸로 시작하여 2015년 일렉트론으로 이름이 변경되었으며, HTML, CSS, JavaScript를 사용하여 크로스 플랫폼 애플리케이션을 개발할 수 있도록 지원한다. 일렉트론은 크로미움과 Node.js를 기반으로 하며, 아톰, 비주얼 스튜디오 코드, 슬랙, 디스코드 등 다양한 애플리케이션에 사용되고 있다. 일렉트론은 보안 및 리소스 사용량에 대한 비판을 받기도 하며, 소프트웨어 팽창을 유발한다는 지적도 있다.
이미지 준비중입니다.
| 개발 | 깃허브 |
|---|---|
| 최초 릴리스 | 2013년 7월 15일 |
| 최신 버전 | 28.0.0-beta.8 |
| 최신 릴리스 날짜 | 2023년 11월 20일 |
| 최신 미리보기 버전 | 34.0.0-alpha.1 |
| 최신 미리보기 날짜 | 2024년 10월 15일 |
| 프로그래밍 언어 | C++ 자바스크립트 Objective-C++ 파이썬 Objective-C |
| 운영체제 | 리눅스 macOS Windows |
| 플랫폼 | IA-32 x86-64 ARM |
| 라이선스 | MIT 허가서 |
| 웹사이트 | 공식 웹사이트 |
| 유형 | 개발 프레임워크 |
|---|---|
| 지원 플랫폼 | 리눅스 macOS 윈도우 |
| 참고 | Node.js를 사용하여 크로스 플랫폼 데스크톱 애플리케이션을 만들 수 있도록 함 |
|---|
-
깃허브 -
깃허브 코파일럿
깃허브 코파일럿은 깃허브에서 개발한 인공지능 기반 코드 자동 완성 도구로, 자연어 기반 코드 생성, 코드 주석 변환, 코드 자동 완성 기능을 제공하여 프로그래머의 생산성을 향상시키지만, 라이선스, 보안, 교육적 영향에 대한 논란도 있다. -
깃허브 -
아톰 (문서 편집기)
깃허브에서 개발한 아톰은 HTML, CSS, JavaScript로 사용자 정의가 가능한 텍스트 편집기였으며, 서드 파티 패키지를 통해 기능 확장이 가능했지만 2022년 12월 15일 개발이 중단되었다. -
자유-오픈 소스 소프트웨어 -
마이크로소프트 코그니티브 툴킷
-
자유-오픈 소스 소프트웨어 -
ASP.NET
ASP.NET은 .NET Framework 기반의 마이크로소프트 웹 애플리케이션 개발 플랫폼으로, ISAPI를 통해 동작하며 다양한 프로그래밍 모델과 개발 도구를 지원하고, 부트스트랩, OAuth 2.0, OData 등 최신 기술을 통합하여 강력한 웹 개발 환경을 제공한다. -
공식 웹사이트에 알 수 없는 변수를 사용한 문서 -
브루클린 미술관
브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다. -
공식 웹사이트에 알 수 없는 변수를 사용한 문서 -
광주지방기상청
광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
2. 역사
일렉트론은 2013년 4월 11일 아톰 셸로 시작되었다. 2014년 5월 6일, 아톰과 아톰 셸은 MIT 라이선스와 더불어 오픈 소스로 공개되었다. 2015년 4월 17일, 아톰 셸은 일렉트론으로 이름이 변경되었다.
2016년에는 몇 가지 중요한 이정표가 있었다. 5월 11일에는 버전 1.0이 출시되었고, 5월 20일에는 패키지된 앱을 맥 앱 스토어에 제출할 수 있게 되었다. 8월 2일에는 윈도우 스토어 지원이 추가되었다.
2021년 9월, 일렉트론은 크로미움 확장 안정 버전 출시 주기에 맞춰 주요 버전 간 8주 출시 주기로 변경되었다. 이는 Microsoft Store의 새로운 요구 사항을 준수하기 위한 것이었다. 일렉트론은 크로미움 릴리스마다 새로운 주요 버전을 출시하며, 최신 세 개의 안정 버전을 지원한다.
2.1. 아톰 셸에서 일렉트론으로
2013년 4월 11일, 일렉트론은 아톰 셸로 시작되었다. 2014년 5월 6일, 아톰과 아톰 셸은 MIT 라이선스로 오픈 소스가 되었다. 2015년 4월 17일, 아톰 셸은 일렉트론으로 이름이 변경되었다.
2.2. 초기 발전과 성장
2013년 4월 11일, 일렉트론은 아톰 셸로 시작되었다. 2014년 5월 6일, 아톰과 아톰 셸은 MIT 라이선스와 함께 오픈 소스가 되었다. 2015년 4월 17일, 아톰 셸은 일렉트론으로 이름이 변경되었다. 2016년 5월 11일, 일렉트론은 버전 1.0에 도달하였다. 2016년 5월 20일, 일렉트론은 패키지된 앱을 맥 앱 스토어에 제출할 수 있게 되었다. 2016년 8월 2일, 일렉트론 앱의 윈도우 스토어 지원이 추가되었다.
2.3. 최근 동향
2016년 5월 11일, 일렉트론은 버전 1.0에 도달하였다. 2016년 5월 20일, 패키지된 앱을 맥 앱 스토어로 제출할 수 있게 허용하였다. 2016년 8월 2일, 일렉트론 앱의 윈도우 스토어 지원이 추가되었다.
2021년 9월, 일렉트론은 크로미움 확장 안정 버전의 출시 주기에 맞춰 주요 버전 간 8주 출시 주기로 변경되었으며, Microsoft Store에서 브라우저 기반 앱이 브라우저 엔진의 최신 릴리스에서 두 개의 주요 버전 내에 있어야 한다는 새로운 요구 사항을 준수하게 되었다.
일렉트론은 자주 크로미움 릴리스마다 새로운 주요 버전을 출시하며, 최신 세 개의 안정 버전을 일렉트론 팀에서 지원한다.
3. 아키텍처
일렉트론은 여러 프로세스로 구성된 애플리케이션을 만들 수 있도록 설계되었다. 크게 '메인 프로세스'와 '렌더러 프로세스'로 나뉜다. 메인 프로세스는 애플리케이션의 로직을 실행하고, 여러 개의 렌더러 프로세스를 생성할 수 있다. 렌더러 프로세스는 화면에 보이는 창에 HTML과 CSS를 렌더링하는 역할을 담당한다.
메인 프로세스와 렌더러 프로세스는 모두 Node.js와 통합하여 시작할 수 있다.
Electron의 API는 대부분 C++ 또는 Objective-C로 작성되었으며, JavaScript 바인딩을 통해 애플리케이션 코드에 직접 공개된다.
3.1. 메인 프로세스
기본적인 일렉트론 앱은 `package.json` (메타데이터), `main.js` (코드), `index.html` (그래픽 사용자 인터페이스)의 3가지 파일로 구성된다. 프레임워크는 일렉트론 실행 파일을 통해 제공된다. (마이크로소프트 윈도우의 경우 `electron.exe`, macOS의 경우 `electron.app`, 리눅스의 경우 `electron`) 개발자들은 브랜드 및 사용자 지정 아이콘을 추가하고자 일렉트론 실행 파일의 이름을 변경하거나 편집할 수 있다.
일렉트론 파일에서 가장 중요한 파일은 `package.json`이며, 패키지에 대한 정보를 보관한다. `package.json`은 Npm 파일이다.
Electron 응용 프로그램은 "메인" 프로세스와 여러 "렌더러" 프로세스를 포함한다. 메인 프로세스는 응용 프로그램의 로직(예: 메뉴, 셸 명령어, 라이프사이클 이벤트)을 실행하며, `BrowserWindow` 클래스의 인스턴스를 생성하여 여러 렌더러 프로세스를 시작할 수 있다. 이 클래스는 HTML과 CSS를 렌더링하여 화면에 표시되는 창을 로드한다.
메인 프로세스와 렌더러 프로세스 모두 메인 프로세스에서 `nodeIntegration` 필드가 `true`로 설정된 경우 Node.js 통합으로 실행될 수 있다.
Electron의 대부분의 API는 C++ 또는 Objective-C로 작성되었으며, JavaScript 바인딩을 통해 응용 프로그램 코드에 직접 노출된다.
3.2. 렌더러 프로세스
일렉트론 애플리케이션은 1개의 "메인" 프로세스와 여러 개의 "렌더러" 프로세스로 구성된다. 메인 프로세스가 애플리케이션 로직을 실행하면, 여러 개의 렌더러 프로세스를 시작할 수 있다. 렌더러 프로세스는 사용자 화면에 표시되는 윈도우에 HTML과 CSS를 렌더링한다.
메인 프로세스와 렌더러 프로세스는 모두 Node.js와 통합하여 시작할 수 있다.
3.3. 프로세스 간 통신
일렉트론 애플리케이션은 여러 프로세스로 구성되어 있으며, 1개의 "메인" 프로세스와 여러 개의 "렌더러" 프로세스가 존재한다. 메인 프로세스가 애플리케이션 로직을 실행하면, 여러 개의 렌더러 프로세스를 시작할 수 있다. 렌더러 프로세스는 사용자 화면에 표시되는 윈도우에 HTML과 CSS를 렌더링한다.
메인 프로세스와 렌더러 프로세스는 모두 Node.js와 통합하여 시작할 수 있다.
3.4. Node.js 통합
메인 프로세스와 렌더러 프로세스 모두 `nodeIntegration` 필드가 `true`로 설정된 경우 Node.js와 통합하여 실행할 수 있다.
4. 보안
일렉트론 애플리케이션은 크로미엄 엔진으로 실행되는 웹 애플리케이션이므로 구버전의 일렉트론을 사용할 경우 크로스 사이트 스크립팅과 같은 웹 관련 공격에 취약해질 수 있다. 이러한 취약점은 Electron 1.7.13, 1.8.4 및 2.0.0-beta.5에서 수정되었다.
4.1. 주요 보안 고려 사항
Electron 애플리케이션은 크로미엄 엔진으로 실행되는 웹 애플리케이션이다. 따라서 구버전의 Electron을 사용하면 브라우저(Chromium 등) 및 다른 내부 컴포넌트(Node.js)와 동일한 공격 벡터로 인한 크로스 사이트 스크립팅과 같은 웹 관련 공격에 취약해진다.。 앞서 언급한 취약점은 Electron 1.7.13, 1.8.4 및 2.0.0-beta.5에서 수정되었다.。
5. 비판
일렉트론은 간단한 프로그램을 개발할 때에도 소프트웨어 팽창을 유발한다는 비판을 받는다. 마이클 라라벨은 일렉트론을 "대부분의 리눅스 데스크톱 사용자들 사이에서 리소스를 많이 사용하고, 대부분의 데스크톱과 잘 통합되지 않으며, 일반적으로 혐오감을 주는 것으로 악명 높다"고 평가했다.
연구자들은 일렉트론의 방대한 기능이 악의적인 사용자에 의해 하이재킹될 수 있음을 보여주었다. 이는 *nix 시스템에서 루트 접근 권한이 필요하며, 일렉트론 개발자들은 이를 취약점으로 간주하지 않는다. 일렉트론이 항상 최신 버전의 크로미움을 기반으로 하지 않는 것에 대한 우려로 인해, 프로그레시브 웹 앱이 대안으로 권장되기도 한다.
일렉트론 애플리케이션은 유사한 기능을 가진 네이티브 애플리케이션보다 오버헤드가 크다는 비판을 받는다. 일렉트론으로 빌드된 애플리케이션은 운영 체제 네이티브 기술로 빌드된 유사 애플리케이션보다 더 많은 저장 공간과 RAM을 소비하여 속도가 느려질 가능성이 높다. 크로미움을 번들하는 대신 운영 체제에 내장된 브라우저를 사용하는 방법이 대안으로 언급된다.
5.1. 성능 및 리소스 사용량
일반적으로 일렉트론에 대한 가장 흔한 비판은 간단한 프로그램을 위해 사용될 때 소프트웨어 팽창을 유발한다는 것이다. 마이클 라라벨은 이 프레임워크를 "대부분의 리눅스 데스크톱 사용자들 사이에서 리소스를 많이 사용하고, 대부분의 데스크톱과 잘 통합되지 않으며, 일반적으로 혐오감을 주는 것으로 악명 높다"고 언급했다.
연구자들은 일렉트론의 방대한 기능 세트가 소스 자바스크립트 파일에 쓰기 권한을 가진 악의적인 행위자들에 의해 하이재킹될 수 있음을 보여주었다. 이는 *nix 시스템에서 루트 접근 권한이 필요하며, 일렉트론 개발자들은 이를 취약점으로 간주하지 않는다. 일렉트론이 항상 최신 버전의 크로미움을 기반으로 하지 않는 것에 대해 우려하는 사람들은 프로그레시브 웹 앱을 대안으로 권장했다.
일렉트론 애플리케이션은 유사한 기능을 가진 네이티브 애플리케이션보다 큰 오버헤드를 발생시키는 것으로 비판받고 있다. 일렉트론으로 빌드된 애플리케이션은 운영 체제 네이티브 기술로 빌드된 유사 애플리케이션보다 많은 저장 공간과 RAM을 소비하기 때문에 속도가 느려질 가능성이 높다. 대안으로 크로미움을 번들하는 대신 운영 체제에 내장된 브라우저를 사용하는 방법이 언급되고 있다.
5.2. 대안
일렉트론은 간단한 프로그램을 위해 사용될 때 소프트웨어 팽창을 유발한다는 비판을 받는다. 마이클 라라벨은 일렉트론 프레임워크를 "대부분의 리눅스 데스크톱 사용자들 사이에서 리소스를 많이 사용하고, 대부분의 데스크톱과 잘 통합되지 않으며, 일반적으로 혐오감을 주는 것으로 악명 높다"고 언급했다.
연구자들은 일렉트론의 방대한 기능 세트가 소스 자바스크립트 파일에 쓰기 권한을 가진 악의적인 행위자에 의해 하이재킹될 수 있음을 보여주었다. 이는 *nix 시스템에서 루트 접근 권한이 필요하며, 일렉트론 개발자들은 이를 취약점으로 간주하지 않는다. 일렉트론이 항상 최신 버전의 크로미움을 기반으로 하지 않는 것에 대한 우려로 인해, 프로그레시브 웹 앱이 대안으로 권장되기도 한다.
Electron 애플리케이션은 유사한 기능을 가진 네이티브 애플리케이션보다 오버헤드가 크다는 비판을 받는다. Electron으로 빌드된 애플리케이션은 운영 체제 네이티브 기술로 빌드된 유사 애플리케이션보다 더 많은 저장 공간과 RAM을 소비하여 속도가 느려질 가능성이 높다. 크로미움을 번들하는 대신 운영 체제에 내장된 브라우저를 사용하는 방법이 대안으로 언급된다.
6. 버전
2021년 9월, 일렉트론은 크로미움 확장 안정 버전의 출시 주기에 맞춰 주요 버전 간 8주 출시 주기로 변경되었으며, Microsoft Store에서 브라우저 기반 앱이 브라우저 엔진의 최신 릴리스에서 두 개의 주요 버전 내에 있어야 한다는 새로운 요구 사항을 준수하게 되었다.
일렉트론은 자주 크로미움 릴리스마다 새로운 주요 버전을 출시한다. 최신 세 개의 안정 버전은 일렉트론 팀에서 지원한다.
7. 일렉트론을 사용한 애플리케이션
많은 데스크톱 애플리케이션이 일렉트론을 사용하여 빌드되고 있다. 아톰, 깃허브 베타, 라이트 테이블, 슬랙, 비주얼 스튜디오 코드, 디스코드 등이 대표적이다.
7.1. 대표적인 애플리케이션
일렉트론을 기반으로 제작된 데스크톱 애플리케이션은 다음과 같다:
| 애플리케이션 | 설명 |
|---|---|
| 아톰 | 텍스트 편집기 |
| 깃허브 베타 | 버전 관리 시스템 |
| 라이트 테이블 | 통합 개발 환경 (IDE) |
| 슬랙 | 협업 도구 |
| 비주얼 스튜디오 코드 | 소스 코드 편집기 |
| 디스코드 | 인스턴트 메신저 및 VoIP 플랫폼 |
| balenaEtcher | 부팅 가능한 USB 드라이브 생성 도구 |
| 이클립스 시아 | 통합 개발 환경 (IDE) |
| 2.0 이전의 Microsoft Teams | 협업 플랫폼 |
| Brave 브라우저 | 크로미움을 직접 사용하도록 다시 작성되기 전까지 일렉트론 기반 |
| 1Password영어 | 비밀번호 관리자 |
| Basecamp 3 | 프로젝트 관리 도구 |
| Beaker (web browser)영어 | 웹 브라우저 |
| Bitwarden | 비밀번호 관리자 |
| Code42영어 | 백업 소프트웨어 |
| Cryptocat영어 | 암호화된 채팅 서비스 (개발 종료) |
| GitHub Desktop | Git GUI 클라이언트 |
| Keybase영어 | 암호화된 커뮤니케이션 서비스 |
| GitKraken | Git GUI 클라이언트 |
| Lbry영어 | 블록체인 기반 콘텐츠 공유 플랫폼 |
| Mattermost | 협업 도구 |
| MongoDB Compass | MongoDB GUI 도구 |
| Notion | 생산성 소프트웨어 |
| Joplin | 노트 필기 애플리케이션 |
| Quasar Framework | Vue.js 기반 프레임워크 |
| Shift | 이메일 클라이언트 |
| ShogiHome | 쇼기(일본 장기) 소프트웨어 |
| Signal | 암호화된 메시징 앱 |
| Skype | 인스턴트 메신저 및 VoIP 플랫폼 |
| Symphony Chat | 금융 서비스용 협업 도구 |
| [https://github.com/Eugeny/terminus Terminus] | 터미널 에뮬레이터 |
| TIDAL | 음악 스트리밍 서비스 |
| Twitch | 라이브 스트리밍 플랫폼 |
| VOICEVOX | 음성 합성 소프트웨어 |
| WebTorrent영어 | 토렌트 클라이언트 |
| 인스턴트 메신저 | |
| Wire | 암호화된 메시징 앱 |
| Yammer | 기업용 소셜 네트워크 서비스 |