Distributed Application Specification Language

Last updated

The DASL Programming Language (Distributed Application Specification Language) is a high-level, strongly typed programming language originally developed at Sun Microsystems Laboratories between 1999 and 2003 as part of the Ace Project. The goals of the project were to enable rapid development of web-based applications based on Sun's J2EE architecture, and to eliminate the steep learning curve of platform-specific details.

Contents

DASL defines an application as a domain model with one or more logical presentation models, where a logical presentation model consists of a choreography of the domain model objects described in a set of forms with attached actions. DASL generates the graphical user interface directly from the logical presentation.

DASL is unique among modern application programming languages in its ability to generate a modern graphic user interface for an application without requiring the programmer to define the user interface explicitly, while allowing the programmer to control the look and feel of the generated graphic user interface.

The DASL language is partially declarative and partially procedural. Description of object/data structures and persistence, and the description of the logical presentation, are declarative. Basic object constraints and behavior are declarative, while additional object behaviors are specified procedurally as methods. Queries can be defined either declaratively or by writing methods.

The language and development environment are a practical realization of the model-driven architecture (MDA) approach. The programmer uses DASL to produce the platform-independent model or PIM, and the language code generators automatically produce and deploy the platform-specific model or PSM. New PSMs may be introduced by writing new code generators.

Benefits of the approach

A key benefit of the DASL language approach over 3rd generation (3GL) programming languages is that enterprise applications can be specified in a very concise and precise way that expresses the application logic clearly. 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. The 200K line figure is typical of equivalent applications written using 3GLs.

The conciseness of DASL can be seen also in terms of the content of the two representations (DASL vs. the generated application code in Java/XML/SQL etc.). Most of the DASL code describes business logic and business processes specific to the application, independent of the deployment middleware, frameworks, and presentation mechanisms. This core business logic typically represents only 2-5% of the generated application code. Thus, writing, understanding, and maintaining the application code is much easier at the DASL level than it is at the level of the generated code, in which the business logic is scattered within various implementation artifacts.

Another advantage of using DASL to write applications, rather than conventional 3rd generation languages and IDEs is that the DASL code is independent of middleware, GUI presentation frameworks, network topology, and other implementation technologies. As new middleware and frameworks are developed and evolve, existing DASL programs can be migrated to them without the need to re-implement them.

For example, the original DASL code generators produced traditional HTML screens. Later, DASL code generators were written to use frameworks such as Apache Struts, and technologies such as JavaScript in the browser, to produce a more interactive experience. Today, new DASL generators being written that produce rich web applications. Existing DASL applications can thus be converted to rich web applications by recompiling them with the latest code generators.

Language traits

DASL combines a declarative syntax with a Java-like procedural syntax. The declarative part of the language enables defining applications at a higher level of abstraction than 3rd generation languages such as Java. In DASL, the programmer does not describe inter-process communication between client processes, web servers, application servers, databases, or details of the user interface of the desired application. Rather, the programmer describes the application as a set of related domain objects (including their behavior), and as a set of forms and actions annotated with basic layout properties.

In contrast to highly specialized DSLs, DASL is Turing-complete. The behavior of domain objects can be expressed using a combination of declarative and procedural syntax. For example, constraints on objects and object attributes are expressed declaratively, but the constraint itself can be defined either as a declarative expression or procedurally.

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 forms and actions.

The DASL programmer models the graphical user interface of the application by annotating the logical AUS forms and actions with properties that describe the basic layout of the data on the page. Rather than user interface considerations dominating the application specification, in DASL the logical interaction between the user and domain model is central, and the user interface is derived from the logical interaction. It is believed that DASL is unique among other languages in this respect.

Full language description

The DASL language is described in a published Sun Labs technical report called The DASL Language: Programmer's Guide and Reference Manual. This technical report is also available as part of the ACM Digital Library as http://dl.acm.org/citation.cfm?id=1698172&dl=ACM&coll=DL&CFID=800729170&CFTOKEN=37871889

