Pyjs (früher Pyjamas vor Mai 2012 [1] ), ist ein reichhaltiges Internet-Anwendungs- Framework für die Entwicklung von Client-seitigen Web- und Desktop-Anwendungen in Python . Die daraus resultierenden Anwendungen können in einem Webbrowser oder als eigenständige Desktop-Anwendungen ausgeführt werden .
Es enthält einen eigenständigen Python- to- JavaScript- Compiler, ein Ajax-Framework und ein Widget-Toolkit , und durch die Verwendung dieser Komponenten können Entwickler umfassende Anwendungen schreiben, um in allen gängigen Webbrowsern zu laufen, ohne JavaScript zu schreiben. Pyjs ist ein Port von Google Web Toolkit (GWT) [2] von Java zu Python .
Entwicklung
Mit pyjs können Entwickler Web-Anwendungen in Python anstelle von JavaScript schreiben . Die Anwendung wird nach JavaScript kompiliert. Ebenfalls enthalten ist eine Ajax-Bibliothek und ein Widget-Set [3] , das Zugriff auf das DOM-Modell moderner JavaScript-fähiger Webbrowser bietet. Die Ajax-Bibliothek und die Widget-Set-Bibliothek sind eine Hybrid-Mischung aus Python und JavaScript. Genau wie bei Google Web Toolkit ist pyjs nicht seine Bibliotheken, und auch nicht nur ein anderes Ajax-Framework. Ajax RahmenbedingungenSind streng auf die Bereitstellung vorbereiteter spezifischer Funktionalität beschränkt, die fast ausschließlich in maßgeschneidertem JavaScript geschrieben wird. Sowohl GWT als auch pyjs, die JavaScript-Compiler sind, erlauben es dem Entwickler, in der Sprache zu arbeiten, mit der sie vertraut sind (Java bzw. Python), um eigene benutzerdefinierte Widgets zu schreiben, entweder ganz von Grund auf oder auf der Grundlage der vorhandenen verfügbaren Widgets Immer noch auf die gesamte Bandbreite der modernen Browser. Also, weit davon entfernt, Web-Entwickler mit einem fait-accompli Ajax Framework, pyjs gibt Ihnen die Freiheit, Ihre eigenen zu entwickeln.
Design
Der pyjs-Compiler ist in der Programmiersprache Python geschrieben und verwendet ihn, um seine Eingabe in JavaScript zu kompilieren und dabei den abstrakten Syntaxbaum des zu kompilierenden Programms zu führen. Obwohl der Compiler eigenständig ist, ist der primäre Einsatz von pyjs für die Web-Entwicklung, so dass es zusätzliche Infrastruktur für den Aufbau von Web-Anwendungen gibt.
Die DOM.py [4] -Modellbibliothek ist eine Abstraktionsschicht – eine dünne Schicht von Python auf JavaScript-Code-Snippets – deren Verwendung den Zugriff auf das gesamte Dokumentobjektmodell der Zielbrowser-Plattform ermöglicht. Wie bei jedem Compiler werden die JavaScript-Snippets als Inline-Assembler behandelt .
Darüber hinaus ist auf der DOM.py-Modellbibliothek eine zusätzliche Abstraktionsschicht, ui.py, [5], die für Web-Entwickler die nützlichste Schicht bietet: eine ganze Reihe von Widgets, mit denen Desktop-Anwendungsentwickler vertraut sein werden. Derzeit ist die Liste der verfügbaren Widgets eine Mischung aus dem kompletten Satz von Widgets, die in Google Web Toolkit 1.2 verfügbar waren, zusammen mit ein paar mehr, die von GWT 1.5 vorwärts portiert wurden.
Komponenten
Die wichtigsten Pyjs-Komponenten umfassen:
- Pyjs Python-to-JavaScript-Compiler
- Übersetzt die Programmiersprache Python in JavaScript.
- Python builtin und Standard Emulation Bibliothek
- JavaScript-Implementierungen der häufig verwendeten Module, builtins und Klassen in der Python-Standard-Laufzeitbibliothek (wie Strings, Listen, Wörterbücher, Tupel, Sets, getattr, Map, Filter, Bereich, etc., Grundlegende Ausnahmebehandlung, eine grundlegende datetime und a Grundmathematikmodul).
- Pyjs DOM bibliothek [4]
- Module zum Manipulieren des Browsers DOM .
- Pyjs Web-UI-Modul [5]
- Ein Modul zum Erstellen von Widgets, als ob der Webbrowser eine Desktop- Widget-Engine war .
- Pyjs Desktop-Ports
- Unterstützung für das Ausführen von pyjs apps als reine Python, unter Trident (MSHTML), Gecko ( XULRunner ) oder WebKit . Pyjs Desktop ist konzeptionell in der Nähe von GWT „Hosted“ -Modus, außer dass die Anwendungen live unter pyjs Desktop eingesetzt werden können, anstatt ausschließlich als Debugging-Tool verwendet zu werden.
Pyjs Desktop
Die Widget-Set-Bibliothek [3] , die mit pyjs kommt, ist so ähnlich wie bei PyQt und PyGTK, dass ein Port von Pyjs gemacht wurde, um pyjs-Anwendungen auf dem Desktop auszuführen , genannt pyjs Desktop (früher PyjamasDesktop [6] vor Mai 2012 und ursprünglich gehostet separat vorher Auf Version 0.6 [7] ). Das Projekt nutzt Webkit , XULRunner oder MSHTMLAls die zugrunde liegende Technologie, und es ist durch diese Browser-Motoren, dass pyjs manipuliert das DOM-Modell der Anwendung. Gemeinsam pyjs und pyjs Desktop erlauben das Schreiben von plattformübergreifenden, Cross-Desktop-, Cross-Browser- und Cross-Widget-Anwendungen, die im Web und auf dem Desktop laufen. [8] [9]
Geschichte
Dieser Abschnitt ist wie eine persönliche Reflexion oder Meinung Essay geschrieben, dass ein Wikipedia-Editor die persönlichen Gefühle über ein Thema. Bitte helfen Sie es zu verbessern, indem Sie es in einem enzyklopädischen Stil umschreiben . (Februar 2014) ( Erfahren Sie, wie und wann diese Vorlage zu entfernen ) |
Pyjamas wurde von James Tauber als Port des UI Widget Set und der DOM Support Bibliotheken von Google Web Toolkit in die Python Sprache gestartet . Tauber schrieb dann den originalen pyjs-compiler.
Im Jahr 2008 übernahm Luke Leighton das Projekt, aktualisiert das UI Widget Set, verbesserte den Compiler und schuf die drei pyjs Desktop Laufzeiten.
Bernd Dorn und seine Kollegen von Lovely Systems haben in der Version 0.5 einige dramatische Compiler-Verbesserungen veröffentlicht. Kees Bos ist verantwortlich für die Mehrheit der Verbesserungen und die erweiterte Python-Interoperabilität im Compiler, wie die Rendite Keyword-Unterstützung und lange Datentypen. C Anthony Risinger trat auch als Lead und Administrator des Projekts bei.
Im Jahr 2012 wurde das Projekt von einer umfangreichen Gemeinschaft getrieben, aber am 2. Mai, aufgrund von Meinungsverschiedenheiten zwischen Projektleitern, schufen einige Mitglieder eine Pyjamagabel. Dieses neue Team schuf pyjs.org, geführt von Anthony Risinger und die Person, die die Domain besaß. Mittlerweile setzte Luke Leighton seine Arbeit auf seiner eigenen Gabel durch eine neue Domäne pyj.be fort und entwickelt und pflegt weiterhin Pyjamas auf diesem Zweig.
Es gab Kontroversen über das Kopieren der Mailinglistendaten vom alten Server, um die neue Mailingliste von Google Groups zu erstellen. Dies wurde als Verletzung des britischen Datenschutzgesetzes von Luke Leighton aufgeworfen . Ob dies tatsächlich eine gesetzliche Verletzung war, ist nicht wirklich klar und offen für Interpretationen. Dies war ein gemeinschaftsorientiertes Open-Source-Projekt. Nach vielen in der Gemeinde [ Wiesel Worte ], Waren sowohl Luke als auch Anthony Co-Administratoren des Projekts und führen dazu. Es wurde von einem Team mit Anthony gegabelt, einem der Administratoren, die Privilegien für den Server hatten, die Luke Leighton besaß. Die Mailingliste war Teil der Domain. So ist das Eigentum an der Mailingliste selbst nicht ganz klar. Obwohl Luke behauptet, er persönlich besaß die Mailing-Liste und die Verwendung es, um eine neue Mailing-Liste für die neue pyjs.org Gabel des Projekts konstituiert Stehlen, viele in der Gemeinde [ Wiesel Worte ] fühlen sich anders. Viele fühlen [ Wiesel Worte ]Dass dies ein Open-Source-Community-Projekt war und Luke Leighton war Co-Lead und Co-Administrator. Daher war die Mailingliste eigentlich ein Gemeinschaftseigentum der pyjs.org Community und nicht das persönliche Eigentum von Luke.
Auch wenn das Eigentum an der Mailing-Liste Daten ist nicht ganz klar, wenn einige Mitglieder beschwert über die Abonnement der neuen Google-Gruppen-Mailing-Liste, sofortige Aktion wurde von den Betreuern der neuen pyjs.org Gabel genommen, um alle aus dem neuen Google zu entfernen Gruppen und lud alle Mitglieder ein, sich freiwillig den neuen Google-Gruppen anzuschließen. Dies ist genau der gleiche Ansatz, den Leighton nahm, als er beschloss, die Pyjama-Mailing-Liste von Google-Gruppen, wo es ursprünglich erstellt wurde, bevor Leighton übernahm die Führung des Projekts zu bewegen.
Die derzeitige Mitgliedschaft der Google Groups, die von beiden Gabeln des ursprünglichen pyjs.org besessen und gepflegt wird, ist nun freiwillig, durch Einladung erstellt und verletzt keine Datenschutz- und Datenschutzgesetze. Es gibt keine ungelösten rechtlichen Fragen zu diesem Zeitpunkt noch irgendwelche anhängigen Klagen mit beiden Gabeln des Pyjamas-Projekts.
Beide Gabeln wurden aktiv entwickelt und hatten ihre eigene Gemeinde gegründet. [ Muss aktualisiert werden ]
Forks
Es gab zwei Gabeln des Pajamas / Pyjs-Projektes: Eines von dem neuen Pyjs-Team und einem anderen von Luke Leighton gepflegt.
Pyjs.org
Die Pyjs.org-Gabel, die bei pyjs
- Neue GitHub- basierte Infrastruktur
- Travis CI basierte kontinuierliche Integration für Build, Installation und automatisierte Tests
- Pip- Installation und VirtualEnv-basierte Entwicklungsumgebung
- Trennung von Pyjs-Tools von pyjs GWT-Widgets, damit andere Widgetsets entwickelt werden können
- Eingebaute Verschluss-Compiler-Integration
- GI Introspection / WebKit-GTK basierte pyjs-Desktop-Läufer
Pyj.be
Pyj.be, verfügbar bei pyj
Kritiker
Pyjamas wurde von schweren Nutzern für mehrere Aspekte kritisiert: [10]
- Browser-Erkennung statt Merkmalserkennung
- Bloat und Boilerplate Hölle (Python Feature Coverage ist über Geschwindigkeit und Größe bevorzugt)
- Debugging (perfekt mit Pyjs Desktop, aber das ist für mehr als 3 Jahre gebrochen)
- Python ist nicht Java, DOM ist kein Desktop (die zugrunde liegende GWT fällt unnötig eine Desktop-GUI)
Auf der anderen Seite, als eine dynamisch typisierte Sprache Python ist eine besonders gute Passform für die Erstellung von Code zu JavaScript, eigentlich eine natürliche Passform als GWT ursprünglichen Java-to-JavaScript-Ansatz. [11]
Alternativen
Die meisten Alternativen zu Pajamas sind Übersetzer und nicht Frameworks. [12]
- Brython
- GlowScript
- Py2js
- PyCow
- Pyjaco
- PyvaScript
- RapydScript
- Transcrypt
pyjs.org/
pyjs is a Rich Internet Application (RIA) Development Platform for both Web and Desktop. With pyjsyou can write your JavaScript-powered web applications …