Akademy 2007, KJSEmbed and QtScript KJSEmbed and QtScript ●What is application scripting? ●What is KJSEmbed? ●What is QtScript? ●How do KJSEmbed and QtScript.

Slides:



Advertisements
Similar presentations
A Bluffer's Guide to Selenium 2 By: Simon Stewart & Anthony Long.
Advertisements

By Mark Qian (QUI)(QUI). QUI is a solution to ease RIA development instead of another Javascript framework. QUI is built in Javascript at top of popular.
Software Development Languages and Environments. Programming languages High level languages are problem orientated contain many English words are easier.
June 28 th – July 1 st 2006 Implementing Usability: Insights to improve your chances  CFUnited 2007.
Goals Give you a feeling of what Eclipse is.
Web Applications Development Using Coldbox Platform Eddie Johnston.
1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006.
Mozilla Technologies Sept. 30, History of Mozilla Mosaic -> Netscape 1.0 -> Netscape 5.0 Netscape 5.0 was announced to be an Open Source project.
1/28/2004CSCI 315 Operating Systems Design1 Operating System Structures & Processes Notice: The slides for this lecture have been largely based on those.
SCRIPTING LANGUAGE. The first interactive shells were developed in the 1960s to enable remote operation of the first time-sharing systems, and these,
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 2: Operating-System Structures Modified from the text book.
SM3121 Software Technology Mark Green School of Creative Media.
ICS 665 Jesse Abdul. jQuery UI Overview  jQuery UI javascript library Includes all UI component functionality  jQuery UI CSS framework Includes standard.
Qt Igor November 8, 2002 Friday’s HENP Group Meeting.
Pittsburgh Java User Group– Dec Java PureFaces: A JSF Framework Extension.
Joel Bapaga on Web Design Strategies Technologies Commercial Value.
CIS 375—Web App Dev II ASP.NET 2 Introducing Web Forms.
Lesley Bross, August 29, 2010 ArcGIS 10 add-in glossary.
Definition of the SDK for FIspace Augusto Morales & Hector Bedón UPM.
Deutsches Elektronen-Synchrotron DESY Helmholtz Association of German Research Centres Hamburg, Germany The European X-Ray Laser Project.
Virtual techdays INDIA │ Nov 2010 Developing Office Biz Application using WPF on Windows 7 Sarang Datye │ Sr. Consultant, Microsoft Sridhar Poduri.
Why Java? A brief introduction to Java and its features Prepared by Mithat Konar.
Fundamentals of Database Chapter 7 Database Technologies.
Google Web Toolkit An Overview By Shauvik Roy Choudhary.
Ontology Engineering and Plugin Development with the NeOn Toolkit Plug-in Development for the NeOn Toolkit June 1st, 2008 Michael Erdmann, Peter Haase,
Vision The ultimate IDE/CASE tool should supports all steps in the software development process. Current tools perform only minimal semantic-level analysis.
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 Reasons for Studying Concepts of Programming Languages Increased ability to express ideas Improved.
1 Cisco Unified Application Environment Developers Conference 2008© 2008 Cisco Systems, Inc. All rights reserved.Cisco Public Introduction to Etch Scott.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
First Indico Workshop WEB FRAMEWORKS Adrian Mönnich May 2013 CERN.
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 14 Database Connectivity and Web Technologies.
3.1 Operating System Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual.
Silberschatz, Galvin and Gagne  Operating System Concepts UNIT II Operating System Services.
QT Programming QT Programming Ruku Roychowdhury. Background QT is a cross platform application framework. Widely used to develop GUI applications. Originally.
WHAT IS PHP FRAMEWORK? Set of Classes and Functions(Methods) Design for the development of web applications Provide basic structure Rapid application development(RAD)
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 14 Database Connectivity and Web Technologies.
TOPIC 7.0 LINUX SERVICES AND CONFIGURATION. ROOT USER Root user is called “super user” because it has power far beyond those of mortal user. As root,
D. Duellmann - IT/DB LCG - POOL Project1 The LCG Dictionary and POOL Dirk Duellmann.
Flux & React Web Application Development Mark Repka, Rich McNeary, Steve Mueller.
TypeScript for Alfresco and CMIS Steve Reiner CTO Integrated Semantics.
WEB DESIGN CONCEPTS Brayden Burr. UNDERSTANDING THE CONTENT.
Web Programming Java Script-Introduction. What is Javascript? JavaScript is a scripting language using for the Web. JavaScript is a programming language.
Presented By Sushil K. Chaturvedi Assistant Professor SRCEM,Banmore 1.
Cross desktop Application Scripting Ideas for an implementation Desktop Developer Conference 2006, Ottawa, Canada Tuesday July 18 th 2006 Hubert Figuière.
KDE Plasma Mobile workspaces Marco Martin. What is Plasma?
Sebastian Kügler, FrOSCon 2006 Jarosław Staniek, aKademy 2006 Database (data) components for KDE applications developers codename: KexiDB Facts ● Your.
The State of KHTML. In The Beginning... Why KHTML Is Important ● KHTML is critical to the success of KDE ● Provides a fast, light web browser and component.
J2EE vs Python for web development David
September 24th 2006, aKademy The Design and Implementation of KJSEmbed Richard Moore,
Geospatial Research & Solutions GIS.ASU.EDU
Open-O Client Project Proposal
Open-O Client Project Proposal
Plasma 2: the workspace construction kit
Tk Widgets in Javascript
Goals Give you a feeling of what Eclipse is.
Developing GIS WebParts in SharePoint
Avraham Leff James T. Rayfield IBM T.J. Watson Research Center
Haritha Dasari Josue Balandrano Coronel -
Open-O Client Project Proposal
Top 5 Front End Development Tools. 1. Sublime Text Sublime Text may be a super quick and have packed text and development editor. If you're about to be.
Chapter 2: Operating-System Structures
AMP.
Chapter 2: System Structures
Lecture 1: Multi-tier Architecture Overview
WordPress Events Calendar Plug-ins
Agile testing for web API with Postman
Execute your Processes
a middleware implementation
Front End Development workshop
Web Client Side Technologies Raneem Qaddoura
Presentation transcript:

