PL EN


Preferencje help
Widoczny [Schowaj] Abstrakt
Liczba wyników
Tytuł artykułu

Extensible, fast and secure scala expression evaluation engine

Autorzy
Treść / Zawartość
Identyfikatory
Warianty tytułu
Języki publikacji
EN
Abstrakty
EN
Scripting and expression evaluation engines are popular tools in the Java software ecosystem which is understood as any environment using Java Virtual Machine (JVM) to execute code (which does not have to be generated from Java language). With the current, wide-spread popularity of Java and Java byte code compliant languages it means that both: traditional, stand-alone Java programs as well as enterprise systems run on application servers or even systems deployed in microservices architecture can be considered. Expression evaluation engines are often used for purposes like defining document templates, enhancing various static configuration formats with dynamically evaluated snippets or defining data binding for user interfaces. However, most of these solutions employ dynamically typed languages and suffer from limited performance and lack of any concern for security. This effectively makes it impossible to use expression language as a feature exposed to end users. This paper presents a new approach to implementing an expression engine. It uses Scala as the expression language and leverages its static type system as well as its rich feature set to create an expression evaluation engine with expressive and concise language, high evaluation performance and fine grained security control. In the paper we present use case built for the domain of telecommunication networks. In large telecommunication networks one can find hundreds of devices for which configuration has to be updated either periodically or on-demand when a given event occurs. Contents of configuration files may have to be generated dynamically (based on some data associated with a given device). On top of that, since communicatinon networks are heterogeneous environments with hardware delivered by different providers, exact form of each config file may vary depending on a type of a device and its manufacturer. Moreover, as structure and size of telecommunication networks evolve as new devices are added, there is a need to dynamically and remotely support completely new types of devices with a completely new format of configuration. This paper presents how the problem can be solved by using configuration file templates with placeholders that would be filled by some data associated with a given device. Each template is an expression that evaluates to exact configuration file. Performance is crucial (due to size of network) and so is security: the solution should allow to control what kind of configuration and by whom may be applied to devices while still allowing network operators to use a Graphical User Interface to define (or redefine) configuration file templates.
Słowa kluczowe
Twórcy
autor
  • AGH University of Science and Technology, al. Mickiewicza 30, 30-059 Krakow, Poland
autor
  • AGH University of Science and Technology, al. Mickiewicza 30, 30-059 Krakow, Poland
