An extension of system F with subtyping
Information and Computation - Special conference issue: international conference on theoretical aspects of computer software
Type inference for objects with instance variables and inheritance
Theoretical aspects of object-oriented programming
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Pizza into Java: translating theory into practice
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
Javalight is type-safe—definitely
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A little Java, a few patterns
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
On the relationship between classes, objects, and data abstraction
Theory and Practice of Object Systems - Third workshop on foundations of object-oriented languages (FOOL 3)
Is the Java type system sound?
Theory and Practice of Object Systems - Special issue on foundations of object-oriented languages
A Theory of Objects
An Imperative, First-Order Calculus with Object Extension
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Type-based race detection for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Parametric polymorphism in Java: an approach to translation based on reflective features
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Typing a multi-language intermediate code
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Formalizing the safety of Java, the Java virtual machine, and Java card
ACM Computing Surveys (CSUR)
Representation independence, confinement and access control [extended abstract]
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A core calculus for Java exceptions
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Modular mixin-based inheritance for application frameworks
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type-preserving compilation of Featherweight Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Alias annotations for program understanding
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Information and Computation - FOOL VII
Information and Computation - FOOL VII
The case for run-time types in generic Java
PPPJ '02/IRE '02 Proceedings of the inaugural conference on the Principles and Practice of programming, 2002 and Proceedings of the second workshop on Intermediate representation engineering for virtual machines, 2002
PolyTOIL: A type-safe polymorphic object-oriented language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Partial Evaluation for Class-Based Object-Oriented Languages
PADO '01 Proceedings of the Second Symposium on Programs as Data Objects
Class-Based versus Object-Based: A Denotational Comparison
AMAST '02 Proceedings of the 9th International Conference on Algebraic Methodology and Software Technology
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
Extending Moby with Inheritance-Based Subtyping
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
True Modules for Java-like Languages
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
A Formal Framework for Java Separate Compilation
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Type-Safe Prototype-Based Component Evolution
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Architectural Reasoning in ArchJava
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
On Variance-Based Subtyping for Parametric Types
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Semantics-Based Composition of Class Hierarchies
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Formal Techniques for Java Programs
ECOOP '01 Proceedings of the Workshops on Object-Oriented Technology
An Abstract Model of Java Dynamic Linking and Loading
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Constructive Foundations for Featherweight Java
PTCS '01 Proceedings of the International Seminar on Proof Theory in Computer Science
A General Framework for Types in Graph Rewriting
FST TCS 2000 Proceedings of the 20th Conference on Foundations of Software Technology and Theoretical Computer Science
Validating a Web service security abstraction by typing
Proceedings of the 2002 ACM workshop on XML security
A first-class approach to genericity
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Formalization of generics for the .NET common language runtime
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Principal typings for Java-like languages
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modeling multiple class loaders by a calculus for dynamic linking
Proceedings of the 2004 ACM symposium on Applied computing
Adding wildcards to the Java programming language
Proceedings of the 2004 ACM symposium on Applied computing
Natural semantics as a static program analysis framework
ACM Transactions on Programming Languages and Systems (TOPLAS)
Region inference for an object-oriented language
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Polymorphic bytecode: compositional compilation for Java-like languages
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Generalized algebraic data types and object-oriented programming
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Parametric polymorphism for software component architectures
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Fine-grained interoperability through mirrors and contracts
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The next 700 data description languages
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Protecting representation with effect encapsulation
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Trusted declassification:: high-level policy for a security-typed language
Proceedings of the 2006 workshop on Programming languages and analysis for security
Introducing safe unknown types in Java-like languages
Proceedings of the 2006 ACM symposium on Applied computing
Eliminating distinctions of class: using prototypes to model virtual classes
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Core-java: an expression-oriented java
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
JML-based verification of liveness properties on a class in isolation
Proceedings of the 2006 conference on Specification and verification of component-based systems
cJ: enhancing java with safe type conditions
Proceedings of the 6th international conference on Aspect-oriented software development
MiniMAO1: an imperative core language for studying aspect-oriented reasonings
Science of Computer Programming - Special issue: Foundations of aspect-oriented programming
Safe composition of product lines
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
A calculus for java's reference objects
ACM SIGPLAN Notices
Variant path types for scalable extensibility
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Component nextgen: a sound and expressive component framework for java
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Modular typestate checking of aliased objects
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Modular verification of higher-order methods with mandatory calls specified by model programs
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
StrongAspectJ: flexible and safe pointcut/advice bindings
Proceedings of the 7th international conference on Aspect-oriented software development
Lightweight family polymorphism*
Journal of Functional Programming
Towards proving type safety of .NET CIL
Science of Computer Programming
Safe Cross-Language Inheritance
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Constrained types for object-oriented languages
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Efficient software model checking of soundness of type systems
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Java type inference is broken: can we fix it?
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Class invariants as abstract interpretation of trace semantics
Computer Languages, Systems and Structures
Translation and optimization for a core calculus with exceptions
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
A Formal Soundness Proof of Region-Based Memory Management for Object-Oriented Paradigm
ICFEM '08 Proceedings of the 10th International Conference on Formal Methods and Software Engineering
Composing expressive runtime security policies
ACM Transactions on Software Engineering and Methodology (TOSEM)
Formalising and Verifying Reference Attribute Grammars in Coq
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Tisa: A Language Design and Modular Verification Technique for Temporal Policies in Web Services
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Range parameterized types: use-site variance without the existential questions
Proceedings of the 11th International Workshop on Formal Techniques for Java-like Programs
Electronic Notes in Theoretical Computer Science (ENTCS)
CZ: multiple inheritance without diamonds
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
The next 700 data description languages
Journal of the ACM (JACM)
Featherweight X10: a core calculus for async-finish parallelism
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
Ownership Downgrading for Ownership Types
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
The Design of Monty: a Programming/Scripting Language
Electronic Notes in Theoretical Computer Science (ENTCS)
A Type-theoretic Reconstruction of the Visitor Pattern
Electronic Notes in Theoretical Computer Science (ENTCS)
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
A calculus for uniform feature composition
ACM Transactions on Programming Languages and Systems (TOPLAS)
The verifying compiler: a grand challenge for computing research
CC'03 Proceedings of the 12th international conference on Compiler construction
TAPIDO: trust and authorization via provenance and integrity in distributed objects
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Efficient type-checking for amortised heap-space analysis
CSL'09/EACSL'09 Proceedings of the 23rd CSL international conference and 18th EACSL Annual conference on Computer science logic
A Lightweight Approach to Customizable Composition Operators for Java-like Classes
Electronic Notes in Theoretical Computer Science (ENTCS)
Efficient modular glass box software model checking
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
MetaFJig: a meta-circular composition language for Java-like classes
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Safe commits for transactional featherweight Java
IFM'10 Proceedings of the 8th international conference on Integrated formal methods
Verifying pointer and string analyses with region type systems
LPAR'10 Proceedings of the 16th international conference on Logic for programming, artificial intelligence, and reasoning
Static type checking of Hadoop MapReduce programs
Proceedings of the second international workshop on MapReduce and its applications
Proceedings of the 10th SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software
DeepFJig: modular composition of nested classes
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
Type checking choreography description language
ICFEM'06 Proceedings of the 8th international conference on Formal Methods and Software Engineering
A framework for modular linking in OO languages
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
A new component-oriented programming language with the first-class connector
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
ICTAC'06 Proceedings of the Third international conference on Theoretical Aspects of Computing
A core calculus for scala type checking
MFCS'06 Proceedings of the 31st international conference on Mathematical Foundations of Computer Science
Subtyping first-class polymorphic components
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Chai: traits for Java-like languages
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Type-safe optimisation of plugin architectures
SAS'05 Proceedings of the 12th international conference on Static Analysis
A per-type instantiation mechanism for generic aspects
Proceedings of the 3rd international workshop on Variability & Composition
A class-based object calculus of dynamic binding: reduction and properties
SC'06 Proceedings of the 5th international conference on Software Composition
On ownership and accessibility
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
COQ mechanization of featherweight fortress with multiple dispatch and multiple inheritance
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
Type-Based amortised heap-space analysis
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Safe locking for multi-threaded java
FSEN'11 Proceedings of the 4th IPM international conference on Fundamentals of Software Engineering
Properties of Java Simple Closures
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P)
Type-Based enforcement of secure programming guidelines -- code injection prevention at SAP
FAST'11 Proceedings of the 8th international conference on Formal Aspects of Security and Trust
Transactional correctness for secure nested transactions
TGC'11 Proceedings of the 6th international conference on Trustworthy Global Computing
Morphing: safely shaping a class in the image of others
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Automatic type inference for amortised heap-space analysis
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Verifying pointer and string analyses with region type systems
Computer Languages, Systems and Structures
True small-step reduction for imperative object oriented languages
Proceedings of the 15th Workshop on Formal Techniques for Java-like Programs
Do developers benefit from generic types?: an empirical comparison of generic and raw types in java
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
The billion-dollar fix: safe modular circular initialisation
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Æminium: A Permission-Based Concurrent-by-Default Programming Language Approach
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.02 |
Several recent studies have introduced lightweight versions of Java: reduced languages in which complex features like threads and reflection are dropped to enable rigorous arguments about key properties such as type safety. We carry this process a step further, omitting almost all features of the full language (including interfaces and even assignment) to obtain a small calculus, Featherweight Java, for which rigorous proofs are not only possible but easy.Featherweight Java bears a similar relation to full Java as the lambda-calculus does to languages such as ML and Haskell. It offers a similar computational “feel,” providing classes, methods, fields, inheritance, and dynamic typecasts, with a semantics closely following Java's. A proof of type safety for Featherweight Java thus illustrates many of the interesting features of a safety proof for the full language, while remaining pleasingly compact. The syntax, type rules, and operational semantics of Featherweight Java fit on one page, making it easier to understand the consequences of extensions and variations.As an illustration of its utility in this regard, we extend Featherweight Java with generic classes in the style of GJ (Bracha, Odersky, Stoutamire, and Wadler) and sketch a proof of type safety. The extended system formalizes for the first time some of the key features of GJ.