The two paths to low-code
At the heart of low-code is “model-driven development” – visual modeling of applications rather than traditional hand-coding. The advantages of this approach lie in the abstraction away from code, allowing the application developer to focus on the business functionality rather than the technical implementation.
However, there are two fundamentally different architectural approaches towards how the visual model should be made into a running application.
The first approach is code generation, a term that some of us associate with the CASE (Computer-Aided Software Engineering) tools of the ’70s and ’80s. With code generation, the visual model is used to generate executable code. This may be editable source code, or even bytecode, that will then run on a runtime environment, e.g. JVM (Java Virtual Machine) or Microsoft CLR (Common Language Runtime). Vendors of code-generating low-code platforms argue that this code can be modified and maintained outside the vendor platform, but anyone who has tried to maintain computer-generated code will advise against this.
The second approach is metadata execution, where the model is stored as metadata that is directly interpreted and executed by the low-code vendor’s runtime environment (the platform). With this approach, the application can run as soon as the first pieces of the application are visually modeled. Thus, there is no need for compiling the code. Further, the approach speeds up both development, deployment, and testing.
The main advantage of the metadata execution approach lies in the application sustainability it provides. By separating the business functionality from the underlying (technical) platform and runtime environment, these two parts can evolve separately and in harmony. For instance, an update to the business functionality of the application can be made without the need to recompile the application, as this functionality lies in the metadata. Further, the platform can be updated (e.g. a security update or new features) without disrupting the business functionality in the metadata.