# Supported data types

The Aerospike Database supports these native types:

Click to view data types

-   Blob
-   Boolean
-   Double
-   Integer
-   List
-   Map
-   String

When setting a value in Java, the Aerospike library automatically determines the best native Aerospike data type for storage:

-   Integers and longs are converted to an internal number format.
-   Strings are converted to UTF-8.
-   Byte arrays are stored as blobs.

Aerospike’s internal typing system automatically converts data types. Cross-language data type issues are handled internally by the Aerospike libraries. For example, an Aerospike String is stored internally in UTF-8 format, allowing Java and C#–which both use Unicode preferentially–applications to transparently interact with Python, which uses UTF-8, and C, which does not use standard internal character encoding.

::: note
To avoid format conversion, the Java `byte[]` type is stored as a pure blob and presented to all other languages as a collection of bytes.
:::

For all other data types (including compound objects), we recommend using Aerospike collection data types (List/Map) or a higher level serialization system (like [Google’s Protocol Buffers](https://developers.google.com/protocol-buffers), [MessagePack](http://msgpack.org), JSON or XML). For binary serialization, the serialized value can be used to populate a blob (byte\[\]) bin.

::: caution
For security, cross-language compatibility and performance reasons, it’s not recommended to use java’s builtin serialization (`ObjectOutputStream.writeObject()`).
:::