맨위로가기

플러그인

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

플러그인은 1970년대 중반 유니시스 VS/9 운영체제에서 구동되는 EDT 문서 편집기에 처음 등장했으며, 응용 프로그램의 기능을 확장하기 위해 사용되는 외부 모듈이다. 타사 개발자의 응용 프로그램 확장, 새로운 기능 추가, 응용 프로그램 크기 감소, 소프트웨어 라이선스 문제 해결 등을 위해 사용된다. 디지털 오디오 워크스테이션, 이메일 클라이언트, 비디오 게임 에뮬레이터, 그래픽 소프트웨어, 미디어 플레이어, 웹 브라우저 등 다양한 응용 프로그램에서 플러그인을 지원한다. 플러그인은 호스트 애플리케이션이 제공하는 서비스를 활용하며, 동적 로딩을 통해 런타임에 로드되는 공유 라이브러리로 구현되는 경우가 많다. 플러그인은 보안 취약점의 위험이 있어, 일부 플랫폼에서는 사용에 제한을 두거나 사용자 동의를 받도록 정책을 정하고 있다.

더 읽어볼만한 페이지

  • 소프트웨어 추가 기능 - 애드블록
    애드블록은 웹 브라우저에서 광고를 차단하는 소프트웨어로, 이지리스트를 지원하며, 크라우드 펀딩 캠페인을 통해 광고 차단 인지도를 높이고, 허용 가능한 광고 프로그램에 참여하기도 하며, 국제앰네스티와 협력하여 기사 배너를 게재하기도 했다.
  • 소프트웨어 추가 기능 - 구글 크롬 확장 프로그램
    구글 크롬 확장 프로그램은 자바스크립트 API 기반으로 크롬의 기능을 확장하고 사용 편의성을 높이는 프로그램으로, 크롬 웹 스토어를 통해 설치 가능하며 광고 차단, 생산성 향상, 유틸리티 및 엔터테인먼트 기능 등을 제공하지만 보안 및 개인 정보 보호에 유의해야 한다.
  • API - Tk (소프트웨어)
    Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다.
  • API - ASIO
    ASIO는 독일 스타인버그에서 개발한 오디오 입출력 API 규격으로, 낮은 지연 시간과 멀티 채널 I/O를 지원하며 윈도우 운영체제에서 주로 사용된다.
  • 소프트웨어에 관한 - 크래프톤
    크래프톤은 배틀그라운드 시리즈의 성공을 기반으로 성장한 대한민국의 비디오 게임 개발 및 퍼블리싱 기업이자 지주회사로, 여러 자회사를 통해 다양한 게임을 개발 및 서비스하며 글로벌 시장에서 영향력을 확대하고 있다.
  • 소프트웨어에 관한 - 넷마블
    넷마블은 2000년 방준혁 의장이 설립하여 게임 서비스 사업으로 성장, CJ그룹 편입 및 유가증권시장 상장을 거쳐 '리니지2 레볼루션' 성공과 해외 시장 진출 확대를 이루었으나, 최근 메타버스 사업 실패 및 구조조정 등의 어려움 속에서 사업 다각화를 시도하며 향후 행보가 주목되는 대한민국의 게임 기업이다.
플러그인
지도 정보
기본 정보
유형소프트웨어 구성 요소
역할기존 소프트웨어 응용 프로그램에 특정 기능을 추가함
다른 이름추가 기능
애드인
특징
기능 확장애플리케이션의 기능을 확장하거나 맞춤화하는 데 사용됨
유연성다양한 애플리케이션에 맞춰 설계될 수 있음
독립성기본 애플리케이션과 독립적으로 개발 및 배포 가능
용도
웹 브라우저비디오 재생
애니메이션
스크립트 처리
PDF 보기
새로운 파일 형식 지원
멀티미디어 플레이어새로운 파일 형식 지원
그래픽 소프트웨어새로운 효과 및 파일 형식 지원
워드 프로세서특정 기능 추가 (예: 문법 검사)
이메일 클라이언트암호화, 서명, 필터링 기능 추가
개발 및 배포
개발일반적으로 독립적인 개발자가 개발
배포애플리케이션의 공식 웹사이트 또는 타사 저장소를 통해 배포
보안
잠재적인 문제점보안 취약점
악성 코드
성능 문제
해결법신뢰할 수 있는 출처에서 다운로드
정기적으로 업데이트
필요한 플러그인만 사용
관련 개념
마이크로커널플러그인과 비슷한 개념을 사용하는 운영 체제 아키텍처
확장애플리케이션 기능을 변경 및 확장하는 방법
모듈프로그램의 독립적인 부분
참고 자료
참고 자료Encyclopedia Britannica - Plug-in

