Кіріспе

Қолданбалық бағдарламалау интерфейсі
Netscape Plugin Application Programming Interface (NPAPI) – бұл веб-браузерлерге арналған қолданылмайтын бағдарламалық интерфейс (API), алғаш рет 1995 жылы Netscape Navigator 2.0 үшін әзірленген және кейіннен басқа браузерлерде де қолданылған. NPAPI архитектурасында плагин өңдей алатын контент түрлерін (мысалы, "audio/mp3") жариялайды. Браузер белгілі бір контент түрін кездестіргенде, оны өзі өңдей алмаса, тиісті плагинді жүктейді, плагинді көрсету үшін браузер контекстінде орын бөліп, содан кейін оған деректер жібереді. Плагин деректерді көрсетуге жауапты. Плагин бет ішінде жұмыс істейді, ал ескі браузерлер белгісіз контент түрлерін өңдеу үшін сыртқы бағдарламаны іске қосуға мәжбүр болған. NPAPI әрбір плагиннің инициализациялау, құру, жою және плагин контентін орналастыру үшін шамамен 15 функцияны жүзеге асыруын және қолжетімді етуін қажет етеді. NPAPI сонымен қатар скрипттерді, басып шығаруды, толық экранды плагиндерді, терезесіз плагиндерді және контентті ағынмен беруді қолдайды. NPAPI жиі интенсивті, төмен деңгейдегі өнімділік қажет болатын плагиндер үшін қолданылды, мысалы, Adobe Flash Player және Microsoft Silverlight сияқты бейнеойнатқыштар, сондай-ақ Java Runtime Environment сияқты веб-қосымшалар үшін платформалар. Басты браузерлер арасында NPAPI қолдауы 2015 жылдан бастап азая бастады және келесі 7 жыл ішінде біртіндеп тоқтатылды. Қауіпсіздік және техникалық қызмет көрсету себептерімен барлық басты веб-браузерлер үшінші тараптың NPAPI плагиндерін қолдауды тоқтатты, ал одан жақсы технологиялар бар.

Скриптті қолдау

Скрипт – бұл веб-беттегі JavaScript кодының плагинмен өзара әрекеттесуіне мүмкіндік беретін мүмкіндік. Netscape-тің және кейін Mozilla-ның әртүрлі нұсқалары осы мүмкіндікті LiveConnect, XPConnect және NPRuntime сияқты әртүрлі технологиялар арқылы қолдаған.

LiveConnect- тің атауы

LiveConnect – веб-беттерде Java және JavaScript бағдарламалық жасақтамаларының өзара әрекеттесуіне мүмкіндік беретін веб-браузерлердің мүмкіндігі. Java жағынан, ол апплетке беттің кіріктірілген скрипттерін шақыруға немесе скрипттер сияқты JavaScript ортасына қол жеткізуге мүмкіндік береді. Керісінше, JavaScript жағынан, ол скриптке апплет әдістерін шақыруға немесе Java орындалу уақыты кітапханаларына қол жеткізуге мүмкіндік береді, апплеттер сияқты. LiveConnect, Netscape 4-те NPAPI плагиндерін скрипттеуді іске асыру үшін қолданылды. Java интерфейсіне тәуелді LiveConnect-тің іске асырылуы Mozilla 2 тазалау жұмысының бөлігі ретінде 2009 жылдың маусым айының соңында Mozilla бастапқы кодынан алынып тасталды. Sun Microsystems-тің жаңадан құрылған Java Runtime Environment-і шығарылғаннан кейін ол енді қажет емес. Дегенмен, Apple әлі жаңа JRE-ді Mac OS X-ке көшірмегендіктен, ескі іске асырылу Gecko 1.9.2 үшін қалпына келтірілді. Жаңадан құрылған Java Runtime Environment-і қолдайтын Java-JavaScript функционалдығы әлі де "LiveConnect" деп аталады, бірақ Open Java Interface-ке тән тәсілдер тоқтатылды. Netscape 4-те NPAPI плагиндерді скрипттеуге мүмкіндік беру үшін кеңейтілді. Бұл кеңейту LiveConnect деп аталады. Плагин Java класын іске асырып, оның бір данасын көрсетуі мүмкін. Бұл класс JavaScript-тен және беттегі Java апплеттерінен шақырылуы мүмкін. LiveConnect-тің кемшілігі – ол Netscape браузеріне енген Java нұсқасына тым байланысты. Бұл браузердің басқа Java орындалу уақытын пайдалануына кедергі келтірді және Java плагиндерді скрипттеуді қажет еткендіктен браузерді жүктеу көлемін арттырды. Сонымен қатар, LiveConnect бағдарламалау қиын: әзірлеуші плагин үшін Java класын анықтап, оны арнайы Java бас компиляторы арқылы өңдеп, жергілікті әдістерді іске асыруы керек. C++-тан Java тізбектерін, ерекшеліктерін және басқа да объектілерді өңдеу оңай емес. Сонымен қатар, LiveConnect Java-дан C++ шақыруларын іске асыру үшін ескірген қолданбалы бағдарламалау интерфейсін (API) пайдаланады, ол JRI деп аталады. JRI технологиясы көп бұрын JNI технологиясымен алмастырылды.

