# Package org.apache.geode

The base package of the GemFire Java product, featuring highly concurrent distributed caching with cache event delivery, OQL querying, and remote cache administration, built using a DistributedSystem which includes a DistributedLockService.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  DataSerializable | An interface for objects whose state can be written/read as primitive types and strings ("data").
  DataSerializable.Replaceable | `Replaceable` allows an object to write an alternative version of itself to a `DataOutput`.
  Delta | This interface defines a contract between the application and GemFire that allows GemFire to determine whether an application object contains a delta, allows GemFire to extract the delta from an application object, and generate a new application object by applying a delta to an existing application object.
  LogWriter | Deprecated
  StatisticDescriptor | Describes an individual statistic whose value is updated by an application and may be archived by GemFire.
  Statistics | Instances of this interface maintain the values of various application-defined statistics.
  StatisticsFactory | Instances of this interface provide methods that create instances of `Statistics`.
  StatisticsType | Used to describe a logical collection of statistics.
  StatisticsTypeFactory | Instances of this interface provide methods that create instances of `StatisticDescriptor` and `StatisticsType`.

- Class Summary
  Class | Description
  --- | ---
  CancelCriterion | Abstract cancellation proxy for cancelling an operation, esp.
  CanonicalInstantiator | `CanonicalInstantiator` is much like its parent `Instantiator` except that instead of needing to implement `newInstance()` you now must implement `newInstance(DataInput)`.
  CopyHelper | A static helper for optimally creating copies.
  DataSerializer | Provides static helper methods for reading and writing non-primitive data when working with a `DataSerializable`.
  DeltaTestImpl | Sample test class which implements Delta.
  ExpirationDetector | Used to detect that a particular ExpiryTask has expired.
  Instantiator | `Instantiator` allows classes that implement `DataSerializable` to be registered with the data serialization framework.
  SystemFailure | Catches and responds to JVM failure

- Exception Summary
  Exception | Description
  --- | ---
  CancelException | Abstract root class of all GemFire exceptions representing system cancellation
  CopyException | Indicates a failure to copy an object.
  DeltaSerializationException | This exception wraps any checked exception encountered during invocation of `Delta.fromDelta(java.io.DataInput)` or `Delta.toDelta(java.io.DataOutput)` in GemFire.
  ForcedDisconnectException | An `ForcedDisconnectException` is thrown when a GemFire application is removed from the distributed system due to membership constraints such as network partition detection.
  GemFireCacheException | An `GemFireCacheException` is used to wrap a `CacheException`.
  GemFireCheckedException | This is the abstract superclass of exceptions that are thrown and declared.
  GemFireConfigException | A `GemFireConfigException` is used for failures while processing a GemFire configuration XML file.
  GemFireException | This is the abstract superclass of exceptions that are thrown to indicate incorrect usage of GemFire.
  GemFireIOException | A `GemFireIOException` is thrown when a GemFire operation failure is caused by an `IOException`.
  IncompatibleSystemException | An `IncompatibleSystemException` is thrown when a new GemFire process tries to connect to an existing distributed system and its version is not the same as that of the distributed system.
  InternalGemFireException | An `InternalGemFireException` is thrown when a low level, internal, operation fails due to no fault of the user.
  InvalidDeltaException | An `InvalidDeltaException` is thrown when a delta cannot be successfully applied by the receiving peer/client.
  InvalidValueException | An `InvalidValueException` is thrown when an attempt is made to set a configuration attribute to an invalid value is made.
  InvalidVersionException |
  NoSystemException | A `NoSystemException` is thrown when a locator can not be found or connected to.
  OutOfOffHeapMemoryException | Indicates that attempts to allocate more objects in off-heap memory has failed and the Cache will be closed to prevent it from losing distributed consistency.
  SerializationException | An exception indicating that a serialization or deserialization failed.
  SystemConnectException | An `SystemConnectException` is thrown when a GemFire application tries to connect to an existing distributed system and is unable to contact all members of the distributed system to announce its presence.
  SystemIsRunningException | A `SystemIsRunningException` is thrown when an operation is attempted that requires that the locator is stopped.
  ToDataException | A `ToDataException` is thrown during serialization if `DataSerializable.toData(java.io.DataOutput)` throws an exception or if `DataSerializer.toData(java.lang.Object, java.io.DataOutput)` is called and returns false.
  UncreatedSystemException | An `UncreatedSystemException` is thrown when the specified locator's directory or configuration file can not be found.
  UnmodifiableException | A `UnmodifiableException` is thrown when a an attempt is made to modify a GemFire member configuration attribute that can not currently be modified.
  UnstartedSystemException | An `UnstartedSystemException` is thrown when the specified locator exists but is not running or could not be connected to.

- Error Summary
  Error | Description
  --- | ---
  GemFireRethrowable | This error is used by GemFire for internal purposes.
  InternalGemFireError | Indicates that serious error has occurred within the GemFire system.

## Package org.apache.geode Description

The base package of the GemFire Java product, featuring highly concurrent distributed caching with cache event delivery, OQL querying, and remote cache administration, built using a DistributedSystem which includes a DistributedLockService.

This package contains classes that are used throughout GemFire, providing enhanced serialization performance using the `DataSerializable` feature and the ability to profile your GemFire application using a handy `Statistics` infrastructure.

## GemFire Statistics

The ability to monitor and analyze the behavior and performance of an application can ease the job of optimization. To aid in this analysis, GemFire provides the ability to register and capture application statistics. An application statistic is simply a number that the application is free to modify and that is monitored by the GemFire's statistics collector. The statistics may be monitored at runtime using the Admin API or GemFire JMX Agent.

Each application statistic is described by a `StatisticDescriptor` instance. Logical groupings of application statistics are described by a `StatisticsType` instance that contains the name and description of each statistic. Each instance of an type is represented by an instance of `Statistics`. The `descriptors`, `types`, and `instances` are created using an instance of the `StatisticsFactory` interface. Each statistics instance (there may be multiple instances of a statistics type) can be identified by a `text id` and/or a `numeric id`. The name, description, etc. of the statistic and its type are available in the Admin API or GemFire JMX Agent.

An application can get, set, and increment the value of a statistic using methods of the `Statistics` interface. If statistics sampling has been enabled a thread in the application VM periodically reads the values of application statistics allowing them to be viewed by the Admin API and GemFire JMX Agent. Statistics may also be archived to a file, the name and location of which may be configured when creating a `DistributedSystem`.

In addition to application statistics, GemFire maintains statistics about the distributed system, the distributed cache, and the physical machine on which it runs. These statistics can be monitored, viewed, and archived just like application statistics.