Pyjs: Difference between revisions
→Sites using Pyjamas: Grafpad added, list reordered |
|||
Line 49: | Line 49: | ||
==Pyjamas Desktop== |
==Pyjamas Desktop== |
||
The widget set library<ref name="widgetset">[http://pyjs.org/showcase/Showcase.html Widget set showcase]</ref> that comes with Pyjamas is so similar to [[PyQt]] and [[PyGTK]] that a port of Pyjamas was made to run Pyjamas applications on the desktop, called [http://pyjd.org Pyjamas-Desktop]. The project uses [[Webkit]], [[XULRunner]] or [[MSHTML]] as the underlying technology, and it is through these browser engines that Pyjamas manipulates the DOM model of the application. Pyjamas and Pyjamas Desktop allow writing cross-platform, cross-desktop, cross-browser and cross-widget applications that run on the web and on the desktop.<ref>http://advogato.org/article/981.html Pyjamas - Python Applications for Desktop and Web</ref><ref name=Linux2008Pyjamas1>[http://www.ukuug.org/events/linux2008/programme/abstract-LKCLeighton-1.shtml Coding in Pyjamas: Apps for Desktop and the Web]</ref> |
The widget set library<ref name="widgetset">[http://pyjs.org/showcase/Showcase.html Widget set showcase]</ref> that comes with Pyjamas is so similar to [[PyQt]] and [[PyGTK]] that a port of Pyjamas was made to run Pyjamas applications on the desktop, called [http://pyjd.org Pyjamas-Desktop]. The project uses [[Webkit]], [[XULRunner]] or [[MSHTML]] as the underlying technology, and it is through these browser engines that Pyjamas manipulates the DOM model of the application. Pyjamas and Pyjamas Desktop allow writing cross-platform, cross-desktop, cross-browser and cross-widget applications that run on the web and on the desktop.<ref>http://advogato.org/article/981.html Pyjamas - Python Applications for Desktop and Web</ref><ref name=Linux2008Pyjamas1>[http://www.ukuug.org/events/linux2008/programme/abstract-LKCLeighton-1.shtml Coding in Pyjamas: Apps for Desktop and the Web]</ref> |
||
==Ownership controversy== |
|||
On May 2 2012 the leadership roles of the project came into question. Prior to May 2 2012 Leighton acted as project lead. After taking control of the pyjs.org domain name a group of developers critical of the leadership methods of Leighton effectively outed him from his role <ref name="controversy">[http://technogems.blogspot.com/2012/05/pyjamas-hijacked.html Pyjamas hijacked]</ref> and took over all leadership roles. |
|||
== Sites and Apps using Pyjamas == |
== Sites and Apps using Pyjamas == |
Revision as of 14:11, 9 May 2012
This article includes a list of general references, but it lacks sufficient corresponding inline citations. (April 2009) |
Original author(s) | James Tauber, Luke Leighton, Google |
---|---|
Developer(s) | Luke Leighton |
Initial release | March, 2007 |
Stable release | 0.7
/ April 25, 2010 |
Repository | |
Written in | Python, JavaScript |
Operating system | Windows, Mac OS X, Linux |
Available in | Python |
Type | Ajax framework, Desktop and Web Widget toolkit, Compiler, Widget set |
License | Apache License 2.0 |
Website | pyjs |
Pyjamas is a tool and framework for developing Ajax applications in Python. It contains a stand-alone Python-to-JavaScript compiler, an Ajax framework and widget toolkit, and through use of these components, developers can write comprehensive applications, to run in all major web browsers, without writing a single line of JavaScript. Pyjamas is a port of Google Web Toolkit[1] from Java to Python as the input language.
Development
Using Pyjamas, developers can write web applications in Python instead of JavaScript. The application is compiled to JavaScript. Also included is an Ajax library and widget set[2] that provides access to the DOM model of modern JavaScript-capable web browsers. The Ajax library and the widget set library are a hybrid mix of Python and JavaScript. Just as with GWT, "Pyjamas is not its libraries", and neither is it "yet another Ajax framework". Ajax Frameworks are strictly limited to providing pre-prepared specific functionality, written almost exclusively in tailor-made JavaScript. Both GWT and Pyjamas, being JavaScript compilers, allow the developer to work in the language with which they are familiar (Java or Python, respectively), to write their own custom widgets, either entirely from scratch or based on the existing available widgets, yet still target the full range of modern browsers. So, far from presenting web developers with a fait-accompli Ajax Framework, Pyjamas gives you the freedom to develop your own.
Design
The Pyjamas compiler is written in Python, and uses the Python programming language to compile its input into JavaScript, walking the abstract syntax tree of the program being compiled. Although the compiler is stand-alone, the primary use of Pyjamas is for web development, so there is additional infrastructure for building web applications.
The DOM.py[3] model library is an abstraction layer - a thin layer of Python on top of JavaScript code snippets - use of which provides access to the full document object model of the target browser platform. As with any compiler, the JavaScript snippets are treated as inline assembler.
Furthermore, on top of the DOM.py model library is an additional abstraction layer, ui.py[4], which provides the most useful layer to web developers: a full suite of widgets with which desktop application developers will be familiar. At present, the list of available widgets is a mixture of the complete set of widgets that were available in Google Web Toolkit 1.2, along with a few more that have been forward-ported from GWT 1.5.
Components
The major Pyjamas components include:
- pyjs Python-to-JavaScript Compiler
- Translates the Python programming language to the JavaScript programming language.
- Python builtin and standard emulation library
- JavaScript implementations of the commonly used modules, builtins and classes in the Python standard runtime library (such as strings, lists, dictionaries, tuples, sets, getattr, map, filter, range etc.; basic exception handling, a basic datetime and a basic math module).
- Pyjamas DOM library[3]
- Modules for manipulating the browser DOM.
- Pyjamas Web UI module[4]
- A module for creating widgets as if the web browser was a Desktop Widget Engine.
- Pyjamas Desktop ports
- Support for running Pyjamas apps as pure Python, under MSHTML, XULRunner or Webkit. Pyjamas Desktop is conceptually close to GWT "Hosted" mode, except that the applications can be deployed live, under Pyjamas Desktop, rather than be used exclusively as a debugging tool.
Pyjamas Desktop
The widget set library[5] that comes with Pyjamas is so similar to PyQt and PyGTK that a port of Pyjamas was made to run Pyjamas applications on the desktop, called Pyjamas-Desktop. The project uses Webkit, XULRunner or MSHTML as the underlying technology, and it is through these browser engines that Pyjamas manipulates the DOM model of the application. Pyjamas and Pyjamas Desktop allow writing cross-platform, cross-desktop, cross-browser and cross-widget applications that run on the web and on the desktop.[6][7]
Ownership controversy
On May 2 2012 the leadership roles of the project came into question. Prior to May 2 2012 Leighton acted as project lead. After taking control of the pyjs.org domain name a group of developers critical of the leadership methods of Leighton effectively outed him from his role [8] and took over all leadership roles.
Sites and Apps using Pyjamas
This article's use of external links may not follow Wikipedia's policies or guidelines. (August 2010) |
- Grafpad (online drawing application)
- Tickery (tickery.net)
- Nagare Web Framework (nagare.org)
- Beammail IMAP client (beammail.org)
- Online Minesweeper (pymines.appspot.com)
- (lkcl.net)
- (campusmixes.com)
References
- ^ Pyjamas project home
- ^ Widget Set diagram
- ^ a b DOM module
- ^ a b ui module
- ^ Widget set showcase
- ^ http://advogato.org/article/981.html Pyjamas - Python Applications for Desktop and Web
- ^ Coding in Pyjamas: Apps for Desktop and the Web
- ^ Pyjamas hijacked