Pyjs

С Википедије, слободне енциклопедије
Pyjs
Лого
Лого
Програмер(и)Џејмс Таубер, Лук Лејтон, Антони Ц Рајзинџер, Кис-Бос
Прво издање03.2007.
Стабилно издање
0.8.1a / 06.05.2012.
Репозиторијум Уреди на Википодацима
Написан уПајтон, Јаваскрипт
Оперативни системВиндоус, OS X, Линукс
ТипAjax фрејмворк, Декстоп и Веб алатка додатака, Компајлер, Сет додатака
ЛиценцаApache License 2.0
Веб-сајтpyjs.org

Pyjs (претходно Pyjamas пре маја 2012.[1]), је богати интернет апликацијски фрејмворк за програмирање веб и десктоп апликација за кориснике у Пајтону. Резултујуће апликације могу бити покренуте у веб прегледачу или као самосталне апликације.

Садржи самостални Пајтон-до-JavaScript компајлер, и Ajax фрејмворк и алатку додатка, и кроз коришћење ових компоненти, програмери могу писати свеобухватне апликације, које могу бити покренуте у свим популарним веб прегледачима, без писања било каквог JavaScript-а. Pyjs је порт Google Web Toolkit (GWT)[2] од Јаве до Пајтона.

Развој[уреди | уреди извор]

Коришћење pyjs-ом, програмери могу писати веб апликације у Пајтону уместо JavaScript-е. Апликације је компајлована до JavaScript-е. Такође су укључени Ajax библиотека и сет додатака[3] који омогућавају приступ моделу DOM модерних JavaScript-омогућених веб прегледача. Ajax библиотека и библиотека сета додатака су хибридни микс Пајтона и JavaScript-е. Као и са Google Web Toolkit-ом, pyjs није своја библиотека, и нити је још један Ajax фрејмворк. Ajax фрејмворкови су стриктно ограничени на омогућавање већ претходно подешених специфичних функционалности, написаних скоро ексклузивно у ручно направљеном JavaScript-у. Оба GWT и pyjs, тиме што су JavaScript компајлери, дозвољавају програмерима да раде у језику са којим знају да раде (Јава или Пајтон, респективно), да пишу своје ручне додатке, или потпуно од почетка или на бази већ постојећих додатака, при чему и даље циљају широк спектар модерних прегледача. Дакле, далеко од презентовања веб програмерима са fait-accompli Ajax фрејмворком, pyjs вам даје слободу да направите свој.

Дизајн[уреди | уреди извор]

Компајлер pyjs-а је написан у програмском језику Пајтон, и користи га да компајлује свој унос у JavaScript-у, прелазећи преко грана апстрактне синтаксе програма који је компајлован. Иако је компајлер самосталан, примарно коришћење pyjs-а је за веб развој, па постоји додатна инфраструктура за прављење веб апликација.

Модел библиотеке DOM.py[4] је апстрактни слој - танак слој Пајтона на врх JavaScript делова кода - чија корист се одражава у пуном приступу документа објектног модела платформе циљног прегледача. Као и са било којим компајлером, JavaScript делови су третирани као инлајн асемблери.

Штавише, на врх модела библиотеке DOM.py постоји додатни апстрактни слој, ui.py,[5] који омогућава слој који је највише користан програмерима: пун сет додатака са којим програмери десктоп апликација су већ упознати. Данас, листа доступних додатака је микс потпуних додатака који су били доступни у Google Web Toolkit-у 1.2, поред неколико који су портовани од GWT 1.5.

Компоненте[уреди | уреди извор]

Главне Pyjs компоненте укључују:

pyjs Пајтон-до-JavaScript Компајлер
Преводи програмски језик Пајтон у JavaScript.
Python уграђена и стандардна емулациона библиотека
JavaScript имплементације често коришћених модула, уграђених делова и класа у Пајтон стандардној библиотеци (као што су стрингови, листе, библиотеке, торке, сетови, getattr, мап, филтер, range, итд.; једноставно одржавање изузетака, и једноставни модул математике).
pyjs DOM библиотека[4]
Модули за манипулисање прегледача DOM.
pyjs Web UI модул[5]
Модул за прављење додатака као да је веб прегледач заправо десктоп додатак.
pyjs Десктоп портови
Подршка за покретање pyjs апликација као чист Пајтон, под Trident (MSHTML), Gecko (XULRunner) или WebKit. Pyjs Десктоп је концептуално близак са GWT "хостованим" модом, осим што апликације могу бити избачене уживо, под pyjs Десктопом, пре него што би били искоришћени са алатком дебаговања.

