Intro to the stack
ICON execution environments manage the runtime of contracts on the ICON network. These environments are responsible for handling the execution of transactions, which are the basic functions of ICON to change the state of the blockchain.
The execution environments create an abstraction layer between the three types of operators on ICON: smart contracts, nodes (i.e. machines), and users.
Blockchain-integrated code for maintaining and interacting with data in a trusted, distributed database
Smart contracts are written in supported programming languages and are compiled into bytecode or interpreted and then executed in the proper execution environment.
Once stored on ICON, a smart contract functions as a public interface to some part of an application and it will always run as long as the network is running. Such a service is sometimes referred to as an Application Binary Interface (ABI). A single application may connect to multiple smart contracts, and a smart contract may connect to other smart contracts as well. This concept is referred to as composability.
Developing and using smart contracts are powerful ways to integrate with ICON. You can make the blockchain, an already powerful tool, work in specific and custom ways to experiment with ideas or build a business. You can engage with the various open cryptocurrency communities to aid you to get started or solve problems during the development process, including using the ICON discord and community forum.
An application must connect to an ICON node in order to interact with the blockchain. This allows you to read from the blockchain and send transactions to be written on the blockchain.
It is important to note that, as an open, decentralized network, the blockchain itself is just the nodes working together. They are responsible for keeping copies of the blockchain state and for reaching consensus on new blocks to add to the blockchain.
A developer may want to use these methods over the JSON-RPC API directly because they either prefer to work in a particular language or because they want to have some abstractions away from the often complex message specifications. Such SDK libraries may include functions for simplifying the process of creating transactions, swapping currency types, processing user account information, etc.
If you would like to see an integration for ICON in another programming language, engage with the technical community and see if you can collaborate with some other community members to do so.
The level of the stack that most people will interact with is the end-user applications. These appear as web or mobile applications such as those you use to check the weather or manage your calendar.
This level is often the most accessible for people and requires the simplest types of interactions with a computer in order to do something potentially very complicated.