Timeline of virtualization technologies: Difference between revisions

Content deleted Content added
Afdshah (talk | contribs)
mNo edit summary
VAIO-VM (talk | contribs)
Added a few events of importance to the timeline, but did not update the timeline.
 
(42 intermediate revisions by 15 users not shown)
Line 1:
{{short description|none}}
{{Use mdy dates|date=January 2022}}
{{multiple issues|
{{essay-like|date=July 2012}}
{{tone|date=July 2012}}
{{Cleanup|date=August 2010}}
{{Cleanup rewrite|Content dealing with recent events is hard to understand, not a timeline, strangely formatted, and contains unsourced speculations and hopes.|date=May 2009}}
{{Update|date=November 2017}}
<!-- "none" is preferred when the title is sufficiently descriptive; see [[WP:SDNONE]] -->
{{short description|Timeline of the history of virtualization development}}
{{Use mdy dates|date=January 2022}}
}}
 
The following is a '''timeline of virtualization development'''. In computing, [[virtualization]] is the use of a computer to simulate another computer. Through virtualization, a ''host'' simulates a ''guest'' by exposing virtual hardware devices, which may be done through software or by allowing access to a physical device connected to the machine.
In computing, [[virtualization]] is the use of a computer to simulate another computer. The following is a chronological list of virtualization technologies.
 
== Timeline ==
 
'''Note:''' This timeline is missing data for important historical systems, including: Atlas Computer (Manchester), GE 645, Burroughs B5000.
 
=== 1960 ===
=== 1960s ===
{{Main|IBM CP-40|CP/CMS|History of CP/CMS|IBM System/360 Model 67}}
In the mid-1960s, [[IBM]]'s [[Cambridge Scientific Center]] developeddevelops [[IBM CP-40|CP-40]], the first version of [[CP/CMS]]. It went into production use in January 1967. From its inception, [[IBM CP-40|CP-40]] was intended to implement [[full virtualization]]. Doing so required hardware and microcode customization on a S/360-40, to provide the necessary address translation and other virtualization features. Experience on the [[IBM CP-40|CP-40]] project providedprovides input to the development of the [[IBM System/360 Model 67]], announced in 1965 (along with its ill-starred operating system, [[TSS/360]]). [[IBM CP-40|CP-40]] wasis re-implemented for the S/360-67 as CP-67, and by April 1967, both versions wereare in daily production use. [[CP/CMS]] was made generally available to IBM customers in source code form, as part of the unsupported [[IBM Type-III Library]], in 1968.
 
=== ;1964 ===
 
* [[IBM]] Cambridge Scientific Center begins development of [[IBM CP-40|CP-40]].
 
=== ;1965 ===
 
*IBM M44/44X, an experimental paging operating system, is in use at Thomas J. Watson Research Center.
* IBM announces the [[IBM System/360 Model 67|IBM System/360-67]], a [[32-bit computing|32-bit]] [[Central processing unit|CPU]] with [[virtual memory]] hardware (August 1965).
 
=== ;1966 ===
 
*IBM ships the [[IBM System/360 Model 67|S/360-67]] computer in June 1966.
* IBM begins work on [[CP-67]], a re-implementation of CP-40 for the S/360-67.
 
=== ;1967 ===
 
* CP-40In (January) and, CP-6740 (April) gogoes into production time-sharing use, followed by CP-67 in April.
 
=== ;1968 ===
 
*CP/CMS is installed at eight initial customer sites.
* CP/CMS is submitted to IBM Type-III Library by [[Massachusetts Institute of Technology|MIT]]'s Lincoln Laboratory, making system available to all IBM S/360 customers at no charge in [[source code]] form.
* Resale of CP/CMS access begins at time-sharing vendor National CSS (becoming a distinct version, eventually renamed [[VP/CSS]]).
 
=== 19711970s ===
{{Main|System/370|VM (operating system)|History of CP/CMS|hypervisor}}
IBM announces the [[System/370]] in 1970. In 1972, IBM announces that [[virtual memory]] would be made available on all S/370 models, and also announces several virtual storage operating systems, including [[VM (operating system)|VM/370]]. By the mid-1970s, [[CP/CMS]], VM, and [[VP/CSS]] are running on numerous large IBM mainframes.
 
;1971
* First [[IBM System/370|System/370]] shipped: S/370-155 (January).
 
