Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.
  1. I was wondering if runtime system and compatible layer are the same thing? They both seem to be some software, running of which allows some other software to run on them. Links to Wikipedia for the two concepts have been provided above.
  2. Are they both virtual machines? The Wikipedia article for virtual machine mentions that run-time system is a kind of virtual machine.
  3. Why is Cygwin said to be a compatible layer as its type in its Wikipedia article? Is it an emulator of Linux OS, and/or a run-time system?
share|improve this question
1  
Randolf Richardson covers the generalities fairly well, but to address your specifc questions (and keeping in mind that the Wikipedia articles group together some very different technologies), some runtime layers involve VMs (and some don't). Cygwin is a compatibility layer broadly similar to WINE in that it enables source-level compatibility with Linux applications, but it does no emulation, it simply provides an API. –  user55325 Jun 2 '11 at 2:58
1  
@user55325: Thanks! Can you be specific about what Wikipedia articles group together some very different technologies and how? –  Tim Jun 2 '11 at 6:20
    
@user55325: I agree with you about Cygwin and WINE being compatibility layers. I purposely remained more general because I believe that the distinction between these two areas are just starting to become blurred, partly (but in a small way) thanks to virtualization, and mostly thanks to marketers who sometimes misuse technical terminology. –  Randolf Richardson Jun 3 '11 at 1:08
add comment

1 Answer 1

Although there appear to be a lot of similarities, there are some key differences:

A good example of a Runtime System would be the Java Virtual Machine which provides a consistent cross-platform environment for [compiled] Java byte code.

A good example of a Compatibility Layer would be WINE, which allows users to run unmodified Windows applications directly on Linux and Unix. Compared to WINE, the compatibility layers can also be quite small, such as a single library that the main code base uses to access OS-specific features (e.g., opening a file, communicating over the internet, etc.) which provide a consistent API for the application to effectively hide all the ugly OS-specific differences.

The disadvantage of a Runtime Environment is that the entire environment must be available to whatever code it will be running, which can require a lot of development effort.

The disadvantage of a Compatibility Layer is that is doesn't necessarily provide consistency, and can be more difficult to debug.

The advantage of a Runtime Environment is that, after being ported to a new platform, the applications will run without modification.

The advantage of a Compatibility Layer is that to support a new platform, only a new layer (or set of layers) needs to be created, and the main application can be compiled for the new target platform with minimal changes.

Virtualization is like an extremely extensive Runtime Environment, but the different there is that a CPU instruction set (and any required devices) are being virtualized or emulated very well.

share|improve this answer
1  
Thanks! Any references for the concepts mentioned in this post? Books, webpages, ... –  Tim Jun 3 '11 at 2:15
    
@Tim: It's all based on my own experience (I wrote my answer from my heart) in working with these technologies over the years. What comes to mind is that I did learn a fair bit from various helpful people in Freenode.Net (IRC), by reading documentation for the products I mentioned (and others), and also working with them to use [or at least expand] my own technical knowledge (if someone would like to add to my answer here in the comments, I certainly welcome it). –  Randolf Richardson Jun 3 '11 at 4:04
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.