Inside Sun Microsystems

Around 1999, two Sun researchers, Bruce Daniels and Bob Goldberg, started a research project in Sun Labs called the 'Ace Project', with the goal of simplifying the creation of Java web-based enterprise applications. The Ace language, now known as DASL, was developed by Goldberg, Daniels, and several other colleagues as part of this project.

The Ace project and language were featured in an article that appeared in June, 2002 on Sun's website, as well as in the January 2003 edition of Computing Research News entitled Sun Microsystems Laboratories: License to Innovate.

'Project Ace', the Ace DASL development environment, was demonstrated by Bruce Daniels as part of James Gosling's keynote address at the JavaONE conference in March, 2002.

On the business side of Sun Microsystems, the DASL language was used to implement the public interface to the Sun Grid Compute Utility, known as the GridPortal.

Outside Sun Microsystems

Although Sun Microsystems did not release a commercial implementation of the DASL language, it has in the past made the technology available to selected partners and conducted trials using the technology. DASL is referenced on the Association for Computing Machinery Portal, including a paper presented at the OOPSLA 2004 Conference, in papers on Model-Driven Software Development, and on the Sun/Oracle website describing Project Ace. A demonstration of Ace DASL was given as part of James Gosling's keynote address at the 2004 Java One Conference.

Continued Development outside of Sun Microsystems

Research and development on the DASL language continued at RD3 Software between 2006 and 2010. The RD3 language enhancements and code generators for DASL have made the language extensible and have broadened the scope of the language from dynamic HTTP-style web applications to rich web applications. In addition to producing HTML front ends, DASL code generators were created to produce Adobe Flex (Flash) front ends. With modest resources, HTML5 could easily be generated, as well as iPhone- and Android-specific implementations.

The language has been extended so it can define dynamic websites and domain-specific web portals that include cloud applications. For example, the RD3 website was implemented a DASL "program".

The RD3 DASL language supports the concept of forms and nested forms as part of the logical presentation. Information and actions can be logically grouped, and the user interface can be controlled using annotations. Presentation and navigation of recursive relationships, such as organization charts and family trees, has been added to the language.

The DASL language has been made extensible. A third party programmer can write a code generator plugin in Java targeted to a specific DASL object class or form, allowing that object or form to be presented using a custom widget. Customized widgets may do computation within the user's browser, so the application presentation produced by DASL is now Turing complete.

DASL is unique among modern application programming languages in its ability to generate a modern graphic user interface for an application without requiring the programmer to define the user interface explicitly. Using simple annotations, the programmer can modify the user interface that is produced by DASL. Using code generator plugins, the programmer can extend DASL to generate a specific desired user interface.

Related Research Articles

In object-oriented programming, a class is an extensible program-code-template for creating objects, providing initial values for state and implementations of behavior. In many languages, the class name is used as the name for the class, the name for the default constructor of the class, and as the type of objects generated by instantiating the class; these distinct concepts are easily conflated. Although, to the point of conflation, one could argue that is a feature inherent in a language because of its polymorphic nature and why these languages are so powerful, dynamic and adaptable for use compared to languages without polymorphism present. Thus they can model dynamic systems more easily.

A fourth-generation programming language (4GL) is any computer programming language that belongs to a class of languages envisioned as an advancement upon third-generation programming languages (3GL). Each of the programming language generations aims to provide a higher level of abstraction of the internal computer hardware details, making the language more programmer-friendly, powerful, and versatile. While the definition of 4GL has changed over time, it can be typified by operating more with large collections of information at once rather than focusing on just bits and bytes. Languages claimed to be 4GL may include support for database management, report generation, mathematical optimization, GUI development, or web development. Some researchers state that 4GLs are a subset of domain-specific languages.

Java (programming language) Object-oriented programming language

