What's the difference between JavaScript, Solidity, Ethereum and Chaincode?

This is a question someone asked recently. And right so! To the seasoned eye it looks like a mix of different technologies just randomly mixed together. For beginners it's extremely hard to keep these things separate at first.

Let me quickly answer it:

  1. JavaScript is a language that's iterpreted just-in-time. It is most famous for frontend applications and executed in the browser, but also used for backend applications such as NodeJS and Adobe Acrobat.
  2. Solidity is a high level language. It is partly designed after ECMAScript and therefore it is said to be similar to JavaScript. But the similarity ends there. It gets compiled (not interpreted) and usually deployed on Blockchains that understand the Ethereum Virtual Machine (EVM). Once the code is compiled and deployed it is running as Smart Contract and one can interact with it.
  3. Ethereum is usually referred to as the Blockchain following the Ethereum Protocol. The Ethereum Blockchain is a network of nodes generating and exchanging blocks based on a specific protocol, the so called Ethereum Protocol. All nodes in the network must understand this protocol.
  4. Chaincode is similar to Smart Contracts which are written in Solidity. But Chaincode is used on Hyperledger, whereas the term "Smart Contracts" is used on Ethereum.

JavaScript came a long way. It first appeared 1995 together with the Netscape Navigator. Initially it was developed by Brendan Eich and is event-driven, functional, imperative, object-oriented. JavaScript is used by 95.1% of all Websites. Although the name suggests similarities with Java, the differences outweight the similarities so that it's merely a confusing name. The current version is ECMAScript 2018.

Solidity was initially proposed by Gavin Wood in 2014 and then developed by the Ethereum Core Developers. It is object-oriented and used to implement Smart Contracts on various Blockchain platforms.

Ethereum was proposed by Vitalik Buterin in 2013. The Blockchain went live in 2015 and was funded through crowdfunding. The Ethereum Main-Net is a public, open-source platform with scripting functionality via the Ethereum Virtual Machine. Ethereum runs using the Ethereum protocol which can also be used for private or permissioned blockchains alike.

Hyperledger is the umbrella-name for blockchain based tools from the Linux Foundation. Chaincode is used in Hyperledger Fabric, a permissioned blockchain infrastructure targeting larger Enterprises, to produce similar programs like Solidity for Ethereum: Smart Contracts. While the majority of Smart Contracts are written in Solidity, Chaincode can be written in GO and JavaScript.

I hope that sheds some light onto these things. If there is anything you're missing, let me know in the comments!