[en] Domain-Specific Languages (DSL) are "small", reduced languages focused on resolving specific tasks of a software system [9]. Some examples of DSLs are Structured Query Languages (SQL), languages to describe user interfaces, math calculus or state machines. Domain-Specific Languages (DSL) have had small presence on Java projects largely due to the lack of a flexible syntax on the Java language to allow the integration of this languages easily. With the release of Java 8 and the introduction of the lambda expressions (also called anonymous functions), which allow passing code fragments as argument, said restrictions are more or less overcome when comes to embed those languages into Java. The purpose of this Bachelor Thesis is to implement a modeling language whose main objective is to help integrating domain specific languages embedded into Java, using both lambda expressions methods and other methods used before the addition of lambda expressions in Java 8, like chaining and nested methods. It is furthermore included a modeling environment with a specific syntax matching other Java elements as well as a code generator meant to synthesize Java classes and interfaces designed with the modeling language and, thereby, being able to integrate it into projects already created. Also it is provided a validator to help with the design of the desired domain specific language. Said validator verifies and validates the language as it implements. Each and every one of the mentioned elements have been developed using Eclipse Modeling Framework and have been integrated on an Eclipse's plugin. To test the modeling language, several domain-specific languages have been designed and also verified the right validation and subsequent Java code generation.

[es] Los lenguajes de dominio específico – Domain-Specific Languages (DSL) son lenguajes "pequeños", reducidos, enfocados a resolver una tarea concreta de un sistema software [9]. Ejemplos de DSL incluyen lenguajes de consultas (SQL), para la descripción de interfaces de usuario, o el cálculo matemático, o las máquinas de estados. Estos LDE han estado poco presentes en proyectos de software en Java, debido en gran medida a que este lenguaje no poseía una sintaxis flexible que permitiera integrar estos lenguajes de manera sencilla. Con la llegada de Java 8 y la introducción de las expresiones lambda (también llamadas funciones anónimas), las cuales permiten pasar como parámetro fragmentos de código, se salvan en mayor o menor medida estas restricciones a la hora de integrar dichos lenguajes en Java. El propósito de este Trabajo de Fin de Grado consiste en la implementación de un lenguaje de modelado cuyo objetivo principal es ayudar a integrar lenguajes de dominio específico embebidos en Java 8, utilizando tanto métodos con expresiones lambda como otros métodos utilizados antes de la introducción de dichas expresiones en Java 8, como métodos encadenados y anidados. Así mismo se incluye un entorno de modelado con una sintaxis concreta concordante con otros elementos de Java, así como un generador de código destinado a sintetizar las clases e interfaces de Java diseñadas con el propio lenguaje de modelado y de esta manera poder integrarlas fácilmente en proyectos ya creados. También se proporciona un validador de cara a ayudar con el diseño del lenguaje de dominio específico que se quiera realizar, el cual comprueba y valida el propio lenguaje según se va implementando. Todos estos elementos se han desarrollado utilizando Eclipse Modeling Framework y se han integrado en un plugin de Eclipse. Para probar el lenguaje de modelado se han diseñado varios lenguajes de dominio específico y se ha comprobado la correcta validación y posterior generación del código Java.