2. 역사

플러그인은 1970년대 중반 유니박 시리즈 90 메인프레임 컴퓨터를 사용한 유니시스 VS/9 운영 체제에서 구동 중인 EDT 문서 편집기에서 처음 등장하였다. 당시 EDT 편집기는 플러그인 프로그램을 통해 편집기 버퍼에 접근하고 문서 편집 서비스를 수행할 수 있게 하였다.[29] 워털루 대학교 포트란 컴파일러는 이 기능을 사용하여 EDT로 편집된 포트란 프로그램의 상호작용 컴파일을 지원했다.

1987년 매킨토시의 하이퍼카드쿼크익스프레스는 PC 응용 소프트웨어 중 최초로 플러그인 기능을 제공하였다. 1988년 실리콘 비치 소프트웨어는 디지털 다크룸과 슈퍼페인트에 플러그인 기능을 도입하였고, 에드 봄케는 "플러그인"(plug-in)이라는 용어를 만들었다.

3. 목적 및 예시

응용 프로그램에서 플러그인을 지원하는 이유는 다음과 같다.


  • 타사 개발자가 응용 프로그램을 확장할 수 있도록 지원한다.
  • 새로운 기능을 쉽게 추가할 수 있도록 지원한다.
  • 사용하지 않는 기능을 로드하지 않아 응용 프로그램의 크기를 줄인다.
  • 호환되지 않는 소프트웨어 라이선스 때문에 응용 프로그램에서 소스 코드를 분리한다.


다양한 유형의 응용 프로그램에서 플러그인이 사용된다.

응용 프로그램 유형플러그인 사용 목적예시
디지털 오디오 워크스테이션, 오디오 편집 소프트웨어사운드 생성, 처리, 분석아두어, 오다시티, 큐베이스, FL 스튜디오, 로직 프로 X, 프로 툴즈
이메일 클라이언트이메일 암호화 및 복호화프리티 굿 프라이버시
비디오 게임 콘솔 에뮬레이터에뮬레이션 장치의 하위 시스템 모듈화PCSX2 (예: 플레이스테이션 2의 비디오, 오디오, 광학 플러그인)
그래픽 소프트웨어파일 형식 지원, 이미지 처리포토샵 플러그인
방송 및 실시간 스트리밍 소프트웨어사용자별 요구 사항 충족OBS 스튜디오
미디어 플레이어파일 형식 지원, 필터 적용foobar2000, GStreamer, 퀸테센셜, VST, 윈앰프, XMMS
패킷 스니퍼패킷 형식 디코딩OmniPeek
원격 감지 응용 프로그램서로 다른 센서 유형의 데이터 처리옵틱스
텍스트 편집기, 통합 개발 환경프로그래밍 언어 지원, 개발 프로세스 향상비주얼 스튜디오, RAD 스튜디오, 이클립스, 인텔리J IDEA, jEdit, 모노디벨롭
웹 브라우저과거 실행 파일 실행 (현재는 대부분 사용 중단됨)어도비 플래시 플레이어, 자바 가상 머신(자바 애플릿용), 퀵타임, 마이크로소프트 실버라이트, 유니티 웹 플레이어 (별도 설치 가능한 브라우저 확장 프로그램은 여전히 사용됨)



일반적으로 컴퓨터에서 동작하는 프로그램은 중심이 되는 프로그램 코드가 서브루틴을 호출하여 처리를 진행하는 형태이다. 처리 내용은 다르지만 기본 흐름은 같은 애플리케이션을 만들 때, 몇몇 서브루틴을 바꾸는 것으로 구현할 수 있다. 예를 들어, 비트맵 이미지 파일을 읽어 화면에 표시하는 프로그램에서 파일 읽기 서브루틴을 바꾸면 PNG나 JPEG 파일을 읽는 프로그램으로 변형할 수 있다.

