  Most Java applications, including web based ones, follow the 3-tier
architecture. Although Java provides standard tools for tier-to-tier
interfaces, the separation of the tiers is usually not perfect. E.g. the
database interface, JDBC, assumes that SQL statements are issued from the
application server. Similarly, in web based Java applications, HTML code is
assumed to be produced by servlets. In terms of syntax, this turns Java source
code into mixtures of languages: Java and SQL, Java and HTML. These language
mixtures are difficult to read, modify, and maintain.
  In this paper we examine criteria and methods to achieve a good separation of
the 3 tiers and propose a technique to provide a clean separation. Our proposed
technique requires an explicit Interface and Data Definitions. These allow
isolation of the back-end, application server, and front-end development. The
Definitions also enable application design in terms of aggregated data
structures. As a result significant amounts of auxiliary code can be generated
from the Definitions, enabling the developers to concentrate on the business
logic. By and large the proposed approach greatly facilitates development and
maintenance, and overall improves the quality of the products.

Software Engineering;Programming Languages