Skip to content

DOC-556 - import client feature tables#2070

Open
Rob-Hazelcast wants to merge 3 commits intomainfrom
DOC-556-client-features
Open

DOC-556 - import client feature tables#2070
Rob-Hazelcast wants to merge 3 commits intomainfrom
DOC-556-client-features

Conversation

@Rob-Hazelcast
Copy link
Contributor

@Rob-Hazelcast Rob-Hazelcast commented Jan 20, 2026

@Rob-Hazelcast Rob-Hazelcast requested a review from a team as a code owner January 20, 2026 14:52
@netlify
Copy link

netlify bot commented Jan 20, 2026

Deploy Preview for hardcore-allen-f5257d ready!

Name Link
🔨 Latest commit a029653
🔍 Latest deploy log https://app.netlify.com/projects/hardcore-allen-f5257d/deploys/697ce0af1a50a700089ffbaf
😎 Deploy Preview https://deploy-preview-2070--hardcore-allen-f5257d.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link

@g-donev g-donev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!

Copy link
Contributor

@yuce yuce left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few ideas...

.Stream processing
[%collapsible]
====
Applies to Java and Python Jet jobs only.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Python Jet jobs can only define a mapping. They don't have access to Jet pipeline.

|===
====

.Data structures
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will this be the source of truth for feature support between clients?
If not, maybe we should consider linking to the source of truth.

|===
====

.Concurrency primitives
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CPMap is missing in this section

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Can you list the client support for CPMap?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Java Client, Go Client, and .Net client are the ones that support it.

|SQL
|icon:circle-check[size=lg,role=success]
|icon:circle-check[size=lg,role=success]
|icon:circle-xmark[size=lg,role=error]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C++ client supports SQL

|===
====

.Networking
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The unisocket vs smart client thing changed a bit.
There's now the "routing modes":
https://docs.hazelcast.com/hazelcast/5.6/clients/java#client-cluster-routing-modes

I believe besides the Java client, .Net and C++ clients support it.
cc: @ihsandemir @emreyigit

|icon:circle-xmark[size=lg,role=error]
|icon:circle-xmark[size=lg,role=error]

|Client-side statistics
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does this cover?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You tell me 🙂

|icon:circle-check[size=lg,role=success]
|icon:circle-check[size=lg,role=success]
|icon:circle-check[size=lg,role=success]
|icon:circle-xmark[size=lg,role=error]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Go client has near cache stats.

|Client runtime stats
|icon:circle-check[size=lg,role=success]
|icon:circle-check[size=lg,role=success]
|icon:circle-xmark[size=lg,role=error]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

N/A may be more appropriate for the C++ client.
cc: @ihsandemir

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not available at the moment for C++

|Client operating systems stats
|icon:circle-check[size=lg,role=success]
|icon:circle-check[size=lg,role=success]
|icon:circle-xmark[size=lg,role=error]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ihsandemir Doesn't the C++ client provide OS statS?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nope


* Lower latency: for data kept in the embedded member, embedded mode offers faster data access because applications do not need to send requests to the cache cluster over the network
* Simplicity: for Java applications, embedded mode is simpler to set up and use, because you only need to add the Hazelcast JAR to your classpath
* Lower latency: for data kept in the embedded member, embedded mode offers faster data access because applications do not need to send requests to the cache cluster over the network.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrong!!! members communicate. In some cases, client will be faster.

E.g. you do IMap.put,

  • client sends it directly to partition owner member and gets back the response.

  • Embedded API: member prepares and operation and serializes and send it to the partition owning member.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting. Is serialization the difference there? It needs to pass between nodes in either case (assuming the partition owner isn't the member receiving the PUT in embedded mode), but there's no serialization/deserialization in client/member communication? But inter-member communication is always serialized?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

E.g. we do use back acks feature, so that the clıent completes the operation by just receiving the ack from the backup server, which speeds up the response.

E.g. if the server is too busy responding to other ops, it will slow down.

* Lower latency: for data kept in the embedded member, embedded mode offers faster data access because applications do not need to send requests to the cache cluster over the network.
* Simplicity: for Java applications, embedded mode is simpler to set up and use, because you only need to add the Hazelcast JAR to your classpath.

==== Disadvantages
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One disadvantage: Each embedded application means a new member joining the cluster and if the application ends it leaves the cluster. In these stages, the partition redistribution and a lot more takes place between the members. Hence, embedded member start is more heavier process compared to starting a client app.

* Coupled scaling: in embedded mode, the application and the cluster must be scaled together, which is not suitable for all use cases.
* Less flexibility: Hazelcast members scale with your application instances, which may be inefficient.

TIP: Hazelcast offers a xref:clients:java.adoc#configuring-client-near-cache[Near Cache] feature for clients that can reduce latency in client/server mode by storing frequently used data in the client's local memory.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Partıally wrong, near cache also exists for embedded API.

NOTE: Hazelcast offers a xref:clients:java.adoc#configuring-client-near-cache[Near Cache] feature for clients which can reduce latency in client/server mode by storing frequently used data in the client's local memory.

== Next steps
== Choose a client
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
== Choose a client
== Client Feature Support by Programming Language

@@ -1,80 +1,896 @@
= Overview
:description: Overview of the main Hazelcast clients and APIs
:description: Hazelcast provides clients and APIs to interact with Hazelcast clusters and leverage their distributed computing capabilities. The choice of client or API depends on your use case and the programming languages you're using in your project.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
:description: Hazelcast provides clients and APIs to interact with Hazelcast clusters and leverage their distributed computing capabilities. The choice of client or API depends on your use case and the programming languages you're using in your project.
:description: Hazelcast provides APIs to interact with Hazelcast clusters and leverage their distributed computing capabilities. Some language APIs require the language libraries(client libraries). For Java language, there are two APIs, one that uitlizes the Java client and the other that starts and embedded server instance and uses the same APIs as the client to interact with the cluster. For non-Java clients, the only wat to interact is using the client library for that language. The client talks to the cluster using the Hazelcast Open Binary client protocol.
There are also two other was to interact with the Hazelcast cluster:
- memcache API: You can use the Java memcache library and Hazelcast implements the memcache API.
- REST API


The maximum recommended number of clients per member is 100.
Members use different executors, each with a different thread count, for handling different types of client message tasks:
The maximum number of clients you can connect depends on your environment and workload. Members use different executors, each with a different thread count, for handling different types of client message tasks:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The maximum number of clients you can connect depends on your environment and workload. Members use different executors, each with a different thread count, for handling different types of client message tasks:
The maximum number of clients you can connect depends on your environment and workload.
Members use different executors, each with a different thread count, for handling different types of client message tasks:

* xref:nodejs.adoc[Node.js]

* More complex setup: client/server mode requires setting up and managing a separate Hazelcast cluster, which can be more complex than embedding Hazelcast directly in your application
For information about the client protocol, see the link:https://github.com/hazelcast/hazelcast-client-protocol[client protocol repository].
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We discussed that we do not totally remove the client protocol doc sections but have the first sections at the ref manual and perhaps direct to the repo message definitions for further details. Will you do it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not in this PR. PM didn't want it in the main documentation so will need to discuss it again. In the meantime, it's available in the client protocol repo.


|Semaphore
|icon:circle-check[size=lg,role=success]
|icon:circle-xmark[size=lg,role=error]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.NET client supports CP Semaphore.


|CountDownLatch
|icon:circle-check[size=lg,role=success]
|icon:circle-xmark[size=lg,role=error]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.NET client supports CountDownLatch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants