Technical Program
This year's Technical Papers track comprises 26 presentations
of the latest, top-rate academic and industrial research results.
(Please note that, in an unusual move, we have arranged for one of the
Technical Papers to be presented as part of the Onward! track because
of a natural affinity with one of the Onward! presentations.)
|
|
Tuesday, 28 October
Wednesday, 29 October
Thursday, 30 October
Free Culture: The limited but essential role of property in building
an environment for creativity
Tuesday, 28 October
8:30-10:00
Larry Lessig,
Stanford University,
lessig@pobox.com
|
 |
This talk will sketch the boundaries of protection that
intellectual property law should set, but argue that extremism has now
defeated these limits. The consequence is an environment within which
modular creativity is increasingly constrained.
Presenter
Lawrence Lessig is a Professor of Law at Stanford Law School and founder
of the school's Center for Internet and Society. He is one of the country's leading commentators on legal
aspects of new communications technologies and cyberspace.
He is Professor of Law and founder and executive director of the Center for Internet and Society at Stanford Law School.
Professor Lessig teaches and writes in the areas of constitutional law, law and high technology, Internet regulation,
comparative
constitutional law, and the law of cyberspace.
He is the author of many influential publications about cyberlaw and cyberspace, including two books:
The Future of Ideas: The Fate of the Commons in a Connected World (2001) and Code and Other Laws of Cyberspace (1999).
Refactoring and Reflection
Tuesday, 28 October
10:30-12:00
|
|
10:30 - 11:00
|
Language-Independent Aspect-Oriented Programming
Donal Lafferty,
Trinity College Dublin,
Donal.Lafferty@cs.tcd.ie Vinny Cahill,
Trinity College Dublin,
Vinny.Cahill@cs.tcd.ie
The term aspect-oriented programming (AOP) has come to describe
the set of programming mechanisms developed specifically to express
crosscutting concerns. Since crosscutting concerns cannot be properly
modularized within object-oriented programming (OOP), they are
expressed as aspects and are composed, or woven, with traditionally
encapsulated functionality referred to as components.
Many AOP models exist, but their implementations are typically
coupled with a single language. To allow weaving of existing
components with aspects written in the language of choice, AOP
requires a language-independent tool.
This paper presents Weave.NET, a load-time weaver that allows
aspects and components to be written in a variety of languages and
freely intermixed. Weave.NET relies on XML to specify aspect
bindings and ECMA Common Language Infrastructure to avoid coupling
aspects or components with a particular language.
By demonstrating language-independence, Weave.NET provides a
migration path to the AOP paradigm by preserving existing developer
knowledge, tools and software components. The tool's capabilities are
demonstrated with logging aspects written with and applied to Visual
Basic and C# components.
|
11:00 - 11:30
|
Refactoring for Generalization Using Type Constraints
Frank Tip,
IBM T.J. Watson Research Center,
tip@watson.ibm.com Adam Kiezun,
IBM Research OTI Labs,
adam_kiezun@ch.ibm.com Dirk Baeumer,
IBM Research OTI Labs,
dirk_baeumer@ch.ibm.com
Refactoring is the process of applying behavior-preserving
transformations (called "refactorings") in order to improve a
program's design. Associated with a refactoring is a set of
preconditions that must be satisfied to guarantee that program
behavior is preserved, and a set of source code modifications. An
important category of refactorings is concerned with generalization
(e.g., "Extract Interface" for re-routing the access to a class via a
newly created interface, and "Pull Up Members" for moving members
into a superclass). For these refactorings, both the preconditions
and the set of allowable source code modifications depend on
interprocedural relationships between types of variables. We present
an approach in which type constraints are used to verify the
preconditions and to determine the allowable source code
modifications for a number of generalization-related refactorings.
This work is implemented in the standard distribution of Eclipse (see
www.eclipse.org).
|
11:30 - 12:00
|
Partial Behavioral Reflection: Spatial and Temporal Selection of Reification
Eric Tanter,
University of Chile, École des Mines de Nantes/INRIA,
Eric.Tanter@emn.fr Jacques Noyé,
École des Mines de Nantes/INRIA,
Jacques.Noye@emn.fr Denis Caromel,
Université de Nice,
Denis.Caromel@inria.fr Pierre Cointe,
École des Mines de Nantes/INRIA,
Pierre.Cointe@emn.fr
Behavioral reflection is a powerful approach for adapting the
behavior of running applications. In this paper we present and
motivate partial behavioral reflection, an approach to more efficient
and flexible behavioral reflection. We expose the spatial and
temporal dimensions of such reflection. In the context of Java, we
present a reflective architecture offering appropriate interfaces for
static and dynamic configuration of partial behavioral reflection at
various levels, as well as an open reflective extension for Java
implementing this architecture. Reflex is the first extension that
fully supports partial behavioral reflection in a portable manner,
and that seamlessly integrates load-time and runtime behavioral
reflection, along with static optimizations. The paper shows
preliminary benchmarks and examples supporting the approach. The
examples, dealing with the observer pattern and asynchronous
communication via transparent futures, also show the interest of
partial behavioral reflection as a tool for open dynamic
aspect-oriented programming.
|
Meeting the Challenge of Software Engineering Education for Working Professionals in the 21st Century
Tuesday, 28 October
10:30-12:00
Steven Fraser (Chair),
Independent Consultant,
sdfraser@acm.org Ray Bareiss,
CMU (West),
bareiss@cs.cmu.edu Barry Boehm,
USC,
boehm@cse.usc.edu Mark Hayes,
Microsoft,
mahayes@microsoft.com Laura Hill,
Sun Microsystems,
laura.hill@sun.com Gabby Silberman,
IBM,
gabbys@us.ibm.com Dave Thomas,
Bedarra Research Labs,
dave@bedarra.com
|
|
Software engineering education for working professionals remains a challenge from the perspective of determining relevant
content; identifying effective methods for delivery; and maintaining the focus and motivation of students. This panel brings
together academic and industry professionals to share their perspectives and experiences. Anticipated points for discussion
include: education/training delivery strategies, curriculum definition, marketing issues, collaboration strategies to engage
industry sponsorship, value assessments for students and sponsoring organizations, and program success stories. This will
be a highly interactive panel and the audience should come prepared to both ask and answer questions.
Naturalistic Programming and Run-Time Code Generation
Tuesday, 28 October
10:30-12:00
|
|
These papers explore simplifying programming by examining some of our underlying assumptions about references and constructing
programs.
Beyond AOP: Toward Naturalistic Programming
Cristina Lopes,
University of California, Irvine,
lopes@ics.uci.edu Paul Dourish,
University of California, Irvine,
jpd@ics.uci.edu David Lorenz,
Northeastern University,
lorenz@ccs.neu.edu Karl Lieberherr,
Northeastern University,
lieber@ccs.neu.edu
Software understanding (for documentation, maintenance or evolution) is one of the longest-standing problems in Computer Science.
The use of bct-oriented languages helps, but fundamentally remains far from solving the problem. Most programming languages
and systems have fallen prey to the assumption that they are supposed to capture idealized models of computation inspired
by deceptively simple metaphors such as objects and mathematical functions. Aspect-oriented programming languages have made
a significant breakthrough by noticing that, in many situations, humans think and describe in crosscutting terms. In this
paper we suggest that the next breakthrough would require looking even closer to the way humans have been thinking and describing
complex systems for thousand of years using natural languages. While natural languages themselves are not appropriate for
programming, they contain a number of elements that make descriptions concise, effective and understandable. In particular,
natural languages referentiality is a key factor in supporting powerful program organizations that can be more easily understood
by humans.
|
Routine Run-time Code Generation
Sam Kamin,
Univ. of Illinois at Urbana-Champaign,
kamin@cs.uiuc.edu
The decades-old paradigm of "object code = executable code: is outdated. The paradigm we
propose in this paper is "object code = executable program generator.: Similarly, "software
component" should be "program that, when appropriately invoked by a client, generates machine
language useful to the client." Traditional object files amount to constant functions in the domain
of code-producing functions; in the future, we will routinely employ the full domain of higher-order
code values. In this paper, we argue that such a change in viewpoint can lead to much
wider use of run-time code generation, by overcoming the bureaucratic barriers it usually
encounters. Run-time code generation has numerous applications; when it comes to be used
routinely, many more applications are likely to be discovered.
|
Grid-supported Communications Applications
Tuesday, 28 October
13:30-15:00
Gerald Labedz,
Motorola Labs,
labedz1@motorola.com
|
 |
