Code libraries are characterized by feature-richness — and, consequently, high overhead. The library specialization problem is the problem of obtaining a low-overhead version of library code when the rich feature set is not needed. A version of that problem is this: Given a class with certain core functionality and some “optional” features, how can we offer the client a menu of features such that the specific class answering this request is unencumbered by fields or computation not needed for the requested features? This paper presents a comparative study of several approaches to this version of the library specialization problem. We evaluate objectoriented programming, feature-oriented programming, colored IDE, aspect-oriented programming, C-style preprocessor directives, and fragment-oriented program generation. We find that all of these techniques have shortcomings. Categories and Subject Descriptors D.2.2 [Software Engineering]: Design Tools and Techniques—Software lib...