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.