* The first [[IBM System/370|System/370]], the S/370-155, is shipped in January.
=== 1970 ===
{{Main|System/370|VM (operating system)|History of CP/CMS|hypervisor}}
IBM announced the [[System/370]] in 1970. To the disappointment of [[CP/CMS]] users – as with the [[System/360]] announcement – the series would not include [[virtual memory]]. In 1972, IBM changed direction, announcing that the option would be made available on all S/370 models, and also announcing several virtual storage operating systems, including [[VM (operating system)|VM/370]]. By the mid-1970s, [[CP/CMS]], VM, and the maverick [[VP/CSS]] were running on numerous large IBM mainframes. By the late 80s, there were reported to be more VM licenses than [[MVS]] licenses.
 
=== ;1972 ===
 
*Announcement of virtual memory being added to System/370 series.
* [[VM (operating system)|VM/370]] announced – and running on announcement date. VM/370 includes the ability to run VM under VM (previously implemented both at IBM and at user sites under CP/CMS, but not made part of standard releases)
 
=== ;1973 ===
 
* First shipment of announced virtual memory S/370 models (April: -158, May: -168).
 
=== ;1977 ===
 
* Initial commercial release of [[OpenVMS|VAX/VMS]], later renamed OpenVMS.
 
=== ;1979 ===
 
