Is WebAssembly a language?
No, WebAssembly is not a new programming language. It is a new browser technology made up of two core components that enables web developers to create interactive page content in a variety of compiled programming languages.
The first component of the WebAssembly technology is the bytecode specification. Any high-level programming language that compiles source code in adherence to this specification is said to be able to produce WebAssembly modules. Hence, one does not code in WebAssembly, one codes in a language that is capable of compiling to WebAssembly bytecode.
The second component that makes up WebAssembly as a technology is the virtual machine. It is the role of the virtual machine to execute the bytecode - produced by the high-level language compiler - in a WebAssembly module.
Together, the bytecode specification and the virtual machine make up the WebAssembly technology.
Is WebAssembly bytecode a language?
No, WebAssembly bytecode is binary, non-human readable amalgamation of the instructions inside a WebAssembly module. Bytecode output by high-level programming language compilers. While you could in theory write binary bytecode and argue that bytecode is a language, it's definitely not common practice.
Is WebAssembly bytecode similar to .Net MSIL and Java bytecode?
WebAssembly bytecode shares similarities with .Net MSIL and Java bytecode in that: - It requires a virtual machine to run - It is crafted to the specifications that the virtual machine expects - It can run wherever the virtual machine is present
So yes, WebAssembly is quite similar to .Net and Java bytecode
Can all programming language compilers output WebAssembly modules?
Not generally. In order for a high-level programming language compiler to output WebAssembly modules support must be added by the compiler writers. Support for WebAssembly is constantly growing allowing developers to use a variety of languages to compile WebAssembly modules.