A programming construct mixin was invented to implement uniform extensions and modifications to classes. Although mixin-based programming has been extensively
studied both on the methodological and theoretical point of views, relatively few attempts have been made on designing real programming languages that support mixins. In this paper, we address the issue of how to introduce a feature of declaring
a mixin that may also be used as a type to nominally typed object-oriented languages like Java. We propose a programming language
McJava, an extension of Java with mixin-types. To study type-soundness of McJava, we have formulated the core of McJava with
typing and reduction rules, and proved its type-soundness. We also describe a compilation strategy of McJava that translates
McJava programs to Java programs thus eventually making it runnable on standard Java virtual machines.