Akademy 2007, KJSEmbed and QtScript KJSEmbed and QtScript ●What is application scripting? ●What is KJSEmbed? ●What is QtScript? ●How do KJSEmbed and QtScript compare? ●What would we need to do to make QtScript usable for KDE? ●Where do we go from here?

Akademy 2007, KJSEmbed and QtScript What is Application Scripting? ●Parts of an application can be written in higher-level languages than C++ ●Allow users to extend applications ●Allow users to automate applications ●Not a new idea, there are many applications written like this, both open source and closed source

Akademy 2007, KJSEmbed and QtScript Examples of Scripted Applications ●Classic example is emacs ●Almost all of emacs is written in lisp ●Very extensible ●Modes for everything from C++ to guitar tablature ●Users can heavily customise all aspects of the editor ●Dreamweaver ●Uses Javascript to bind together components ●User extensions written in Javascript + HTML ●Mainly scripting the IE HTML component

Akademy 2007, KJSEmbed and QtScript Examples of Scripted Applications ●Paintshop Pro ●Mainly written in C++ ●Allows users to automate it using Python ●Possibility for user extensions written as scripts

Akademy 2007, KJSEmbed and QtScript What is KJSEmbed? ●A framework for embedding KJS into applications ●Support for both KDE and Qt applications on both UNIX and win32 ●A high level API for creating interpreters ●Glue so applications can expose QObjects to scripts ●Bindings to create QWidgets and load UI files from Designer ●Bindings to QDom, QFile etc. to allow IO from scripts

Akademy 2007, KJSEmbed and QtScript What is KJSEmbed? ●Kross contains support for using KJSEmbed ●Support for creating custom widgets in JS including event handling

Akademy 2007, KJSEmbed and QtScript What is QtScript? ●This may feel a bit familiar after the last two slides... ●A framework for embedding JS into applications ●A JavaScript interpreter ●Support for Qt applications on all platforms ●A high-level API for creating interpreters ●Glue so that applications can easily expose QObjects to scripts ●A plugin based extension mechanism allowing additional facilities to be added

Akademy 2007, KJSEmbed and QtScript What is QtScript? ●QtScript is only distantly related to the Qt 3 QSA ●Uses standard ECMAScript 262 rather than the ECMAScript 2 draft ●New bytecode based interpreter ●Unlike QSA the facilities are not crippled ●Extending it is much easier than QSA

Akademy 2007, KJSEmbed and QtScript Similarities ●Both use templates for binding (rather than void *) ●Both query the QMetaObject to provide instant bindings to QObjects ●Both let you call slots as if they were Javascript functions ●Both let you connect signals to slots ●Both let you connect C++ signals to Javascript functions ●Both expose QObject properties as Javascript properties

Akademy 2007, KJSEmbed and QtScript Similarities ●The C++ QObjects that application authors must provide are virtually identical for all the facilities mentioned so far ●In fact it should be possible to make it transparent to scripts which interpreter is in use!

Akademy 2007, KJSEmbed and QtScript Differences ●KJSEmbed lets scripts create any widget supported by Designer ●KJSEmbed lets you load.ui files to easily create dialogs from scripts ●QtScript has no built in facility for this, though it's easy to add as an extension ●Kross already supports KJSEmbed but has no QtScript support

Akademy 2007, KJSEmbed and QtScript Differences ●QtScript has a nice plugin based extension mechanism ●We aimed to add a facility like this to KJSEmbed but it hasn't been implemented ●QtScript is maintained by Troll Tech, KJSEmbed is currently poorly maintained

Akademy 2007, KJSEmbed and QtScript Differences ●QtScript has some nice extras that KJSEmbed doesn't as Troll Tech were able to extend the QMetaObject ●Q_INVOKABLE marker allows methods to be called from scripts without being slots ●A QScriptable marker interface that classes can inherit ●A qscriptvalue_cast<> template method that makes it very easy to safely extract C++ objects from script objects ●All in all, I think QtScript has a nicer API

Akademy 2007, KJSEmbed and QtScript What about performance? ●KJSEmbed uses KJS which while very quick to startup, has relatively slow performace ●QtScript is much faster, performance is roughly equivalent to Mozilla's SpiderMonkey and to python ●My own benchmarks have shown it significantly out performs KJS ●That said, performance has not really been a problem with KJSEmbed it's usually just wiring together C++

Akademy 2007, KJSEmbed and QtScript Making QtScript usable for KDE ●QtScript has most of what we need ●Discussions with Troll Tech during the pre-releases have ensured that the rest can be built on top of it ●I've already got UI file loading and widget support working, and will port it to be a plugin this week ●Because QtScript and KJSEmbed both use the meta object, most KDE widgets will 'just work' as they've already got properties etc. defined ●Kross support is a major lack

Akademy 2007, KJSEmbed and QtScript Where do we go from here? ●We need to consider if we want to ship 4.0 with both KJSEmbed and QtScript ●Long term having two solutions to the same problem seems wasteful ●Offloading the maintenance to Troll Tech makes a lot of sense ●A big question is which should we use for plasma? ●Hopefully we can decide what to do this week...