title: Meaning of "Runtime Environment" and of "Software framework"?
body: <p>I have heard of several things, quoted from Wikipedia:</p>
  
  <ol>
  <li><p><a href="http://en.wikipedia.org/wiki/Java_Runtime_Environment" rel="noreferrer">"Java Runtime Environment",</a> </p>
  
  <blockquote>
    <p>A JVM is distributed along with a set
    of standard class libraries that
    implement the Java application
    programming interface (API).
    Appropriate APIs bundled together form
    the Java Runtime Environment (JRE).</p>
  </blockquote></li>
  <li><p><a href="http://en.wikipedia.org/wiki/Adobe_Integrated_Runtime" rel="noreferrer">"Adobe Integrated Runtime"</a></p>
  
  <blockquote>
    <p>Adobe Integrated Runtime, also known
    as Adobe AIR, is a cross-platform
    runtime environment developed by Adobe
    Systems for building Rich Internet
    Applications (RIA) using Adobe Flash,
    Adobe Flex, HTML, and Ajax, that can
    be run as desktop applications.</p>
  </blockquote></li>
  <li><p><a href="http://en.wikipedia.org/wiki/.NET_Framework" rel="noreferrer">".NET Framework"</a></p>
  
  <blockquote>
    <p>The .NET Framework (pronounced dot
    net) is a software framework for
    Microsoft Windows operating systems.
    It includes a large library, and it
    supports several programming languages
    which allows language interoperability
    (each language can use code written in
    other languages). The .NET library is
    available to all the programming
    languages that .NET supports.</p>
  </blockquote></li>
  </ol>
  
  <p>As described above, if I understand correctly, the first two seem to be related to "runtime environment", but there is no related Wikipedia to explain what  "runtime environment" is. </p>
  
  <p>The third is said to be a "Software framework", which has <a href="http://en.wikipedia.org/wiki/Software_framework" rel="noreferrer">a Wikipedia article</a> as:</p>
  
  <blockquote>
    <p>a software framework is an abstraction
    in which common code providing generic
    functionality can be selectively
    overridden or specialized by user
    code, thus providing specific
    functionality. Frameworks are a
    special case of software libraries in
    that they are reusable abstractions of
    code wrapped in a well-defined
    Application programming interface
    (API), yet they contain some key
    distinguishing features that separate
    them from normal libraries.</p>
  </blockquote>
  
  <p>So my questions are:</p>
  
  <ol>
  <li>Are  "Runtime Environment" and 
  "Software framework" the same
  thing? If not, how do they differ,
  and do they belong to some common
  category?</li>
  <li>Are they all programming
  libraries/APIs that can be used by
  programmers to develop their own
  software?</li>
  <li>The three examples are often
  required when installing some
  software. Do they belong to the
  concept of <a href="http://en.wikipedia.org/wiki/Virtual_machine" rel="noreferrer">virtual machine</a>? If
  not, what category do they belong
  to? How is that category different
  from virtual machine?</li>
  </ol>
  
  <p>Thanks and regards!</p>
  
  <p><strong>PS:</strong> I don't know if this post is more suitable for superuser or for stackoverflow, as the three examples are often required when installing some software, and they are also seem to be providing API for software developers.</p>