하지만 필요한 모든 서브루틴을 원래 개발자가 준비할 수 없는 경우가 많다. 이때 서브루틴 호출 절차를 규격화하여 공개하고, 서브루틴을 바꾸는 방법을 제공하면 제삼자도 기능을 변경하거나 확장할 수 있게 된다.

이처럼 애플리케이션 코드의 일부를 바꿀 수 있는 상태를 '''플러그 가능'''(pluggable영어)이라고 하며, 외부에서 주입되는 프로그램 코드 및 모듈을 '''플러그인'''이라고 한다.

플러그인 구현을 위해서는 다음과 같은 사항을 명확하게 규격화해야 한다.


  • 서브루틴에 주는 (입력) 매개변수의 형식과 의미
  • 서브루틴에서 받는 (출력) 데이터의 형식과 의미
  • 서브루틴 호출 절차 (이름, 호출 규약 등)
  • 서브루틴이 호출되는 시기 (스레드 등)
  • 모듈 배치 위치 (디렉터리)


플러그인 개발용 라이브러리(프레임워크)가 제공되는 경우도 많다.

컴파일러를 사용하는 애플리케이션에서는 서브루틴 실행 메모리 주소(상대 주소)가 컴파일 시에 결정되므로, 서브루틴을 바꿀 때마다 다시 컴파일해야 한다. 플러그인은 동적 링크 라이브러리를 사용하여 이 문제를 해결한다. OS의 로더가 주소를 결정한다. 또한, 힙 위에 동적 메모리 할당되는 객체는 런타임 라이브러리에 바이너리 호환성이 없으면 모듈 경계를 넘어 할당, 해제할 수 없지만,[23][24] 짝이 되는 동적인 메모리 할당과 해제 처리를 플러그인 모듈 안에 가두면 다른 컴파일러, 옵션, 프로그래밍 언어를 사용할 수 있다.

Windows에서는 DLL, macOS나 Linux 등 UNIX/Unix 계열OS에서는 so 형식이 주로 사용된다. OS 개발자가 규격화한 서브루틴 호출 절차이며, OS가 호출을 실현하는 표준 API를 제공하므로 안정적으로 이용할 수 있다. 플러그인 구현은 특정 이름과 호출 규약을 가진 서브루틴을 구현하여 심볼을 내보내고, 호스트 애플리케이션은 실행 시 모듈을 로드하여 이름 문자열로 서브루틴 주소를 찾고, 발견되면 주소를 이용해 호출하는 동적 바인딩 기술을 사용한다.

Windows에서는 COM/ActiveX 기술이 사용되기도 한다. 주입되는 코드는 간단한 서브루틴이 아니라, 객체 지향 인터페이스를 구현한 클래스로 구현된다. .NET Framework에서는 플러그인 구현을 위한 프레임워크로 버전 4.0에서 Managed Extensibility Framework영어가 추가되었다.

스크립트 언어 처리계를 애플리케이션에 통합하여 플러그인과 유사한 기구를 구현할 수도 있다.

4. 메커니즘

호스트 애플리케이션은 플러그인이 사용할 수 있는 서비스를 제공하는데, 여기에는 플러그인이 호스트 애플리케이션에 자신을 등록하는 방법과 플러그인과의 데이터 교환을 위한 프로토콜이 포함된다.[11][12] 플러그인은 호스트 애플리케이션이 제공하는 서비스에 의존하며 일반적으로 자체적으로 작동하지 않는다. 반대로 호스트 애플리케이션은 플러그인과 독립적으로 작동하므로 최종 사용자가 호스트 애플리케이션을 변경할 필요 없이 플러그인을 동적으로 추가하고 업데이트할 수 있다.[11][12]

프로그래머는 일반적으로 플러그인을 공유 라이브러리로 구현하며, 이는 런타임에 동적으로 로드된다. 하이퍼카드는 유사한 기능을 지원했지만, 하이퍼카드 문서(스택이라고 함) 자체에 플러그인 코드를 포함하는 경우가 더 일반적이었다. 따라서 하이퍼카드 스택은 자체적으로 독립적인 애플리케이션이 되어 최종 사용자가 추가 설치 단계 없이 실행할 수 있는 단일 엔티티로 배포될 수 있었다. 프로그램은 또한 파이썬이나 루아와 같은 스크립팅 언어로 작성된 간단한 스크립트 파일 디렉토리를 로드하여 플러그인을 구현할 수도 있다.

5. 모질라의 정의