pyjs Десктоп[уреди | уреди извор]

Библиотека сета додатака[3] која долази са pyjs је много слична са PyQt и PyGTK да је порт од pyjs направљен да би покретао pyjs апликације на десктопу, назван pyjs Десктоп (претходно PyjamasDesktop[6] пре маја 2012. и оригинално хостован одвојено до верзије 0.6[7]). Пројекат користи Webkit, XULRunner или MSHTML као технологију, и то су ти прегледачи кроз које pyjs манипулише моделом DOM апликација. Заједно pyjs и pyjs Десктоп дозвољавају писање на више платформи, више десктопова, више прегледача и више апликација додатака која се покрећу на вебу и на десктопу.[8][9]

Историја[уреди | уреди извор]

Pyjamas је оригинално направљен од стране Џејмса Тоубера. Оригиналан код за интерфејс сета додатака и подрушку библиотека DOM-а су дошле од Google Web Toolkit-а, и портовани су од стране Џејмса Тоубера. Џејмс је написао оригинални pyjs компајлер. Лук Лејтон је преузео пројекат током 2008., и освежио интерфејс сета додатака, унапредио компајлер и направио три pyjs Десктоп покретача. Бернд Дорн и његове колеге из Лавли Система су учинили неколико драматичних унапређења компајлера за 0.5. Кис-Бос се придружио иако га није занимално програмирање у JavaScript-и, али ју је дефинитивно научио. Кис је одговоран за већину великих унапређења унутрашњег рада Пајтона у компајлеру, као што је "yield", дугачак тип податка и много много више. Ц Антони Рајзинџер се такође придружио као вођа и администратор пројекта.

Дана 2. маја 2012. улоге вођства пројекта су доведене у питање. Ово је била заједница покренута пројектом отвореног кода која је била широко подржана од стране многих сарадника укључујући горенаведене људе. Због несугласица између чланова групе о томе како ићи напред са инфраструктуром и смеру софтвера, неки чланови су одлучили да направе свој форк пројекта pyjamas. Овај форк је направљен од стране тима чији је вођа био Антони Рајзинџер, један од администратора пројекта. Ова група је укључивала особу која је имала у власништву pyjs.org домен и волонтерски је одлучио да додели власништво домена овом новом форку који је био у току прављења и тиме постао нови pyjs.org форк пројекта pyjamas. Лук Лејтон је наставио свој рад на његовом форку кроз нови pyj.be домен и наставио програмирање и одржавање pyjamas на овом pyj.be форку.

Ово је и даље оставило контроверзију на копирање података поштанске листе из старог сервера да се направи нова поштанска листа за гугл групе. Ово је подигнуто као прекршај заштите података Уједињеног Краљевства од стране Лука Лејтона. Било да је ово био легални прекршај није сасвим јасно и отворено је за интерпретацију. Ово је била заједница покренута пројектон отвореног кода. Према многима у заједници [тражи се извор], обојица Лук и Антони су били ко-администратори пројекта и ко-водили су га. Био је форкован од стране тима укључујући Антонија, једног од администратора који је имао привилегије на серверу, које је Лук поседовао. Поштанска листа је била део домена. Дакле, власништво података поштанске листе није сасвим јасна. Иако Лук тврди да је он лично поседовао поштанску листу за нови pyjs.org форк од пројекта конституисаним за крађу, многи у заједници [weasel words] су мислили другачије. Многи мисле [weasel words] да је ово био пројекат отвореног кода заједнице и да је Лук лејтон био ко-вођа и ко-администратор. Тиме, поштанска листа је заправо била у власништву заједнице pyjs.org а не лично власништво Лука. Иако, неки се не слажу, мишљењем већине у заједници [weasel words], коришћењем исте за прављење нових гугл група је било легално.

