Skip to main content

Why We Wrote AceQL

Client/server development can be slow, difficult and agonizing

We specialize in developing Android, Swing and JavaFX client/server applications for our customers. We wanted to speed up our coding when accessing the host's SQL data from the client side.

Each new customer request would typically follow this inefficient cycle:
  1. Modify the client side to handle the new query or update with Apache HttpClient or URLConnection. This means coding a new action in our client/server protocol and new parameters that will be sent to the server side, as well as analyzing the response, handling communication errors and application errors, etc.
  2. Develop or modify a Servlet (or REST class) and code the new SQL query or update. The class must also handle the client call, analyze the parameters and return the result on the HTTP output stream.
  3. Deploy the server classes on Tomcat.
  4. Restart Tomcat.
  5. Launch the client Android, Swing or JavaFX application and test it.
  6. Go to 1 if it doesn’t work…
To boost productivity, we wanted to be able to add new SQL requests without any modifications or interventions on the server side. With AceQL, we have a much more efficient development cycle using JDBC over HTTP:
  1. Modify the Android or Java client desktop application to handle the new SQL query or update as a standard JDBC call.
  2. Launch the Android or Java client desktop application and test it.
  3. Go to 1 if it doesn't work.
There is nothing to code on the server side for a new SQL query, no client/server protocol to develop and test, and no need to restart the server side! The development cycle is much easier and faster with JDBC over HTTP.

This is why we developed AceQL, a first version that was Java-centric, without HTTP APIs.

A now universal solution that supports multiple client languages

We have enhanced the software and AceQL HTTP is now universal:
  1. The Server side exposes now RESTlike APIs that can be called by any language that supports HTTP.
  2. We have developed client wrappers that allow to code SQL without any learning curve:
    1. The C# syntax is identical to the Microsoft SQL Server C# API.
    2. The Java implementation allows SQL calls to be encoded with standard unmodified JDBC syntax (java.sql package interfaces).
    3. The Swift syntax will allow SQL calls to be encoded with SQLite.swift like syntax.