Pyjs (prethodno Pyjamas pre maja 2012.[1]), je bogati internet aplikacijski frejmvork za programiranje veb i desktop aplikacija za korisnike u Pajtonu. Rezultujuće aplikacije mogu biti pokrenute u veb pregledaču ili kao samostalne aplikacije.

Pyjs
Logo
Logo
Programer(i)Džejms Tauber, Luk Lejton, Antoni C Rajzindžer, Kis-Bos
Prvo izdanje03.2007.
Stabilno izdanje
0.8.1a / 06.05.2012.
Repozitorijum Uredi na Vikipodacima
Napisan uPajton, Javaskript
Operativni sistemVindous, OS X, Linuks
TipAjax frejmvork, Dekstop i Veb alatka dodataka, Kompajler, Set dodataka
LicencaApache License 2.0
Veb-sajtpyjs.org

Sadrži samostalni Pajton-do-JavaScript kompajler, i Ajax frejmvork i alatku dodatka, i kroz korišćenje ovih komponenti, programeri mogu pisati sveobuhvatne aplikacije, koje mogu biti pokrenute u svim popularnim veb pregledačima, bez pisanja bilo kakvog JavaScript-a. Pyjs je port Google Web Toolkit (GWT)[2] od Jave do Pajtona.

Razvoj

uredi

Korišćenje pyjs-om, programeri mogu pisati veb aplikacije u Pajtonu umesto JavaScript-e. Aplikacije je kompajlovana do JavaScript-e. Takođe su uključeni Ajax biblioteka i set dodataka[3] koji omogućavaju pristup modelu DOM modernih JavaScript-omogućenih veb pregledača. Ajax biblioteka i biblioteka seta dodataka su hibridni miks Pajtona i JavaScript-e. Kao i sa Google Web Toolkit-om, pyjs nije svoja biblioteka, i niti je još jedan Ajax frejmvork. Ajax frejmvorkovi su striktno ograničeni na omogućavanje već prethodno podešenih specifičnih funkcionalnosti, napisanih skoro ekskluzivno u ručno napravljenom JavaScript-u. Oba GWT i pyjs, time što su JavaScript kompajleri, dozvoljavaju programerima da rade u jeziku sa kojim znaju da rade (Java ili Pajton), da pišu svoje ručne dodatke, ili potpuno od početka ili na bazi već postojećih dodataka, pri čemu i dalje ciljaju širok spektar modernih pregledača. Dakle, daleko od prezentovanja veb programerima sa fait-accompli Ajax frejmvorkom, pyjs vam daje slobodu da napravite svoj.

Dizajn

uredi

Kompajler pyjs-a je napisan u programskom jeziku Pajton, i koristi ga da kompajluje svoj unos u JavaScript-u, prelazeći preko grana apstraktne sintakse programa koji je kompajlovan. Iako je kompajler samostalan, primarno korišćenje pyjs-a je za veb razvoj, pa postoji dodatna infrastruktura za pravljenje veb aplikacija.

Model biblioteke DOM.py[4] je apstraktni sloj - tanak sloj Pajtona na vrh JavaScript delova koda - čija korist se odražava u punom pristupu dokumenta objektnog modela platforme ciljnog pregledača. Kao i sa bilo kojim kompajlerom, JavaScript delovi su tretirani kao inlajn asembleri.

Štaviše, na vrh modela biblioteke DOM.py postoji dodatni apstraktni sloj, ui.py,[5] koji omogućava sloj koji je najviše koristan programerima: pun set dodataka sa kojim programeri desktop aplikacija su već upoznati. Danas, lista dostupnih dodataka je miks potpunih dodataka koji su bili dostupni u Google Web Toolkit-u 1.2, pored nekoliko koji su portovani od GWT 1.5.

Komponente

uredi

Glavne Pyjs komponente uključuju:

pyjs Pajton-do-JavaScript Kompajler
Prevodi programski jezik Pajton u JavaScript.
Python ugrađena i standardna emulaciona biblioteka
JavaScript implementacije često korišćenih modula, ugrađenih delova i klasa u Pajton standardnoj biblioteci (kao što su stringovi, liste, biblioteke, torke, setovi, getattr, map, filter, range, itd.; jednostavno održavanje izuzetaka, i jednostavni modul matematike).
pyjs DOM biblioteka[4]
Moduli za manipulisanje pregledača DOM.
pyjs Web UI modul[5]
Modul za pravljenje dodataka kao da je veb pregledač zapravo desktop dodatak.
pyjs Desktop portovi
Podrška za pokretanje pyjs aplikacija kao čist Pajton, pod Trident (MSHTML), Gecko (XULRunner) ili WebKit. Pyjs Desktop je konceptualno blizak sa GWT "hostovanim" modom, osim što aplikacije mogu biti izbačene uživo, pod pyjs Desktopom, pre nego što bi bili iskorišćeni sa alatkom debagovanja.

