---
source_url: https://www.pubnub.com/docs/sdks/java/faq
title: FAQ for Java SDK
updated_at: 2026-06-01T12:04:32.466Z
sdk_name: PubNub Java SDK
sdk_version: 6.4.5
---

> Documentation Index
> For a curated overview of PubNub documentation, see: https://www.pubnub.com/docs/llms.txt
> For the full list of all documentation pages, see: https://www.pubnub.com/docs/llms-full.txt


# FAQ for Java SDK

PubNub Java SDK, use the latest version: 6.4.5

Install:

```bash
Add PubNub dependency to your build@6.4.5
```

## Why are there two subscribe methods?

The Java SDK supports a modern, entity-based flow and retains a legacy `subscribe()` for backward compatibility.

Use the modern flow documented in [Subscribe](https://www.pubnub.com/docs/sdks/java/api-reference/publish-and-subscribe#subscribe). It creates a `Subscription` or a `SubscriptionSet`, uses an event listener, and can resume from a timetoken with `SubscriptionCursor`. The legacy builder `pubnub.subscribe()` is documented in [Subscribe (old)](https://www.pubnub.com/docs/sdks/java/api-reference/publish-and-subscribe#subscribe-old) and remains for existing applications.

## Why does encryption use AES-128 when cryptoModule is configured?

If a call supplies a `customCipherKey` (for `encrypt`/`decrypt`) or a `cipherKey` for stream helpers, that argument overrides the configured `cryptoModule` for that operation and uses legacy Advanced Encryption Standard (AES) with 128-bit keys. Remove those arguments to use the `cryptoModule` configuration (AES‑256‑CBC), or configure a separate `cryptoModule` instance for partial encryption scenarios.

For details, refer to [CryptoModule configuration](https://www.pubnub.com/docs/sdks/java/api-reference/configuration#cryptomodule).

## Terms in this document

* **Entity** - A subscribable object within a PubNub SDK that allows you to perform context-specific operations.
* **Listener** - A function or objectthat reacts to events or messages, like new chat messages or connection updates, letting your app respond in real-time.
* **Timetoken** - A unique identifier for each message that represents the number of 100-nanosecond intervals since January 1, 1970, for example, 16200000000000000.