A syntactic approach to type soundness
Information and Computation
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A Most Specific Method Finding Algorithm for Reflection Based Dynamic Prolog-to-Java Interfaces
PADL '01 Proceedings of the Third International Symposium on Practical Aspects of Declarative Languages
Principal typings for Java-like languages
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Core-java: an expression-oriented java
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Operational semantics for multi-language programs
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Stateful traits and their formalization
Computer Languages, Systems and Structures
ECOOP '07 Proceedings of the 21st European conference on ECOOP 2007: Object-Oriented Programming
Safe Cross-Language Inheritance
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Featherweight Java with dynamic and static overloading
Science of Computer Programming
Inter-language reflection: A conceptual model and its implementation
Computer Languages, Systems and Structures
Proceedings of the International Workshop on Smalltalk Technologies
Hi-index | 0.00 |
The Java virtual machine (JVM) has been adopted as the executing platform by a large number of dynamically typed programming languages. For example, Scheme, Ruby, Javascript, Lisp, and Basic have been successfully implemented on the JVM and each is supported by a large community. Interoperability with Java is one important requirement shared by all these languages. We claim that the lack of type annotation in interpreted dynamic languages makes this interoperability either flawed or incomplete in the presence of method overloading. We studied 17 popular dynamically typed languages for JVM and .Net, none of them were able to properly handle the complexity of method overloading. We present dynamic type tag, an elegant solution for dynamic language interpreters to properly interact with Java objects in the presence of overloaded methods. The idea is to embody a type annotation in a Java object reference. Java references may be annotated in order to properly determine the signature of methods to invoke. We demonstrate its applicability in the JSmall language and provide the pellucid embedding, a formalization of our approach.