This invited talk will describe how emerging distributed computing systems could mutate into the communications systems of
the future. Armed with high speed interconnect, and software elements that assign, track and charge for geographically distributed
computing resources, these systems could just as easily compute and deliver an image to a remote location (for human communications)
as perform an internal streaming file transfer. With this kind of capability not tied to the user's premises, customer equipment
could be very asset light and still deliver very high end services like realtime processed video. Using as an example MIRAGE
II, a data mining system with a geographically distributed, remotely computed Augmented Reality interface, a prototype built
by Motorola in association with NCSA, Labedz will discuss the main hurdles along the way to communications systems dependent
on real-time remote computing and high speed networks.
Speaker
Gerry Labedz has worked at Motorola for 28 years in the areas of mobile and cellular radio hardware and software. He worked
on the first microprocessor controlled radio in the '70s, the first digital cellular system in the '80s, and the world's most
accurate parallel-computed cellular system simulation tool in the '90s. He holds 23 patents in the areas of radio signaling,
system design and visualization, and large-scale real-time simulation for cellular system control. During the 1990s, he and
his group were the largest industrial users of the supercomputer facilities at the National Center for Supercomputing Applications
(NCSA). He holds the title of Dan Noble Fellow, Motorola's highest technical honor. Most recently he has led a project centering
on Hyperfast Computational Communications, or HyperComputiCations
Xtreme Programming and Agile Coaching
Tuesday, 28 October
15:30-17:00
Steven Fraser (Impresario),
Independent Consultant,
sdfraser@acm.org Rachel Reinitz (Chair),
IBM,
rreinitz@us.ibm.com Jutta Eckstein,
Independent Consultant,
jutta@jeckstein.com Joshua Kerievsky,
Industrial Logic,
joshua@industriallogic.com Rob Mee,
Pivotal Computer Systems,
robmee@ieee.org Mary Poppendieck,
Agile Alliance,
mary@poppendieck.com
|
|
This panel brings together coaches to discuss all aspects of the practice: how to become a coach,
choosing a coach, and describing what is to be an (in) effective coach. A coach watches, provides
feedback, and suggests subtle direction. The coach may be more—for example—an architect
or team lead—but that is a matter for debate. This session will be run as a panel with two open
"fish bowl" seats, only one of which may be occupied by audience members at any one time. The
panelists will defend their positions and offer feedback. Panelists were asked to offer their observations
on three questions: How did YOU become a coach? What's the toughest thing you've had to do as a coach?
What's your advice for teams looking for a coach?
Tools
Tuesday, 28 October
15:30-17:00
|
|
15:30 - 16:00
|
Experience in Developing the UrbanSim System:
Tools for Developing Research Software for a Politically Charged Domain
Bjorn Freeman-Benson,
Center for Urban Simulation and Policy Analysis, University of Washington,
bnfb@cs.washington.edu Alan Borning,
Department of Computer Science and Engineering, University of Washington,
borning@cs.washington.edu
UrbanSim is a sophisticated simulation system for modeling urban land use,
transportation, and environmental impacts, over a period of 20 or more
years, under alternate possible scenarios. Our purpose is to support
democratic decision-making on such issues as building new transit systems
or freeways, or changing zoning or economic incentives, as well as on
broader issues such as sustainable, livable cities, economic vitality,
social equity, and environmental preservation. The domain is politically
charged, with different stakeholders bringing strongly held values to the
table. Our goal is not to favor any particular stakeholder values, but
rather to let the stakeholders evaluate the results themselves. This need
for neutrality has several implications for the development process, among
other things resulting in our choice of an open source/open process model.
UrbanSim is also an NSF-funded infrastructure project with a mix of
research and development goals. Unlike most academic projects, this one
has real customers (municipal planning organizations) with real needs.
Thus the UrbanSim project has a number of simultaneous goals, which are in
some tension: producing credible, reliable code; utilizing a flexible
process that adapts to new research discoveries; maintaining coherent
architecture and continuous development progress; and using part-time and
inexperienced student staff in addition to experienced full-time staff.
(This is in contrast to the usual model in XP and other agile development
processes, in which all developers are considered equally experienced and
skilled.)
In this report, we discuss the tools we have chosen, modified, or developed
in-house; and the reasons why these tools are good choices for this mixed
research/product development environment. Our tools include: Eclipse,
MySQL, CVS, Ant, Fireman (a Tinderbox-like automatic build and test
system), JUnit, FIT, Wiki, Bugzilla, a physical traffic light, and a daily
project dashboard. The tools are tightly integrated and collectively
support our agile process.
|
16:00 - 16:30
|
Experiences using an ODBMS for a high-volume internet banking system
Vincent Coetzee,
eBucks.com,
vincent.coetzee@ebucks.com Robert Walker,
GemStone Systems,
bob.walker@gemstone.com
Few large corporate organizations make the decision to use an Object Database Management System (ODBMS) when developing high
volume transactional eCommerce web sites. This report examines the architecture used to power a website that encompasses banking,
online shopping, and the management of a Customer Loyalty Currency called eBucks. This system proves that an ODBMS can be
used in a high volume transactional system with great success. While the choice of this technology has many merits, there
are drawbacks. These drawbacks are examined along with the solutions that have been used at eBucks to either solve or ameliorate
them.
|
Smalltalkiana
Tuesday, 28 October
15:30-16:30
|
|
15:30 - 16:00
|
Applying Traits to the Smalltalk Collection Classes
Andrew P. Black,
OGI School of Science & Engineering, Oregon Health & Science University,
black@cse.ogi.edu Nathanael Schärli,
University of Bern,
schaerli@iam.unibe.ch Stéphane Ducasse,
University of Bern,
ducasse@iam.unibe.ch
Traits are a programming language technology modeled after mixins
but avoiding their problems. This paper reports on a refactoring of
the Smalltalk collections classes using traits. We observed that the
original collection classes contained much duplication of code;
traits let us remove all of it. We also found places where the
protocols of the collections lacked uniformity; traits allow us to
correct these non-uniformities without code duplication. In addition,
traits make possible more general reuse of collection code outside of
the existing hierarchy; for example, they make it easy to convert
other collection-like things into true collections. Our refactoring
reduced the number of methods in the collection classes by
approximately 10 per cent. More importantly, understandability and
reusability of the code was significantly improved.
|
16:00 - 16:30
|
OOPAL: Integrating Array Programming in Object-Oriented Programming
Philippe Mougin,
pmougin@acm.org Stéphane Ducasse,
University Of Bern,
ducasse@iam.unibe.ch
Array programming shines in its ability to express computations at
a high-level of abstraction, allowing one to manipulate and query
whole sets of data at once. This paper presents the OOPAL model that
enhances object-oriented programming with array programming features.
The goal of OOPAL is to determine a minimum set of modifications that
must be made to the traditional object model in order to take
advantage of the possibilities of array programming. It is based on a
minimal extension of method invocation and the definition of a kernel
of methods implementing the fundamental array programming operations.
The model is validated in F-Script, a new scripting language.
|
Seven Paradoxes of Object-Oriented Programming Languages
Wednesday, 29 October
8:30-10:00
David Ungar,
Sun Microsystems
|
 |