Mozilla 재단 정의에 따르면 "부가 기능", "확장 기능" 및 "플러그인"은 동의어가 아니다.[13] "부가 기능"은 Mozilla 애플리케이션의 기능을 확장하는 모든 것을 의미할 수 있다. 확장 기능은 하위 유형이지만, 가장 일반적이고 강력한 유형이다. Mozilla 애플리케이션에는 패키지 관리자와 유사하게 확장 기능을 설치, 업데이트 및 관리하는 통합 부가 기능 관리자가 함께 제공된다. 그러나 "플러그인"이라는 용어는 NPAPI 기반 웹 콘텐츠 렌더러를 엄격하게 가리킨다.[13] Mozilla는 자사 제품에 대한 플러그인을 더 이상 지원하지 않는다.[14] 하지만 UXP 기반 애플리케이션, 예를 들어 Pale Moon 및 Basilisk 웹 브라우저는 (NPAPI) 플러그인을 계속 지원한다.[15][16][17]

6. 헬퍼 애플리케이션

헬퍼 애플리케이션은 아이펀뷰나 어도비 리더와 같이 웹 브라우저를 통해 가져온 콘텐츠를 표시하는 외부 뷰어 프로그램이다.[18][19] 플러그인처럼 브라우저의 주소 공간에 전체 코드가 포함되는 것과 달리, 헬퍼 애플리케이션은 독립 실행형 애플리케이션이다.[20] 웹 브라우저는 파일 이름 확장자로 나타나는 파일의 미디어 형식을 기반으로 적절한 헬퍼 애플리케이션을 선택한다.[21]

7. 보안

플러그인은 외부 코드를 읽어 들여 실행하므로, 코드 인젝션이나 코드 변조를 통해 응용 프로그램이 부정하게 사용될 가능성이 높아진다.[25] 이러한 보안 취약점 때문에, 일부 플랫폼에서는 플러그인 사용에 제한을 두거나 사용자 동의를 얻도록 정책을 정하고 있다.[26][27] 실제로, 어도비 플래시 플레이어(Adobe Flash Player) 플러그인은 보안 취약점(セキュリティホール) 문제로[28] iOS 플랫폼에서는 지원되지 않았다.

8. 플러그인 형식 및 종류

응용 프로그램에서 플러그인을 지원하는 이유는 다음과 같다.


  • 타사 개발자가 응용 프로그램을 확장할 수 있도록 지원한다.
  • 새로운 기능을 쉽게 추가할 수 있도록 지원한다.
  • 사용하지 않는 기능을 로드하지 않아 응용 프로그램의 크기를 줄인다.
  • 호환되지 않는 소프트웨어 라이선스 때문에 응용 프로그램에서 소스 코드를 분리한다.


플러그인은 다양한 형식과 종류가 있으며, 응용 프로그램의 유형에 따라 달라진다. 과거 웹 브라우저에서 플러그인을 통해 실행 파일을 사용했지만, 현재는 대부분 사용 중단되었다.

8. 1. 플러그인 형식

플러그인은 다양한 응용 프로그램에서 기능을 확장하거나 추가하는 데 사용되는 소프트웨어 구성 요소이다. 플러그인은 타사 개발자가 기능을 추가하고, 응용 프로그램의 크기를 줄이며, 호환되지 않는 라이선스 문제를 해결하는 데 도움을 준다.

다음은 플러그인 형식의 몇 가지 예이다.

플러그인 형식설명
어도비 일러스트레이터용 플러그인어도비 일러스트레이터의 기능을 확장한다.
어도비 포토샵용 플러그인어도비 포토샵의 기능을 확장한다.
넷스케이프 웹 브라우저용 플러그인넷스케이프 웹 브라우저의 기능을 확장했지만, 현재는 대부분 사용 중단되었다.
모질라 파이어폭스용 플러그인 (모질라 확장 기능)모질라 파이어폭스의 기능을 확장한다.
윈앰프용 플러그인윈앰프의 기능을 확장한다.
수지 플러그인수지 플러그인
슬레이프니르 플러그인슬레이프니르 웹 브라우저의 기능을 확장한다.
무버블 타입 플러그인무버블 타입의 기능을 확장한다.
이클립스용 플러그인이클립스 통합 개발 환경의 기능을 확장한다.
아파치 메이븐용 플러그인아파치 메이븐의 기능을 확장한다.
라이트웨이브 (3차원 컴퓨터 그래픽스)3차원 컴퓨터 그래픽스 소프트웨어인 라이트웨이브의 기능을 확장한다.
VST 악기 (DTM)디지털 오디오 워크스테이션(DAW)에서 사용되는 가상 악기 플러그인 형식이다.
AU (DTM)macOS에서 사용되는 오디오 플러그인 형식이다.
다이렉트X 악기 (DTM)윈도우에서 사용되는 가상 악기 플러그인 형식이다.
TDM (DTM)프로 툴즈 시스템에서 사용되는 오디오 플러그인 형식이다.
HTDM (DTM)프로 툴즈 시스템에서 사용되는 오디오 플러그인 형식이다.
RTAS (DTM)프로 툴즈 시스템에서 사용되는 오디오 플러그인 형식이다.


