Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/508386.508395acmotherconferencesArticle/Chapter ViewAbstractPublication PagesmodularityConference Proceedingsconference-collections
Article

Using mixins to build flexible widgets

Published: 22 April 2002 Publication History

Abstract

When it comes to software that runs on devices as varied as cell phones, PDAs and desktops, one size does not fit all. This paper describes how mixin layers, a kind of nested generic type, can be used to implement a graphical user interface library that can be configured to run on platforms with widely dissimilar capabilities. We describe the language support needed to incrementally build software in layers, and we describe how crosscutting concerns can be encapsulated within a layer. We then show how layers can be reconfigured to meet changing requirements. We also show how a new design pattern, the Sibling pattern, can be used with mixin layers to coordinate changes to multiple classes in the same inheritance hierarchy. When used appropriately, the Sibling pattern increases our ability to separate design concerns and to reuse code.

References

[1]
Agesen, O., Freund, S., and Mitchell. Adding Type Parameterization to the Java Language. OOPSLA 1997.
[2]
Arnold, K., Gosling, J., and Holmes, D. The Java Programming Language, 3rd ed. Addison-Wesley, 2000.
[3]
Batory, D., Cardone, R. and Smaragdakis, Y. Object-Oriented Frameworks and Product-Lines. First Software Product-Line Conference, August 2000.
[4]
Batory, D., Lofaso, B. and Smaragdakis, Y. JTS: Tools for Implementing Domain-Specific Languages. ICSE, June 1998.
[5]
Batory, D. and O'Malley, S. The Design and Implementation of Hierarchical Software Systems with Reusable Components. ACM Transactions on Software Engineering and Methodology, October 1992.
[6]
Batory, D., Singhal, V., Sirkin, M. and Thomas, J. Scalable Software Libraries. Proceedings of the First ACM Symposium on the Foundations of Software Engineering, December, 1993.
[7]
Bergmans, L. The Composition Filters Object Model. The TRESE Group, CS Dept., University of Twente, 1994.
[8]
Bracha, G., and Cook, W. Mixin-Based Inheritance. OOPSLA-ECOOP 1990.
[9]
Bracha G., Odersky, M., Stoutamire, D. and Wadler, P. Making the future safe for the past: Adding Genericity to the Java Programming Language. OOPSLA 1998.
[10]
Brown, A., Cardone, R., McDirmid, S. and Lin, C. The Specification of the Sibling Design Pattern. Technical Report CS-TR-02-11, CS Dept., University of Texas at Austin, 2002.
[11]
Bruce, K., Odersky, M. and Wadler, P. A statically safe alternative to virtual types. ECOOP 1998.
[12]
Cardelli, L. and Wegner, P. On Understanding Types, Data Abstraction and Polymorphism. ACM Computing Surveys 17, 4, December 1985.
[13]
Cardone, R. and Lin, C. Comparing Frameworks and Layered Refinement. ICSE 2001.
[14]
Cardone, R. and Lin, C. Static Virtual Types in Java Layers. Technical Report CS-TR-00-25, CS Dept., University of Texas at Austin, 2000.
[15]
Cardone, R., Batory, D. and Lin, C. Java Layers: Extending Java to Support Component-Based Programming. Technical Report CS-TR-00-11, CS Dept., University of Texas at Austin, 2000.
[16]
Clifton, C., Leavens, G. and Chambers, C. MultiJava: modular open classes and symmetric multiple dispatch for Java. OOPSLA 2000.
[17]
Czarnecki, K. and Eisenecker, U. Generative Programming. Addison-Wesley, 2000.
[18]
Eisenecker, U., Blinn, F., and Czarnecki, K. A Solution to the Constructor Problem of Mixin-Based Programming in C++. Generative and Component-Based Software. Engineering, Workshop on C++ Template Programming, Erfurt, Germany, October 2000. Also published in Dr. Dobbs Journal, No. 320, January 2001.
[19]
Gamma, E., Helm, R., Johnson R., and Vlissides, J. Design Patterns. Addison-Wesley, 1995.
[20]
Geary, D. Graphic Java, Mastering the JFC, 3rd ed., Sun MicroSystems Press, 1999.
[21]
Harrison, W. and Ossher, H. Subject-Oriented Programming (A Critique of Pure Objects). OOPSLA 1993.
[22]
Hyperspace home page at http://www.research.ibm.com/hyperspace.
[23]
Java 2 Micro Edition, http://java.sun.com/j2me.
[24]
Java Community Process, JSR-14: Add Generic Types to the Java Programming Language, http://www.jcp.org.
[25]
Java Layers home page at http://www.cs.utexas.edu/users/richcar/JavaLayers.html.
[26]
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J. and Griswold, W. An Overview of AspectJ. ECOOP 2001.
[27]
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J., and Irwin, J. Aspect-Oriented Programming. ECOOP 1997.
[28]
McDirmid, S., Flatt, M. and Hsieh, W. Jiazzi: New Age Components for Old Fashioned Java. OOPSLA 2001.
[29]
Palm Inc., http://www.palm.com.
[30]
Smaragdakis, Y. Implementing Large-Scale Object-Oriented Components. Ph.D. dissertation, CS Dept., University of Texas at Austin, December 1999.
[31]
Smaragdakis, Y., and Batory, D. Implementing Layered Designs with Mixin Layers. ECOOP 1998.
[32]
Sun Microsystems, Inc. Connected, Limited Device Configuration, specification 1.0a, May 19, 2000.
[33]
Sun Microsystems, Inc., Java technology site, http://java.sun.com.
[34]
Sun Microsystems, Inc. Java 2 Platform Micro Edition (J2ME) Technology for Creating Mobile Devices, white paper, May 19, 2000.
[35]
Stroustrup, B. The C++ Programming Language, 3rd Edition. Addison-Wesley, 1997.
[36]
Taivalsaari, A. On the Notion of Inheritance. ACM Computing Surveys, Vol. 28, No. 3, Sept. 1998.
[37]
Tarr, P., Ossher, H., Harrison, W., and Stanley, S. N Degrees of Separation: Multi-Dimensional Separation of Concerns. ICSE 1999.
[38]
Thorup, K. Genericity in Java with Virtual Types. ECOOP (1997).
[39]
Tip, F., Laffra C., Sweeney P. and Streeter, D. Practical Experience with an Application Extractor for Java. OOPSLA (1999).