Although many of us have worked to create good object-oriented
programming languages, it would be hard to say (with a straight face)
that any of our creations have totally succeeded. Why not? I believe
that this endeavor is essentially paradoxical. Thus, whenever a
language designer pursues a particular goal and loses sight of the
lurking paradox, the outcome is an all too often fatally flawed
result. One way to think about this is to explore the following seven
paradoxes:
- Because programming languages, development environments, and
execution engines are intended for both people and computers, they
must both humanize and dehumanize us.
- Adding a richer set of concepts to a programming language
impoverishes its universe of discourse.
- Putting a language's cognitive center in a more dynamic place
reduces the verbiage needed to accomplish a task, even though less
information can be mechanically deduced about the program.
- The most concrete notions are the most abstract, and pursuing
comfort or correctness with precision leads to fuzziness.
- Although a language, environment, and execution engine are designed
for the users' minds, the experience of use will alter the users'
minds.
- Object-oriented programming has its roots in modeling and reuse,
yet these notions do not coincide and even conflict with each other.
- A language designed to give programmers what they want may
initially succeed but create pernicious problems as it catches
on. However, a language designed to give programmers what they really
need may never catch fire at all.
Many of these assertions seem nonsensical, misguided, or just plain
wrong. Yet, a deeper understanding of these paradoxes can point the
way to better designs for object-oriented programming languages.
Technical Papers and Onward!: Error Repair
Wednesday, 29 October
10:30-12:00
|
|
11:30 - 12:00
|
Automatic Detection and Repair of Errors in Data Structures
Brian Demsky,
MIT Laboratory for Computer Science,
bdemsky@mit.edu Martin Rinard,
MIT Laboratory for Computer Science,
rinard@lcs.mit.edu
We present a system that accepts a specification of key data
structure constraints, then dynamically detects and repairs
violations of these constraints, enabling the program to continue to
execute productively even in the face of otherwise crippling errors.
Our experience using our system indicates that the specifications are
relatively easy to develop once one understands the data structures.
Furthermore, for our set of benchmark applications, our system can
effectively repair errors to deliver consistent data structures that
allow the program to continue to operate successfully within its
designed operating envelope.
|
Generics
Wednesday, 29 October
10:30-12:00
|
|
10:30 - 11:00
|
A First-Class Approach to Genericity
Eric Allen,
Rice University,
eallen@cs.rice.edu Jonathan Bannet,
Rice University,
jbannet@rice.edu Robert Cartwright,
Rice University,
cork@cs.rice.edu
This paper describes how to add first class generic
types—including mixins—to strongly-typed, object-oriented
languages with nominal (name-based) subtyping such as Java and C#. A
generic type system is "first-class" if generic types can appear in
any context where conventional types can appear. In this context, a
mixin is simply a generic class that extends one its type parameters,
e.g., a class C<T> that extends T. Although mixins of this
form are widely used in C++ (via templates), they are clumsy and
error-prone because C++ treats mixins as macros, forcing each mixin
instantiation to be separately compiled and type-checked. The
abstraction embodied in a mixin is never separately analyzed.
Our formulation of mixins using first class genericity
accommodates sound local (class-by-class) type checking, in the same
sense that Java supports local (class-by-class) compilation. A mixin
can be fully type-checked given symbol tables for each of the classes
that it directly references—the same context in which Java performs
incremental class compilation. To our knowledge no previous formal
analysis of first-class genericity in languages with nominal type
systems has been conducted, which is surprising because nominal type
systems have become predominant in mainstream object-oriented
programming languages.
What makes our treatment of first class genericity particularly
interesting and important is the fact that it can be added to the
existing Java language without any change to the underlying Java
Virtual Machine. Moreover, the extension is backward compatible with
legacy Java source and class files. Although our discussion of a
practical implementation strategy focuses on Java, the same scheme
could be applied to other object-oriented languages such as C# or
Eiffel that support incremental compilation, dynamic class loading,
and a static type system with nominal subtyping.
|
11:00 - 11:30
|
A Comparative Study of Language Support for Generic Programming
Ronald Garcia,
Indiana University,
garcia@osl.iu.edu Jaakko Jarvi,
Indiana University,
jajarvi@osl.iu.edu Andrew Lumsdaine,
Indiana University,
lums@osl.iu.edu Jeremy Siek,
Indiana University,
jsiek@osl.iu.edu Jeremiah Willcock,
Indiana University,
jewillco@osl.iu.edu
Many modern programming languages support basic generic
programming, sufficient to implement type-safe polymorphic
containers. Some languages have moved beyond this basic support to a
broader, more powerful interpretation of generic programming, and
their extensions have proven valuable in practice. This paper
reports on a comprehensive comparison of generics in six programming
languages: C++, Standard ML, Haskell, Eiffel, Java (with its proposed
generics extension), and Generic C#. By implementing a substantial
example in each of these languages, we identify eight language
features that support this broader view of generic programming. We
find these features are necessary to avoid awkward designs, poor
maintainability, unnecessary run-time checks, and painfully verbose
code. As languages increasingly support generics, it is important
that language designers understand the features necessary to provide
powerful generics and that their absence causes serious difficulties
for programmers.
|
11:30 - 12:00
|
Lightweight Confinement for Featherweight Java
Tian Zhao,
University of Wisconsin, Milwaukee,
tzhao@cs.uwm.edu Jens Palsberg,
Purdue University,
palsberg@cs.purdue.edu Jan Vitek,
Purdue University,
jv@cs.purdue.edu
Confinement properties impose a structure on object graphs which
can be used to enforce encapsulation— which is essential to certain
program optimizations, to modular reasoning, and in many cases to
software assurance. This paper formalizes the notion of confined type
in the context of Featherweight Java. A static type system that
mirrors the informal rules of Vitek and Bokopwski is proposed and
proven sound. The definition of confined types is extended to
confined instantiation of generic classes. Thus allowing for confined
collection types in Java and for classes that can be confined post
hoc. Confinement types rules are given for Generic Featherweight
Java, and proven sound.
|
Discipline and Practices of TDD (Test Driven Development)
Wednesday, 29 October
10:30-12:00
Steven Fraser (Chair),
Independent Consultant,
sdfraser@acm.org Dave Astels,
Adaption Software,
dave@adaptionsoft.com Kent Beck,
Three Rivers Institute,
kent@threeriversinstitute.org Barry Boehm,
USC,
boehm@cse.usc.edu John McGregor,
Clemson University,
johnmc@cs.clemson.edu James Newkirk,
Microsoft,
jamesnew@microsoft.com Charlie Poole,
Poole Consulting,
poole@pooleconsulting.com
|
|
This panel brings together practitioners with experience in Agile and XP methodologies to discuss
the approaches and benefits of applying Test Driven Development (TDD). The goal of TDD is clean
code that works. The mantra of TDD is: write a test; make it run; and make it right. Open questions
to be addressed by the panel include:
- How are TDD approaches to be applied to databases, GUIs, and distributed systems?
- What are the quantitative benchmarks that can demonstrate the value of TDD, and
- What are the best approaches to solve the ubiquitous issue of scalability?
Acceptability-Oriented Computing
Wednesday, 29 October
10:30-12:00
|
|
These papers talk about a new approach to constructing software systems in which the designer identifies key properties that
the execution must satisfy to be acceptable to its users. The resulting system consists of layers of components enforcing
the acceptability properties.
Acceptability-Oriented Computing
Martin Rinard,
MIT,
rinard@lcs.mit.edu
We propose a new approach to the construction of software systems.
Instead of attempting to build a system that is as free
of errors as possible, we instead propose that the designer
identify key properties that the execution must satisfy to
be acceptable to its users. The developer then augments the
system with a layered set of components, each of
which enforces one of the acceptability properties.
The potential advantages of this approach include more flexible,
resilient systems that recover from errors and
behave acceptably across a wide
range of operating environments, an appropriately
prioritized investment of engineering resources, and
reduced development costs because of the ability to
productively incorporate unreliable components into the
final software system and to use
less skilled implementors in the development process.
|
Automatic Detection and Repair of Errors in Data Structures
Brian Demsky,
MIT,
demsky@lcs.mit.edu Martin Rinard,
MIT,
rinard@lcs.mit.edu
We present a system that accepts a specification of key data
structure constraints, then dynamically detects and repairs
violations of these constraints, enabling the program to continue
to execute productively even in the face of otherwise
crippling errors. Our experience using our system indicates
that the specifications are relatively easy to develop once
one understands the data structures. Furthermore, for our
set of benchmark applications, our system can effectively repair
errors to deliver consistent data structures that allow
the program to continue to operate successfully within its
designed operating envelope.
|
Vision
Wednesday, 29 October
10:30-12:00
Chair: Krzysztof Czarnecki,
University of Waterloo,
ddd@oopsla.acm.org
|
|
10:30 - 11:00
|
Model Driven Development - The Case for Domain Oriented Programming
Dave Thomas,
Bedarra Research Labs,
dave@bedarra.com Brian Barry,
Bedarra Research Labs,
brian@bedarra.com
In this paper, we offer an alternative vision for domain driven development (3D). Our approach is model driven and emphasizes
the use of generic and specific domain oriented programming (DOP) languages. DOP uses strong specific languages, which directly
incorporate domain abstractions, to allow knowledgeable end users to succinctly express their needs in the form of an application
computation.
Most domain driven development (3D) approaches and techniques are targeted at professional software engineers and computer
scientists. We argue that DOP offers a promising alternative. Specifically we are focused on empowering application developers
who have extensive domain knowledge as well as sound foundations in their professions, but may not be formally trained in
computer science.
We provide a brief survey of DOP experiences, which show that many of the best practices such as patterns, refactoring, and
pair programming are naturally and ideally practiced in a MDD setting. We compare and contrast DOP with other popular approaches,
most of which are deeply rooted in the OO community.
Finally we highlight challenges and opportunities in the design and implementation of such languages.
|
11:00 - 11:30
|
An End to End Domain Driven Developement Framework
Aditya Agrawal,
ISIS, Vanderbilt University,
aditya.agrawal@vanderbilt.edu Gabor Karsai,
ISIS, Vanderbilt University,
gabor@vuse.vanderbilt.edu Akos Ledeczi,
ISIS, Vanderbilt University,
akos@isis.vanderbilt.edu
This paper presents a comprehensive, domain-driven framework for development. It consists of a meta-programmable domain-specific
modeling environment, and a model transformation and generation toolset based on graph transformations. The framework allows
the creation of custom, domain-oriented programming environments that support end-user programmability. In addition, the framework
could be considered an early, end-to-end implementation of the concepts advocated by the Model-Driven Architecture of OMG.
|
11:30 - 12:00
|
Software Factories: Assembling Applications With Patterns, Models, Frameworks and Tools
Jack J. Greenfield,
Microsoft, Visual Studio, Enterprise Frameworks And Tools,
jackgr@microsoft.com Keith W. Short,
Microsoft, Visual Studio, Enterprise Frameworks And Tools,
keithsh@microsoft.com
The confluence of component based development, model driven development and software product lines forms an approach to application
development based on the concept of software factories. This approach promises greater gains in productivity and predictability
than those produced by the incremental advances of recent memory, which have not kept pace with rapid innovation in platform
technology. Focusing on development by assembly using domain specific languages, patterns, models, frameworks and tools, software
factories make systematic reuse cost effective for many applications, enabling the formation of supply chains and opening
the door to mass customization.
|
Java Performance
Wednesday, 29 October
13:30-15:00
|
|
13:30 - 14:00
|
Dynamic Metrics for Java
Bruno Dufour,
McGill University,
bdufou1@cs.mcgill.ca Karel Driesen,
McGill University,
karel@cs.mcgill.ca Laurie Hendren,
McGill University,
hendren@cs.mcgill.ca Clark Verbrugge,
McGill University,
clump@cs.mcgill.ca
In order to perform meaningful experiments in optimizing
compilation and run-time system design, researchers usually rely on a
suite of benchmark programs of interest to the optimization technique
under consideration. Programs are described as numeric,
memory-intensive, concurrent, or object-oriented, based on a
qualitative appraisal, in some cases with little justification. We
believe it is beneficial to quantify the behavior of programs with a
concise and precisely defined set of metrics, in order to make these
intuitive notions of program behavior more concrete and subject to
experimental validation. We therefore define a set of unambiguous,
dynamic, robust and architecture-independent metrics that can be used
to categorize programs according to their dynamic behavior in five
areas: size, data structure, memory use, concurrency, and
polymorphism. A framework computing some of these metrics for Java
programs is presented along with specific results.
|
14:00 - 14:30
|
How Java Programs Interact with Virtual Machines at the Microarchitectural Level
Lieven Eeckhout,
Ghent University,
leeckhou@elis.rug.ac.be Andy Georges,
Ghent University,
ageorges@elis.rug.ac.be Koen De Bosschere,
Ghent University,
kdb@elis.rug.ac.be
Java workloads are becoming increasingly prominent on various
platforms ranging from embedded systems, over general-purpose
computers to high-end servers. Understanding the implications of all
the aspects involved when running Java workloads, is thus extremely
important during the design of a system that will run such workloads,
to meet its design goals. In other words, understanding the
interaction between the Java application, its input and the virtual
machine it runs on, is key to a successful design. The goal of this
paper is to study this complex interaction at the microarchitectural
level, e.g., by analyzing the branch behavior, the cache behavior,
etc. This is done by measuring a large number of performance
characteristics using performance counters on an AMD K7 Duron
microprocessor. These performance characteristics are measured for
seven virtual machine configurations, and a collection of Java
benchmarks with corresponding inputs coming from the SPECjvm98
benchmark suite, the SPECjbb2000 benchmark suite, the Java Grande
Forum benchmark suite and an open-source raytracer, called Raja with
19 scene descriptions. This large amount of data is further analyzed
using statistical data analysis techniques, namely principal
components analysis and cluster analysis. These techniques provide
useful insights in an understandable way.
From our experiments, we conclude that (i) the behavior observed
at the microarchitectural level is primarily determined by the
virtual machine for small input sets, e.g., the SPECjvm98 s1 input
set; (ii) the behavior can be quite different for various input sets,
e.g., short-running versus long-running benchmarks; (iii) for
long-running benchmarks with few hot spots, the behavior can be
primarily determined by the Java program and not the virtual machine,
i.e., all the virtual machines optimize the hot spots to similarly
behaving native code; (iv) in general, the behavior of a Java
application running on one virtual machine can be significantly
different from running on another virtual machine. These conclusions
warn researchers working on Java workloads to be careful when using a
limited number of Java benchmarks or virtual machines since this
might lead to biased conclusions.
|
14:30 - 15:00
|
Effectiveness of Cross-Platform Optimizations for a Java Just-In-Time Compiler
Kazuaki Ishizaki,
IBM Research, Tokyo Research Laboratory,
ishizaki@trl.ibm.com Mikio Takeuchi,
IBM Research, Tokyo Research Laboratory,
mtake@jp.ibm.com Kiyokuni Kawachiya,
IBM Research, Tokyo Research Laboratory,
kawatiya@jp.ibm.com Toshio Suganuma,
IBM Research, Tokyo Research Laboratory,
suganuma@jp.ibm.com Osamu Gohda,
IBM Research, Tokyo Research Laboratory,
gohda@jp.ibm.com Tatsushi Inagaki,
IBM Research, Tokyo Research Laboratory,
E29253@jp.ibm.com Akira Koseki,
IBM Research, Tokyo Research Laboratory,
akoseki@jp.ibm.com Kazunori Ogata,
IBM Research, Tokyo Research Laboratory,
ogatak@jp.ibm.com Motohiro Kawahito,
IBM Research, Tokyo Research Laboratory,
jl25131@jp.ibm.com Toshiaki Yasue,
IBM Research, Tokyo Research Laboratory,
yasue@jp.ibm.com Takeshi Ogasawara,
IBM Research, Tokyo Research Laboratory,
takeshi@jp.ibm.com Tamiya Onodera,
IBM Research, Tokyo Research Laboratory,
tonodera@jp.ibm.com Hideaki Komatsu,
IBM Research, Tokyo Research Laboratory,
komatsu@jp.ibm.com Toshio Nakatani,
IBM Research, Tokyo Research Laboratory,
nakatani@jp.ibm.com
We describe the system overview of our Java JIT compiler, which
has been the basis for the latest production version of IBM Java
virtual machine that supports a diversity of processor architectures
including both 32-bit and 64-bit modes, CISC, RISC, and VLIW
architectures. In particular, we focus on the design and evaluation
of the cross-platform optimizations that are common across different
architectures. We study the effectiveness of each optimization by
selectively disabling it in our JIT compiler on three different
platforms: IA32, IA64, and PowerPC. Based on the detailed statistics,
we classify our optimizations and identify a small set of the most
cost-effective ones in terms of the performance improvement as the
benefit and the compilation time as the cost. In summary, we
demonstrate that, with a selected set of optimizations, we can
achieve 90% of the peak performance for SPECjvm98 at the expense of
only 33% of the total compilation time in comparison to the case in
which all the optimizations are enabled.
|
Innovate!
Wednesday, 29 October
13:30-15:00
Laura Hill (Chair),
Sun Microsystems, Inc.,
laura.hill@sun.com Rachel Davies,
Amarinda,
rachel@amarinda.com Dick Gabriel,
Sun Microsystems, Inc.,
rpg@dreamsongs.com Harlan Sexton,
Oracle Corp,
hsexton@oracle.com Kevin Tyson,
Independent Consultant,
kptyson@earthlink.net David West,
New Mexico Highlands University and University of New Mexico,
dwest@cs.nmhu.edu
|
|
Freedom to innovate is one of the key motivators for many technical workers. Unfortunately, although
innovation is often trumpeted as a key company attribute, it seems that many organizations struggle
to provide the necessary environment—even those organizations whose original claim to fame lay
in their ability to innovate. This panel will look at the barriers to innovation that occur in a variety
of environments: large, well-established organizations, start-ups, academia, standards bodies and the
open source community. Panelists will propose a set of technical and non-technical techniques that can
be used to foster innovation in even the most lethargic or hostile environment.
Old Code
Wednesday, 29 October
13:30-15:00
|
|
13:30 - 14:00
|
Using AspectJ for Component Integration in Middleware
Adrian Colyer,
IBM UK,
adrian_colyer@uk.ibm.com Ron Bodkin,
New Aspects of Security,
rbodkin@newaspects.com Jim Hugunin,
PARC,
Jim.Hugunin@parc.com Andrew Clement,
IBM UK,
andrew_clement@uk.ibm.com
This report discusses experiences applying and enhancing AspectJ for a middleware product line at IBM. The purpose of this
effort was to apply Aspect Oriented Programming to cleanly separate components from their execution platforms, while still
allowing them to take advantage of platform-specific facilities for aspects such as error handling, performance monitoring,
and logging. It presents the evolution of the design, implementation, tools support, and approaches used to achieve organizational
buy in.
Keywords: AspectJ, aspect oriented programming, middleware
|
14:00 - 14:30
|
Five years of framework building: lessons learned
Kurt Madsen,
MetaTech, Inc.,
madsen@tampabay.rr.com
When developing large software systems, it is often difficult to foresee
exactly which trade-offs are important, and which quality parameters
will be of importance down the road. This paper reports experiences
from a project in which a large application framework for B2B
integration has been continuously developed and used over a five year
period. The framework has been the foundation for a variety of
different concrete applications; here we will report on our experiences
from this endeavor.
|
14:30 - 15:00
|
Agile Regression Testing Using Record & Playback
Gerard Meszaros,
ClearStream Consulting,
gerard.meszaros@acm.org Ralph Bohnet,
ClearStream Consulting,
ralph@clrstream.com Jennitta Andrea,
ClearStream Consulting,
jennitta@clrstream.com
There are times when it is not practical to hand-script automated tests for an existing system before one starts to modify
it (whether to refactor it to permit automated testing or to add new functionality). In these circumstances, the use of record
& playback testing may be a viable alternative to hand-writing all the tests. This paper describes experiences using this
approach and summarizes key learnings applicable to other projects.
|
Technology
Wednesday, 29 October
13:30-15:00
Chair: John Vlissides,
IBM T. J. Watson Research Center,
ddd@oopsla.acm.org
|
|
13:30 - 14:00
|
XAspects: An Extensible System for Domain-Specific Aspect Languages
Macneil Shonle,
Northeastern University,
mshonle@ccs.neu.edu Karl Lieberherr,
Northeastern University,
lieber@ccs.neu.edu Ankit Shah,
Northeastern University,
ankit@ccs.neu.edu
Current general aspect-oriented programming solutions fall short of
helping the problem of separation of concerns for several concern
domains. Because of this limitation good solutions for these concern
domains do not get used and the opportunity to benefit from
separation of these concerns is missed. By using XAspects, a plug-in
mechanism for domain-specific aspect languages, separation of
concerns can be achieved at a level beyond what is possible for
object-oriented programming languages. As a result, XAspects allows
for certain domain-specific solutions to be used as easily as a new
language feature.
Keywords: Aspect-oriented programming, — programming,
language extensions, domain-specific languages.
|
14:00 - 14:30
|
The Power of Symmetry: Unifying Inheritance and Generative Programming
DeLesley Hutchins,
MZA Associates Corporation,
hutchins@mza.com
I present the Ohmu language, a unified object model which allows a number of "advanced" techniques such as aspects, mixin
layers, parametric polymorphism, and generative components to be implemented cleanly using two basic concepts: block structure
and inheritance. I argue that conventional ways of defining classes and objects have created artificial distinctions which
limit their expressiveness. The Ohmu model unifies functions, classes, instances, templates, and even aspects into a single
construct the structure. Function calls, instantiation, aspect-weaving, and inheritance are likewise unified into a single
operation the structure transformation. This simplification eliminates the distinction between classes and instances, and
between compile-time and run-time code. Instead of being compiled, programs are reduced using partial evaluation, in which
the interpreter is invoked at compile-time. Within this architecture, standard OO inheritance becomes a natural vehicle for
creating meta-programs and automatic code generators— the key to a number of recent domain-driven programming methodologies.
|
14:30 - 15:00
|
Domain Driven Web Development With WebJinn
Sergei Kojarski,
Northeastern University,
kojarski@ccs.neu.edu David Lorenz,
Northeastern University,
lorenz@ccs.neu.edu
Web application development cuts across the HTTP protocol, the
client-side presentation language (HTML, XML), the server-side
technology (Servlets, JSP, ASP, PHP), and the underlying
resource (files, database, information system). Consequently,
web development concerns including functionality, presentation,
control, and structure cross-cut, leading to tangled and
scattered code that is hard to develop, maintain, and reuse.
In this paper we analyze the cause, consequence, and remedy for
this crosscutting. We distinguish between intra-crosscutting
that results in code tangling and inter-crosscutting that
results in code scattering. To resolve inter-crosscutting,
we present a new web application development model named
XP that introduces extension points as place-holders for
structure-dependent code. We present another model named
DDD that incorporates XP into the Model-View-Controller
(MVC) model to resolve both intra- and inter-crosscutting.
WebJinn is a novel domain-driven web development framework
that implements the DDD model. WebJinn has been used to
develop web applications at several web sites. Domain driven
web development with WebJinn benefits from a significant
improvement in code reuse, adaptability, and maintainability.
|
Language Design
Wednesday, 29 October
15:30-17:00
|
|
15:30 - 16:00
|
HydroJ: Object-Oriented Pattern Matching for Evolvable Distributed Systems
Keunwoo Lee,
University of Washington,
klee@cs.washington.edu Anthony LaMarca,
Intel Research Seattle,
lamarca@intel-research.net Craig Chambers,
University of Washington,
chambers@cs.washington.edu
In an evolving software system, components must be able to change
independently while remaining compatible with their peers. One
obstacle to independent evolution is the brittle parameter problem}:
the ability of two components to communicate can depend on a number
of inessential details of the types, structure, and/or contents of
the values communicated. If these details change, then the
components can no longer communicate, even if the essential parts of
the message remain unaffected.
We present HydroJ, an extension of Java that addresses this
problem. In HydroJ, components communicate using self-describing,
semi-structured messages, and programmers use pattern matching to
define the handling of messages. This design stems from two central
ideas: first, that self-describing messages reduce dependence on
inessential message format details; and second, that object-oriented
pattern matching naturally focuses on the essential information in a
message and is insensitive to inessential information.
We have developed these ideas in the context of Rain, a
distributed, heterogeneous messaging system for ubiquitous computing.
To evaluate the design, we have constructed a prototype HydroJ
compiler, implemented some Rain services in HydroJ, and formalized
HydroJ's key features in a core language.
|
16:00 - 16:30
|
Relaxed MultiJava: Balancing Extensibility and Modular Typechecking
Todd Millstein,
University of Washington,
todd@cs.washington.edu Mark Reay,
University of Washington,
mreay@cs.washington.edu Craig Chambers,
University of Washington,
chambers@cs.washington.edu
We present the rationale, design, and implementation of Relaxed
MultiJava (RMJ), a backward-compatible extension of Java that allows
programmers to add new methods to existing classes and to write
multimethods. Previous languages supporting these forms of
extensibility either restrict their usage to a limited set of
programming idioms that can be modularly typechecked (and modularly
compiled) or simply forego modular typechecking altogether. In
contrast, RMJ supports the new language features in a virtually
unrestricted form while still providing modular static typechecking
and compilation. In some cases, the RMJ compiler will warn that the
potential for a type error exists, but it will still complete
compilation. In that case, a custom class loader transparently
performs load-time checking to verify that the potential error is
never realized. RMJ's compiler and custom loader cooperate to keep
load-time checking costs low. We report on our qualitative and
quantitative experience with our implementation of RMJ.
|
16:30 - 17:00
|
ModJava: A Rational Module System for Java and Its Applications
John Corwin,
IBM,
jcorwin@us.ibm.com David Bacon,
IBM,
bacon@us.ibm.com David Grove,
IBM,
groved@us.ibm.com Chet Murthy,
IBM,
chet@watson.ibm.com
While Java provides many software engineering benefits, it lacks a
coherent module system and instead provides only packages (which are
primarily a name space mechanism) and classloaders (which are very
low-level). As a result, large Java applications suffer from
unexpected interactions between independent components, require
complex CLASSPATH definitions, and are often extremely complex to
install and maintain.
We have implemented a module system for Java that is implemented
with class loaders but provides a much higher-level interface.
High-level properties can be specified in a module definition and are
enforced by the module system as new modules are loaded.
To experimentally validate the ability of ModJava to properly
handle the complex module inter-relationships found in large Java
server systems, we replaced the classloader mechanisms of Apache
Tomcat 4.1.18 with 30 ModJava modules. The modified Tomcat is
functionally identical to the original, but requires no CLASSPATH
definitions, and will operate correctly even if user code loads a
different version of a module used by Tomcat, such as the Xerces XML
parser. Furthermore, by making a small change to the Java core
libraries enabled by ModJava, we obtained a 30% performance
improvement in a servlet microbenchmark.
|
Model Driven Architecture: How far have we come, how far can we go?
Wednesday, 29 October
15:30-17:00
Granville Miller (Chair),
Borland,
Randy.Miller@borland.com Andy Evans,
Xactium Limited,
andy.evans@xactium.com Ivar Jacobson,
JacZone,
ivar@jaczone.com Henrik Jondel,
Borland,
henrik.jondel@borland.com Allan Kennedy,
Kennedy Carter,
allan.kennedy@kc.com Stephen Mellor,
Project Technology,
steve@executableumlbook.com Dave Thomas,
Bedarra Research Labs,
dave@bedarra.com
|
|
Model Driven Architecture (MDA) is a technology that has been in the process of evolution for many years. Today, many vendors
are now producing products that support MDA. We are hearing more and more success stories that indicate that this technology
is the "real deal". But, with the failed promises of CASE in the late 1980's, many people still have questions about how much
of an application can be generated from models and constraint languages. Is MDA really capable of generating enterprise applications?
What are the technologies are available to implement MDA?
Here is your opportunity to ask the experts the questions that are necessary to convince you of the validity of this new technology.
Each of these panelists has been intricately involved in building the underlying foundations of Model Driven Architecture
and its implementation.
Real-World Objects
Wednesday, 29 October
15:30-17:00
|
|
15:30 - 16:00
|
Programming with Non-Heap Memory in RTSJ
Greg Bollella,
Sun Microsystems Laboratories Tim Canham,
Jet Propulsion Laboratory, California Institute of Technology Vanessa Carson,
Jet Propulsion Laboratory, California Institute of Technology Virgil Champlin,
Jet Propulsion Laboratory, California Institute of Technology Daniel Dvorak,
Jet Propulsion Laboratory, California Institute of Technology Brian Giovannoni,
School of Computer Science, Carnegie Mellon University Kenny Meyer,
Jet Propulsion Laboratory, California Institute of Technology Alex Murray,
Jet Propulsion Laboratory, California Institute of Technology Kirk Reinholtz,
Jet Propulsion Laboratory, California Institute of Technology
The Real-Time Specification for Java (RTSJ) provides facilities for deterministic, real-time execution in a language that
is otherwise subject to variable latencies in memory allocation and garbage collection. In particular, RTSJ introduces two
kinds of non-heap memory area (ScopedMemory and ImmortalMemory) and a kind of real-time thread (NoHeapRealtimeThread) that,
together, can satisfy very demanding timeliness requirements because they run without interference from the garbage collector.
What new RTSJ programmers quickly discover, though, is that the RTSJ "assignment rules"—governing references from one kind
of memory to another—force designers to think more carefully about how data flows among the components of a system. In particular,
for the hard real-time portions of a system, the normal Java practice of freely passing around references and letting the
garbage collector recognize when an object is no longer needed simply doesn't apply.
This report discusses two related design issues that all RTSJ users will face: how to explicitly manage non-heap memory and
how to communicate information among components without violating RTSJs assignment rules. These issues are addressed from
a practitioners viewpoint in the context of designing real-time control loops for driving and steering a 6-wheel Mars rover.
The solution described here is termed scoped memory scratchpads and is believed to provide a good combination of Java-natural
style and safety from programmer error. In this approach, transient data is allocated within a scoped memory area that is
emptied later when all Runnables exeunt the memory area. Data that must be preserved across cyclic executions use memory pools,
restricted so that all pool management is confined to a single component and is thus much easier to design and verify. Importantly,
by maintaining a distinction between application-specific software and framework software, some of the details and discipline
of using RTSJ can be hidden from application programmers.
|
16:00 - 16:30
|
The Parks PDA: A Handheld Device for Theme Park Guests in Squeak
Yoshiki Ohshima,
Twin Sun, Inc.,
Yoshiki.Ohshima@acm.org John Maloney,
MIT Media Lab,
JohnMaloney@earthlink.net Andy Ogden,
Strategy, Design, and Development Consulting,
aogden@earthlink.net
The Parks PDA is a lightweight, handheld device for theme
park guests that functions as a combination guidebook, map,
and digital camera. Together with a small team of artists
and designers, we created a prototype Parks PDA and content
for a three hour guest experience, including a camera
interface, a hyper-linked guide book, three games, an animal
spotters guide, a cross-referenced map, animated movies
with lip-synched sound, a ride reservation system, and more.
Over 800 visitors to Disney's Animal Kingdom theme park
tested the Parks PDA over a two week period.
Developing the software for this test posed a number of challenges.
The processor and memory of the target device were
slow, the screen was small, and we had only three months
of development time.
We attacked these problems using Squeak, a highly-portable,
open source Smalltalk implementation. We ported Squeak
to the target device and used it to provide nearly bit-identical
behavior across four different platforms. This supported a
cross-platform development style that streamlined the production
of both software and content. We created a tiny
user interface and application framework for pen-based devices
and implemented a simple card-stack media editor and
player using it. We isolated and fixed several performance
problems.
The project was completed on time and guest response was
favorable. Looking back, we can identify ten aspects of
Squeak that contributed to the success of the project. While
we feel that Squeak was the ideal tool for this job, many
of the key benefits of Squeak could be enjoyed using other
object-oriented languages such as Java J2ME or Python,
especially if the source code of the virtual machine is available.
|
The Biology of Information
Wednesday, 29 October
15:30-17:00
Walter Fontana,
Santa Fe Institute,
walter@santafe.edu
|
|
Walter Fontana is a research professor in residence at the Santa Fe
Institute, has served as a Member of the Institute for Advanced Study in
Princeton, NJ, with the Program in Theoretical Biology, and was a member of
the University of Vienna faculty at the Institute for Theoretical
Chemistry and Molecular Structural Biology.
OOPSLA Keynote - The Internet Paradigm Shift
Thursday, 30 October
8:30-10:00
Tim O'Reilly,
O'Reilly and Associates,
tim@oreilly.com
|
 |
