Starts here. To clarify what this article is all about, let me first explain the purpose of this application. This app is just one big text processor. Whenever an external content arrives in the system, it is processed with different algorithms in order to find some artifacts and other processing. These algorithms are written by analysts using processing DSL and it’s just a Groovy script. Also, this is just like a regular application that needs implementation, support, debug, etc. So, we needed something like a lightweight web IDE which supports DSL for the challenges outlined above.
It’s a very common situation when an application needs some runtime customization, but it’s impossible via settings and you are too lazy to change source code, or you just cannot update your application too often. In that case you may use different script engines in order to change application behavior in runtime. Moreover, the developer doesn’t have to do changes themself. It may be the duty of administrators, analysts, etc
So, I want to describe the way of one java application, from the simplest script engine up to engines with secured sandboxes.
There are many articles and books about good API design. But more often we connect to external systems via API, not developing.
I divide programming interfaces into two big sets – public and not so public. The first category – APIs of big companies like Facebook, Twitter, Paypal, etc. Generally, this kind of API is stable, developer-friendly and well-designed. The second category is APIs of small or middle-sized companies, state services and internal applications in big companies. This article will focus on the second set.