Java is a class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let application developers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages. As of 2019, Java was one of the most popular programming languages in use according to GitHub, particularly for client-server web applications, with a reported 9 million developers.

The Common Object Request Broker Architecture (CORBA) is a standard defined by the Object Management Group (OMG) designed to facilitate the communication of systems that are deployed on diverse platforms. CORBA enables collaboration between systems on different operating systems, programming languages, and computing hardware. CORBA uses an object-oriented model although the systems that use the CORBA do not have to be object-oriented. CORBA is an example of the distributed object paradigm.

In software engineering and computer science, abstraction is:

Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms.

In computer science, declarative programming is a programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic of a computation without describing its control flow.

Web application Application that uses a web browser as a client

A web application is application software that runs on a web server, unlike computer-based software programs that are run locally on the operating system (OS) of the device. Web applications are accessed by the user through a web browser with an active network connection. These applications are programmed using a client–server modeled structure—the user ("client") is provided services through an off-site server that is hosted by a third-party. Examples of commonly-used web applications include: web-mail, online retail sales, online banking, and online auctions.

A navigational database is a type of database in which records or objects are found primarily by following references from other objects. The term was popularized by the title of Charles Bachman's 1973 Turing Award paper, The Programmer as Navigator. This paper emphasized the fact that the new disk-based database systems allowed the programmer to choose arbitrary navigational routes following relationships from record to record, contrasting this with the constraints of earlier magnetic-tape and punched card systems where data access was strictly sequential.

Extensible Application Markup Language is a declarative XML-based language developed by Microsoft that is used for initializing structured values and objects. It is available under Microsoft's Open Specification Promise. The acronym originally stood for Extensible Avalon Markup Language, Avalon being the code-name for Windows Presentation Foundation (WPF).

This article compares two programming languages: C# with Java. While the focus of this article is mainly the languages and their features, such a comparison will necessarily also consider some features of platforms and libraries. For a more detailed comparison of the platforms, please see Comparison of the Java and .NET platforms.

The object–relational impedance mismatch is a set of conceptual and technical difficulties that are often encountered when a relational database management system (RDBMS) is being served by an application program written in an object-oriented programming language or style, particularly because objects or class definitions must be mapped to database tables defined by a relational schema.

Domain-driven design (DDD) is the concept that the structure and language of software code should match the business domain. For example, if a software processes loan applications, it might have classes such as LoanApplication and Customer, and methods such as AcceptOffer and Withdraw.

Model–view–presenter

Model–view–presenter (MVP) is a derivation of the model–view–controller (MVC) architectural pattern, and is used mostly for building user interfaces.

ABNT NBR 15606

ABNT NBR 15606 refers to a collection of technical standards that govern the transmission of digital terrestrial television in Brazil.

Model–view–viewmodel (MVVM) is a software architectural pattern that facilitates the separation of the development of the graphical user interface – be it via a markup language or GUI code – from the development of the business logic or back-end logic so that the view is not dependent on any specific model platform. The view model of MVVM is a value converter, meaning the view model is responsible for exposing (converting) the data objects from the model in such a way that objects are easily managed and presented. In this respect, the view model is more model than view, and handles most if not all of the view's display logic. The view model may implement a mediator pattern, organizing access to the back-end logic around the set of use cases supported by the view.

Anapplication programming interface (API) is a computing interface that defines interactions between multiple software applications or mixed hardware-software intermediaries. It defines the kinds of calls or requests that can be made, how to make them, the data formats that should be used, the conventions to follow, etc. It can also provide extension mechanisms so that users can extend existing functionality in various ways and to varying degrees. An API can be entirely custom, specific to a component, or designed based on an industry-standard to ensure interoperability. Through information hiding, APIs enable modular programming, allowing users to use the interface independently of the implementation.

MARIA is a universal, declarative, multiple abstraction level, XML-based user interface markup language for modelling interactive applications in ubiquitous environments.