* The [[chroot]] system call wasis introduced during development of [[Version 7 Unix]]., Layinglaying a foundation for container virtualization.<ref>{{cite web |last=Mell |first=Emily |date=April 2, 2020 |title=The evolution of containers: Docker, Kubernetes and the future |url=https://www.techtarget.com/searchitoperations/feature/Dive-into-the-decades-long-history-of-container-technology |accessdate=January 7, 2023 |publisher=TechTarget}}</ref><ref>{{cite web |last=Dillenburg |first=Stefan |date=May 3, 2020 |title=A brief history of container virtualization |url=https://medium.com/an-idea/a-brief-history-of-container-virtualization-57fc96c02924 |accessdate=January 7, 2023 |publisher=Medium (website)}}</ref>
 
=== 19851980s ===
;1985
 
* October 9, 1985: Announcement of the [[Intel 80286]]-based [[AT&T Computer Systems|AT&T 6300+]] with [[Merge (software)|Simultask]], a [[virtual machine monitor]] developed by [[Locus Computing Corporation]] in collaboration with [[AT&T]], that enabledenabling the direct execution of an [[Intel 8086]] [[realmode]] guest operating system under a host [[Unix System V#SVR2|Unix System V Release 2 OS]]. Although the product was marketed with [[Microsoft MS-DOS]] as the guest OS, in fact the Virtual Machine could support any [[realmode]] operating system or standalone program (such as [[Microsoft Flight Simulator]]) that was written using only valid 8086 instructions (not instructions introduced with the 80286). Locus subsequently developed this technology into their "Merge" product line.
 
=== ;1987 ===
 
*January 1987: A "product evaluation" version of [[Merge (software)|Merge/386]] from [[Locus Computing Corporation]] wasis made available to OEMs. [[Merge (software)|Merge/386]] made use of the [[Virtual 8086 mode]] provided by the [[Intel 80386]] processor, and supported multiple simultaneous [[virtual machine|virtual 8086 machines]]. The virtual machines supported unmodified guest operating systems and standalone programs such as [[Microsoft Flight Simulator]]; but in typical usage the guest was MS-DOS with a Locus proprietary [[Network redirector|redirector]] (also marketed for networked PCs as "PC-Interface") and a "network" driver that provided communication with a regular user-mode file server process running under the host operating system on the same machine.
* October 1987: Retail Version 1.0 of Merge/386 beganbegins shipping, offered with [[Microport (software)|Microport]] [[Unix System V#SVR3|Unix System V Release 3]].
 
=== ;1988 ===
 
*[[SoftPC]] 1.0 for Sun wasis introduced in 1988 by Insignia Solutions. [http://computing-dictionary.thefreedictionary.com/Insignia+Solutions,+Inc.]
* [[SoftPC]] appears in its first version for [[Apple Inc.|Apple]] [[Macintosh]]. These versions (Sun and Macintosh) only have support for [[DOS]].
 
=== Year 19911990s ===
;1991
 
* IBM introducedintroduces OS/2 Virtual DOS machine (VDM) with support for x86 virtual 8086 mode, being capable of virtualiZingvirtualizing DOS/Windows and other 16 bitsbit operating systems, like CP/M-86 [https://archive.org/download/OS2WarpCertificationHandbookSG24486900/OS2_Warp_Certification_Handbook-SG24-4869-00.pdf]
 
=== Year ;1994 ===
 
* [[Kevin Lawton]] leaves [[MIT Lincoln Lab]] and starts the [[Bochs]] project. Bochs was initially coded for x86 architecture, capable of emulating BIOS, processor and other x86-compatible hardware, by simple algorithms, isolated from the rest of the environment, eventually incorporating the ability to run different processor algorithms under x86-architecture or the host, including bios and core processor (Itanium x64, x86_64, [[ARM architecture family|ARM]], [[MIPS architecture|MIPS]], [[PowerPC]], etc.), and with the advantage that the application is multi platform ([[Berkeley Software Distribution|BSD]], [[Linux]], [[Microsoft Windows|Windows]], [[MacOS|Mac]], [[Oracle Solaris|Solaris]]).<ref>{{cite web |last=Hess |first=Ken |date=August 25, 2011<!-- 15:24 GMT--> |title=Thinking inside and outside the Bochs with Kevin Lawton |url=httphttps://www.zdnet.com/article/thinking-inside-and-outside-the-bochs-with-kevin-lawton/ |accessdateaccess-date=December 3, 2015 |publisher=zdnet}}</ref>
 
=== Year ;1997 ===
 
* FirstThe first version of [[Virtual PC]] for the Macintosh platform wasis released in June 1997 by [[Connectix]].
 
=== Year ;1998 ===
 
*June 15, 1998,: [[Simics]]/sun4m is presented at [[USENIX]]'98, demonstrating [[Computer architecture simulator|full system simulation]] booting Linux 2.0.30 and Solaris 2.6 unmodified from [[dd (Unix)|dd]]'ed disks. [https://www.usenix.org/legacy/publications/library/proceedings/usenix98/full_papers/magnusson/magnusson.pdf].
* October 26, 1998,: [[VMware]] filedfiles for a patent on their techniques, which was granted as U.S. Patent 6,397,242 [http://patft.uspto.gov/netacgi/nph-Parser?patentnumber=6,397,242]
 
=== Year ;1999 ===
{{Main|x86 virtualization}}
On* February 8, 1999,: VMware introducedintroduces the first [[x86 virtualization]] product for the Intel IA-32 architecture, known as ''VMware Virtual Platform'', based on earlier research by its founders at [[Stanford University]]. VMware Virtual Platform is based on software emulation with a guest/host OS design that required all guest environments be stored as files under the host OS filesystem.
 
=== 2000s ===
VMware Virtual Platform was based on software emulation with Guest/Host OS design that required all Guest environments be stored as files under the host OS filesystem.
;2000
 
=== Year 2000 ===
 
*[[History of FreeBSD|FreeBSD 4.0]] is released, including initial implementation of [[FreeBSD jail]]s.
* IBM announces [[z/VM]], a new version of the [[VM (operating system)|VM]] operating system for IBM's 64-bit [[z/Architecture]].
 
=== Year ;2001 ===
 
*January 31, 2001, [[AMD]] and [[Virtutech]] release [[Simics]]/x86-64 ("Virtuhammer") to support the new 64-bit architecture for x86. [https://www.suse.com/company/press/2001/1/amd_virtuhammer.html] Virtuhammer is used to port Linux distributions and the Windows kernel to x86-64 well before the first [[x86-64]] processor ([[Opteron]]) was available in April 2003.
* June, Connectix launches its first version of Virtual PC for Windows.[http://www.sfgate.com/cgi-bin/article.cgi?file=/chronicle/archive/2001/04/30/BU186669.DTL&type=business]
* July, VMware createdcreates the first [[x86]] server virtualization product.[https://web.archive.org/web/20060827064533/http://www.vmware.com/news/releases/gsx_win_release.html]
* Egenera, Inc. launches their Processor Area Network (PAN Manager) software and BladeFrame chassis which provide hardware virtualization of processing blade's (pBlade) internal disk, network interface cards, and serial console.[http://www.egenera.com/company-overview.htm] {{Webarchive|url=https://web.archive.org/web/20110714172919/http://www.egenera.com/company-overview.htm |date=July 14, 2011 }}
* [[Virtuozzo_(company)|Virtuozzo]]The (earlierfirst namedversion SWsoft<ref>{{cite web |title=Virtuozzo Company History Timeline |date=August 27, 2020 |url=https://www.zippia.com/virtuozzo-careers-1581135/history/ |accessdate=January 7, 2023 |publisher=zippia}}</ref>) had developed was later being calledof [[OS-level_virtualization|ContainersVirtuozzo]] for Linux since 1999<ref>{{cite web |last=Kolyshkin |first=Kir |date=December 26, 2014based |title=Virtuozzoon Company History Timeline |url=https://openvz.livejournal.com/49158.html |accessdate=January 7OpenVZ, 2023 |publisher=LiveJournal}}</ref> andis released a first version in 2001.<ref>{{cite web |last=Hochstätter |first= Christoph H. |date=March 14, 2007 |title=Virtuozzo Company History Timeline |url=https://www.zdnet.de/39152346/virtuozzo-starke-performance-von-virtuellen-linux-servern/ |accessdate=January 7, 2023 |publisher=zdnet}}</ref>
 
=== Year ;2003 ===
 
*First release of first open-source [[x86]] hypervisor, [[Xen]]. [http://www.brianmadden.com/blogs/gabeknuth/archive/2007/08/16/a-brief-history-of-xen-and-xensource.aspx]
* February 18, 2003,: [[Microsoft]] acquiredacquires virtualization technologies (Virtual PC and unreleased product called "Virtual Server") from Connectix Corporation. [https://web.archive.org/web/20061229081901/http://www.microsoft.com/presspass/press/2003/Feb03/02-19PartitionPR.mspx]
* February 18: Development begins on [[QEMU]], a free and open-source hardware emulator.<ref>{{cite web |title=Standard project directories initialized by cvs2svn. (e63c3dc7) · Commits · QEMU / QEMU · GitLab |date=February 18, 2003 |url=https://gitlab.com/qemu-project/qemu/-/commit/e63c3dc74bfb90e4522d075d0d5a7600c5145745 |accessdate=July 23, 2024}}</ref>
* Late 2003, EMC acquired VMware for $635&nbsp;million.
* Late 2003,: VERITASEMC acquiredacquires EjascentVMware for $59635&nbsp;million.
* Late 2003: VERITAS acquires Ejascent for $59&nbsp;million.
* [https://web.archive.org/web/20060922064827/http://www.microsoft.com/presspass/press/2003/nov03/11-10VPC2004RTMPR.mspx November 10, 2003] [[Microsoft]] releases [[Microsoft Virtual PC]], which is machine-level virtualization technology, to ease the transition to Windows XP.
* [https://web.archive.org/web/20060922064827/http://www.microsoft.com/presspass/press/2003/nov03/11-10VPC2004RTMPR.mspx November 10, 2003] [[Microsoft]] releases [[Microsoft Virtual PC]], which is a machine-level virtualization technology.
 
=== Year ;2005 ===
 
*[[HP Inc.|HP]] releases [[Integrity Virtual Machines]] 1.0 and 1.2 which ran only [[HP-UX]].
* [https://web.archive.org/web/20061104033953/http://www.vmware.com/news/releases/player_beta.html October 24, 2005] VMware releases [[VMware Player]], a free player for virtual machines, to the masses.
* Sun releases [[Solaris (operating system)|Solaris]] 10, including [[Solaris Zones]], for both x86/x64 and SPARC systems.
* [https://web.archive.org/web/20200220100525/https://libvirt.org/news-2005.html December 19, 2005] First release of the open-source platform virtualisation manager, [[libvirt]].
 
=== Year ;2006 ===
 
*June 15, 2006
*[https://web.archive.org/web/20061004161218/http://www.vmware.com/news/releases/server.html July 12, 2006] VMware releases [[VMware Server]], a free machine-level virtualization product for the server market.
* Microsoft Virtual PC 2006 is released as a free program, also in July.
Line 138 ⟶ 139:
* [http://biz.yahoo.com/prnews/060926/sftu096.html?.v=70 September 26, 2006] [[moka5]] delivers [[LivePC]] technology.
* HP releases [[Integrity Virtual Machines]] Version 2.0, which supports Windows Server 2003, CD and DVD burners, tape drives and VLAN.
* [http://www.virtualiron.com/news_events/releaseDate-121106_Version3_1.cfm December 11, 2006] [[Virtual Iron]] releases Virtual Iron 3.1, a free bare-metal virtualization product for the enterprise server virtualization market.
 
=== Year ;2007 ===
 
*Open[[Kernel-based sourceVirtual Machine|KVM]], releaseda whichvirtualization ismodule integrated withinto the [[Linux kernel and provides virtualization on only Linux system]], itis needs hardware supportreleased.
* [http://www.virtualbox.org/wiki/News January 15, 2007] InnoTek releasedreleases [[VirtualBox]] Open Source Edition (OSE), the first professional PC virtualization solution released as open source under the GNU General Public License ([[GPL]]). It includes some code from the [[QEMU]] project.
* Sun releases [[Solaris Containers#Branded zones|Solaris 8 Containers]] to enable migration of a Solaris 8 computer into a Solaris Container on a Solaris 10 system – for SPARC only.
* [https://web.archive.org/web/20090511144617/http://blogs.technet.com/windowsserver/archive/2007/09/24/windows-server-2008-rc0-released.aspx September 24, 2007] [[Microsoft]] releases the first public build of its hypervisor, [[Hyper-V]], codenamed "Viridian".
 
=== Year ;2008 ===
 
* The first [[Mainline Linux|Linux kernel mainline]] featuring [[cgroups]] (developed by [[Google]] since 2006) was released. And based upon the first version of [[LXC|Linux Containers (LXC)]] was released. Laying a foundation for later technologies like [[Docker (software)|Docker]], [[Systemd#Core components and libraries|Systemd-nspawn]] and [[Podman]].
*[http://www.vmware.com/company/news/releases/thinstall.html January 15, 2008] VMware, Inc. announced it has entered into a definitive agreement to acquire Thinstall, a privately held [[application virtualization]] software company.
* [http://www.sun.com/aboutsun/pr/2008-02/sunflash.20080212.1.xml February 12, 2008] [[Sun Microsystems]] announced that it had entered into a stock purchase agreement to acquire InnoTek, makers of [[VirtualBox]].
* In April, [[VMware]] releases [[VMware Workstation]] 6.5 beta, the first program for Windows and Linux to enable DirectX 9 accelerated graphics on Windows XP guests [http://www.vmware.com/products/beta/ws/releasenotes_ws65_beta.html].
 
=== Year 2013 ===
 
[[Docker, Inc.]] releases [[Docker (software)|Docker]], a series of [[platform as a service]] (PaaS) products that use [[OS-level virtualization]].
 
=== Year 2014 ===
 
{{Main|Kubernetes|Google Cloud Platform}}
 
Sep 8, 2014 Initially designed by Google, the first public build of [[Kubernetes]] was released.<ref>{{cite web |title=Release Kubernetes v0.2 |website=[[GitHub]] |url=https://github.com/kubernetes/kubernetes/commit/a0abb3815755d6a77eed2d07bb0aa7d255e4e769}}</ref> When Kubernetes debuted, it offered a number of advantages over Docker, the most popular containerization platform at the time. The purpose of Kubernetes was to make it simple for users to deploy containerized applications across a sizable cluster of container hosts. In order to offer more features and functionality for managing containerized applications at scale, Kubernetes was created to complement Docker rather than to completely replace it.<ref>{{cite web |title=Red Hat and Google collaborate on Kubernetes to manage Docker containers at scale |url=https://www.redhat.com/en/blog/red-hat-and-google-collaborate-kubernetes-manage-docker-containers-scale |publisher=Red hat}}</ref><ref>{{cite web |last1=Buhr |first1=Martin |title=Everything you wanted to know about Kubernetes but were afraid to ask |url=https://cloudplatform.googleblog.com/2015/01/everything-you-wanted-to-know-about-Kubernetes-but-were-afraid-to-ask.html |access-date=22 December 2022 |publisher=Google}}</ref>
 
== Overview of Virtualization ==
 
=== As an overview, there are three levels of virtualization ===
* At the [[Comparison of platform virtualization software|hardware level]], the VMs can run multiple guest OSes. This is best used for testing and training that require networking interoperability between more than one OSes, since not only can the [[guest OS]]es be different from the [[host OS]], there can be as many guest OS as VMs, as long as there is enough [[Central processing unit|CPU]], [[Random-access memory|RAM]] and [[Storage virtualization|storage]] space. [[IBM]] introduced this around 1990 under the name [[logical partitioning]] (LPAR), at first only in the mainframe field.
* At the [[Operating system-level virtualization|operating system level]], it can only virtualize one OS: the guest OS is the host OS. This is similar to having many [[Terminal Services|terminal server]] sessions without locking down the desktop. Thus, this is the best of both worlds, having the speed of a [[Terminal Services|TS]] session with the benefit of full access to the desktop as a virtual machine, where the user can still control the '''quotas''' for CPU, RAM and HDD. Similar to the hardware level, this is still considered a '''Server Virtualization''' where each guest OS has its own [[IP address]], so it can be used for networking applications such as [[VPS ISP|web hosting]].
* At the [[Comparison of Application Virtual Machines|application level]], it is running on the Host OS directly, without any guest OS, which can be in a locked down desktop, including in a [[Terminal Services|terminal server]] session. This is called Application Virtualization or Desktop Virtualization, which virtualizes the front end, whereas Server Virtualization virtualizes the back end. Now, Application Streaming refers to delivering applications directly onto the desktop and running them locally. Traditionally in [[terminal server]] computing, the applications are running on the server, not locally, and streaming the screenshots onto the desktop.
 
==== Application virtualization ====
[[Application virtualization]] solutions such as [[VMware ThinApp]], Softricity, and Trigence attempt to separate application-specific files and settings from the host operating system, thus allowing them to run in more-or-less isolated sandboxes without installation and without the memory and disk overhead of full machine virtualization. Application virtualization is tightly tied to the host OS and thus does not translate to other operating systems or hardware. VMware ThinApp and Softricity are Intel Windows centric, while Trigence supports Linux and Solaris. Unlike machine virtualization, Application virtualization does not use code emulation or translation so CPU-related benchmarks run with no changes, though filesystem benchmarks may experience some performance degradation. On Windows, VMware ThinApp and Softricity essentially work by intercepting filesystem and registry requests by an application and redirecting those requests to a preinstalled isolated sandbox, thus allowing the application to run without installation or changes to the local PC. Though VMware ThinApp and Softricity both began independent development around 1998, behind the scenes VMware ThinApp and Softricity are implemented using different techniques:
* VMware ThinApp works by packaging an application into a single "packaged" EXE which includes the runtime plus the application data files and registry. VMware ThinApp's runtime is loaded by Windows as a normal Windows application, from there the runtime replaces the Windows loader, filesystem, and registry for the target application and presents a merged image of the host PC as if the application had been previously installed. VMware ThinApp replaces all related API functions for the host application, for example the ReadFile API supplied to the application must pass through VMware ThinApp before it reaches the operating system. If the application is reading a virtual file, VMware ThinApp handles the request itself otherwise the request will be passed on to the operating system. Because VMware ThinApp is implemented in user-mode without device drivers and it does not have a client that is preinstalled, applications can run directly from USB Flash or network shares without previously needing elevated security privileges.
* Softricity (acquired by Microsoft) operates on a similar principle using device drivers to intercept file requests in ring0 at a level closer to the operating system. Softricity installs a client in Administrator mode which can then be accessed by restricted users on the machine. An advantage of virtualizing at the kernel level is the Windows Loader (responsible for loading [[.exe|EXE]] and [[Dynamic-link library|DLL]] files) does not need to be re-implemented and greater application compatibility can be achieved with less work (Softricity claims to support most major applications). A disadvantage of ring0 implementation is that it requires elevated security privileges to be installed and crashes or security defects can occur system-wide rather than being isolated to a specific application.
Because Application Virtualization runs all application code natively, it can only provide security guarantees as strong as the host OS is able to provide. Unlike full machine virtualization, Application virtualization solutions currently do not work with device drivers and other code that runs at [[Protection ring|ring0]] such as virus scanners. These special applications must be installed normally on the host PC to function.
 
==== Managed runtimes ====
 
* The first [[Mainline Linux|Linux kernel mainline]] featuring [[cgroups]] (developed by [[Google]] since 2006) is released, laying a foundation for later technologies like [[LXC]], [[Docker (software)|Docker]], [[Systemd#Core components and libraries|Systemd-nspawn]] and [[Podman]].
Another technique sometimes referred to as virtualization, is portable byte code execution using a standard portable native runtime (aka Managed Runtimes). The two most popular solutions today include [[Java (programming language)|Java]] and [[.NET Framework|.NET]]. These solutions both use a process called [[Just-in-time compilation|JIT]] (Just in time) compilation to translate code from a virtual portable [[Machine Language]] into the local processor's native code. This allows applications to be compiled for a single architecture and then run on many different machines. Beyond machine portable applications, an additional advantage to this technique includes strong security guarantees. Because all native application code is generated by the controlling environment, it can be checked for correctness (possible security exploits) prior to execution. Programs must be originally designed for the environment in question or manually rewritten and recompiled to work for these new environments. For example, one cannot automatically convert or run a Windows / Linux native app on .NET or Java. Because portable runtimes try to present a common [[API]] for applications for a wide variety of hardware, applications are less able to take advantage of OS-specific features. Portable application environments also have higher memory and CPU overheads than optimized native applications, but these overheads are much smaller compared with [[full machine virtualization]]. Portable Byte Code environments such as Java have become very popular on the server where a wide variety of hardware exists and the set of OS-specific APIs required is standard across most Unix and Windows flavors. Another popular feature among managed runtimes is garbage collection, which automatically detects unused data in memory and reclaims the memory without the developer having to explicitly invoke "free" operations.
*[http://www.vmware.com/company/news/releases/thinstall.html January 15, 2008] VMware, Inc. announces it has entered into a definitive agreement to acquire Thinstall, a privately held [[application virtualization]] software company.
* [http://www.sun.com/aboutsun/pr/2008-02/sunflash.20080212.1.xml February 12, 2008] [[Sun Microsystems]] announces that it had entered into a stock purchase agreement to acquire InnoTek, makers of [[VirtualBox]].
* April: [[VMware]] releases [[VMware Workstation]] 6.5 beta, the first program for Windows and Linux to enable DirectX 9 accelerated graphics on Windows XP guests [http://www.vmware.com/products/beta/ws/releasenotes_ws65_beta.html].
* August 6: LXC, an OS-level virtualization method for Linux, is released.
 
=== 2010s ===
==== Neutral view of application virtualization ====
;2011
Given the industry bias of the past, to be more neutral, there are also two other ways to look at the Application Level:
* The first stable version of QEMU is released.<ref>{{cite web |title=QEMU 1.0 released [LWN.net] |date=December 2, 2011 |website=[[LWN.net]] |url=https://lwn.net/Articles/470341 |accessdate=July 23, 2024}}</ref>
* The first type is application packagers (VMware ThinApp, Softricity) whereas the other is application compilers (Java and .NET). Because it is a packager, it can be used to stream applications without modifying the source code, whereas the latter can only be used to compile the source code.
* Another way to look at it is from the [[Hypervisor]] point of view. The first one is "hypervisor" in user mode, whereas the other is "hypervisor" in runtime mode. The hypervisor was put in quotation, because both of them have similar behavior in that they intercept system calls in a different mode: user mode; and runtime mode. The user mode intercepts the system calls from the runtime mode before going to kernel mode. The real hypervisor only needs to intercept the system call using hypercall in kernel mode. Hopefully, once Windows has a [[Hypervisor]], [[Virtual machine monitor]], there may even be no need for [[Java Runtime Environment|JRE]] and CLR. Moreover, in the case of Linux, maybe the JRE can be modified to run on top of the Hypervisor as a [[loadable kernel module]] running in [[Linux kernel|kernel]] mode, instead of having slow legacy runtime in user mode. Now, if it were running on top of the [[Linux Hypervisor]] directly, then it should be called [[Java OS]], not just another runtime mode [[Just-in-time compilation|JIT]].
* [[Mendel Rosenblum]]<ref>[http://acmqueue.com/modules.php?name=Content&pa=showpage&pid=168 The Reincarnation of Virtual Machines] {{Webarchive|url=https://web.archive.org/web/20040815054433/http://acmqueue.com/modules.php?name=Content&pa=showpage&pid=168 |date=August 15, 2004 }} ACM Queue vol. 2, no. 5 – July/August 2004 – by Mendel Rosenblum, Stanford University and VMWare</ref> called the runtime mode a High-level language virtual machine in August 2004. However, at that time, the first type, intercepting system calls in user mode, was irresponsible and unthinkable, so he didn't mention it in his article. Hence, [[Application Streaming]] was still mysterious in 2004.<ref>[http://www.zdnetasia.com/insight/software/0,39044822,39175522,00.htm Application streaming anyone?]{{Webarchive|url=https://web.archive.org/web/20070928020251/http://www.zdnetasia.com/insight/software/0,39044822,39175522,00.htm |date=September 28, 2007}}
By Brien M. Posey MCSE, Special to ZDNet Asia Wednesday, 14 April 2004 03:55&nbsp;pm.</ref> Now, when the [[JVM]], no longer High-level language virtual machines, becomes [[Java OS]] running on [[Linux Hypervisor]], then Java Applications will have a new level of playing field, just as Windows Applications already has with [[Softricity]].
* In summary, the first one is virtualizing the [[Binary Code]] so that it can be installed once and run anywhere, whereas the other is virtualizing the [[source code]] using [[Byte code]] or [[Managed code]] so that it can be written once and run anywhere. Both of them are actually partial solutions to the twin portability problems of: application portability; and source code portability. Maybe it is time to combine the two problems into one complete solution at the [[hypervisor]] level in the [[Kernel (operating system)|kernel]] mode.
 
;2013
==== Further development ====
 
* [[Docker, Inc.]] releases [[Docker (software)|Docker]], a series of [[platform as a service]] (PaaS) products that use [[OS-level virtualization]].
[[Microsoft]] bought [[Softricity]] on July 17, 2006, and popularized [[Application Streaming]], giving traditional Windows applications a level playing field with Web and Java applications with respect to the ease of distribution (i.e. no more setup required, just click and run). Soon every [[Java Runtime Environment|JRE]] and [[Common Language Runtime|CLR]] can run virtually in user mode, without kernel mode drivers being installed, such that there can even be multiple versions of JRE and [[Common Language Runtime|CLR]] running concurrently in RAM.
 
;2014
The integration of the [[Linux Hypervisor]] into the [[Linux Kernel]] and that of the [[Windows Hypervisor]] into the [[Architecture of Windows NT|Windows Kernel]] may make [[rootkit]] techniques such as the [[filter driver]]<ref>[http://www.microsoft.com/whdc/driver/filterdrv/default.mspx File System Filter Driver]</ref> obsolete{{Failed verification|date=August 2010}}.
This may take a while as the Linux Hypervisor is still waiting for the Xen [[Hypervisor]] and VMware [[Hypervisor]] to be fully compatible with each other as [[Oracle Corporation|Oracle]] impatiently pounding at the door to let the Hypervisor come into the Linux Kernel so that it can full steam ahead with its [[Grid Computing]] life. Meanwhile, [[Microsoft]] have decided to be fully compatible with the Xen [[Hypervisor]]
[https://archive.today/20130122140138/http://www.eweek.com/article2/0,1895,1990366,00.asp]. IBM, of course, doesn't just sit idle as it is working with VMware for the x86 servers, and possibly helping Xen to move from x86 into [[Power ISA]] using the open source [[rHype]].
Now, to make the [[Hypervisor]] party into a full house, [[Intel VT-x]] and [[AMD-V]] are hoping to ease and speed up para-virtualization so that a guest OS can be run unmodified. {{Update after|2010|11|13}} {{Clarify|date=August 2010}}
 
* The first public build of [[Kubernetes]] is released on September 8, 2014.<ref>{{cite web |title=Release Kubernetes v0.2 |website=[[GitHub]] |url=https://github.com/kubernetes/kubernetes/commit/a0abb3815755d6a77eed2d07bb0aa7d255e4e769}}</ref> When Kubernetes debuted, it offered a number of advantages over Docker, the most popular containerization platform at the time. The purpose of Kubernetes was to make it simple for users to deploy containerized applications across a sizable cluster of container hosts. In order to offer more features and functionality for managing containerized applications at scale, Kubernetes was created to complement Docker rather than to completely replace it.<ref>{{cite web |title=Red Hat and Google collaborate on Kubernetes to manage Docker containers at scale |url=https://www.redhat.com/en/blog/red-hat-and-google-collaborate-kubernetes-manage-docker-containers-scale |publisher=Red hat}}</ref><ref>{{cite web |last1=Buhr |first1=Martin |title=Everything you wanted to know about Kubernetes but were afraid to ask |url=https://cloudplatform.googleblog.com/2015/01/everything-you-wanted-to-know-about-Kubernetes-but-were-afraid-to-ask.html |access-date=22 December 2022 |publisher=Google}}</ref>
== See also ==
* [[Comparison of platform virtualization software]]
* [[Comparison of application virtualization software]]
* [[Emulator]]
* [[Hypervisor]]
* [[IBM SAN Volume Controller]]
* [[OS-level virtualization]]
* [[Physical-to-Virtual]]
* [[Virtual tape library]]
* [[x86 virtualization]]
 
== References ==
Line 214 ⟶ 174:
*[https://web.archive.org/web/20070927033011/http://networkcomputing.com/article/printFullArticle.jhtml;jsessionid=UIMHZ2V1NMPRKQSNDLRSKHSCJUNN2JVN?articleID=192202544 Application Virtualization: Streamlining Distribution] August 31, 2006—By James Drews
* [http://www.microsoft.com/whdc/system/platform/virtual/default.mspx Windows Virtualization] from Microsoft
* [http://www.vmware.com/pdf/virtualization.pdf#search=%22hypervisor%20VMware%20virtualization%20layer%22 Virtualization Overview] {{Webarchive|url=https://web.archive.org/web/20160303230354/http://www.vmware.com/pdf/virtualization.pdf#search=%22hypervisor%20VMware%20virtualization%20layer%22 |date=March 3, 2016 }} from VMware
* [http://www.kernelthread.com/publications/virtualization/ An introduction to Virtualization] {{Webarchive|url=https://web.archive.org/web/20200504153848/http://www.kernelthread.com/publications/virtualization/ |date=May 4, 2020 }}
* [https://web.archive.org/web/20060504192215/http://rentzsch.com/notes/virtualizationAsAnAntivirus Weblog post] on the how virtualization can be used to implement [[Mandatory Access Control]].
Line 224 ⟶ 184:
{{Timelines of computing}}
 
[[Category:TechnologyComputing timelines|Virtualization]]
[[Category:Virtualization]]