NPAPI
NPAPINetscape Plugin Application Programming Interface(NPAPI)는 플러그인을 통합할 수 있는 웹 브라우저의 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)입니다.
처음에 Netscape 브라우저용으로 개발되었으며, 1995년에 Netscape Navigator 2.0을 시작으로, 이후 다른 브라우저에 채택되었다.
NPAPI 아키텍처에서 플러그인은 처리할 수 있는 콘텐츠 유형(예: "audio/mp3)을 선언합니다.브라우저가 네이티브로 처리할 수 없는 콘텐츠유형을 발견하면 적절한 플러그인을 로드하고 플러그인이 렌더링할 브라우저 컨텍스트 내의 공간을 확보하여 데이터를 스트리밍합니다.플러그인은 데이터 렌더링을 담당합니다.알 수 없는 콘텐츠 유형을 처리하기 위해 외부 응용 프로그램을 실행해야 했던 이전 브라우저와는 달리 플러그인은 페이지 내에서 인플레이스 실행됩니다.NPAPI에서는 플러그인 콘텐츠를 초기화, 작성, 삭제 및 배치하기 위해 각 플러그인이 약 15개의 기능을 구현하고 공개해야 합니다.NPAPI는 스크립트 작성, 인쇄, 풀스크린 플러그인, 윈도리스 플러그인 및 콘텐츠 스트리밍도 지원합니다.
NPAPI는 Adobe Flash Player나 Microsoft Silverlight 등의 비디오 플레이어나 Java Runtime Environment 등의 웹 애플리케이션용 플랫폼 등 부하가 높은 낮은 수준의 퍼포먼스를 필요로 하는 플러그인에 자주 사용되었습니다.
주요 브라우저의 NPAPI 지원은 2015년부터 감소하기 시작했고,[1] 이후 7년간 점차 폐지되었다.HTML5의 등장으로 모든 주요 웹 브라우저는 보안상의 [1]이유로 서드파티제의 NPAPI 플러그인에 대한 지원을 해제했습니다.Pale Moon이나 Waterfox Classic과 같이 NPAPI 플러그인을 지원하는 소규모 브라우저도 있습니다.
스크립트 작성 지원
스크립팅은 웹 페이지의 JavaScript 코드가 플러그인과 상호 작용할 수 있도록 하는 기능입니다.Netscape 및 Mozilla의 다양한 버전에서 LiveConnect, XPConnect, NPRuntime 등 다양한 기술을 사용하여 이 기능을 지원했습니다.
라이브 커넥트
LiveConnect는 웹 페이지 내에서 Java와 JavaScript 소프트웨어를 상호 통신할 수 있는 웹 브라우저 기능입니다.Java 측에서 애플릿은 페이지의 임베디드 스크립트를 호출하거나 스크립트와 마찬가지로 내장된 JavaScript 환경에 액세스할 수 있습니다.반대로 자바스크립트 측에서는 애플릿 메서드를 호출하거나 애플릿이 할 수 있는 [2][3]한 자바 런타임 라이브러리에 액세스할 수 있습니다.
Netscape 4 에서는, NPAPI 플러그인의 스크립트성을 실장하기 위해서 LiveConnect 를 사용했습니다.
LiveConnect의 Open Java 인터페이스 의존 실장은 Mozilla 2 청소 [4]작업의 일환으로 2009년 6월 말에 Mozilla 소스 코드 트리에서 삭제되었습니다.Sun Microsystems에서 재설계된 Java Runtime Environment를 출시하면 더 이상 필요하지 않습니다.그러나 애플이 새로운 JRE를 Mac OS [5]X로 아직 포팅하지 않았기 때문에 Gecko 1.9.2에 대한 이전 구현이 복원되었습니다.
재설계된 Java Runtime Environment에서 지원되는 Java-JavaScript 기능은 오픈 Java 인터페이스 고유의 접근방식은 [6]포기되었지만 여전히 "LiveConnect"라고 불립니다.Netscape 4에서는 플러그인을 스크립트로 작성할 수 있도록 NPAPI가 확장되었습니다.이 확장을 LiveConnect라고 부릅니다.플러그인은 Java 클래스를 구현하고 해당 인스턴스를 노출할 수 있습니다.클래스는 JavaScript 및 페이지 내에서 실행되는 Java 애플릿에서 호출할 수 있습니다.
LiveConnect의 단점은 Netscape 브라우저에 내장된 Java 버전과 크게 관련되어 있다는 것입니다.이로 인해 브라우저는 다른 Java 런타임 사용을 방지하고 Java가 플러그인을 스크립팅해야 하므로 브라우저 다운로드 크기에 bloat을 추가했습니다.또한 LiveConnect는 프로그램하기가 까다롭습니다.개발자는 플러그인에 대한 Java 클래스를 정의하고 전용 Java 헤더 컴파일러를 통해 실행하며 네이티브 메서드를 구현해야 합니다.C++에서 문자열, 예외 및 기타 Java 개체를 처리하는 것은 명확하지 않습니다.또한 LiveConnect는 Java에서 네이티브 C++ 콜(JRI)을 호출하기 위해 이전부터 사용되지 않게 된 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)를 사용합니다.JRI 기술은 JNI에 의해 오랫동안 대체되었다.
XP 접속
XPConnect(Cross Platform Connect)는 XPCOM과 JavaScript의 간단한 상호 운용을 가능하게 하는 기술이다.
오브젝트 접속
XPConnect를 사용하면 JavaScript 오브젝트가 XPCOM 오브젝트에 투과적으로 접근하여 조작할 수 있습니다.또한 JavaScript 객체가 XPCOM 객체에 의해 호출되는 XPCOM 준거 인터페이스를 제공할 수 있습니다.주요 목표는 XPCOM 스타일의 인터페이스 중 어느 한쪽에서 통신하는 오브젝트는 일반적으로 인터페이스 반대쪽 오브젝트의 구현 언어를 알고 있거나 신경 쓸 필요가 없다는 것입니다.
XPConnect의 주요 존재 이유는 네이티브 코드가 JavaScript 코드와 상호 작용할 필요가 있는 장소에서 손으로 쓴 코드를 대체하기 위함입니다.예를 들어 DOM 모듈이 있습니다.
보안.
전체 권한은 기본적으로 응용 프로그램 또는 확장의 일부인 스크립트인 Chrome 스크립트에만 부여됩니다.리모트 HTML/XHTML/XUL 문서의 경우 대부분의 XPCOM 오브젝트는 보안상의 이유로 권한이 제한되어 있기 때문에 스크립트에서 액세스할 수 없습니다.액세스 가능한 경우(XMLHttpRequest 오브젝트 등)에도, 통상의 시큐러티 제한(다른 도메인의 URL을 열 수 없는 경우 등)을 발견할 수 있습니다.
Mozilla는 이미 XPCOM을 사용하여 C++에 구현된 많은 객체에 대한 인터페이스를 정의하고 있었습니다.각 인터페이스는 IDL 파일에 의해 정의되며 헤더 파일을 생성하는 IDL 컴파일러와 인터페이스의 바이너리 표현인 언어 중립형 라이브러리를 통해 실행됩니다.이 바이너리에서는 인터페이스, 메서드, 파라미터, 데이터 구조 및 열거를 설명했습니다.
XPConnect는 타입 라이브러리 정보를 사용하여 다른 스레드콘텍스트 간 및 JavaScript와 네이티브로 컴파일된 C++ 사이의 콜을 정리합니다.XPConnect는 Mozilla 전체에서 광범위하게 사용됩니다.Netscape 6.1 및 Mozilla 0.9.2 이후 NPAPI가 확장되어 플러그인이 스크립트 가능한 인터페이스를 반환하고 XPConnect가 JavaScript 및 C++ 구현에서 NPAPI에 대한 콜을 정리할 수 있게 되었습니다.
XPConnect는 Java 의존관계가 없습니다.다만, 이 테크놀로지는 XPCOM에 근거하고 있습니다.따라서 플러그인 개발자는 스크립트를 구현하기 위해 참조 카운트, 인터페이스 및 IDL에 정통해야 합니다.XPCOM에 대한 의존으로 인해 플러그인이 다른 브라우저에서 올바르게 작동하기 전에 해결해야 하는 특정 동적 링크 문제(예를 들어 취약한 기본 클래스 문제)가 발생하였습니다.XPCOM은 이러한 문제에 대처하기 위해 정적으로 링크된 버전을 제공하도록 변경되었습니다.또한 이 방법에서는 Dynamic-Link Library(DLL; 다이내믹링크 라이브러리) 옆에 .xpt 파일을 설치해야 합니다.그렇지 않으면 플러그인은 동작하는 것처럼 보이지만 스크립트는 동작하지 않기 때문에 혼란이 발생합니다.
NPRuntime(NPRuntime)
2004년 말, NPAPI를 사용하는 모든 주요 브라우저 회사는 NPRuntime을 기존 C 스타일의 NPAPI와 유사한 스타일로 Java나 XPCOM과 같은 다른 브라우저 테크놀로지로부터 독립된 API를 통해 스크립팅을 제공하기 위해 NPRuntime에[7] 동의했습니다.Firefox ESR(Extended Support Release) 및 Safari에서만 지원됩니다.
지지하다
API의 노후화, 보안 문제 및 HTML5와 같은 대체 기술의 채택으로 인해 많은 소프트웨어 벤더는 2013년에 [8][9]NPAPI 지원을 단계적으로 중단하기 시작했습니다.
인터넷 익스플로러
Internet Explorer 버전3 ~ 5.5 SP2 는 NPAPI 를 서포트하고 있어, Netscape Navigator 로 동작하는 플러그 인을 Internet Explorer 로 동작시킬 수 있습니다.지원에는 소형 ActiveX 컨트롤(「」라고 함)이 사용되었습니다.plugin.ocx
") ActiveX와 NPAPI 플러그인 사이에서 심으로 동작합니다.Microsoft는 보안상의 [10][11][12][13]이유로 버전 5.5 SP2 이후의 지원을 중단했습니다.
구글 크롬
Google Chrome은 2015년 [14]9월에 모든 플랫폼의 모든 NPAPI 지원을 영구적으로 중단했습니다.2013년 9월, 구글은 "90년대 아키텍처가 행업, 크래시, 보안 사고 및 코드 복잡성의 주요 원인이 되었다"[15][16]며 2014년 동안 구글 크롬 브라우저의 NPAPI 지원을 단계적으로 중단할 것이라고 발표했다.2014년 5월에 Linux 버전의 Chrome 35 [17]이상에서 NPAPI 지원이 제거되었습니다.2015년 4월 Windows용 Chrome 및 OS X(버전 42 이상)는 기본적으로 NPAPI 지원을 사용하지 않도록 설정했습니다.다만, 2015년 9월(버전 45)까지, 유저는 NPAPI 를 재차 유효하게 할 수 있었습니다.
오페라
Opera는 2016년 [citation needed]5월에 버전 37에서 지원을 중단했습니다.
파이어폭스
2017년 3월 Mozilla Firefox 릴리스 52.0에서는 [18][19][20]플래시를 제외한 모든 NPAPI 지원이 삭제되었습니다.한편 ESR 채널은 버전 52 ESR이 마지막 NPAPI 리조트이기 때문에 이 기능에 대한 일반적인 지원을 유지하고 있습니다.Firefox 69.0은 [21][22]기본적으로 Flash NPAPI를 사용하지 않도록 설정했습니다.2021년 1월에 출시된 Firefox 85.0에서는 NPAPI 지원이 완전히 [23][24]제거되었습니다.ESR 채널에서는 Flash NPAPI 지원이 2021년 [26]10월에[25] 출시된 버전78.15.0으로 종료되었습니다.
사파리
Safari는 버전 [27]12가 2018년 9월에 출시된 플래시를 제외한 모든 NPAPI 플러그인에 대한 지원을 중단했습니다.2020년 [28]9월에 출시된 Safari 14에서는 플래시 지원이 제거되었습니다.
시몽키
SeaMonkey는[29] 플래시를 제외하고 버전 2.53.1부터 NPAPI 플러그인의 지원을 중지했습니다.2021년 [30]3월에 출시된 SeaMonkey 2.53.7에서는 NPAPI 지원이 완전히 해제되었습니다.
지지하다
다음 웹 브라우저 목록은 모든 NPAPI 플러그인을 지원합니다.
- 360 시큐어 브라우저(중국어: 360 全全 ( () 또는 360 Extreme Explorer(중국어: 360 速速 360 360)[31]
- 바실리스크[32]
- K-Meleon[33](Goanna 엔진)[34]
- Pale[35] Moon (Pale Moon의 [36]미래 로드맵)
- 우즈블[37]
- Waterfox(NPAPI 플러그인을 실행할 수 있지만 64비트 [38]플러그인만 실행 가능)
유사한 테크놀로지
액티브X
Internet Explorer 및 Internet Explorer 기반 브라우저는 ActiveX 컨트롤, ActiveX 문서 및 ActiveX 스크립트를 사용하여 NPAPI와 동등한 페이지 내 확장성을 제공합니다.ActiveX는 일반적으로 Internet Explorer와 관련되어 있지만 모든 컴퓨터 프로그램이 이러한 [39]통합을 지원하는 다른 컴퓨터 프로그램의 일부를 통합할 수 있도록 하는 통합 기술입니다.그러나 Internet Explorer는 단종되었으며 대체 제품인 Microsoft Edge는 ActiveX를 지원하지 않습니다.
PPAPI
2009년 8월 12일 구글[40] 코드의 페이지에는 Pepper라는 새로운 프로젝트가 소개되었으며 Pepper Plugin API([41]PPAPI)는 Pepper Plugin API(Pepper Plugin API)와 연계되어 있습니다.PPAPI는 NPAPI의 파생상품으로 플러그인을 보다 휴대성과 [42]보안성을 높이는 것을 목적으로 하고 있습니다.이 확장 기능은 프로세스 외 플러그인 실행을 용이하게 하기 위해 특별히 설계되었습니다.
PPAPI는 당초 구글 크롬과 크롬에서만 지원됐다.이후 Opera 및 Vivaldi와 같은 다른 Chromium 기반 브라우저에서는 PPAPI 플러그인 지원이 추가되었습니다.
2012년 2월 Adobe Systems는 향후의 Linux 버전은 PPAPI를 통해서만 제공될 것이라고 발표했습니다.NPAPI를 지원하는 이전 릴리스인 Flash Player 11.2는 5년간 [43]보안 업데이트를 받았습니다.2016년 8월 Adobe는 이전 발표와는 달리 Linux에서 NPAPI Flash Player를 다시 지원하며 [44]새로운 버전의 NPAPI Flash Player를 계속 출시할 것이라고 발표했습니다.
2020년 8월, 구글은 [45]2022년 6월 구글 크롬과 크롬에서 PPAPI에 대한 지원이 없어질 것이라고 발표했다.
「 」를 참조해 주세요.
- Netscape Server 응용 프로그램프로그래밍 인터페이스(NSAPI)
레퍼런스
- ^ a b "The End of Applets". InfoQ. Retrieved 2021-10-02.
- ^ 플래너건, 데이비드(2006).JavaScript: 정의 가이드.오라일리, 세바스토폴, 캘리포니아
- ^ 기술적인 자세한 내용은 LiveConnect의 Mozilla Developer Documentation을 참조하십시오.
- ^ "442399 – remove LiveConnect from the tree". mozilla.org.
- ^ "517355 – Restore OJI, Liveconnect and the JEP on the 1.9.2 branch on OS X". mozilla.org.
- ^ "Release Notes for the Next-Generation Java™ Plug-In Technology (introduced in Java SE 6 update 10)". sun.com.
- ^ "Scripting plugins". Mozilla Developer Network.
- ^ "Change in support for Acrobat and Reader plug-ins in modern web browsers". Adobe. 8 February 2016.
- ^ "Oracle deprecates the Java browser plugin, prepares for its demise". Ars Technica. 28 January 2016. Retrieved 15 April 2016.
- ^ "Netscape-Style Plug-ins Do Not Work After Upgrading Internet Explorer". Support (3.3 ed.). Microsoft. 27 July 2007.
- ^ Giannandrea, J. (4 September 2001). "Microsoft breaks Web Plugins in Windows XP". meer.net. Archived from the original on 16 October 2007.
- ^ "Description of Internet Explorer Support for Netscape-Style Plug-ins". Support (3.4 ed.). Microsoft. 31 January 2007.
- ^ "Microsoft Security Bulletin MS03-015 – Critical". Security TechCenter. Microsoft. 23 April 2003.
- ^ "NPAPI 마지막 카운트다운"Chromium 블로그
- ^ 구글은 2014년 1월부터 대부분의 Netscape Plug-In API 플러그인을 차단하고 Silverlight, Unity 등을 화이트리스트에 추가할 예정입니다.TechCrunch. 2013년 9월 23일
- ^ "Google은 2014년 1월에 대부분의 플러그인을 차단하는 것을 시작으로 Chrome에서 Netscape 플러그인 API 지원을 중단할 예정입니다."The Next Web. 2013년 9월 23일.
- ^ "NPAPI 폐지 업데이트"Chromium 블로그. 2014년 5월 27일.
- ^ "Firefox 52.0, See All New Features, Updates and Fixes". Mozilla.
- ^ "Firefox dropping NPAPI plugins by the end of 2016—except for Flash". Firefox Site Compatibility. 4 October 2016. Retrieved 25 January 2017.
- ^ "Why do Java, Silverlight, Adobe Acrobat and other plugins no longer work?". Mozilla support. Archived from the original on 2017-03-07. Retrieved 2017-03-06.
- ^ "1519434 - Disable Flash support by default in Firefox 69". bugzilla.mozilla.org. Retrieved 2019-01-14.
- ^ "Plugin Roadmap for Firefox - Plugins". MDN Web Docs. Retrieved 2021-07-12.
{{cite web}}
: CS1 maint :url-status (링크) - ^ Jim Mathies (13 November 2020). "Removal of NPAPI plugin support in Firefox 85". mozilla.dev.platform (via Google Groups). Retrieved 10 February 2021.
- ^ "Plugin Roadmap for Firefox". MDN. 19 January 2021. Archived from the original on 21 January 2021. Retrieved 10 February 2021.
- ^ "Firefox for Enterprise 91 - Release notes Firefox for Enterprise Help". support.mozilla.org. Retrieved 2022-02-13.
- ^ "Firefox ESR 78.15.0, See All New Features, Updates and Fixes". Mozilla. Retrieved 2022-01-03.
- ^ Clover, Juli (September 17, 2018). "Apple Releases Safari 12 for macOS Sierra and macOS High Sierra". MacRumors.
- ^ "Safari 14 Release Notes". Apple Developer Documentation.
- ^ "왜 오라클 자바, 마이크로 소프트 실버 라이트, 어도비 애크로뱃 리더와 다른 플러그 인은 더 이상 통하지 않니?". NPAPI 플러그 인
- ^ "SeaMonkey 2.53.7 Release Notes". Retrieved 14 March 2021.
- ^ "NPAPI 是重型武器,当别的方法无法到达你的目的时,才建议使用。".NPAPI 插件.
- ^ "모든 NPAPI 플러그 인에 대한 지지("단결", Silverlight, 플래시, 자바, 인증 플러그 인 등)".Basilisk 특징이다.
- ^ "대부분의 제3자 플러그 인 Mozilla/Netscape을 위해 설계된 또한 K- 멜레 온과 함께 일할 것입니다.".제3자 플러그 인.
- ^ "부하 모두 NPAPI-Plugins, 자바, Silverlight등". K- 멜레 온 하이브리드(Goanna 프로에).
- ^ "NPAPI 플러그 인을 진행 중인 전체 지원(Java, Silverlight등)".창백한 문=기술적 세부사항
- ^ "창백한 달 NPAPI는 플러그 인을 지원한다.파이어 폭스와는 달리 우리는 또는 plug-ins" 이런 종류의에 대한 지원을 강력히 반대하는지 않을 것이다.창백한 달 향후 로드맵.
- ^ NPAPI 플러그인 아키텍처(Mozilla와 마찬가지로)를 사용하기 때문에 플러그인을 정상적으로 설치하면 모든 것이 작동합니다.Uzbl에 관한 FAQ.
- ^ Waterfox는 Java 및 Silverlight 플러그인뿐만 아니라 다른 64비트 NPAPI 플러그인도 지원합니다.NPAPI 플러그인 지원
- ^ "Description of ActiveX Technologies". Support. Microsoft. 19 January 2007.
- ^ "ppapi". Google Code. Archived from the original on 2010-07-02.
- ^ "Getting Started: Background and Basics – The Chromium Projects". chromium.org.
- ^ "Concepts - ppapi - Important concepts for working with PPAPI. - Pepper Plugin API – Google Project Hosting". google.com.
- ^ "Adobe and Google Partnering for Flash Player on Linux". adobe.com. Archived from the original on 2012-02-23. Retrieved 2012-03-07.
- ^ Campbell, Chris (31 August 2016). "Beta News – Flash Player NPAPI for Linux". Adobe AIR and Adobe Flash Player Team Blog. Adobe Systems. Retrieved 8 September 2016.
- ^ Anthony Laforge (August 10, 2020). "Changes to the Chrome App Support Timeline". Chromium Blog.
외부 링크
- NPAPI API를 포함한 Mozilla Developer Center 플러그인 개발 문서
- 플러그인을 호스트하는 ActiveX 컨트롤(Internet Explorer에서 삭제된 plugin.ocx 대체품).
- Zan Oliphant의 Netscape 플러그인 프로그래밍에 관한 책
- Nixysa: NPAPI 플러그인용 글루 코드 생성 프레임워크입니다.Apache 2.0 라이선스
- NPAPI 튜토리얼 Firefox 플러그인 구축 (파트 2, 파트 3, 파트 4)
- Opera 15+ 확장 문서