The document discusses the OpenLaszlo platform, which was built using Python (Jython) for rapid prototyping. It describes how the platform allows embedding JavaScript in XML documents and compiles this to ActionScript byte code. While Python enabled fast development, performance issues arose which required porting components to Java and pre-initializing applications. The document also covers the constraint system and documentation tools built for OpenLaszlo.
Describes how to use functional programming techniques with JavaScript, with specific examples around AJAX XHR requests. Presented at Ajax Experience 2008.
You can run the samples and view additional descriptions http://osteele.dev/talks/ajaxian-2008/samples/.
Integrating SAP the Java EE Way - JBoss One Day talk 2012hwilming
Cuckoo is an open source Resource Adapter for SAP that is compatible to the Java Connector Architecture (JCA) version 1.5.
It enables developers of Java EE applications to call functions in a SAP backend, making use of Java EE features like Container Managed Transactions and Security.
Hibersap helps developers of Java applications to call business logic in SAP backends. It defines a set of Java annotations to map SAP function modules to Java classes as well as a small, clean API to execute these function modules and handle transaction and security aspects.
Hibersap's programming model is quite similar to those of modern O/R mappers, significantly speeding up the development of SAP interfaces and making it much more fun to write the integration code.
Describes how to use functional programming techniques with JavaScript, with specific examples around AJAX XHR requests. Presented at Ajax Experience 2008.
You can run the samples and view additional descriptions http://osteele.dev/talks/ajaxian-2008/samples/.
Integrating SAP the Java EE Way - JBoss One Day talk 2012hwilming
Cuckoo is an open source Resource Adapter for SAP that is compatible to the Java Connector Architecture (JCA) version 1.5.
It enables developers of Java EE applications to call functions in a SAP backend, making use of Java EE features like Container Managed Transactions and Security.
Hibersap helps developers of Java applications to call business logic in SAP backends. It defines a set of Java annotations to map SAP function modules to Java classes as well as a small, clean API to execute these function modules and handle transaction and security aspects.
Hibersap's programming model is quite similar to those of modern O/R mappers, significantly speeding up the development of SAP interfaces and making it much more fun to write the integration code.
Accelrys Enterprise Platform scales from laptops to grids, but can how does it do that and how can it scale to meet the demands of an Enterprise Application? Enterprise Architects and Developers will get a detailed view of how Pipeline Pilot handles job management, job queuing, job pooling, security, memory management, process isolation and more. This session provides background information that will support later presentations in the platform and developers tracks.
Resumo das principais funcionalidades para developers, bem como novos recursos para administradores como o grid link for rac e o active cache. também abordamos recursos de grid como o coherence
This talk was given at SOA Symposium in Amsterdam in 2008. It is a perspective on Enterprise Mashup architectures can be constructed by using data services, RIA, REST, empowering the client platforms.
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise ArchitecturesBIOVIA
The Accelrys Enterprise Platform (AEP) provides support for scientific data integration and application delivery within an Enterprise environment. During this session, we’ll provide a primer on the Accelrys Enterprise Platform and how it fits within an existing Enterprise Platform. This will include the deployment scenarios and key integration points that are found most common (and sometimes not so common) in many organizations.
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...Joonas Lehtinen
The Vaadin provides a desktop-like programming model on the server for creating Rich Internet Applications (RIAs) in plain Java - without the need for HTML, XML, plug-ins or JavaScript.
Session explains the key concepts of the server-side RIA development model and compares it to client-side RIA. To demonstrate the use of framework, an example application is developed during the session step-by-step. The presentation is concluded with pointers on how to start developing your own applications with Apache-licensed Vaadin-framework.
You'll learn:
* How to create a desktop like web application in Java
* Difference between page oriented, client-side RIA and server-side RIA architectures
* How Vaadin can be extended with Google Web Toolkit
More information and materials about the presentation:
http://vaadin.com/web/joonas/wiki/-/wiki/Main/Server-side%20RIA
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...jaxconf
Get introduced to the Vaadin framework by one of its core developers. Vaadin provides a desktop-like programming model on the server for creating Rich Internet Applications (RIAs) in plain Java - without the need for HTML, XML, plug-ins or JavaScript. In this session, Joonas lays out the key concepts of the server-side RIA development model and compares it to client-side RIA. To demonstrate the use of framework, an example application is developed during the session step-by-step. The presentation is concluded with pointers on how to start developing your own applications with Apache-licensed Vaadin-framework. You'll learn: * How to create a desktop like web application in Java * Difference between page oriented, client-side RIA and server-side RIA architectures * How Vaadin can be extended with Google Web Toolkit
Here are the slides from my talk at @media in London two weeks ago titled "Professional Frontend Engineering." I had four goals for the talk.
Put a stake in the ground.
Reiterate our values.
Advocate the discipline.
Nurture a healthy Web.
The goals were threaded throughout the four sections of the talk::
Historical Perspective
Our Beliefs & Principles
Knowledge Areas & Best Practices
Why It All Matters
The professionalization of frontend engineering is a topic I'm passionate about. I think it is critical to the advancement of the Internet.
Presented May 30th, 2008, in London at the @media conference in the plenary opening day two.
Covering:
- What is a Content Repository and how does it work
- Comparison to relational database
- Why stable APIs are important and what to do if they are not
- Benefits of the open and transparent development
- Oh boy.. can I see it already!
- Why Sling is called Sling
- Various ways to deploy and develop code
- Deployment options and clustering
The history of programming languages shows a progressive development from low-level programming languages close to the machine, to high-level languages close to the problems being solved with software. Domain-specific languages take this a step further than general purpose programming languages by making assumptions about the class of applications for which the language is intended. Complete applications typically require programs in multiple (technical) domains, which can be catered for by separate domain-specific languages. While such separation of concerns is beneficial for domain expressivity, it often leads to loose coupling and lack of static verification. Hence, the design of individual DSLs needs to be complemented with their linguistic integration.
In this talk, I illustrate these ideas with the design of WebDSL, a domain-specific language for data centric web applications. WebDSL linguistically integrates the definition of data models, user interfaces, actions, access control rules, data validation rules, styling rules, and workflow definitions. While maintaining separation between these concerns through specialized sub-languages, linguistic integration ensures static consistency checking and correct code generation. The language allows developers to concentrate on the essential design of web applications, abstracting from accidental complexity, such as the details of data persistence. The combination of high-level and low-level constructs ensures high expressivity, while supporting customization to application requirements.
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems [Ja...Hirofumi Iwasaki
Financial companies need Java EE to power their business today. Rakuten Card, one of the largest credit card companies in Japan, adopted Java EE 6 for its online systems rearchitecture. Learn why it chose Java EE, and hear about its experiences and lessons learned. This is the first time a large credit card company in Japan is sharing its story. How do you start such a big project? Why did it choose Java EE? How did it select the in-house development policies, educate itself, and develop the additional libraries? How did it launch within only six months? What is the key factor driving 24/7 critical financial systems successfully? How do you migrate to Java EE 7 in the future? This presentation answers these questions and any others you may have.
Accelrys Enterprise Platform scales from laptops to grids, but can how does it do that and how can it scale to meet the demands of an Enterprise Application? Enterprise Architects and Developers will get a detailed view of how Pipeline Pilot handles job management, job queuing, job pooling, security, memory management, process isolation and more. This session provides background information that will support later presentations in the platform and developers tracks.
Resumo das principais funcionalidades para developers, bem como novos recursos para administradores como o grid link for rac e o active cache. também abordamos recursos de grid como o coherence
This talk was given at SOA Symposium in Amsterdam in 2008. It is a perspective on Enterprise Mashup architectures can be constructed by using data services, RIA, REST, empowering the client platforms.
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise ArchitecturesBIOVIA
The Accelrys Enterprise Platform (AEP) provides support for scientific data integration and application delivery within an Enterprise environment. During this session, we’ll provide a primer on the Accelrys Enterprise Platform and how it fits within an existing Enterprise Platform. This will include the deployment scenarios and key integration points that are found most common (and sometimes not so common) in many organizations.
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...Joonas Lehtinen
The Vaadin provides a desktop-like programming model on the server for creating Rich Internet Applications (RIAs) in plain Java - without the need for HTML, XML, plug-ins or JavaScript.
Session explains the key concepts of the server-side RIA development model and compares it to client-side RIA. To demonstrate the use of framework, an example application is developed during the session step-by-step. The presentation is concluded with pointers on how to start developing your own applications with Apache-licensed Vaadin-framework.
You'll learn:
* How to create a desktop like web application in Java
* Difference between page oriented, client-side RIA and server-side RIA architectures
* How Vaadin can be extended with Google Web Toolkit
More information and materials about the presentation:
http://vaadin.com/web/joonas/wiki/-/wiki/Main/Server-side%20RIA
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...jaxconf
Get introduced to the Vaadin framework by one of its core developers. Vaadin provides a desktop-like programming model on the server for creating Rich Internet Applications (RIAs) in plain Java - without the need for HTML, XML, plug-ins or JavaScript. In this session, Joonas lays out the key concepts of the server-side RIA development model and compares it to client-side RIA. To demonstrate the use of framework, an example application is developed during the session step-by-step. The presentation is concluded with pointers on how to start developing your own applications with Apache-licensed Vaadin-framework. You'll learn: * How to create a desktop like web application in Java * Difference between page oriented, client-side RIA and server-side RIA architectures * How Vaadin can be extended with Google Web Toolkit
Here are the slides from my talk at @media in London two weeks ago titled "Professional Frontend Engineering." I had four goals for the talk.
Put a stake in the ground.
Reiterate our values.
Advocate the discipline.
Nurture a healthy Web.
The goals were threaded throughout the four sections of the talk::
Historical Perspective
Our Beliefs & Principles
Knowledge Areas & Best Practices
Why It All Matters
The professionalization of frontend engineering is a topic I'm passionate about. I think it is critical to the advancement of the Internet.
Presented May 30th, 2008, in London at the @media conference in the plenary opening day two.
Covering:
- What is a Content Repository and how does it work
- Comparison to relational database
- Why stable APIs are important and what to do if they are not
- Benefits of the open and transparent development
- Oh boy.. can I see it already!
- Why Sling is called Sling
- Various ways to deploy and develop code
- Deployment options and clustering
The history of programming languages shows a progressive development from low-level programming languages close to the machine, to high-level languages close to the problems being solved with software. Domain-specific languages take this a step further than general purpose programming languages by making assumptions about the class of applications for which the language is intended. Complete applications typically require programs in multiple (technical) domains, which can be catered for by separate domain-specific languages. While such separation of concerns is beneficial for domain expressivity, it often leads to loose coupling and lack of static verification. Hence, the design of individual DSLs needs to be complemented with their linguistic integration.
In this talk, I illustrate these ideas with the design of WebDSL, a domain-specific language for data centric web applications. WebDSL linguistically integrates the definition of data models, user interfaces, actions, access control rules, data validation rules, styling rules, and workflow definitions. While maintaining separation between these concerns through specialized sub-languages, linguistic integration ensures static consistency checking and correct code generation. The language allows developers to concentrate on the essential design of web applications, abstracting from accidental complexity, such as the details of data persistence. The combination of high-level and low-level constructs ensures high expressivity, while supporting customization to application requirements.
Java EE 6 Adoption in One of the World’s Largest Online Financial Systems [Ja...Hirofumi Iwasaki
Financial companies need Java EE to power their business today. Rakuten Card, one of the largest credit card companies in Japan, adopted Java EE 6 for its online systems rearchitecture. Learn why it chose Java EE, and hear about its experiences and lessons learned. This is the first time a large credit card company in Japan is sharing its story. How do you start such a big project? Why did it choose Java EE? How did it select the in-house development policies, educate itself, and develop the additional libraries? How did it launch within only six months? What is the key factor driving 24/7 critical financial systems successfully? How do you migrate to Java EE 7 in the future? This presentation answers these questions and any others you may have.
Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009Alexandre Morgaut
Wakanda is an exciting project including a server, a studio, and some useful Web tools. It helps you creating web apps that integrate nicely with a backend and a native REST and JavaScript database.
It makes REST and Entity Model, a very intuitive way to build applications. We'll see a quick but detailed rundown about its architecture: its database engine, SquirrelFish, a data provider, Ajax framework adapters (YUI, ExtJS, jQuery, ...), and a full development environment. I'll expose part of its client and server-side APIs (JSON-RPC, data services), and some innovating features like JavaScript remote debugging, or unit testing on JavaScript and HTTP using Wakanda Studio and Firefox extensions.
when erlang makes sense. this talk tries to draw simple metaphors from what we can learn from bacteria ,the brain ,memory & concurrency .
the talk was presented at devcamp bangalore, by bhasker v kode, co-founder & CTO at hover.in
also check out the hover.in devblog at http://developers.hover.in
Mobile is all the rage these days — and it should be. Many website owners believe creating a separate mobile website is the solution, with browser sniffing to redirect all "mobile" traffic to a separate m.example.com domain. But it turns out that most of the time this is a terrible solution. Come hear Jen Simmons talk about how there's only one web — not a mobile web separate from the desktop web. And learn how you can use HTML5 and responsive web design to create one unified website or web app for your project and Just Have It Work™ on a wide range of devices.
Federated CDNs: What every service provider should knowPatrick Hurley
With this white paper, we will reveal how it is now possible to establish a central reporting repository that gathers data across all content owners and federation members, while also providing secure, private views of data relevant only to each participant – and how such an analytical hub can drive the success of a federated CDN.
Flex For Java Architects Ledroff Breizh Jug V Blog CcFrançois Le Droff
I had the chance to present at the BreizhJUG (a Breton Java user group) a session named "Flex for Java Deveoppers".
A crowd of almost 100 happy Java developers and architects was willing to know more about Flex.
I had an an hour and half to cover :
*
a basic presentation of the flash and AIR platforms,
*
cool UX flash/flex/AIR demos
*
the latest great features of flash 10
*
and flex, and its ecosystem from a Java developer perspective (mvn framework, testing libraries, building and quality tools, blazeds, lcds)
I ended up the session presenting fna maven archetypes
Slides of my "Open Innovation in Software Means Open Source Software" talk, OSS Watch, Oxford Dec.12th, 2009 (http://www.oss-watch.ac.uk/events/2009-12-07_business/programme.xml). Also at http://transfersummit.com/programme/60 and accompanying article on the H online, http://x42.ch/03.10.01
This is from an internal evaluation of AJAX platforms in 2006, for the purpose of selecting a platform for a small startup to use to develop a consumer-facing graphical application.
Slides of my presentation at TransferSummit 2010, "Open innovation in software means Open Source", http://transfersummit.com/programme/60 . See accompanying article on the H online, http://x42.ch/03.10.01
Slides of a talk at the International PHP Conference 2012 on how we successfully mastered the challenge to log everything and transport the logged data into different sinks for different needs.
From Flash to Canvas - a penchant for black holesPatric Lanhed
This session will cover what HTML5 developers can benefit from knowing its way around in the world of Flash and ActionScript. The tools that could be used for a better Canvas experience and foremost how the display list will ease your burden.
The current state of the Apache Wicket framework in 2014 as presented at the DEVdev meetup held in Deventer, the Netherlands.
- A critique of ThoughtWorks' Technology Review 2014 where they slam JSF (jay) as a concept (nay)
- A look back at 10 years of Wicket
- A review of the current Wicket versions
- An outlook and roadmap for Wicket 7 and Wicket 8
The DEVdev (Deventer Developers) is a new meetup for any developer in the eastern part of the Netherlands (the right side of the IJssel river). This presentation was delivered at the first meetup, and was kindly sponsored by Topicus B.V.
Attending a job Interview for B1 and B2 Englsih learnersErika906060
It is a sample of an interview for a business english class for pre-intermediate and intermediate english students with emphasis on the speking ability.
3.0 Project 2_ Developing My Brand Identity Kit.pptxtanyjahb
A personal brand exploration presentation summarizes an individual's unique qualities and goals, covering strengths, values, passions, and target audience. It helps individuals understand what makes them stand out, their desired image, and how they aim to achieve it.
Enterprise Excellence is Inclusive Excellence.pdfKaiNexus
Enterprise excellence and inclusive excellence are closely linked, and real-world challenges have shown that both are essential to the success of any organization. To achieve enterprise excellence, organizations must focus on improving their operations and processes while creating an inclusive environment that engages everyone. In this interactive session, the facilitator will highlight commonly established business practices and how they limit our ability to engage everyone every day. More importantly, though, participants will likely gain increased awareness of what we can do differently to maximize enterprise excellence through deliberate inclusion.
What is Enterprise Excellence?
Enterprise Excellence is a holistic approach that's aimed at achieving world-class performance across all aspects of the organization.
What might I learn?
A way to engage all in creating Inclusive Excellence. Lessons from the US military and their parallels to the story of Harry Potter. How belt systems and CI teams can destroy inclusive practices. How leadership language invites people to the party. There are three things leaders can do to engage everyone every day: maximizing psychological safety to create environments where folks learn, contribute, and challenge the status quo.
Who might benefit? Anyone and everyone leading folks from the shop floor to top floor.
Dr. William Harvey is a seasoned Operations Leader with extensive experience in chemical processing, manufacturing, and operations management. At Michelman, he currently oversees multiple sites, leading teams in strategic planning and coaching/practicing continuous improvement. William is set to start his eighth year of teaching at the University of Cincinnati where he teaches marketing, finance, and management. William holds various certifications in change management, quality, leadership, operational excellence, team building, and DiSC, among others.
Putting the SPARK into Virtual Training.pptxCynthia Clay
This 60-minute webinar, sponsored by Adobe, was delivered for the Training Mag Network. It explored the five elements of SPARK: Storytelling, Purpose, Action, Relationships, and Kudos. Knowing how to tell a well-structured story is key to building long-term memory. Stating a clear purpose that doesn't take away from the discovery learning process is critical. Ensuring that people move from theory to practical application is imperative. Creating strong social learning is the key to commitment and engagement. Validating and affirming participants' comments is the way to create a positive learning environment.
Discover the innovative and creative projects that highlight my journey throu...dylandmeas
Discover the innovative and creative projects that highlight my journey through Full Sail University. Below, you’ll find a collection of my work showcasing my skills and expertise in digital marketing, event planning, and media production.
RMD24 | Retail media: hoe zet je dit in als je geen AH of Unilever bent? Heid...BBPMedia1
Grote partijen zijn al een tijdje onderweg met retail media. Ondertussen worden in dit domein ook de kansen zichtbaar voor andere spelers in de markt. Maar met die kansen ontstaan ook vragen: Zelf retail media worden of erop adverteren? In welke fase van de funnel past het en hoe integreer je het in een mediaplan? Wat is nu precies het verschil met marketplaces en Programmatic ads? In dit half uur beslechten we de dilemma's en krijg je antwoorden op wanneer het voor jou tijd is om de volgende stap te zetten.
Personal Brand Statement:
As an Army veteran dedicated to lifelong learning, I bring a disciplined, strategic mindset to my pursuits. I am constantly expanding my knowledge to innovate and lead effectively. My journey is driven by a commitment to excellence, and to make a meaningful impact in the world.
Premium MEAN Stack Development Solutions for Modern BusinessesSynapseIndia
Stay ahead of the curve with our premium MEAN Stack Development Solutions. Our expert developers utilize MongoDB, Express.js, AngularJS, and Node.js to create modern and responsive web applications. Trust us for cutting-edge solutions that drive your business growth and success.
Know more: https://www.synapseindia.com/technology/mean-stack-development-company.html
Improving profitability for small businessBen Wann
In this comprehensive presentation, we will explore strategies and practical tips for enhancing profitability in small businesses. Tailored to meet the unique challenges faced by small enterprises, this session covers various aspects that directly impact the bottom line. Attendees will learn how to optimize operational efficiency, manage expenses, and increase revenue through innovative marketing and customer engagement techniques.
Falcon stands out as a top-tier P2P Invoice Discounting platform in India, bridging esteemed blue-chip companies and eager investors. Our goal is to transform the investment landscape in India by establishing a comprehensive destination for borrowers and investors with diverse profiles and needs, all while minimizing risk. What sets Falcon apart is the elimination of intermediaries such as commercial banks and depository institutions, allowing investors to enjoy higher yields.
What are the main advantages of using HR recruiter services.pdfHumanResourceDimensi1
HR recruiter services offer top talents to companies according to their specific needs. They handle all recruitment tasks from job posting to onboarding and help companies concentrate on their business growth. With their expertise and years of experience, they streamline the hiring process and save time and resources for the company.
Cracking the Workplace Discipline Code Main.pptxWorkforce Group
Cultivating and maintaining discipline within teams is a critical differentiator for successful organisations.
Forward-thinking leaders and business managers understand the impact that discipline has on organisational success. A disciplined workforce operates with clarity, focus, and a shared understanding of expectations, ultimately driving better results, optimising productivity, and facilitating seamless collaboration.
Although discipline is not a one-size-fits-all approach, it can help create a work environment that encourages personal growth and accountability rather than solely relying on punitive measures.
In this deck, you will learn the significance of workplace discipline for organisational success. You’ll also learn
• Four (4) workplace discipline methods you should consider
• The best and most practical approach to implementing workplace discipline.
• Three (3) key tips to maintain a disciplined workplace.
The world of search engine optimization (SEO) is buzzing with discussions after Google confirmed that around 2,500 leaked internal documents related to its Search feature are indeed authentic. The revelation has sparked significant concerns within the SEO community. The leaked documents were initially reported by SEO experts Rand Fishkin and Mike King, igniting widespread analysis and discourse. For More Info:- https://news.arihantwebtech.com/search-disrupted-googles-leaked-documents-rock-the-seo-world/
1. OpenLaszlo:
A Python Success Story
PyCon 2005
Oliver Steele
Chief Software Architect
Laszlo Systems, Inc.
March 23, 2005
2. Lots of Languages
LZX XHTML
Target Languages
JavaScript RELAX NG XML
Definition Languages
Implementation
JavaCC Java Jython Python XSLT
Languages
Laszlo Systems, Inc.
2
3. Outline
What we built
OpenLaszlo platform
Demos
Architecture
How we built it
Script compiler
Cool features
Doc tools
Synergy
What we learned
Technical challenges
Social challenges
Why it worked (and what didn’t)
Laszlo Systems, Inc.
3
4. Laszlo Systems
Founded in 2001
Team from Apple, Adobe, Allaire, Excite, GO,
Farallon, and Macromedia
20 developers in Boston and San Francisco Bay
(Looking for 21st)
News
October 5, 2004: Platform released as Open Source
October 13, 2004: Company receives Series B funding
March 2005: Earthlink announces use of Laszlo Mail
Laszlo Systems, Inc.
4
5. Laszlo Vision
Develop and market Rich Internet
Applications for customer-facing
websites
Establish the Laszlo platform as the
standard, open source software
platform of choice for such
applications
Laszlo Systems, Inc.
5
6. Demos
Calendar
Dashboard
Laszlo Systems, Inc.
6
8. Under the Hood: Platform Architecture
XML Source
OpenLaszlo Platform
Files swf object file
Compiler Linker
Flash player
GIFs, JPEGs, User interface Runtime
PNGs components Library
J2EE Server Client
Laszlo Systems, Inc.
8
9. Under the Hood (2): Removing the Server
XML Source
OpenLaszlo Platform
Files swf object file
Compiler Linker
Web Server
Flash player
GIFs, JPEGs, User interface Runtime
PNGs components Library
Client
Laszlo Systems, Inc.
9
10. Script Compiler
Compiles JavaScript to Flash bytecode
Plus unanticipated cool features
Laszlo Systems, Inc.
10
11. Laszlo Source Code (LZX)
<canvas>
<window>
<button
onclick=”
animate(‘x’, 100, 1000, true)”>
Click me!
</button>
</window>
</canvas>
Source hierarchy mirrors object hierarchy
Embedded JavaScript
Constraints, data binding, and declarative states
Laszlo Systems, Inc.
11
12. Script Compiler
Requirements
100% Java
JavaScript -> ActionScript byte code
Three months (concurrent with language design, API design,
XML compiler, and compiler architecture)
Why not Java?
I’d written a lot of code in Java and Python, and didn’t think I
could write the Java version in time.
JWordNet
PyWordNet
Evaluation
Java
Jython
SML
ICON
Laszlo Systems, Inc.
12
21. Doctest
def substitute(self, str, **keys):
quot;quot;quot;Parse an expression and replace any identifier with the same
name as a keyword argument to this function, with the value of
that key. If the value has type Splice, it's spliced into place
instead of substituting at the same level.
>>> s = Parser().substitute
>>> s('[0,1,2]')
(ASTArrayLiteral, Literal(0.0), Literal(1), Literal(2))
>>> s('[_0,1,2]', _0=Literal(quot;subquot;))
(ASTArrayLiteral, Literal(sub), Literal(1), Literal(2))
>>> s('[_0,1,2]', _0=s('[a,b,c]'))
(ASTArrayLiteral, (ASTArrayLiteral, ASTIdentifier(a), ASTIdentifier(b),
ASTIdentifier(c)), Literal(1), Literal(2))
>>> s('[_0,1,2]', _0=Splice(s('[a,b,c]')))
(ASTArrayLiteral, ASTArrayLiteral, ASTIdentifier(a), ASTIdentifier(b),
ASTIdentifier(c), Literal(1), Literal(2))
N.B., there is no attempt to enforce macro hygiene
quot;quot;quot;
Laszlo Systems, Inc.
21
22. Concise Literal Syntax
DefineTests(
'label',
Stmts(['a: while (f()) b: while (g()) {break; h()}',
'a: while (f()) b: while (g()) {break b; h()}',
'a: while (f()) b: while (g()) {break a; h()}',
'a: while (f()) b: for (p in obj) {break; h()}',
'a: while (f()) b: for (p in obj) {break b; h()}',
'a: while (f()) b: for (p in obj) {break a; h()}',
'a: for (p in obj) b: while (g()) {break; h()}',
'a: for (p in obj) b: while (g()) {break b; h()}',
'a: for (p in obj) b: while (g()) {break a; h()}',
'a: for (p in obj) b: for (p in obj) {break; h()}',
'a: for (p in obj) b: for (p in obj) {break b; h()}',
'a: for (p in obj) b: for (p in obj) {break a; h()}',
]))
Laszlo Systems, Inc.
22
25. Port Assembler to Java
1.2KLoC Jython -> 2.7KLoC Java
Harder to work with
But...10 times as fast
Laszlo Systems, Inc.
25
26. Deployment Issues
Deploying Jython within a J2EE Servlet has (had?)
severe class loader issues
Jython triggered a memory manager error in JVM 1.4
Jython 2.0/Java 1.5 issues
Laszlo Systems, Inc.
26
27. However...
Xalan, Xerces, Jing, Commons Logging, and JDOM
all had issues too
Laszlo Systems, Inc.
27
28. The First Pattern
Jython saved us a lot of time during development, but
cost (less) time during deployment.
But so did several other Java libraries
But this still makes it difficult to justify, especially to
deployers (who don’t see the development-time
advantages)
Laszlo Systems, Inc.
28
29. And then we were done...
Laszlo Systems, Inc.
29
30. Constraint System (Laszlo 1.0)
Requirements
• Width of view is a function of parent’s width and view’s ‘border’ property
• Width is updated whenever parent’s width changes
• Width is updated whenever ‘border’ property value changes
Observer Pattern
<view>
<method event=”oninit”>
registerListener(parent, ‘width’, myWidthListener);
registerListener(this, ‘border’, myWidthListener);
myWidthListener();
</method>
<method name=”myWidthListener”>
this.width = parent.width - 2*this.border;
</method>
</view>
Constraint expression
<view width=”${parent.width - 2*this.border}”/>
Laszlo Systems, Inc.
30
32. And then we were done...
Laszlo Systems, Inc.
32
33. KRANK Feature (Laszlo 2.0)
Problem: Slow initialization time
Solution: Initialize the application prior to deployment
Results: 2-4x performance increase, at expense of
developer time and application size
Laszlo Systems, Inc.
33
34. KRANK feature
LZX Instrumented
Source File object file
OpenLaszlo
Compiler
Flash player
KRANK
Compiler
Serialized Optimized
application object file
state
Laszlo Systems, Inc.
34
39. Lots of Languages: Developers Guide
LZX XHTML
Target Languages
JavaScript RELAX NG XML
Definition Languages
Implementation
JavaCC Java Jython Python XSLT
Languages
Laszlo Systems, Inc.
39
40. Lots of Languages: LZX Reference
LZX XHTML
Target Languages
JavaScript RELAX NG XML
Definition Languages
Implementation
JavaCC Java Jython Python XSLT
Languages
Utility Library
Laszlo Systems, Inc.
40
41. The Third Pattern
There are different requirements for build system and
deployment
Components may move between build system and
deployment...
...or be shared by both
Laszlo Systems, Inc.
41
43. Experimentation
Let us experiment with new features:
Krank
Constraints
PUSH merge
Macros
Swings of “I wish we had ported” vs. “I’m glad we
didn’t port yet”
Don’t know when you’re done prototyping
Laszlo Systems, Inc.
43
44. Lots of Languages (2)
LZX XHTML
Target Languages
JavaScript RELAX NG XML
Definition Languages
Implementation
JavaCC Java Jython Python XSLT
Languages
Process Implement Interoperate
Laszlo Systems, Inc.
44
45. Migration
Smooth path between Python and Jython
Possible path between Jython and Java
Excellent integration between Jython and Java-based
tools
Laszlo Systems, Inc.
45
46. What would help Jython?
Smoother path to performance
Smoother path to deployment
Laszlo Systems, Inc.
46