--- title: Java Client description: Interact with TiKV using Java. menu: "5.1": parent: TiKV Clients weight: 1 --- This document guides you on how to use [Java Client](https://github.com/tikv/client-java) in TiKV. {{< info >}} TiKV Java Client is developed and released using Java8. The minimum supported version of TiKV is 2.0.0. {{< /info >}} ## Add the dependency To start, open the `pom.xml` of your project, and add the `tikv-client-java` as dependencies if you are using Maven. ```xml org.tikv tikv-client-java 3.2.0-SNAPSHOT ``` ## Try the Raw key-value API Using a connected `org.tikv.raw.RawKVClient`, you can perform actions such as `put`, `get`, `delete`, and `scan`: ```java import com.google.protobuf.ByteString; import java.util.List; import org.tikv.common.TiConfiguration; import org.tikv.common.TiSession; import org.tikv.kvproto.Kvrpcpb; import org.tikv.raw.RawKVClient; TiConfiguration conf = TiConfiguration.createRawDefault("127.0.0.1:2379"); TiSession session = TiSession.create(conf); RawKVClient client = session.createRawClient(); ByteString key = ByteString.copyFromUtf8("Hello"); ByteString value = ByteString.copyFromUtf8("RawKV"); // put client.put(key, value); // get ByteString result = client.get(key); assert("RawKV".equals(result.toStringUtf8())); System.out.println(result.toStringUtf8()); // delete client.delete(key); // get result = client.get(key); assert(result.toStringUtf8().isEmpty()); System.out.println(result.toStringUtf8()); // scan int limit = 1000; client.put(ByteString.copyFromUtf8("k1"), ByteString.copyFromUtf8("v1")); client.put(ByteString.copyFromUtf8("k2"), ByteString.copyFromUtf8("v2")); client.put(ByteString.copyFromUtf8("k3"), ByteString.copyFromUtf8("v3")); client.put(ByteString.copyFromUtf8("k4"), ByteString.copyFromUtf8("v4")); List list = client.scan(ByteString.copyFromUtf8("k1"), ByteString.copyFromUtf8("k5"), limit); for(Kvrpcpb.KvPair pair : list) { System.out.println(pair); } ``` These functions also have batch variants (`batchPut`, `batchGet`, `batchDelete`, and `batchScan`) which considerably reduce network overhead and increase performance under certain workloads. You can find all functions supported by `RawKVClient` [in this JAVA file](https://github.com/tikv/client-java/blob/master/src/main/java/org/tikv/raw/RawKVClient.java). ## Transactional key-value API Transactional key-value API is still in the stage of prove-of-concept and under heavy development.