Comparison to conventional frameworks

Thanks to its declarative programming, a FORWARD application requires just a few lines of SQL code and a few lines of visualization markup, even if it involves fancy Javascript/Ajax components and functionalities. In contrast, developing the same application in a conventional framework will require

  1. many languages (e.g., Java, Javascript to update the page),
  2. many additional lines of "glue" code in order to manually interface between different languages and sub-systems (SQL at the database, Javascript at the browser, Java at the application server), and
  3. many additional lines of Ajax code to manually coordinate page visualizations with the application state.

FORWARD technical cornerstones

Pages as rendered SQL++ views of the application's data

allow you to quickly produce report pages that visualize your database's data featuring Ajax components, such as maps, bar charts and hierarchical trees. All you need to provide is the SQL++ query that produces the page's dynamic data and the markup tags that render the result. For example, you can produce a map as

<% unit google.maps.Maps %>{
  markers : [
    <% for marker in SELECT * FROM db.locations %>
    <% end for %>
}<% end unit %>
FORWARD will automatically and efficiently update the page as the underlying application state changes, without requiring you to implement any JavaScript or Ajax code.

Unified SQL++ access to the entire application state

allows you to write queries that access and combine different data sources, including:

  1. FORWARD's cloud database,
  2. existing databases (hosted on your servers),
  3. the main memory Java objects of the application server (session objects and request objects), and
  4. user input, which comes from forms and other data collecting components of the page.
In combination with FORWARD's PL/SQL support, you can easily implement the entire application with SQL as the primary language, with the possibility of interfacing with Java methods only for building complex algorithms that are best implemented in an imperative language.

Cloud-based infrastructure, including database, application server and IDE

saves you from having to download and install a database server or an application server, thus reducing even further the time needed to create an application. Instead, you can:
  1. Develop your application directly on the online IDE
  2. Deploy the application on the cloud automatically from the IDE.

Research challenges in developing FORWARD

Research challenges include:

  1. Incremental Ajax page maintenance
    • incremental view maintenance is used as an efficient implementation of the page queries
    • Framework needs to adjust to the incremental rendering capabilities of JavaScript components
  2. Resolving data heterogeneities between the logical and visual layers of the application
  3. Query optimization for distributed queries over small main memory sources and a persistent database
  4. Location transparent code development and low latency optimizations for mobile applications

For more details, please refer to our publications.