I was under the impression that the web3 Javascript API was the only API that DApps could use to communicate with an Ethereum node, and that the Ethereum client is implemented in various languages like C++ (cpp-ethereum), Go (go-ethereum) and Java (ethereumj). I interpreted "Ethereum client" as the software that runs on an Ethereum node which could be written in any language but that does not mean that it exposes a public API for applications written in that language to interact with.
Am I mistaken in thinking that the only "official" APIs to interact with an Ethereum node are Web3 (for Javascript apps) and JSON RPC API for applications written in other languages?
Or is it true that a node may run EthereumJ and a Java application running on that node can call Java methods providing Web3-like functionality that EthereumJ provides as an API? For example, org/ethereum/facade/Ethereum.java contains methods like createTransaction
, submitTransaction
, callConstantFunction
etc.
Also, if this is an API that Java applications can invoke, then where is its user documentation?