A declarative JVM Language for Automated Validation


nJexl is a derivative of Apache Jexl project [1]. The motivation for nJexl are domain specific languages (DSL) like VERILOG [2], VHDL [3], Spice [4]. DSL for Software testing is not a new idea, many commercial tools like Silk Suite [5] use them,while Selenese, the DSL for Selenium IDE [6] is open source. nJexl is a functionally motivated, embeddable,Turing Complete [7] [8] language. It’s philosophy is to expose the existing Java echo system in a declarative fashion for the purpose of software validation [9]. By design nJexl script size is meagre compared to Python or even to Scala for validation problems. Author’s firm heavily uses nJexl for software automation purpose which drastically reduced the effort for automatic verification for a year now. 1. Introducing nJexl 1.1. Introductory Remarks. Tenet of today is : Churn code out, faster, and with less issues and make end users happy. That is the precise idea behind of Test Driven Development (TDD)[9]. The economy of testing in a fast paced release cycle puts automatic validation into foray. Still, given there are not many people allocated for the testing efforts overall ( some firms actually makes user do their testing ) there is an upper cut-off on what can be accommodated, even through automation. Hence, the idea is Getting More Done, with Less. nJexl sprang out of this idea, a scripting language based on Java Virtual Machine (JVM), embeddable in any other JVM language, concise to write, and declarative by design, so that mathematical logic [11] can be written with almost no modification using nJexl. 1.2. nJexl at a Glance. The syntax of nJexl is heavily influenced by Python[12] and Scala[13]. nJexl is given keywords which are pretty standard across popular languages [14]: (1) Control Flow : if, else, where, for, while, break, continue, return. (2) Logical : and, or, xor, gt, ge, lt, le, eq, not. (3) Definitions : def, var, import, as. (4) Literals : ’string’ , "string" , true, false, null. (5) Object Creation : new. Basic data structures are array, list, set, dict, heap. nJexl is loosely typed, such that types are inferred automatically. Elementary data types are chrono : date, time, instant ; byte, short, int, long, float, double, INT, DEC, range . There are utility functions by default which takes care of type conversions, comparisons, and comprehensions on collections. Most

Extracted Key Phrases

Cite this paper

@article{Mondal2016ADJ, title={A declarative JVM Language for Automated Validation}, author={Nabarun Mondal and Jatin Puri}, journal={CoRR}, year={2016}, volume={abs/1604.05903} }