Hi Jiachuan - Good question. A Corda Node runs within a JVM, and so by extension CorDapps are JVM-based apps (ideally Java or Kotlin). An RPC layer and a services API are exposed for interaction with the Node and CorDapps - but what is at the other end of those calls is up to the application designer. So for example it could be a simple Web front end, or it could be an app server tier as you suggest (such as WebSphere or WebLogic); or it could conceivably be a mobile app, a BPM application, a CICS transaction, etc. - whatever can interface to the Node and receive output from it. So your instinct is correct: it is a very rich and powerful framework for running JVM-based applications that conduct complex distributed transactions, which in turn can be called by other applications or front-ends.