I have heard of several things, quoted from Wikipedia:
-
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). -
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. -
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.
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.
The third is said to be a “Software framework”, which has a Wikipedia article as:
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.
So my questions are:
- Are “Runtime Environment” and
“Software framework” the same
thing? If not, how do they differ,
and do they belong to some common
category? - Are they all programming
libraries/APIs that can be used by
programmers to develop their own
software? - The three examples are often
required when installing some
software. Do they belong to the
concept of virtual machine? If
not, what category do they belong
to? How is that category different
from virtual machine?
Thanks and regards!
PS: 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.
No. A runtime environment basically is a virtual machine that runs on top of a machine – provides machine abstraction. It is generally lower level than a library. A framework can contain a runtime environment, but is generally tied to a library.
Java, AIR and .NET (in this case the Common Language Runtime) has each its own runtime in a certain byte code that runs on top of the operating system. It allows the code to be quite portable without recompilation to do it this way.
Libraries and APIs are used for making new programs. A runtime environment is where the programs run.
A runtime environment does coincide with the concept of a virtual machine, albeit not as complex as VMWare or otherwise. They both share the goal of abstracting the underlying systems to a point that other software can run on it.