Database driver is an instance of a Driver subclass. Each driver is identified by a unique name. Implementation of a new database driver begins by creating a subclass of the Driver class. The subclass requires the following to be implemented:

As you can see, the Driver class is only an entry point to the driver. Most of its code can be found in its DatabaseImpl, ConnectionImpl and CursorImpl implementations.

Driver extensions are usually sets of additional driver features which are appended to the features the drivers provide. Driver extension is a DriverExtension subclass instance which is created and registered in a similar way to driver: