El lenguaje de programación DASL ( lenguaje de especificación de aplicaciones distribuidas) es un lenguaje de programación de alto nivel y fuertemente tipado desarrollado originalmente en Sun Microsystems Laboratories entre 1999 y 2003 como parte del Proyecto Ace . Los objetivos del proyecto eran permitir el desarrollo rápido de aplicaciones basadas en web basadas en la arquitectura J2EE de Sun y eliminar la empinada curva de aprendizaje de los detalles específicos de la plataforma.
DASL define una aplicación como un modelo de dominio con uno o más modelos de presentación lógica , donde un modelo de presentación lógica consiste en una coreografía de los objetos del modelo de dominio descritos en un conjunto de formularios con acciones adjuntas. DASL genera la interfaz gráfica de usuario directamente desde la presentación lógica.
DASL es único entre los lenguajes de programación de aplicaciones modernos en su capacidad de generar una interfaz gráfica de usuario moderna para una aplicación sin requerir que el programador defina la interfaz de usuario explícitamente, mientras permite al programador controlar la apariencia de la interfaz gráfica de usuario generada.
El lenguaje DASL es parcialmente declarativo y parcialmente procedimental. La descripción de las estructuras de objetos / datos y la persistencia, y la descripción de la presentación lógica, son declarativas. Las restricciones y el comportamiento de los objetos básicos son declarativos, mientras que los comportamientos de los objetos adicionales se especifican de forma procedimental como métodos. Las consultas se pueden definir de forma declarativa o mediante métodos de escritura.
El lenguaje y el entorno de desarrollo son una realización práctica del enfoque de arquitectura dirigida por modelos ( MDA ). El programador usa DASL para producir el modelo independiente de la plataforma o PIM, y los generadores de código de lenguaje producen e implementan automáticamente el modelo específico de la plataforma o PSM. Se pueden introducir nuevos PSM escribiendo nuevos generadores de código.
Beneficios del enfoque
Un beneficio clave del enfoque del lenguaje DASL sobre los lenguajes de programación de tercera generación ( 3GL ) es que las aplicaciones empresariales se pueden especificar de una manera muy concisa y precisa que expresa la lógica de la aplicación con claridad. Una aplicación de pequeña empresa en DASL generalmente se puede implementar en 8-10K líneas de código DASL, que el compilador DASL luego traduce generalmente en 200K líneas de Java, XML, SQL y otros artefactos de implementación. La cifra de 200.000 líneas es típica de aplicaciones equivalentes escritas con 3GL.
La concisión de DASL se puede ver también en términos del contenido de las dos representaciones (DASL frente al código de aplicación generado en Java / XML / SQL, etc.). La mayor parte del código DASL describe la lógica empresarial y los procesos empresariales específicos de la aplicación, independientemente del middleware de implementación, los marcos y los mecanismos de presentación. Esta lógica empresarial central generalmente representa solo del 2 al 5% del código de aplicación generado. Por lo tanto, escribir, comprender y mantener el código de la aplicación es mucho más fácil en el nivel DASL que en el nivel del código generado, en el que la lógica empresarial está dispersa dentro de varios artefactos de implementación.
Otra ventaja de usar DASL para escribir aplicaciones, en lugar de lenguajes e IDE convencionales de tercera generación, es que el código DASL es independiente del middleware, los marcos de presentación de GUI, la topología de red y otras tecnologías de implementación. A medida que se desarrollan y evolucionan nuevos middleware y frameworks, los programas DASL existentes se pueden migrar a ellos sin la necesidad de volver a implementarlos.
Por ejemplo, los generadores de código DASL originales produjeron pantallas HTML tradicionales. Más tarde, los generadores de código DASL se escribieron para usar marcos como Apache Struts y tecnologías como JavaScript en el navegador, para producir una experiencia más interactiva. Hoy en día, se están escribiendo nuevos generadores DASL que producen aplicaciones web enriquecidas . De este modo, las aplicaciones DASL existentes se pueden convertir en aplicaciones web enriquecidas recompillándolas con los últimos generadores de código.
Rasgos del lenguaje
DASL combina una sintaxis declarativa con una sintaxis de procedimiento similar a Java. La parte declarativa del lenguaje permite definir aplicaciones a un mayor nivel de abstracción que los lenguajes de tercera generación como Java. En DASL, el programador no describe la comunicación entre procesos entre procesos cliente, servidores web, servidores de aplicaciones, bases de datos o detalles de la interfaz de usuario de la aplicación deseada. Más bien, el programador describe la aplicación como un conjunto de objetos de dominio relacionados (incluido su comportamiento) y como un conjunto de formas y acciones anotadas con propiedades de diseño básicas.
A diferencia de los DSL altamente especializados, DASL es Turing completo . El comportamiento de los objetos de dominio se puede expresar mediante una combinación de sintaxis declarativa y de procedimiento. Por ejemplo, las restricciones sobre objetos y atributos de objeto se expresan de forma declarativa, pero la restricción en sí misma puede definirse como una expresión declarativa o de forma procedimental.
Una aplicación DASL tiene dos componentes principales: una especificación de objeto comercial ( BOS ) que describe el modelo de dominio de objetos, que consta de objetos persistentes y transitorios que representan el dominio de la aplicación, y una especificación de uso de la aplicación ( AUS ) que describe las acciones o casos de uso. que se puede realizar en el modelo de dominio. El AUS es esencialmente la coreografía de los objetos de dominio en una serie de formas y acciones.
El programador DASL modela la interfaz gráfica de usuario de la aplicación anotando los formularios y acciones lógicos de AUS con propiedades que describen el diseño básico de los datos en la página. En lugar de las consideraciones de la interfaz de usuario que dominan la especificación de la aplicación, en DASL la interacción lógica entre el usuario y el modelo de dominio es central, y la interfaz de usuario se deriva de la interacción lógica. Se cree que DASL es único entre otros idiomas a este respecto.
Descripción completa del idioma
El lenguaje DASL se describe en un informe técnico publicado de Sun Labs llamado The DASL Language: Programmer's Guide and Reference Manual . Este informe técnico también está disponible como parte de la Biblioteca digital de ACM como http://dl.acm.org/citation.cfm?id=1698172&dl=ACM&coll=DL&CFID=800729170&CFTOKEN=37871889
Dentro de Sun Microsystems
Alrededor de 1999, dos investigadores de Sun, Bruce Daniels y Bob Goldberg, iniciaron un proyecto de investigación en Sun Labs llamado 'Ace Project' , con el objetivo de simplificar la creación de aplicaciones empresariales Java basadas en la web. El lenguaje Ace, ahora conocido como DASL, fue desarrollado por Goldberg, Daniels y varios otros colegas como parte de este proyecto.
El proyecto y el lenguaje Ace aparecieron en un artículo que apareció en junio de 2002 en el sitio web de Sun , así como en la edición de enero de 2003 de Computing Research News titulado Sun Microsystems Laboratories: License to Innovate .
Bruce Daniels hizo una demostración de 'Project Ace', el entorno de desarrollo Ace DASL, como parte del discurso de apertura de James Gosling en la conferencia JavaONE en marzo de 2002.
En el lado comercial de Sun Microsystems, se utilizó el lenguaje DASL para implementar la interfaz pública de Sun Grid Compute Utility , conocida como GridPortal .
Microsistemas solares externos
Aunque Sun Microsystems no lanzó una implementación comercial del lenguaje DASL, en el pasado puso la tecnología a disposición de socios seleccionados y realizó pruebas utilizando la tecnología. Se hace referencia a DASL en el portal Association for Computing Machinery , incluido un documento presentado en la Conferencia OOPSLA 2004 , en documentos sobre desarrollo de software impulsado por modelos y en el sitio web de Sun / Oracle que describe el Proyecto Ace . Se dio una demostración de Ace DASL como parte del discurso de apertura de James Gosling en la Conferencia Java One de 2004.
Desarrollo continuo fuera de Sun Microsystems
La investigación y el desarrollo en el lenguaje DASL continuaron a RD3 software entre 2006 y 2010. Las mejoras en el idioma RD3 y generadores de código para DASL han hecho el lenguaje extensible y han ampliado el alcance de la lengua de la dinámica HTTP al estilo de aplicaciones web a las aplicaciones web ricas . Además de producir interfaces HTML, se crearon generadores de código DASL para producir interfaces de Adobe Flex (Flash). Con recursos modestos, HTML5 podría generarse fácilmente, así como implementaciones específicas para iPhone y Android.
El lenguaje se ha ampliado para que pueda definir sitios web dinámicos y portales web específicos de dominio que incluyan aplicaciones en la nube . Por ejemplo, el sitio web RD3 se implementó un "programa" DASL.
El lenguaje RD3 DASL admite el concepto de formas y formas anidadas como parte de la presentación lógica. La información y las acciones se pueden agrupar de forma lógica y la interfaz de usuario se puede controlar mediante anotaciones. Se ha agregado al lenguaje la presentación y navegación de relaciones recursivas, como organigramas y árboles genealógicos.
El lenguaje DASL se ha hecho extensible . Un programador externo puede escribir un complemento generador de código en Java dirigido a una clase o formulario de objeto DASL específico , lo que permite que ese objeto o formulario se presente mediante un widget personalizado. Los widgets personalizados pueden realizar cálculos dentro del navegador del usuario, por lo que la presentación de la aplicación producida por DASL ahora está completa.
DASL es único entre los lenguajes de programación de aplicaciones modernos en su capacidad de generar una interfaz gráfica de usuario moderna para una aplicación sin requerir que el programador defina explícitamente la interfaz de usuario. Usando anotaciones simples, el programador puede modificar la interfaz de usuario que es producida por DASL. Usando complementos de generador de código, el programador puede extender DASL para generar una interfaz de usuario deseada específica.