Complete Separation of the 3 Tiers - Divide and Conquer
  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. 
Victor Sadikov and Walter Pidkameny
cs.SE cs.PL