OBJECT-ORIENTED PROGRAMMING, SYSTEMS, LANGUAGES and APPLICATIONS
 
 
Program
 


Program (2mb PDF)

Explore
  Invited Speakers
  Onward!
  Panels
  Workshops
Discover
  Research Papers
  Student Research Comp.
  Posters
  Doctoral Symposium
  Educators' Symposium
  Wiki Symposium
  Dynamic Lang. Symp.
Understand
  Tutorials
  Essays
  Practitioner Reports
  Demonstrations
Create
  DesignFest
  Lightning Talks
  FlashBoF
  Instant Arts School Exp.
 
Other Events
 
Resort Map (364kb PDF)
 
Resort Map (JPG)

 

 
Basket
 

view, help

"Refactoring Support for Class Library Migration"

 

 
Page
 

Printer-friendly

 
 
  > Research Papers > Adaptation Adapted

 : Wednesday

Refactoring Support for Class Library Migration

San Diego Room
Wednesday, 14:30, 30 minutes

 


 
7·8·9·10·11·12·13·14·15·16·17·18·19·20·21

Ittai Balaban, New York University
Frank Tip, IBM T.J. Watson Research Center
Robert Fuhrer, IBM T.J. Watson Research Center

As object-oriented class libraries evolve, classes are occasionally deprecated in favor of others with roughly the same functionality. In Java's standard libraries, for example, class Hashtable has been superseded by HashMap, and Iterator is now preferred over Enumeration.

Migrating client applications to use the new idioms is often desirable, but making the required changes to declarations and allocation sites can be quite labor-intensive. Moreover, migration becomes complicated—and sometimes impossible—if an application interacts with external components, if a deprecated class is not completely equivalent to its replacement, and if multiple interdependent types must be migrated simultaneously.

We present an approach in which mappings between legacy types and their replacements are specified by the programmer. Then, an analysis based on type constraints determines where declarations and allocation sites can be updated. The method was implemented in Eclipse, and evaluated on a number of Java applications. On average, our tool could migrate more than 90% of the references to legacy types in these benchmarks.

 
.