Иако је власништво података поштанске листе нејасно, када су се неки чланови пожалили да су били пријављени на нову гугл групе поштанску листу, моментална акција је била предузета од стране одржаваоца новог pyjs.org форка да се обришу сви из нове гугле групе и позвали су све чланове да се волонтерски прикључе новој гугл групи. Ово је био исти приступ који је Лук Лејтон урадио када је одлучио да пребаци pyjamas пошранску листу са гугл група где је оригинално направљен пре него што је Лук Лејтон преузео власништво над пројектом.

Тренутна чланарина Гугл Група у власништву и одржаване од стране форкова оригиналног pyjs.org је сада волонтерска, направљена кроз позивнице, и не крши законе приватности и заштите података. Не постоје нерешени законски проблеми тренутно нити било који судски поступци против било којих форкова пројекта pyjamas.

Оба форкова су активно програмирани и формирали су своју сопствену заједницу.

Форкови[уреди | уреди извор]

Постоје два форкова Pyjamas/Pyjs пројекта: један одржаван од стране Pyjs тима и други одржаван од стране Лука Лејтона.

Pyjs.org[уреди | уреди извор]

Pyjs.org форк, доступан на pyjs.org, је прошао кроз активно програмирање.

  • Нова GitHub базирана инфраструктура
  • Travis CI базирана континуирана интеграција за прављење, инсталирање и аутоматско тестирање
  • pip install и VirtualEnv базирано програмско окружење
  • Одвајање pyjs алатки од pyjs GWT додатака да се омогући другим сетовима додатака да буду програмирани
  • Уграђена Closure компајлер интеграција
  • GI Интроспекција/WebKit-GTK базирани pyjs-desktop покретач

Pyj.be[уреди | уреди извор]

Pyj.be, доступан на pyj.be, настављен са одржавањем од стране Лука лејтона и и даље је био активан са неколико исправка грешака и даљим развојем. Од ране 2015., какогод, веб сајт више није доступан.

Критике[уреди | уреди извор]

Pyjamas је био критикован од стране искусних корисника из неколико аспеката:[10]

  • Детекција прегледача уместо детекције могућности
  • Bloat и boilerplate пакао (покривеност Пајтон могућностима је више истакнуто него брзина и величина)
  • Дебаговање (савршено са Pyjs Desktop, али не ради већ више од 3 године)
  • Пајтон није Јава, DOM није Десктоп (фундаментални GWT непотребно лажира десктоп графички интефејс)

У другу руку, као динаминчно писан језик Пајтон је специфично добар за компајловање кода у JavaScript-у, чак бољи од GWT оригиналних Јава-до-JavaScript приступа.[11]

Алтернативе[уреди | уреди извор]

Многе алтернативе за Pyjamas су преводиоци више него сами фрејмворкови.[12]

  • py2js
  • PyCow
  • Pyjaco
  • PyvaScript
  • RapydScript

Референце[уреди | уреди извор]

  1. ^ Infrastructure, endpoint, process changes, clarification by Lex on pyjamas-dev mailing list (May 03, 2012)
  2. ^ pyjs README
  3. ^ а б The ui Module Class Hierarchy
  4. ^ а б DOM module
  5. ^ а б ui module
  6. ^ PyjamasDesktop history, Python Wiki
  7. ^ „Pyjamas Desktop”. 
  8. ^ Pyjamas - Python Applications for Desktop and Web, Luke Kenneth Casson Leighton (August 30, 2008)
  9. ^ Coding in Pyjamas: Apps for Desktop and the Web Архивирано на сајту Wayback Machine (27. јун 2016) Luke Kenneth Casson Leighton (November 7, 2008)
  10. ^ Why Pyjamas Isn't a Good Framework for Web Apps Архивирано на сајту Wayback Machine (2. април 2015), Alexander Tsepkov (July 29, 2012)
  11. ^ Thinking alike, comment by user cananian (Nov 5, 2008)
  12. ^ Pyjamas Alternatives for Web Development Архивирано на сајту Wayback Machine (2. април 2015), Alexander Tsepkov (September 17, 2012)

Спољашње везе[уреди | уреди извор]