Draft:Distributed Application Specification Language
DASL (Distributed Application Specification Language) is a high level language that supports MDA (Model Driven Architecture) by providing architecture-independent specification of web-based applications, including business logic and queries. It is a general Domain Specific Language (DSL) for creating Enterprise Applications. The compiler outputs Java, J2EE, JSP, HTML, XML, and other implementation artifacts using a selectable implementation architecture.
DASL was originally developed at Sun Microsystems Labs in the early 2000s as part of the Ace Project [1]. It is a declarative language with a Java-like syntax, but it defines applications at a higher level of abstraction than 3rd generation languages such as Java. In DASL, the programmer does not describe interprocess communication between client processes, web servers, application servers, and databases. Rather, the programmer describes the application as a set of related domain objects and as set of screens and actions. Thus, a DASL application has two primary components: A business object specification (BOS) that describes the object domain model, consisting of persistent and transient objects representing the domain of the application, and an application usage specification (AUS) that describes the actions or use cases that may be performed on the domain model. The AUS is essentially the choreography of the domain objects into a series of screens and actions.
A key benefit of DASL over 3rd generation programming languages is that enterprise applications can be specified in a very concise and precise way. A small enterprise application in DASL can typically be implemented in 8-10K lines of DASL code, which the DASL compiler then typically translates into 200K lines of Java, XML, SQL, and other implementation artifacts. This conciseness can be seen also in terms of the content of the two representations (DASL vs. the generated application code in Java/XML/SQL etc): At least half of the DASL code describes business logic and business processes specific to the application, and independent of the deployment middleware, frameworks, and presentation mechanisms. The business logic typically represents only 2% of the generated lines of code. Thus, writing, understanding, and maintaining the application code is much easier at the DASL level than at the level of the generated code.
Another advantage of DASL over conventional 3rd generation implementations is that the DASL application is independent of middleware, GUI presentation frameworks, network topology, and other implementation choices. As new middleware and frameworks are developed, existing DASL programs can be migrated to them without having to be rewritten. For example, the original DASL code generators produced traditional HTML screens. Later DASL code generators used frameworks such as Struts, and JavaScript in the browser, to produce a more interactive experience. New DASL generators being written today are producing AJAX-based screens [].
The first major version of the DASL language is defined in a Sun Labs technical report which is available online and in published form [2]. Ongoing development of the language outside of Sun Labs is in progress [3][4].