Cracking the Cocoa Nut: User Interface Programming at Runtime James Eagan, Michel Beaudouin-Lafon, Wendy E

Total Page:16

File Type:pdf, Size:1020Kb

Cracking the Cocoa Nut: User Interface Programming at Runtime James Eagan, Michel Beaudouin-Lafon, Wendy E Cracking the Cocoa Nut: User Interface Programming at Runtime James Eagan, Michel Beaudouin-Lafon, Wendy E. Mackay To cite this version: James Eagan, Michel Beaudouin-Lafon, Wendy E. Mackay. Cracking the Cocoa Nut: User Inter- face Programming at Runtime. UIST 2011: Proceedings of the 24th ACM Symposium on User Interface Software and Technology, Oct 2011, Santa Barbara, CA, United States. pp.225–234, 10.1145/2047196.2047226. hal-00997886 HAL Id: hal-00997886 https://hal.archives-ouvertes.fr/hal-00997886 Submitted on 2 Jun 2014 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Cracking the Cocoa Nut: User Interface Programming at Runtime James R. Eagan1,2 Michel Beaudouin-Lafon1,2 Wendy E. Mackay2,1 [email protected] [email protected] [email protected] 1LRI (Univ. Paris-Sud & CNRS); 2INRIA 91405 Orsay Cedex, France ABSTRACT appear spontaneously and in unforeseeable ways [22], even This article introduces runtime toolkit overloading, a novel with the best design practices. As such, there is a gap be- approach to help third-party developers modify the interac- tween the designers’ conception of how software will be used tion and behavior of existing software applications without and its actual use. These gulfs are likely to continue to grow access to their underlying source code. We describe the ab- as software is used in an increasingly rich, ubiquitous, and stractions provided by this approach as well as the mecha- distributed environment. nisms for implementing them in existing environments. We describe Scotty, a prototype implementation for Mac OS X Different approaches have been taken to bridge these gulfs Cocoa that enables developers to modify existing applica- by making software more flexible, including giving users tions at runtime, and we demonstrate a collection of interac- more control over their software’s configuration [16], run- tion and functional transformations on existing off-the-shelf time behaviors [18, 8] and interfaces [21, 9], or by giving applications. We show how Scotty helps a developer make programmers more control over their language [15]. These sense of unfamiliar software, even without access to its source approaches all build on the notion that, although the designer code. We further discuss what features of future environ- may have a good understanding of how to create software ments would facilitate this kind of runtime software devel- that supports the most common use cases, users will push opment. their software in unintended ways. Keywords: user interfaces, meta-toolkits, runtime software Our goal is to bridge the gap between the designed use and development, runtime toolkit overloading actual needs of software by enabling runtime software devel- opment. Runtime software developers are third-party devel- ACM Classification: H.5.m Information interfaces and pre- opers who can modify the behavior and/or interface of soft- sentation (HCI): Misc. ware that nearly satisfies the user’s needs. Runtime devel- opment is concerned with taking the existing behavior of an General terms: Human Factors application and changing it in some way, without requiring INTRODUCTION access to the application source code. Software designers create software with a particular model In this paper, we show how to facilitate this kind of runtime in mind of how it will be used. Even in the most thoughtfully software development in existing applications, we show how designed systems, however, these assumptions may break in it can facilitate new interactions, and we argue for changes to the face of users’ own constraints and demands. Assump- better support it. In particular: tions made by a designer, based on a deep understanding of hardware, software, and human constraints, may change. As • We present runtime toolkit overloading, a novel approach these constraints evolve, so too must the software, often in that provides high-level abstractions to make the redefini- ways not easily reconcilable with its original design. tion of program behaviors a first-class operation, without access to the the application’s source code; Even when these constraints do not evolve, users frequently • We describe how to implement this approach using a set push their software in ways not anticipated by its design- of deep hooks into existing toolkits and runtime systems, ers [20]. A user’s interaction is strongly situated in a par- taking advantage of modern programming languages; ticular context, with particular needs that may arise and dis- • We present Scotty, an implementation of runtime toolkit overloading in the Mac OS X Cocoa environment, and il- lustrate its use to modify a set of off-the-shelf applications; • We provide recommendations to improve support for run- This is the author’s version of the work. It is posted here for your personal time development in future user interface toolkits. use. Not for redistribution. The definitive Version of Record was published in Proceedings of UIST’11, http://dx.doi.org/10.1145/2047196.2047226 RELATED WORK UIST’11, October 16-19, 2011, Santa Barbara, CA, USA. Some applications are designed with modification as an ex- Copyright 2011 ACM. plicit design concern and thus offer some kind of plugin, scripting, or extension mechanism. Most applications, how- WinCuts Façade Prefab SubArctic Scotty ever, are not designed for such extensibility. For these kinds Access to √ √ √ √ √ of applications, other methods are necessary. In this section, Surface Rep we examine different approaches to black-box modification Can change √ √ √ √ of programs (Figure 1). These approaches are black-box in surface rep. the sense that they do not assume that the runtime developer Access to √ √ √ √ has any access to the program source code or to its internal widgets structures. Can change (via I/O (via I/O √ √ widgets redirection) redirection) Scripting, Plugins, and Extensions Access to (only parts that √ Many applications support some degree of extensibility by program model touch toolkit) users through scripting interfaces and/or plugin and exten- Can change (only parts that √ sion mechanisms. Almost all Mac OS applications, for ex- program model touch toolkit) ample, offer a scripting interface (through AppleScript) that Works with √ √ gives control over standard functionality such as launching, multiple platforms quitting, and moving windows [3]. Many web browsers, in- Modifications are typically “safe/ √ √ √ cluding Safari, Firefox, and Chrome, offer plugin and ex- robust” tension interfaces, allowing one to write modifications to the way the browser loads and displays web pages. Scripting and Figure 1: Summary of the capabilities and character- plugin interfaces can provide varying degrees of control, de- istics of different approaches to runtime modification. pending on what internal structures of the application they expose and what, if any, sandboxing they perform to insulate the plugin code from the rest of the application. For exam- isting applications at runtime. They rely on the fact that the ple, the Firefox browser is open enough to enable the Chick- modification environment does not need to know about the enfoot [7] plugin to provide a domain-specific scripting lan- deeper semantics of the application. It suffices to simply guage with deep access to web pages. Similarly, Google’s transport or transform the display and let the user make sense Chrome Frame1 uses Internet Explorer’s plugin system to re- of it. Because no semantic information is available, however, place the rendering engine with that of the Chrome browser. the transformations are therefore limited. These interfaces can potentially offer a high degree of power, Augmented Surface Representations It is possible, though, but only if the application developer has included explicit to augment the surface representation with supplemental se- support for them. Moreover, for complex changes to the mantic information. Fac¸ade [21], for example, integrates program behavior, it is typically necessary to create ad hoc with the X Windows system to gather information about the modifications on a per-application basis. Thus, they may be widget hierarchy. With this additional information, Fac¸ade is of limited utility for defining new behaviors for all applica- able to operate at a finer granularity than WinCuts and can tions. In order to support runtime software development, we even change the behavior of individual widgets. want a general mechanism to write plugins for any applica- tion, regardless of whether it was designed with such support Prefab [9, 10] takes a different approach to augmenting its in mind. understanding of the surface representation of widgets: it uses a vision-based system to recognize widgets using their Changing Program Behavior visual appearance and to create visual stand-ins for them. When the application does not provide explicit support for This has the advantage of being able to operate in a multi- runtime modifications, other approaches are necessary. The platform environment, simultaneously operating on, e. g., na- most basic of these approaches is to operate on the surface tive Windows widgets, Mac OS and X Windows widgets via representation of a window. The surface representation is the a VNC connection, and Flash widgets embedded in a web part of the application directly exposed to the user, such as page. Nonetheless, it can only handle widgets it has been the collection of pixels on the screen, but it could also include trained to recognize. auditory, haptic, or other modalities. All of these approaches face the same limitation: Even with Surface Representations A typical example of this approach supplemental information about, e. g., the widget hierarchy, is VNC [19], which teleports the pixels of an entire desktop widgets are still opaque objects.
Recommended publications
  • Swing: Components for Graphical User Interfaces
    Swing: Components for Graphical User Interfaces Computer Science and Engineering College of Engineering The Ohio State University Lecture 22 GUI Computer Science and Engineering The Ohio State University GUI: A Hierarchy of Nested Widgets Computer Science and Engineering The Ohio State University Visual (Containment) Hierarchy Computer Science and Engineering The Ohio State University Top-level widgets: outermost window (a container) Frame, applet, dialog Intermediate widgets: allow nesting (a container) General purpose Panel, scroll pane, tabbed pane, tool bar Special purpose Layered pane Atomic widgets: nothing nested inside Basic controls Button, list, slider, text field Uneditable information displays Label, progress bar, tool tip Interactive displays of highly formatted information Color chooser, file chooser, tree For a visual (“look & feel”) of widgets see: http://java.sun.com/docs/books/tutorial/uiswing/components Vocabulary: Widgets usually referred to as “GUI components” or simply “components” History Computer Science and Engineering The Ohio State University Java 1.0: AWT (Abstract Window Toolkit) Platform-dependent implementations of widgets Java 1.2: Swing Most widgets written entirely in Java More portable Main Swing package: javax.swing Defines various GUI widgets Extensions of classes in AWT Many class names start with “J” Includes 16 nested subpackages javax.swing.event, javax.swing.table, javax.swing.text… Basic GUI widgets include JFrame, JDialog JPanel, JScrollPane, JTabbedPane,
    [Show full text]
  • View of XML Technology
    AN APPLICATION OF EXTENSlBLE MARKUP LANGUAGE FOR INTEGRATION OF KNOWLEDGE-BASED SYSTEM WITH JAVA APPLICATIONS A Thesis Presented to The Faculty of the Fritz J. and Dolores H. Russ College of Engineering and Technology Ohio University In Partial Fulfillment of the Requirement for the Degree Master of Science BY Sachin Jain November, 2002 ACKNOWLEDGEMENTS It is a pleasure to thank the many people who made this thesis possible. My sincere gratitude to my thesis advisor, Dr. DuSan Sormaz, who helped and guided me towards implementing the ideas presented in this thesis. His dedication to research and his effort in the development of my thesis was an inspiration throughout this work. The thesis would not be successful without other members of my committee, Dr. David Koonce and Dr. Constantinos Vassiliadis. Special thanks to them for their substantial help and suggestions during the development of this thesis. I would like also to thank Dr. Dale Masel for his class on guidelines for how to write thesis. Thanlts to my fellow colleagues and members of the lMPlanner Group, Sridharan Thiruppalli, Jaikumar Arumugam and Prashant Borse for their excellent cooperation and suggestions. A lot of infom~ation~1sef~11 to the work was found via the World Wide Web; 1 thank those who made their material available on the Web and those who kindly responded back to my questions over the news-groups. Finally, it has been pleasure to pursue graduate studies at IMSE department at Ohio University, an unique place that has provided me with great exposures to intricacies underlying development, prograrn~ningand integration of different industrial systems; thus making this thesis posslbie.
    [Show full text]
  • Programming Java for OS X
    Programming Java for OS X hat’s so different about Java on a Mac? Pure Java applica- tions run on any operating system that supports Java. W Popular Java tools run on OS X. From the developer’s point of view, Java is Java, no matter where it runs. Users do not agree. To an OS X user, pure Java applications that ignore the feel and features of OS X are less desirable, meaning the customers will take their money elsewhere. Fewer sales translates into unhappy managers and all the awkwardness that follows. In this book, I show how to build GUIs that feel and behave like OS X users expect them to behave. I explain development tools and libraries found on the Mac. I explore bundling of Java applications for deployment on OS X. I also discuss interfacing Java with other languages commonly used on the Mac. This chapter is about the background and basics of Java develop- ment on OS X. I explain the history of Java development. I show you around Apple’s developer Web site. Finally, I go over the IDEs commonly used for Java development on the Mac. In This Chapter Reviewing Apple Java History Exploring the history of Apple embraced Java technologies long before the first version of Java on Apple computers OS X graced a blue and white Mac tower. Refugees from the old Installing developer tan Macs of the 1990s may vaguely remember using what was tools on OS X called the MRJ when their PC counterparts were busy using JVMs. Looking at the MRJ stands for Mac OS Runtime for Java.
    [Show full text]
  • XAMPP-Chapter
    The following is a sample chapter from the upcoming Understanding MySQL and MariaDB, coming in 2020 from Andrew Comeau and Comeau Software Solutions. If you enjoy this preview, please check back at ComeauSoftware.com for more details and updates on anticipated release dates. https://www.comeausoftware.com/understanding-mysql-and-mariadb/ All material, Copyright 2019 – Andrew Comeau 3 Installing MariaDB with XAMPP Using MariaDB as part of a suite of web development tools In This Lesson … • Understand the purpose of an Apache - MySQL - PHP (AMP) software stack • Recognize the variations in AMP stack packages available for download • Install an AMP stack for use in developing databases and hosting web applications What is an AMP Stack? As powerful as MySQL is, it's rarely used on its own. Most developers will want additional tools such as programming languages and interface tools to escape the tedium of working on the command line all the time. This is one of the reasons that MySQL is often used in combination with other tools that will enable the design of user-friendly sites. This means either creating or downloading a ready-made AMP stack. AMP usually stands for "Apache-MySQL-PHP" although the P might also stand for Perl or Python. In general, it simply refers to one or more programming languages that are included with the software stack. An AMP stack is called a stack because each tool within it addresses a different aspect of database and web development and helps support the others. • Apache is a web server - software that can respond to requests for pages and other content within a website.
    [Show full text]
  • WIMP Interfaces for Emerging Display Environments
    Graz University of Technology Institute for Computer Graphics and Vision Dissertation WIMP Interfaces for Emerging Display Environments Manuela Waldner Graz, Austria, June 2011 Thesis supervisor Prof. Dr. Dieter Schmalstieg Referee Prof. Dr. Andreas Butz To Martin Abstract With the availability of affordable large-scale monitors and powerful projector hardware, an increasing variety of display configurations can be found in our everyday environments, such as office spaces and meeting rooms. These emerging display environments combine conventional monitors and projected displays of different size, resolution, and orientation into a common interaction space. However, the commonly used WIMP (windows, icons, menus, and pointers) user interface metaphor is still based on a single pointer operating multiple overlapping windows on a single, rectangular screen. This simple concept cannot easily capture the complexity of heterogeneous display settings. As a result, the user cannot facilitate the full potential of emerging display environments using these interfaces. The focus of this thesis is to push the boundaries of conventional WIMP interfaces to enhance information management in emerging display environments. Existing and functional interfaces are extended to incorporate knowledge from two layers: the physical environment and the content of the individual windows. The thesis first addresses the tech- nical infrastructure to construct spatially aware multi-display environments and irregular displays. Based on this infrastructure, novel WIMP interaction and information presenta- tion techniques are demonstrated, exploiting the system's knowledge of the environment and the window content. These techniques cover two areas: spatially-aware cross-display navigation techniques for efficient information access on remote displays and window man- agement techniques incorporating knowledge of display form factors and window content to support information discovery, manipulation, and sharing.
    [Show full text]
  • GUI Object Level Architectures Recap
    GUI Object Level Architectures Recap • Lots of Input Devices – Basic input devices (keyboard, mouse, buttons, valuators) – Exotic input devices (3D Input, Gloves, Crosspads) – Research input devices (Peephole display, speech, touch) Recap • Handling input – Predefine all kinds of devices (too rigid, didn’t work too well) – Instead, organize everything as event or sampled devices – Handle everything in software as events Mouse Events Software Keyboard Software Today • Object-level architectures – Design patterns for GUIs – Model-View-Controller – Pluggable Look and Feel – Undo / Redo Internal Organization of Widgets • GUI widgets organized Model-View-Controller (MVC) – Basic idea: split widget into three separate objects – Each handles different aspect of widget Model-View-Controller • Model handles core functionality and data • Micro-level (internal to widget) – Scrollbar state – Checkbox state – What cell in table is currently highlighted • Macro-level (application) – Table data – Content in a document – Image in paint program Model-View-Controller • Model provides: – methods to edit data, which Controller can call – methods to access state, which View and Controller can request • Model has registry of dependent Views to notify on data changes • In Swing, listeners stored here Model-View-Controller • Model examples: – text editor: model is text string – slider: model is an integer – spreadsheet: collection of values related by functional constraints Model-View-Controller • View handles how the widget appears – Handles display of information
    [Show full text]
  • Design Patterns and Frameworks for Developing WIMP User Interfaces
    Design Patterns and Frameworks for Developing WIMP+ User Interfaces Vom Fachbereich Informatik der Technischen Universität Darmstadt genehmigte Dissertation zur Erlangung des akademischen Grades der Doktor-Ingenieurin (Dr.-Ing.) vorgelegt von Yongmei Wu, M.Sc. geboren in Guizhou, China Referenten der Arbeit: Prof. Dr.-Ing. Hans-Jürgen Hoffmann Prof. Robert J.K. Jacob, Ph.D. Tag des Einreichens: 09.10.2001 Tag der mündlichen Prüfung: 11.12.2001 D17 Darmstädter Dissertation 2001 Abstract Abstract This work investigates the models and tools for support of developing a kind of future user interfaces, which are partially built upon the WIMP (Windows, Icons, Menus, and Pointing device: the mouse) interaction techniques and devices; and able to observe and leverage at least one controlled process under the supervision of their user(s). In this thesis, they are called WIMP+ user interfaces. There are a large variety of applications dealt with WIMP+ user interfaces, e.g., robot control, telecommunication, car driver assistant systems, distributed multi-user database systems, automation rail systems, etc. At first, it studies the evolution of user interfaces, deduces the innovative functions of future user interfaces, and defines WIMP+ user interfaces. Then, it investigates high level models for user interface realization. Since the most promising user-centered design methodology is a new emerging model, it is still short of modeling methodology and rules to support the concrete development process. Therefore, in this work, a universal modeling methodology, which picks up the design pattern application, is researched and used to structure different low level user interface models. And a framework, named Hot-UCDP, for aiding the development process, is proposed.
    [Show full text]
  • Jquery: Animations
    jQuery: Animations ATLS 3020 - Digital Media 2 Week 9 - Day 2 jQuery Overview ● All HTML must be valid! ● Define elements in HTML ● Styling and presentation in CSS ● Add interactivity with javascript/jQuery jQuery Overview All jQuery must go inside of $(document).ready(function(){}) HTML <head> // meta, title, css <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"> </script> <script> $(document).ready(function() { // your javascript and jQuery code goes here }); </script> </head> jQuery Overview You can only add jQuery variables with jQuery methods and javascript variables with javascript methods Javscript We have a function that changes function change_color() { the color of an element: // changes the color of something } We can use ONE of the two options. We cannot combine document.getElementById() with the click method. And we cannot combine $(selector) with the onclick method. Javscript jQuery var button; $("#button").click(change_color); button = document.getElementById("button"); button.onclick(change_color); Some jQuery animations jQuery Makes a hidden element fade into view $("#banner").fadeIn(); jQuery Hides an element by fading it out $("#banner").fadeOut(); jQuery Makes a visible element side out of view $("#banner").slideUp(); jQuery $("#banner").slideDown(); Makes a hidden element slide into view jQuery Alternates between hiding and showing the $("#banner").toggle(); “banner” id jQuery Alternates between hiding and showing the $("#banner").slideToggle(); “banner” id, while sliding in and out jQuery and CSS We can also edit CSS directly with jQuery: $(selector).css("property", "value"); jQuery $("#banner").css("font-size", "100px"); Changes the font-size of the banner element jQuery $("#banner").css("color", "#00f"); Changes the font color of the banner element Or change multiple properties at once: $(selector).css({ "attribute", "value", jQuery "attribute", "value" }); $("#banner").css({ "font-size", "100px", "color", "#00f" }); Exercise (pairs) 1.
    [Show full text]
  • The Abstract Window Toolkit (AWT), from Java
    Components Containers and Layout Menus Dialog Windows Event Handling The Abstract Window Toolkit (AWT), from Java : Abstract Window Toolkit Interface to the GUI Interface to platform's components: Layout: Placing GUI event keyboard, window system Buttons, text components handling mouse, … (Win, Mac, …) fields, … Uses operating system components Don't use these! . Looks like a native application . One must sometimes be aware of differences between operating systems… . Small set of components . , … – no table, no color chooser, … The Java Foundation Classes, from Java : Java Foundation Classes (JFC) Java : AWT, Swing More advanced Abstract Window Toolkit graphics classes Components based on pure Java "Painting on the screen" . Won't always look "native”, . The basis of Swing but works identically on all platforms components – and your own . Replaces AWT components, adds more . Discussed next lecture . We still use many other parts of AWT Components: JTable, JButton, … extending JComponent Containers: JFrame – a top level window; JPanel – a part of a window, grouping some components together Layout Managers: Decide how to place components inside containers Swing: Can replace the look and feel dynamically . Nimbus (current Java standard) . Metal (earlier Java standard) . Windows classic Running example: A very simple word processor Ordinary window in Swing: JFrame . A top-level container: Not contained in anything else ▪ AWT Base class for all Swing components Common implementation details Has two states, on/off Radio buttons: Only one per Standard button active at a time Checkbox, on / off Editing styled text: Abstract base class, HTML, RTF, common functionality custom formats A single line of text Multi-line text area Special formatting for Passwords are not shown dates, currency, … as they are entered .
    [Show full text]
  • Design and Implementation of Post-WIMP Interactive Spaces with the ZOIL Paradigm
    Design and Implementation of Post-WIMP Interactive Spaces with the ZOIL Paradigm Dissertation zur Erlangung des akademischen Grades eines Doktors der Naturwissenschaften (Dr. rer. nat.) vorgelegt von Hans-Christian Jetter an der Universität Konstanz Mathematisch-Naturwissenschaftliche Sektion Fachbereich Informatik und Informationswissenschaft Tag der mündlichen Prüfung: 22. März 2013 1. Referent: Prof. Dr. Harald Reiterer (Universität Konstanz) 2. Referent: Prof. Dr. Andreas Butz (LMU München) Prüfungsvorsitzender: Prof. Dr. Daniel Keim (Universität Konstanz) Konstanz, Dezember 2013 Design and Implementation of Post-WIMP Interactive Spaces with the ZOIL Paradigm Dissertation submitted for the degree of Doctor of Natural Sciences (Dr. rer. nat.) Presented by Hans-Christian Jetter at the University of Konstanz Faculty of Sciences Department of Computer and Information Science Date of the oral examination: March 22nd, 2013 1st Supervisor: Prof. Dr. Harald Reiterer (University of Konstanz) 2nd Supervisor: Prof. Dr. Andreas Butz (University of Munich, LMU) Chief Examiner: Prof. Dr. Daniel Keim (University of Konstanz) Konstanz, December 2013 i Zusammenfassung Post-WIMP (post-“Windows, Icons, Menu, Pointer”) interaktive Räume sind physische Umgebungen oder Räume für die kollaborative Arbeit, die mit Technologien des Ubiquitous Computing angereichert sind. Ihr Zweck ist es, eine computer-unterstützte Kollaboration mehrerer Benutzer zu ermöglichen, die auf einer nahtlosen Benutzung mehrerer Geräte und Bildschirme mittels „natürlicher“ post-WIMP Interaktion basiert. Diese Dissertation beantwortet die Forschungsfrage, wie Gestalter und Entwickler solcher Umgebungen dabei unterstützt werden können, gebrauchstaugliche interaktive Räume für mehrere Benutzer mit mehreren Geräten zu erschaffen, die eine kollaborative Wissensarbeit ermöglichen. Zu diesem Zweck werden zunächst Konzepte wie post-WIMP Interaktion, interaktive Räume und Wissensarbeit definiert. Die Arbeit formuliert dann das neue technologische Paradigma ZOIL (Zoomable Object-Oriented Information Landscape).
    [Show full text]
  • Comparison of Dynamic Web Content Processing Language Performance Under a LAMP Architecture
    Jafar, Anderson, and Abdullat Fri, Nov 7, 4:00 - 4:30, Pueblo C Comparison of Dynamic Web Content Processing Language Performance Under a LAMP Architecture Musa Jafar [email protected] Russell Anderson [email protected] Amjad Abdullat [email protected] CIS Department, West Texas A&M University Canyon, TX 79018 Abstract LAMP is an open source, web-based application solution stack. It is comprised of (1) an oper- ating system platform running Linux, (2) an Apache web server, (3) a MySQL database man- agement system, and (4) a Dynamic Web Content Processor (tightly coupled with Apache) that is a combination of one or more of Perl, Python and PHP scripting languages paired with their corresponding MySQL Database Interface Module. In this paper, we compare various performance measures of Perl, Python and PHP separately without a database interface and in conjunction with their MySQL Database Interface Modules within a LAMP framework. We per- formed our tests under two separate Linux, Apache and Dynamic Web Content environments: an SE Linux environment and a Redhat Enterprise Linux environment. A single MySQL data- base management system that resided on a separate Redhat Linux box served both environ- ments. We used a hardware appliance framework for our test configuration, generation and data gathering. An appliance framework is repeatable and easily configurable. It allows a performance engineer to focus effort on the design, configuration and monitoring of tests, and the analysis of test results. In all cases, whether database connectivity was involved or not, PHP outperformed Perl and Python. We also present the implementation of a mechanism to handle the propagation of database engine status-codes to the web-client, this is important when automatic client-based testing is performed, because the HTTP server is incapable of automatically propagating third-tier applications status-codes to the HTTP client.
    [Show full text]
  • Swingstates: Adding State Machines to Java and the Swing Toolkit Caroline Appert, Michel Beaudouin-Lafon
    SwingStates: Adding state machines to Java and the Swing toolkit Caroline Appert, Michel Beaudouin-Lafon To cite this version: Caroline Appert, Michel Beaudouin-Lafon. SwingStates: Adding state machines to Java and the Swing toolkit. Software: Practice and Experience, Wiley, 2008, 38 (11), pp.1149-1182. 10.1002/spe.867. inria-00538334 HAL Id: inria-00538334 https://hal.inria.fr/inria-00538334 Submitted on 25 Nov 2010 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. SwingStates: Adding state machines to Java and the Swing toolkit C. Appert∗ and M. Beaudouin-Lafon LRI (Universit´eParis-Sud & CNRS), INRIA, bˆat 490, 91405 Orsay, France. SUMMARY This article describes SwingStates, a Java toolkit designed to facilitate the development of graphical user interfaces and bring advanced interaction techniques to the Java platform. SwingStates is based on the use of finite-state machines specified directly in Java to describe the behavior of interactive systems. State machines can be used to redefine the behavior of existing Swing widgets or, in combination with a new canvas widget that features a rich graphical model, to create brand new widgets. SwingStates also supports arbitrary input devices to implement novel interaction techniques based, for example, on bi-manual or pressure-sensitive input.
    [Show full text]