It supports all of the common record types. dnsjava provides both high and low-level access to the resolver. The high-level functions perform queries for records of a given name, type and class, and return an array of records. A cache is used to reduce the number of queries sent. The low-level functions allow direct manipulation of DNS messages and records, as well as allowing additional resolver properties to be set. A "dig" clone, a dynamic update program and a basic server are also included.