pyjs Desktop

uredi

Biblioteka seta dodataka[3] koja dolazi sa pyjs je mnogo slična sa PyQt i PyGTK da je port od pyjs napravljen da bi pokretao pyjs aplikacije na desktopu, nazvan pyjs Desktop (prethodno PyjamasDesktop[6] pre maja 2012. i originalno hostovan odvojeno do verzije 0.6[7]). Projekat koristi Webkit, XULRunner ili MSHTML kao tehnologiju, i to su ti pregledači kroz koje pyjs manipuliše modelom DOM aplikacija. Zajedno pyjs i pyjs Desktop dozvoljavaju pisanje na više platformi, više desktopova, više pregledača i više aplikacija dodataka koja se pokreću na vebu i na desktopu.[8][9]

Istorija

uredi

Pyjamas je originalno napravljen od strane Džejmsa Toubera. Originalan kod za interfejs seta dodataka i podrušku biblioteka DOM-a su došle od Google Web Toolkit-a, i portovani su od strane Džejmsa Toubera. Džejms je napisao originalni pyjs kompajler. Luk Lejton je preuzeo projekat tokom 2008., i osvežio interfejs seta dodataka, unapredio kompajler i napravio tri pyjs Desktop pokretača. Bernd Dorn i njegove kolege iz Lavli Sistema su učinili nekoliko dramatičnih unapređenja kompajlera za 0.5. Kis-Bos se pridružio iako ga nije zanimalno programiranje u JavaScript-i, ali ju je definitivno naučio. Kis je odgovoran za većinu velikih unapređenja unutrašnjeg rada Pajtona u kompajleru, kao što je "yield", dugačak tip podatka i mnogo mnogo više. C Antoni Rajzindžer se takođe pridružio kao vođa i administrator projekta.

Dana 2. maja 2012. uloge vođstva projekta su dovedene u pitanje. Ovo je bila zajednica pokrenuta projektom otvorenog koda koja je bila široko podržana od strane mnogih saradnika uključujući gorenavedene ljude. Zbog nesuglasica između članova grupe o tome kako ići napred sa infrastrukturom i smeru softvera, neki članovi su odlučili da naprave svoj fork projekta pyjamas. Ovaj fork je napravljen od strane tima čiji je vođa bio Antoni Rajzindžer, jedan od administratora projekta. Ova grupa je uključivala osobu koja je imala u vlasništvu pyjs.org domen i volonterski je odlučio da dodeli vlasništvo domena ovom novom forku koji je bio u toku pravljenja i time postao novi pyjs.org fork projekta pyjamas. Luk Lejton je nastavio svoj rad na njegovom forku kroz novi pyj.be domen i nastavio programiranje i održavanje pyjamas na ovom pyj.be forku.

Ovo je i dalje ostavilo kontroverziju na kopiranje podataka poštanske liste iz starog servera da se napravi nova poštanska lista za gugl grupe. Ovo je podignuto kao prekršaj zaštite podataka Ujedinjenog Kraljevstva od strane Luka Lejtona. Bilo da je ovo bio legalni prekršaj nije sasvim jasno i otvoreno je za interpretaciju. Ovo je bila zajednica pokrenuta projekton otvorenog koda. Prema mnogima u zajednici [traži se izvor], obojica Luk i Antoni su bili ko-administratori projekta i ko-vodili su ga. Bio je forkovan od strane tima uključujući Antonija, jednog od administratora koji je imao privilegije na serveru, koje je Luk posedovao. Poštanska lista je bila deo domena. Dakle, vlasništvo podataka poštanske liste nije sasvim jasna. Iako Luk tvrdi da je on lično posedovao poštansku listu za novi pyjs.org fork od projekta konstituisanim za krađu, mnogi u zajednici [weasel words] su mislili drugačije. Mnogi misle [weasel words] da je ovo bio projekat otvorenog koda zajednice i da je Luk lejton bio ko-vođa i ko-administrator. Time, poštanska lista je zapravo bila u vlasništvu zajednice pyjs.org a ne lično vlasništvo Luka. Iako, neki se ne slažu, mišljenjem većine u zajednici [weasel words], korišćenjem iste za pravljenje novih gugl grupa je bilo legalno.

