What do the pyjaco guys mean by the following? "Pyjamas and its compiler are quite different, it's more of a wrapper then a python translator. Where you need to inline JavaScript to make the program work."
Sarvi On Friday, December 21, 2012 5:58:14 AM UTC-8, Lex Berezhny wrote: > > On Fri, Dec 21, 2012 at 7:20 AM, Sarvi Shanmugham > <[email protected]<javascript:> > > wrote: > >> In one of the threads on this list, someone mentioned that the latest GWT >> compiler generated javascript code that was about 200kb while the >> equivalent functionality writen in pyjamas and compiled to javascript was >> about 5Mb. >> Where is the bloat happenning in pyjamas? >> > > Java is a static language, emulating a static language in a dynamic > language is simpler than the reverse so there isn't much involved in the > GWT runtime. Also, GWT has optimization routines that will inline some code > and not include unused code, etc. > > Python is in some ways more dynamic than JavaScript and also is more > structured. Python has a pretty intricate class/inheritance system which > needs to be emulated among other things. And because it's part of the > runtime it will always get sucked into your compiled app (even if your > hello world example isn't using classes or other python features). > > Unlike the GWT compiler working on static Java, with Python there is no > way to know at compile time what features you will use since Python is so > dynamic. > > Having said that, Pyjs is still smart enough to pull in only modules you > have "import" statements for. This helps a lot. But there is always room > for improvement. This also means that you can't dynamically import code, > rather the compiler cannot figure out what you're importing. There is an > extensive list of command line arguments you can use to modify what will > get compiled or imported, so there is some room for customization. > > >> Is it the python-to-javascript compiler OR is it caused by an >> inefficient translation of the GWT widget set from Java to Python? >> > > I would say it's both. The GWT widgets are optimized for the > java-to-javascript compiler. You can do things in Python that you can't in > Java so if the widgets were rewritten to be more Pythonic it may be > possible to reduce their size. But it wouldn't make sense to rewrite the > widgets since someone would have to maintain them and we would lose the > automatic conversion (granted it's already half automatic/half manual). > Also, if you redo the widgets to be more Pythonic the GWT API documentation > would no longer be as useful when using pyjs. > > The solution to this in my opinion is to just make your own widgets as you > need them. Keep in mind that Pyjs is built on HTML/CSS. A widget is nothing > more than some HTML and CSS styling. A web designer can make your widgets > for you, then you add behavior to them with Pyjs. > > - lex > --
