The driver automatically supports the correct JDBC specification version
for the Java Virtual Machine's environment.

JDBC 4.0 - Java SE 6

JDBC 3.0 - Java 2 - JDK 1.4, J2SE 5.0

Loading this JDBC driver boots the database engine
within the same Java virtual machine.

The correct code to load the Derby engine using this driver is
(with approriate try/catch blocks):

Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
// or
new org.apache.derby.jdbc.EmbeddedDriver();

When loaded in this way, the class boots the actual JDBC driver indirectly.
The JDBC specification recommends the Class.ForName method without the .newInstance()
method call, but adding the newInstance() guarantees
that Derby will be booted on any Java Virtual Machine.

Note that you do not need to manually load the driver this way if you are
running on Jave SE 6 or later. In that environment, the driver will be
automatically loaded for you when your application requests a connection to
a Derby database.

Any initial error messages are placed in the PrintStream
supplied by the DriverManager. If the PrintStream is null error messages are
sent to System.err. Once the Derby engine has set up an error
logging facility (by default to derby.log) all subsequent messages are sent to it.

By convention, the class used in the Class.forName() method to
boot a JDBC driver implements java.sql.Driver.
This class is not the actual JDBC driver that gets registered with
the Driver Manager. It proxies requests to the registered Derby JDBC driver.