XPConnect-тің атауы

XPConnect (Cross Platform Connect) - XPCOM және JavaScript арасындағы оңай өзара қарым-қатынасты қамтамасыз ететін технология.

Нысанды қосу

XPConnect JavaScript объектілеріне XPCOM объектілеріне түсінікті түрде қол жеткізуге және оларды өңдеуге мүмкіндік береді. Ол сондай-ақ JavaScript объектілеріне XPCOM объектілері шақыра алатын XPCOM стандартымен үйлесімді интерфейстерді ұсынуға мүмкіндік береді. Басты мақсат – XPCOM стиліндегі интерфейс арқылы байланысатын объектілердің екі жағы да интерфейстің екінші жағындағы объектінің іске асылу тілін білуіне немесе алаңдауына қажеттілік болмауы. XPConnect-тің басты себебі – түпнұсқа кодтың JavaScript кодымен өзара әрекеттесуі қажет жерлерде қолданылатын қолмен жазылған кодты алмастыру. Мысалы, DOM модулін қарастыруға болады.

Қауіпсіздік

Толық артықшылықтар тек chrome скрипттеріне, яғни қосымшаның немесе кеңейтудің бөлігі болып табылатын скрипттерге әдепкі бойынша беріледі. Қашықтағы HTML/XHTML/XUL құжаттары үшін XPCOM нысандарының көпшілігі скрипттерге қолжетімді емес, себебі қауіпсіздік талаптарына байланысты олардың артықшылықтары шектеулі. Егер олар қолжетімді болса да (мысалы, XMLHttpRequest нысаны), әдеттегі қауіпсіздік шектеулері де кездеседі (мысалы, басқа домендердің URL-дерін ашу мүмкін емес). Mozilla C++ тілінде іске асырылған көптеген нысандардың интерфейстерін анықтау үшін XPCOM-ды пайдаланып келді. Әрбір интерфейс IDL файлымен сипатталады және IDL компиляторы арқылы өңделеді, ол бас файлдарды және интерфейстің екілік түріндегі бейнесі болатын, тілге тәуелсіз типтер кітапханасын жасайды. Бұл екілік файл интерфейсті, әдістерді, параметрлерді, дерек құрылымдарын және тізімдемелерді сипаттайды. XPConnect типтер кітапханасының ақпаратын әртүрлі жіптік контексттер арасында және JavaScript пен түпкілікті құрастырылған C++ арасындағы шақыруларды басқару үшін қолданады. XPConnect Mozilla-да кеңінен қолданылады. Netscape 6.1 және Mozilla 0.9.2 нұсқаларынан бастап NPAPI кеңейтілді, сонда плагин өзіне скрипт арқылы басқарылатын интерфейсті қайтара алады, ал XPConnect JavaScript және C++ іске асырудан оған шақыруларды реттейді. XPConnect-тің Java-ға тәуелділігі жоқ. Дегенмен, технология XPCOM-ға негізделген. Сондықтан плагин әзірлеушісі скрипттерді іске асыру үшін сілтемелерді санау, интерфейстер және IDL туралы білуі керек. XPCOM-ға тәуелділік белгілі бір динамикалық байланыс мәселелеріне (мысалы, нашар базалық сынып мәселесі) әкелді, оларды плагин әртүрлі браузерлермен дұрыс жұмыс істеуі үшін шешу қажет болды. XPCOM мұндай мәселелерді шешу үшін статикалық байланыс нұсқасын ұсыну үшін өзгертілді. Бұл тәсіл сондай-ақ динамикалық кітапхананың (DLL) қасына xpt файлын орнатуды талап етеді; әйтпесе плагин жұмыс істейтіндей көрінеді, бірақ скрипт жұмыс істемейді, бұл жаңсақтыққа алып келеді.

NPRұзақтығы

2004 жылдың соңында NPAPI қолдайтын барлық ірі браузер компаниялары NPRuntime-ды бастапқы NPAPI-ге скрипттерді беруге арналған кеңейтім ретінде қабылдады. Бұл API ескі C стиліндегі NPAPI сияқты болып келеді және Java немесе XPCOM сияқты басқа браузер технологияларынан тәуелсіз. Ол қазірде тек Firefox ESR (Extended Support Release) және Safari браузерлерінде қолдау көрсетіледі.

Қолдау

API-нің ескіруі, қауіпсіздік мәселелері және HTML5 сияқты балама технологияларды пайдалану артықшылыққа ие болғандықтан, көптеген бағдарламалық қамтамасыз етушілер 2013 жылдан бастап NPAPI қолдауын азайта бастады.

Internet Explorer- дің атауы