Cited By

View all
  • (2013)Reified type parameters using Java annotationsACM SIGPLAN Notices10.1145/2637365.251722349:3(61-64)Online publication date: 27-Oct-2013
  • (2013)Reified type parameters using Java annotationsProceedings of the 12th international conference on Generative programming: concepts & experiences10.1145/2517208.2517223(61-64)Online publication date: 27-Oct-2013
  • (2012)Homogeneous Meta-Programming Techniques with Case StudyMeta-Programming and Model-Driven Meta-Program Development10.1007/978-1-4471-4126-6_4(49-77)Online publication date: 7-Jun-2012
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Other conferences
AOSD '02: Proceedings of the 1st international conference on Aspect-oriented software development
April 2002
162 pages
ISBN:158113469X
DOI:10.1145/508386
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

  • University of Twente: University of Twente
  • PATO: Post Academisch Tecbnisch Onderwijs
  • KNAW: Koninklijke Nederlandse Akademie van Wetenschappen
  • CTIT: Centre for Telematics and Information Technology
  • IBMR: IBM Research
  • NWO: Dutch Orgartisation for Scientific Research
  • IPA: Institute for Software and Arithmetic
  • AITO: Association Internationale pour les Technologies Objets

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 22 April 2002

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. GUI
  2. design pattern
  3. embedded software
  4. layers
  5. mixin
  6. parametric polymorphism

Qualifiers

  • Article

Conference

AOSD02
Sponsor:
  • University of Twente
  • PATO
  • KNAW
  • CTIT
  • IBMR
  • NWO
  • IPA
  • AITO

Acceptance Rates

Overall Acceptance Rate 41 of 139 submissions, 29%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)1
  • Downloads (Last 6 weeks)0
Reflects downloads up to 26 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2013)Reified type parameters using Java annotationsACM SIGPLAN Notices10.1145/2637365.251722349:3(61-64)Online publication date: 27-Oct-2013
  • (2013)Reified type parameters using Java annotationsProceedings of the 12th international conference on Generative programming: concepts & experiences10.1145/2517208.2517223(61-64)Online publication date: 27-Oct-2013
  • (2012)Homogeneous Meta-Programming Techniques with Case StudyMeta-Programming and Model-Driven Meta-Program Development10.1007/978-1-4471-4126-6_4(49-77)Online publication date: 7-Jun-2012
  • (2008)Aspectual Feature ModulesIEEE Transactions on Software Engineering10.1109/TSE.2007.7077034:2(162-180)Online publication date: 1-Mar-2008
  • (2005)Weaving a social fabric into existing softwareProceedings of the 4th international conference on Aspect-oriented software development10.1145/1052898.1052911(147-158)Online publication date: 14-Mar-2005
  • (2005)Comparative Analysis of Porting Strategies in J2ME GamesProceedings of the 21st IEEE International Conference on Software Maintenance10.1109/ICSM.2005.30(123-132)Online publication date: 25-Sep-2005
  • (2005)FeatureC++Proceedings of the 4th international conference on Generative Programming and Component Engineering10.1007/11561347_10(125-140)Online publication date: 29-Sep-2005
  • (2005)Using step-wise refinement to build a flexible lightweight storage managerProceedings of the 9th East European conference on Advances in Databases and Information Systems10.1007/11547686_24(324-337)Online publication date: 12-Sep-2005
  • (2004)Aspects and constraints for implementing configurable product-line architecturesProceedings. Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA 2004)10.1109/WICSA.2004.1310697(135-144)Online publication date: 2004
  • (2004)Aspects for Synthesizing Applications by RefinementSoftware Reuse: Methods, Techniques, and Tools10.1007/978-3-540-27799-6_10(115-126)Online publication date: 2004
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media