Distributed Application Specification Language
# Distributed Application Specification Language

El lenguaje de programación DASL (Distributed Application Specification Language) es un lenguaje de programación de alto nivel, fuertemente tipado, originalmente desarrollado por Sun Microsystems Labs, entre 1999 y 2003 como parte del Proyecto Ace. Los objetivos del proyecto fueron permitir un desarrollo rápido de aplicaciones web basadas en la arquitectura J2EE de Sun, y eliminar la dura curva de aprendizaje específica de los detalles de cada plataforma.

DASL define una aplicación como un modelo de dominio con uno o más modelos de presentación lógicos, donde un modelo de presentación lógica consiste en una coreografía de los objetos de dominio del modelo que se describen en una serie de formas con las 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 por su capacidad para generar una interfaz gráfica de usuario moderna para una aplicación sin requerir al programador para definir la interfaz de usuario de manera explícita, al tiempo que permite al programador controlar la apariencia de la interfaz gráfica de usuario generada.

El lenguaje DASL es parcialmente declarativo y procedimental. La descripción de las estructuras de objetos/datos, la persistencia, y la descripción de la presentación lógica, son declarativas. Las restricciones básicas de objetos y comportamientos son declarativas, mientras que las conductas de objetos adicionales se especifican por procedimientos como métodos. Las consultas se pueden definir mediante declaraciones o mediante métodos de escritura.

DASL es único entre los lenguajes de programación modernos de aplicaciones en su capacidad para generar una interfaz gráfica de usuario moderna para una aplicación sin necesidad del programador para definir la interfaz de usuario de forma explícita. Usando anotaciones simples, el programador puede modificar la interfaz de usuario que es producida por DASL. Usando plugins del generador de código, el programador puede extender DASL para generar una interfaz de usuario específica deseada. El lenguaje y el entorno de desarrollo son una realización práctica de la arquitectura dirigida por modelos (MDA). El programador utiliza DASL para producir el modelo independiente de la plataforma o PIM, y los generadores de código del lenguaje para producir y desplegar el modelo específico de la plataforma o PSM. Nuevos SPMs pueden ser introducidos escribiendo generadores de código nuevos.

## Beneficios del enfoque

Un beneficio clave del enfoque de lenguaje DASL sobre lenguajes de programación de 3ª generación (3GL) es que las aplicaciones empresariales se pueden especificar de una manera muy concisa y precisa que expresa claramente la lógica de la aplicación. Una aplicación de una pequeña empresa en DASL se pueden implementar en 8-10K líneas de código DASL, que el compilador DASL entonces normalmente las traduce en 200K líneas de Java, XML, SQL, y otros artefactos de implementación. La cifra de 200K líneas de código es típica de las aplicaciones escritas usando 3GLs. equivalentes.

La concisión de DASL se puede ver también en términos del contenido de las dos representaciones (DASL vs el código de la aplicación generada en Java/XML/SQL, etc.) La mayoría del código DASL describe la lógica de negocio y procesos de negocio específicos de la aplicación, independientemente de la implementación del middleware, los frameworks y los mecanismos de presentación. Esta lógica de negocio principal representa normalmente sólo 2-5% del código de la aplicación generada. Así, escritura, comprensión, y mantener el código de aplicación es mucho más fácil en el nivel DASL de lo que es en el plano del código generado, en la que se dispersa la lógica de negocio dentro de artefactos de implementación diferentes.

Otra ventaja de usar DASL a escribir aplicaciones, en lugar de lenguajes convencionales de 3 ª generación y los IDE es que el código DASL es independiente del middleware, frameworks de interfaz gráfica de usuario de la presentación, la topología de red, y otras tecnologías de aplicación. Como el nuevo middleware y los frameworks se desarrollan y evolucionan, los programas DASL se pueden migrar a los mismos sin la necesidad de volver a ponerlas en práctica.

Por ejemplo, los generadores de código originales DASL producen pantallas tradicionales en HTML. Más tarde, los generadores de código DASL fueron escritos para utilizar frameworks como Struts de Apache y tecnologías como JavaScript en el navegador, para producir una experiencia más interactiva. Hoy en día, los nuevos generadores DASL se escriben para producir Rich Internet Applications. Las aplicaciones existentes de DASL por lo tanto se puede convertir en aplicaciones de Internet al recompilarlos con los generadores de código más recientes.

