# Derby in a server framework

In a sense, Derby is always an embedded product. You can embed it in an application in which users access the database from a single Java Virtual Machine (JVM), or you can embed it in a server framework (an application that allows users from different JVMs to connect to Derby simultaneously).

When Derby is embedded in an application, the local JDBC driver calls the local Derby database.

When Derby is embedded in a server framework, the server framework's connectivity software provides data to multiple client JDBC applications over a network or the Internet.

For local or remote multi-user connectivity (multiple users who access Derby from different JVMs), use the Derby Network Server. If you require features that are not included in the Network Server, you can embed the basic Derby product in another server framework.

- Connectivity configurations
  There are several ways to embed Derby in a server framework.
- Multiple-client features available in Derby
  Derby contains some features that are useful for developing multi-user applications.
- The Derby Network Server
  The Derby Network Server provides multi-user connectivity to Derby databases within a single system or over a network.
- Embedded servers
  Because Derby is written in the Java programming language, you have great flexibility in how you choose to configure your deployment.
- How to start an embedded server from an application
  In one thread, the embedding application starts the local JDBC driver for its own access.
- Embedded server example
  You can start the Network Server in another thread automatically when Derby starts by setting the derby.drda.startNetworkServer property, or you can start it by using a program.

Parent topic: Derby in a multi-user environment
Related concepts
About this guide and the Network Server documentation