8. 2. 플러그인으로 동작하는 소프트웨어

8. 3. 주요 플러그인 지원 호스트 소프트웨어


참조

[1] 웹사이트 Plug-in software https://www.britanni[...] 2021-02-05
[2] 웹사이트 PCSX2 - The Playstation 2 emulator - Plugins https://web.archive.[...] 2018-06-10
[3] 웹사이트 Pete's PSX GPU plugins http://www.pbernert.[...] 2018-06-10
[4] 웹사이트 DEMUL - Sega Dreamcast Emulator for Windows http://demul.emulati[...] 2018-06-10
[5] 웹사이트 Android Emulator Plugin - Jenkins - Jenkins Wiki https://wiki.jenkins[...] 2018-06-10
[6] 웹사이트 KDE/dolphin-plugins https://github.com/K[...] 2018-06-10
[7] 웹사이트 OpenEmu/SNES9x-Core https://github.com/O[...] 2018-06-10
[8] 웹사이트 Recommended N64 Plugins http://emulation-gen[...] 2018-06-10
[9] 웹사이트 Playstation plugins & utilities! http://www.emulator-[...] 2018-06-10
[10] 웹사이트 PS3 Homebrew Apps / Plugins / Emulators PSX-Place http://www.psx-place[...] 2018-06-10
[11] 웹사이트 Mozilla Firefox plugins https://addons.mozil[...]
[12] 웹사이트 Wordpress Plug-in API http://codex.wordpre[...]
[13] 웹사이트 Plugin https://developer.mo[...] 2022-12-07
[14] 뉴스 Firefox will stop supporting plugins by end of 2016, following Chrome's lead http://www.pcworld.c[...] IDG 2016-10-20
[15] 웹사이트 Pale Moon: Technical Details - Features https://www.palemoon[...] 2020-06-06
[16] 웹사이트 Basilisk: Features http://www.basilisk-[...] 2020-06-06
[17] 웹사이트 Re: Remember: Plugins are outdated. https://forum.palemo[...] 2020-06-06
[18] 웹사이트 Definition of helper application https://www.pcmag.co[...] 2022-10-25
[19] 웹사이트 Download Irfan using Internet Explorer 4.x or above https://libweb.hawai[...] 2024-01-09
[20] 웹사이트 Helper Applications and Plug-ins - Web Security, Privacy & Commerce, 2nd Edition [Book] https://www.oreilly.[...] O'Reilly
[21] 웹사이트 For web browsers, what are helper applications, and where can I find them? https://kb.iu.edu/d/[...]
[22] 서적 EDT Text Editor Reference Manual Unisys Corporation 1975
[23] 웹사이트 DLL の境界を越えて CRT オブジェクトを渡す場合に発生する可能性のあるエラー | Microsoft Docs https://docs.microso[...]
[24] 웹사이트 C++ ライブラリ サポート | Android NDK | Android Developers https://developer.an[...]
[25] 웹사이트 セキュリティに関するヒント | Android デベロッパー | Android Developers https://developer.an[...]
[26] 웹사이트 アプリの中核品質 | Android デベロッパー | Android Developers https://developer.an[...]
[27] 웹사이트 Microsoft Store ポリシー - UWP applications | Microsoft Docs https://docs.microso[...]
[28] 뉴스 アップル、旧バージョンの「Adobe Flash」プラグインを遮断 - CNET Japan https://japan.cnet.c[...]
[29] 서적 EDT Text Editor Reference Manual Unisys Corporation 1975



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com