Internet Explorer 3-ден 5.5 SP2 нұсқалары NPAPI-ді қолдады, бұл Netscape Navigator-де жұмыс істейтін плагиндердің Internet Explorer-де де жұмыс істеуіне мүмкіндік берді. Бұл қолдау шағын ActiveX элементі ("plugin.ocx") арқылы қамтамасыз етілді, ол ActiveX және NPAPI плагині арасында делдалдық рөл атқарды. Microsoft қауіпсіздік себептерімен 5.5 SP2 нұсқасынан бастап қолдауды тоқтатты.

Google Chrome- дің сілтемелері

Google Chrome 2015 жылдың қыркүйегінде барлық платформаларда NPAPI қолдауын толығымен тоқтатты. 2013 жылдың қыркүйегінде Google өздерінің Google Chrome браузерінде 2014 жылы NPAPI қолдауын жоюды жариялады, осыған байланысты "[90-шы жылдарға тән] архитектурасы тұруларға, құлауларға, қауіпсіздікке қатысты инциденттерге және кодтың күрделілігіне себеп болатын басты фактор болды" деп мәлімдеді. 2014 жылдың мамыр айында NPAPI қолдауы Chrome 35 және одан кейінгі Linux нұсқаларынан алынып тасталды. 2015 жылдың сәуір айында Windows және OS X үшін Chrome (42 және одан кейінгі нұсқалары) NPAPI қолдауын әдепкі бойынша өшірді. Дегенмен, 2015 жылдың қыркүйегіне дейін (45-ші нұсқаға дейін) пайдаланушылар NPAPI-ді қайта қосуға мүмкіндік алды.

Опера

Opera 37 нұсқасымен қолдау 2016 жылдың мамыр айында тоқтатылды.

Firefox-тың қызметі

Mozilla Firefox 52.0 нұсқасы 2017 жылдың наурыз айында Flash-тан басқа барлық NPAPI қолдауын жойды. Осы аралықта ESR арнасы осы мүмкіндікке жалпы қолдау көрсетуді жалғастырды, ал 52 ESR нұсқасы NPAPI-ге соңғы тіреу болды. Firefox 69.0 нұсқасы Flash NPAPI-ны әдепкі бойынша өшірді. 2021 жылдың қаңтарында жарық көрген Firefox 85.0 нұсқасында NPAPI қолдауы толығымен тоқтатылды. ESR арнасында Flash NPAPI қолдауы 2021 жылдың қазан айында шыққан 78.15.0 нұсқасымен аяқталды.

Сафари

Safari 2018 жылдың қыркүйек айында шыққан 12-ші нұсқасынан бастап Flash плагинінен басқа барлық NPAPI плагиндерін қолдауды тоқтатты. 2020 жылдың қыркүйек айында жарық көрген Safari 14 нұсқасынан Flash қолдауы жойылды.

SeaMonkey (Теңіз маймылы)

SeaMonkey 2.53.1 нұсқасынан бастап, Flash плагинінен басқа NPAPI плагиндерін қолдауды тоқтатты. NPAPI қолдауы SeaMonkey 2.53.7 нұсқасында, 2021 жылдың наурыз айында толықтай жойылды.

ActiveX-тің

Internet Explorer және Internet Explorer-ге негізделген браузерлер NPAPI деңгейінде беттерді кеңейту мүмкіндігін қамтамасыз ету үшін ActiveX басқару элементтерін, ActiveX құжаттарын және ActiveX сценарийлерін пайдаланады. Көбінесе Internet Explorer-мен байланысты болғанымен, ActiveX – кез келген компьютерлік бағдарламаға өзге компьютерлік бағдарламалардың интеграцияны қолдайтын бөліктерін қосуға рұқсат беретін интеграция технологиясы. Дегенмен, Internet Explorer қолдауын тоқтатты және оның ізбасары Microsoft Edge ActiveX-ті қолдамайды.

PPAPI

2009 жылдың 12 тамызында Google Code платформасында Pepper деп аталатын жаңа жоба және оған байланысты Pepper Plugin API (PPAPI) таныстырылды; PPAPI – плагиндерді көбірек тасымалдауға және қауіпсіз етуге бағытталған NPAPI-дің туындысы. Бұл кеңейтім плагиндерді процестен тыс орындауды жеңілдету үшін әзірленген. PPAPI бастапқыда тек Google Chrome және Chromium браузерлерімен қолдалынды. Кейіннен Opera және Vivaldi сияқты басқа Chromium негізіндегі браузерлер де PPAPI плагинін қолдады. 2012 жылдың ақпан айында Adobe Systems компаниясы Adobe Flash Player-дің болашақ Linux нұсқалары тек PPAPI арқылы ғана ұсынылатынын хабарлады. Алдыңғы нұсқа, NPAPI қолдауы бар Flash Player 11.2, бес жыл бойы қауіпсіздік жаңартуларын алатын болды. 2016 жылдың тамызында Adobe бұрынғы мәлімдемесіне қайшы, Linux жүйесінде NPAPI Flash Player-ді қайта қолдайтынын және оның жаңа нұсқаларын шығара беретінін мәлімдеді. 2020 жылдың тамызында Google PPAPI қолдауы 2022 жылдың маусым айында Google Chrome және Chromium браузерлерінен алынып тасталатынын жариялады.