## Rasgos del Lenguaje

DASL combina una sintaxis declarativa con una sintaxis similar a Java procedimental. La parte declarativa del lenguaje permite definir aplicaciones a un nivel más alto de abstracción que los lenguajes de tercera generación tales como Java. En DASL, el programador no describe la comunicación entre procesos entre los procesos de 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 (incluyendo su comportamiento), y como un conjunto de formas y acciones anotadas con las propiedades de diseño básicos.

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 por procedimientos. Por ejemplo, las restricciones sobre los objetos y atributos de los objetos se expresan mediante declaraciones, pero la propia restricción se puede definir como una expresión declarativa o procedimental.

Una aplicación DASL tiene dos componentes principales: las especificaciones objeto de negocio (BOS) que describe el modelo de dominio del objeto, que consiste en objetos persistentes y transitorios que representan el dominio de la aplicación, y una especificación de uso de las aplicaciones (AUS), que describe las acciones o casos de uso para 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 las formas lógicas AUS y acciones con propiedades que describen el diseño básico de los datos de la página. En lugar de consideraciones de interfaz de usuario que domina 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 lenguajes de este sentido.

## Descripción completa

El lenguaje DASL se describe en la publicación de un informe técnico de Sun Labs llamado The DASL Language: Programmer's Guide and Reference Manual.

## En Sun Microsystems

Alrededor de 1999, dos investigadores de Sun, Bruce Daniels y Bob Goldberg, iniciaron un proyecto de investigación en los laboratorios de Sun llamado "Ace Project", con el objetivo de simplificar la creación de aplicaciones empresariales en Java basadas en la Web. El lenguaje Ace, ahora conocido como DASL, fue desarrollado por Goldberg, Daniels, y varios colegas como parte de este proyecto.

El proyecto de Ace y el lenguaje fueron presentados en un artículo que apareció en junio de 2002 en el sitio web de Sun, así como en el número de enero de 2003 de Computing Research News titulado Sun Microsystems Laboratories: License to Innovate.

'Project Ace', el entorno de desarrollo de Ace DASL, se mostró por Bruce Daniels como parte del discurso de James Gosling en la conferencia JavaOne en marzo de 2002.

En la parte comercial de Sun Microsystems, el lenguaje DASL se utilizó para implementar la interfaz pública a la Sun Grid Compute Utility, conocido como el GridPortal.

## Fuera de Sun Microsystems

Aunque Sun Microsystems no dio a conocer una aplicación comercial del lenguaje DASL, lo ha hecho en el pasado hizo que la tecnología a disposición de los socios seleccionados y ensayos realizados utilizando la tecnología. DASL se hace referencia a en la Association for Computing Machinery Portal, incluyendo una ponencia presentada en la Conferencia OOPSLA 2004, en documentos sobre Desarrollo de Software Dirigido por Modelos, y en el sitio web de Sun/Oracle describiendo Project Ace. Una demostración de Ace DASL fue dada como parte del discurso de James Gosling en los 2004 Java One Conferencia.

## Desarrollo continuo

La investigación y desarrollo del lenguaje DASL continúa en RD3 Software. Las mejoras del lenguaje RD3 y generadores de código para DASL han hecho el lenguaje extensible y han ampliado el ámbito de aplicación del lenguaje a partir de aplicaciones Web dinámicas de estilo HTTP para Rich Internet Applications.

El lenguaje se ha ampliado para que pueda definir `sitios web dinámicos y específicos de dominio de portales web que incluyen aplicaciones en la nube. Por ejemplo, el sitio web de RD3 es un "programa" DASL.

El lenguaje RD3 DASL apoya el concepto de formularios y formularios anidados como parte de la presentación lógica. La información y las acciones se pueden agrupar lógicamente, y la interfaz de usuario se puede controlar mediante anotaciones. Presentación y navegación de relaciones recursivas, tales como los organigramas y los árboles de familia, se ha añadido al lenguaje.

El lenguaje DASL se ha hecho extensible. Un programador de terceros puede escribir un plugin generador de código en Java orientado a una clase de objeto específico DASL o formulario, permitiendo que ese objeto o formulario que se presenta utilizando un widget personalizado. Widgets personalizados pueden hacer cálculos en el navegador del usuario, por lo que la presentación de la solicitud producida por DASL ahora es Turing completo.

* Datos: Q1150963
