On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
F-bounded polymorphism for object-oriented programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
UNIX network programming
The C++ programming language (2nd ed.)
The C++ programming language (2nd ed.)
The design and implementation of hierarchical software systems with reusable components
ACM Transactions on Software Engineering and Methodology (TOSEM)
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
Object-oriented application frameworks
Communications of the ACM
From custom applications to domain-specific frameworks
Communications of the ACM
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Adding type parameterization to the Java language
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Pattern languages of program design 3
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Compatible genericity with run-time types for the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Parametric polymorphism for Java: a reflective solution
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Practical experience with an application extractor for Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Atlas: a case study in building a web-based learning environment using aspect-oriented programming
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Object-oriented framework and product lines
Proceedings of the first conference on Software product lines : experience and research directions: experience and research directions
On the criteria to be used in decomposing systems into modules
Communications of the ACM
A Statically Safe Alternative to Virtual Types
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Implementing Layered Designs with Mixin Layers
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Using C++ Templates to Implement Role-Based Designs
ISOTAS '96 Proceedings of the Second JSSST International Symposium on Object Technologies for Advanced Software
JTS: Tools for Implementing Domain-Specific Languages
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Java Layers: Extending Java to Support Component-Based Programming
Java Layers: Extending Java to Support Component-Based Programming
Java and the IBM San Francisco project
IBM Systems Journal
Composing high-performance memory allocators
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Jiazzi: new-age components for old-fasioned Java
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Achieving extensibility through product-lines and domain-specific languages: a case study
ACM Transactions on Software Engineering and Methodology (TOSEM)
Using mixins to build flexible widgets
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Aspect-oriented programming with Jiazzi
Proceedings of the 2nd international conference on Aspect-oriented software development
Dynamically Composable Collaborations with Delegation Layers
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Towards Software Product-Lines — A Refinement-Oriented Generation Language
BT Technology Journal
IEEE Transactions on Software Engineering
Lightweight scalable components
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Research challenges in the tension between features and services
Proceedings of the 2nd international workshop on Systems development in SOA environments
The impact of static-dynamic coupling on remodularization
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Code generation to support static and dynamic composition of software product lines
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Superimposition: a language-independent approach to software composition
SC'08 Proceedings of the 7th international conference on Software composition
Flexible feature binding in software product lines
Automated Software Engineering
FeatureC++: on the symbiosis of feature-oriented and aspect-oriented programming
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Hi-index | 0.00 |
Object-oriented frameworks are a popular mechanism for building and evolving large applications and software product lines. This paper describes an alternative approach to software construction, Java Layers (JL), and evaluates JL and frameworks in terms of flexibility, ease of use, and support for evolution. Our experiment compares Schmidt's ACE framework against a set of ACE design patterns that have been implemented in JL. We show how problems of framework evolution and overfeaturing can be avoided using JL's component model, and we demonstrate that JL scales better than frameworks as the number of possible application features increases. Finally, we describe how constrained parametric polymorphism and a small number of language features can support JL's model of loosely coupled components and stepwise program refinement.