Iako je vlasništvo podataka poštanske liste nejasno, kada su se neki članovi požalili da su bili prijavljeni na novu gugl grupe poštansku listu, momentalna akcija je bila preduzeta od strane održavaoca novog pyjs.org forka da se obrišu svi iz nove gugle grupe i pozvali su sve članove da se volonterski priključe novoj gugl grupi. Ovo je bio isti pristup koji je Luk Lejton uradio kada je odlučio da prebaci pyjamas pošransku listu sa gugl grupa gde je originalno napravljen pre nego što je Luk Lejton preuzeo vlasništvo nad projektom.

Trenutna članarina Gugl Grupa u vlasništvu i održavane od strane forkova originalnog pyjs.org je sada volonterska, napravljena kroz pozivnice, i ne krši zakone privatnosti i zaštite podataka. Ne postoje nerešeni zakonski problemi trenutno niti bilo koji sudski postupci protiv bilo kojih forkova projekta pyjamas.

Oba forkova su aktivno programirani i formirali su svoju sopstvenu zajednicu.

Forkovi

uredi

Postoje dva forkova Pyjamas/Pyjs projekta: jedan održavan od strane Pyjs tima i drugi održavan od strane Luka Lejtona.

Pyjs.org

uredi

Pyjs.org fork, dostupan na pyjs.org, je prošao kroz aktivno programiranje.

  • Nova GitHub bazirana infrastruktura
  • Travis CI bazirana kontinuirana integracija za pravljenje, instaliranje i automatsko testiranje
  • pip install i VirtualEnv bazirano programsko okruženje
  • Odvajanje pyjs alatki od pyjs GWT dodataka da se omogući drugim setovima dodataka da budu programirani
  • Ugrađena Closure kompajler integracija
  • GI Introspekcija/WebKit-GTK bazirani pyjs-desktop pokretač

Pyj.be

uredi

Pyj.be, dostupan na pyj.be, nastavljen sa održavanjem od strane Luka lejtona i i dalje je bio aktivan sa nekoliko ispravka grešaka i daljim razvojem. Od rane 2015., kakogod, veb sajt više nije dostupan.

Kritike

uredi

Pyjamas je bio kritikovan od strane iskusnih korisnika iz nekoliko aspekata:[10]

  • Detekcija pregledača umesto detekcije mogućnosti
  • Bloat i boilerplate pakao (pokrivenost Pajton mogućnostima je više istaknuto nego brzina i veličina)
  • Debagovanje (savršeno sa Pyjs Desktop, ali ne radi već više od 3 godine)
  • Pajton nije Java, DOM nije Desktop (fundamentalni GWT nepotrebno lažira desktop grafički intefejs)

U drugu ruku, kao dinaminčno pisan jezik Pajton je specifično dobar za kompajlovanje koda u JavaScript-u, čak bolji od GWT originalnih Java-do-JavaScript pristupa.[11]

Alternative

uredi

Mnoge alternative za Pyjamas su prevodioci više nego sami frejmvorkovi.[12]

  • py2js
  • PyCow
  • Pyjaco
  • PyvaScript
  • RapydScript

Reference

uredi
  1. ^ Infrastructure, endpoint, process changes, clarification by Lex on pyjamas-dev mailing list (May 03, 2012)
  2. ^ pyjs README
  3. ^ a b The ui Module Class Hierarchy
  4. ^ a b DOM module
  5. ^ a b 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 Arhivirano na sajtu Wayback Machine (27. jun 2016) Luke Kenneth Casson Leighton (November 7, 2008)
  10. ^ Why Pyjamas Isn't a Good Framework for Web Apps Arhivirano na sajtu Wayback Machine (2. april 2015), Alexander Tsepkov (July 29, 2012)
  11. ^ Thinking alike, comment by user cananian (Nov 5, 2008)
  12. ^ Pyjamas Alternatives for Web Development Arhivirano na sajtu Wayback Machine (2. april 2015), Alexander Tsepkov (September 17, 2012)

Spoljašnje veze

uredi