I don't know what they mean, I responded on their mailing list regarding that point.
On Fri, Dec 21, 2012 at 10:40 AM, Sarvi Shanmugham <[email protected]>wrote: > 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]>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 >> > -- > > > > --
