1) No, all you need is a link to the java driver. This is the appeal of an embedded database system. Some functions that you usually find in a fully installed database system are missing (for example, network support), but in return you do not need to install anything on the client machine.
2) It is best to just create a database schema (table definitions, but not contents) at design time. Thus, you can simply deploy it as a resource with your application and copy it to a suitable folder the first time you launch the application. Alternatively, the java driver will allow you to create a database in code (and add tables to it). In any case, if you update the application, you will need to write a manual code that checks the database version and updates the schema, adding or removing columns / tables as necessary.
source share