The computer industry has gone through a sea change in the past few years. The killer applications of the web era turned out
not to be PC-based software packages like the web browser, but web hosted applications like google, mapquest and amazon.com.
These applications are built on top of Linux and Apache, yet they are themselves fiercely proprietary. But what would most
developers do with their source code? These massive systems are valuable for their data as much as for their programs. And
by opening up XML web services APIs to that data, the most innovative of these sites are creating new opportunities for hackers
to re-use that data and "scratch their own itch." What's more, as constantly updated services, these applications operate
on very different timelines and processes than conventional software development. One of the greatest challenges for developers
in the next few years is to understand and adapt to the paradigm shift implicit in network computing, and to shed the legacy
thinking of the desktop era.
Speaker
Tim O'Reilly is founder and president of O'Reilly & Associates, thought by many to be
the best computer book publisher in the world. In addition to publishing pioneering books
like Ed Krol's The Whole Internet User's Guide & Catalog (selected by the New York
Public Library as one of the most significant books of the twentieth century), O'Reilly has
also been a pioneer in the popularization of the Internet. O'Reilly's Global Network
Navigator site (GNN, which was sold to America Online in September 1995) was the
first Web portal and the first true commercial site on the World Wide Web.
Tim has been an activist for internet standards and for Open Source software. He has led
successful public relations campaigns on behalf of key internet technologies, helping to
block Microsoft's 1996 limits on TCP/IP in NT Workstation, organizing the "summit" of
key free software leaders where the term "Open Source" was first widely agreed upon,
and, most recently, organizing a series of protests against frivolous software patents. Tim
received Infoworld's Industry Achievement Award in 1998 for his advocacy on behalf of
the Open Source community.
Garbage Collection 1
Thursday, 30 October
8:30-10:00
|
|
8:30 - 9:00
|
Mostly Concurrent Garbage Collection Revisited
Katherine Barabash,
IBM Haifa Research Laboratory,
kathy@il.ibm.com Yoav Ossia,
IBM Haifa Research Laboratory,
yossia@il.ibm.com Erez Petrank,
Technion - Israel Institute of Technology,
erez@cs.technion.ac.il
The mostly concurrent garbage collection was presented in the
seminal paper of Boehm et al. With the deployment of Java as a
portable, secure and concurrent programming language, the mostly
concurrent garbage collector turned out to be an excellent solution
for Java's garbage collection task. The use of this collector is
reported for several modern production Java Virtual Machines, and it
has been investigated further in academia.
In this paper, we present a modification of the mostly concurrent
collector which improves the throughput, the memory footprint, and the
cache behavior of the collector without foiling the other good
qualities (such as short pauses and high scalability). We implemented
our solution on the IBM production JVM and obtained a performance
improvement of up to 22.8%, a reduction in the heap consumption by up
to 13.6%, and no substantial change in the (short) pause times. The
modified algorithm has subsequently been incorporated into the IBM
production JVM.
|
9:00 - 9:30
|
An On-the-Fly Mark and Sweep Garbage Collector Based on Sliding Views
Hezi Azatchi,
Technion - Israel Institute of Technology,
hezia@cs.technion.ac.il Yossi Levanoni,
Technion - Israel Institute of Technology,
ylevanon@microsoft.com Harel Paz,
Technion - Israel Institute of Technology,
pharel@cs.technion.ac.il Erez Petrank,
Technion - Israel Institute of Technology,
erez@cs.technion.ac.il
With concurrent and garbage collected languages like Java and C#
becoming popular, the need for a suitable non-intrusive, efficient,
and concurrent multiprocessor garbage collector has become acute. We
propose a novel mark and sweep on-the-fly algorithm based on the
sliding views mechanism of Levanoni and Petrank. We have implemented
our collector on the Jikes Java Virtual Machine running on a
Netfinity multiprocessor and compared it to the concurrent algorithm
and to the stop-the-world collector supplied with Jikes JVM. The
maximum pause time that we measured with our benchmarks over all runs
was 2ms. In all runs, the pause times were smaller than those of the
stop-the-world collector by two orders of magnitude and they were
also always shorter than the pauses of the Jikes concurrent
collector. Throughput measurements of the new garbage collector show
that it outperforms the Jikes concurrent collector by up to 60%. As
expected, the stop-the-world does better than the on-the-fly
collectors with results showing about 10% difference.
On top
of being an effective mark and sweep on-the-fly collector standing on
its own, our collector may also be used as a backup collector
(collecting cyclic data structures) for the Levanoni-Petrank
reference count | |