Bibliografia
  • [1] Java Unified Expression Language. http://juel.sourceforge.net/juel.pdf access: September 2014.
  • [2] R. Johnson et al. Spring Framework Reference Documentation, 3.2.4.RELEASE, 2013.
  • [3] MVFLEX Expression Language. http://mvel.codehaus.org/access: September 2014.
  • [4] K.M. Chung JavaServer Pages™Specification Version 2.3, Maintenace Release 3. May 2013.
  • [5] M. Grogan JSR-223 – Scripting for the Java Platform.Final Draft Speciϔication, version 1.0. Sun Microsystems, 2006.
  • [6] E. Burns JavaServer™Faces Specification, Version 2.2. Oracle America, Inc, March 2006.
  • [7] J. Gosling et al. The Java®Language Specification,Java SE 7 Edition Oracle America, Inc, February 2013.
  • [8] M. Odersky Scala Language Specification, Version 2.8. Programming Methods Laboratory, EPFL, September 2013.
  • [9] The Groovy programming language http://groovy.codehaus.org/access: September 2014.
  • [10] Groovy - Safe Navigation Operator http://groovy.codehaus.org/Operators #Operators-SafeNavigationOperator %28?.%29 access: September 2014.
  • [11] Groovy - Elvis Operator http://groovy.codehaus.org/Operators #Operators-ElvisOperator%28?:%29 access: September 2014.
  • [12] M. Odersky Scala by Example Programming Methods Laboratory, EPFL, June 2014.
  • [13] M. Odersky, L. Spoon, B. Venners Programming in Scala: a comprehensive step-by-step guide, 1st edition. Artima Press, 2008.
  • [14] Overview of Scala Compiler Phases https://wiki.scala-lang.org/display/SIW/Overview+of+Compiler+Phases access: September 2014.
  • [15] Scala Reϔlection API: Symbols, Trees and Types http://docs.scala-lang.org/overviews /reflection/reflection/symbols-trees-types.html access: September 2014.
  • [16] E. Burmako, M. Odersky Scala Macros, a Technical Report. Ecole Polytechnique Fédérale de Lausanne (EPFL), July 2012.
  • [17] Y. Coppel Reflecting Scala. Laboratory for programming methods, EPFL, January 2008.
  • [18] E. Burmako Scala Macros: Let Our Powers Combine! EPFL, July 2013.
  • [19] J. Cooper, S. McKeever A model-driven approach to automatic conversion of physical units Software:Practice and Experience, vol. 38, no 4, 10 April 2008, 337–-359. DOI: 10.1002/spe.828.
  • [20] P. Kilpelainen Using XQuery for problem solving Software: Practice and Experience, vol. 42, no.12, December 2012, 1433–-1465. DOI: 10.1002/spe.1140.
  • [21] V. Karakoidas, D. Spinellis FIRE/J—optimizing regular expression searches with generative programming Software: Practice and Experience, vol. 38, no. 6, May 2008, 557–-573. DOI:10.1002/spe.841.
  • [22] J. H. M. De Vet A practical algorithm for evaluating database queries Software: Practice and Experience, vol. 19, no. 5, , October 2006, 491–-504.DOI: 10.1002/spe.4380190505.
  • [23] C. Hoffman, M. O’donnell, R. Strandth Implementation of an interpreter for abstract equations Software: Practice and Experience, vol.15, no. 12, October 2006, 1185–-1204. DOI: 10.1002/spe.4380151205.
  • [24] C. Hassan, Z. DeVito, A. Moors, T. Rompf, A. Sujeeth, P. Hanrahan, M. Odersky, K. Olukotun,”Language Virtualization for Heterogeneous Parallel Computing”. In: Proceedings of the ACM international conference on Object oriented programming systems languages and applications, 2010, 835–847. DOI:10.1145/1869459.1869527.
  • [25] K. Sujeeth, Arvind, Lee, HyoukJoong, J. Brown, Kevin, et al. OptiML: an implicitly parallel domainspecific language for machine learning. In: Proceedings of the 28th International Conference on Machine Learning, ser. ICML, Pages 609-616,2011.
  • [26] Rompf, Tiark, Amin, Nada, Moors, Adriaan et al. Scala-Virtualized: linguistic reuse for deep embeddings Higher-Order and Symbolic Computation, March 2012, 165–207. DOI:10.1007/s10990-013-9096-9
  • [27] Tiark Rompf, Arvind K. Sujeeth, Kevin J. Brown,HyoukJoong Lee, Hassan Chaϐi, Kunle Olukotun. Surgical precision JIT compilers. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’14). ACM, New York, NY, USA, 41-52., 2014 DOI: 10.1145/2594291.2594316,
  • [28] Yannis Klonatos, Christoph Koch, Tiark Rompf,Hassan Chafi. Building efficient query engines in a high-level language.In: Proc. VLDB Endow. 7, 10 June 2014, 853–864. DOI: 10.14778/2732951.2732959.
  • [29] N. Perez-Diaz, F. Fdez-Riverola, J. Mendez Wirebrush4SPAM a novel framework for improving efficiency on spam filtering services Software: Practice and Experience, vol. 43, no. 11, November 2013, 1299–1318. DOI: 10.1002/spe.2135,
  • [30] G. French, J. Kennaway, A. Day Programs as visual, interactive documents Software: Practice and Experience,Volume 44, Issue 8, pages 911–930, August 2014. DOI: 10.1002/spe.2182,
Uwagi
PL
Opracowanie ze środków MNiSW w ramach umowy 812/P-DUN/2016 na działalność upowszechniającą naukę (zadania 2017).
Typ dokumentu
Bibliografia
Identyfikator YADDA
bwmeta1.element.baztech-06c73cc9-6d81-4fd2-891b-1ef8537f40bb
JavaScript jest wyłączony w Twojej przeglądarce internetowej. Włącz go, a następnie odśwież stronę, aby móc w pełni z niej korzystać.