The "layered look" isn't restricted to clothing. The lower levels
of most modern systems are written C/C++ (with occasional assembly
language). Indeed, Java itself is written in C, AFAIK. Above this
level, chaos rules.
Interactive applications may be written in C/C++, Java, Objective-C,
scripting languages (e.g., Perl, Python, Ruby), or combinations of
these languages. .NET (and Mono) offer one approach to combining
languages, but web services (e.g., REST, SOAP) and cross-language
interfaces (e.g., JRuby, RubyCocoa) offer lighter-weight approaches.
Protege (protege.stanford.edu) is an interesting case in point. It
is a portable Knowledge Base (e.g., ontology editing) framework,
written in Java. However, it may be accessed via web services and
Java's BSF (Bean Scripting Framework). So, scripts can be used to
extend Protege, use it as a server, etc.