The latter is in fact the only choice for Java, since UltraLite will then define a custom JDBC driver based on those statements. The next step is to generate the UltraLite database engine. The generation process uses the tables in the reference database and the statements you've defined as its input. The result is a small database engine containing only the features necessary to support what your application is using. If your application needs to synchronize its data with an external database, you would then configure the MobiLink server appropriately.
All data is packed to keep the stream size down.
This is the upload stream. The server processes the changes and then sends back its own changes, the download stream. The UltraLite application applies those changes and then sends a short acknowledgement back to the server. For security, the synchronization streams can be encrypted and certificates exchanged. UltraLite currently uses Certicom's security libraries.