Type checking records and variants in a natural extension of ML
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
A syntactic approach to type soundness
Information and Computation
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Contraint-based polymorphism in Cecil: towards a practical and static type system
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Featherweight Java: a minimal core calculus for Java and GJ
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Design and implementation of generics for the .NET Common language runtime
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Communications of the ACM
CLU Reference Manual
Implementing Layered Designs with Mixin Layers
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Formalization of generics for the .NET common language runtime
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Adding wildcards to the Java programming language
Proceedings of the 2004 ACM symposium on Applied computing
Crosscutting techniques in program specification and analysis
Proceedings of the 4th international conference on Aspect-oriented software development
Analyzing Multiple Configurations of a C Program
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Associated types and constraint propagation for mainstream object-oriented generics
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 5th international conference on Aspect-oriented software development
Variant parametric types: A flexible subtyping scheme for generics
ACM Transactions on Programming Languages and Systems (TOPLAS)
A flow-based approach for variant parametric types
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Statically safe program generation with safegen
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
A type system for reflective program generators
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Variance and generalized constraints for C# generics
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Building Scalable Libraries with cJ
ICSE COMPANION '07 Companion to the proceedings of the 29th International Conference on Software Engineering
Object and reference immutability using Java generics
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
A comparative study of techniques to write customizable libraries
Proceedings of the 2009 ACM symposium on Applied Computing
JavaGI in the battlefield: practical experience with generalized interfaces
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
TypeChef: toward type checking #ifdef variability in C
FOSD '10 Proceedings of the 2nd International Workshop on Feature-Oriented Software Development
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Ownership and immutability in generic Java
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Morphing: Structurally shaping a class by reflecting on others
ACM Transactions on Programming Languages and Systems (TOPLAS)
Partial preprocessing C code for variability analysis
Proceedings of the 5th Workshop on Variability Modeling of Software-Intensive Systems
A type system for reflective program generators
Science of Computer Programming
Statically safe program generation with SafeGen
Science of Computer Programming
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Taming the wildcards: combining definition- and use-site variance
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Type checking annotation-based product lines
ACM Transactions on Software Engineering and Methodology (TOSEM)
A variability-aware module system
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Morphing: safely shaping a class in the image of others
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Extending Type Inference to Variational Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
cJ is an extension of Java that allows supertypes, fields, and methods of a class or interface to be provided only under some static subtyping condition. For instance, a cJ generic class, C, may provide a member method m only when the type provided for parameter P is a subtype of a specific type Q.From a practical standpoint, cJ adds to generic Java classes and interfaces the ability to express case-specific code. Unlike conditional compilation techniques (e.g., the C/C++ "#ifdef" construct) cJ is statically type safe and maintains the modular type-checking properties of Java generic classes: a cJ generic class can be checked independently of the code that uses it. Just like regular Java, checking a cJ class implies that all uses are safe, under the contract for type parameters specified in the class's signature.As a specific application, cJ addresses the well-known shortcomings of the Java Collections Framework (JCF). JCF data structures often throw run-time errors when an "optional" method is called upon an object that does not support it. Within the constraints of standard Java, the authors of the JCF had to either sacrifice static type safety or suffer a combinatorial explosion of the number of types involved. cJ avoids both problems, maintaining both static safety and conciseness.