Implementation:Ray project Ray PyFunction CppFunction Of
Appearance
| Knowledge Sources | |
|---|---|
| Domains | Distributed_Computing, Cross_Language_Interop |
| Last Updated | 2026-02-13 17:00 GMT |
Overview
Concrete tool for creating cross-language function and actor descriptors provided by the Ray Java SDK.
Description
Factory methods for creating descriptors:
- PyFunction.of(moduleName, functionName) — Returns PyFunction<Object>
- PyFunction.of(moduleName, functionName, returnType) — Returns PyFunction<R> with typed return
- CppFunction.of(functionName) — Returns CppFunction<Object>
- CppFunction.of(functionName, returnType) — Returns CppFunction<R>
- PyActorClass.of(moduleName, className) — Returns PyActorClass
- CppActorClass.of(createFunctionName, className) — Returns CppActorClass
All descriptors are immutable (final fields, private constructors).
Usage
Use the .of() factory methods to create descriptors, then pass them to Ray.task() or Ray.actor().
Code Reference
Source Location
- Repository: ray-project/ray
- File: java/api/src/main/java/io/ray/api/function/PyFunction.java (L55-70)
- File: java/api/src/main/java/io/ray/api/function/CppFunction.java (L20-34)
- File: java/api/src/main/java/io/ray/api/function/PyActorClass.java (L44-46)
- File: java/api/src/main/java/io/ray/api/function/CppActorClass.java (L21-23)
Signature
// Python function descriptors
public static PyFunction<Object> PyFunction.of(String moduleName, String functionName)
public static <R> PyFunction<R> PyFunction.of(String moduleName, String functionName, Class<R> returnType)
// C++ function descriptors
public static CppFunction<Object> CppFunction.of(String functionName)
public static <R> CppFunction<R> CppFunction.of(String functionName, Class<R> returnType)
// Python actor class descriptor
public static PyActorClass PyActorClass.of(String moduleName, String className)
// C++ actor class descriptor
public static CppActorClass CppActorClass.of(String createFunctionName, String className)
Import
import io.ray.api.function.PyFunction;
import io.ray.api.function.CppFunction;
import io.ray.api.function.PyActorClass;
import io.ray.api.function.CppActorClass;
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| moduleName | String | Yes (Python) | Python module name (e.g., "my_module") |
| functionName | String | Yes | Function or method name |
| className | String | Yes (actors) | Actor class name |
| returnType | Class<R> | No | Expected Java return type (default: Object.class) |
| createFunctionName | String | Yes (C++ actors) | C++ factory function name |
Outputs
| Name | Type | Description |
|---|---|---|
| descriptor | PyFunction<R>/CppFunction<R>/PyActorClass/CppActorClass | Lightweight descriptor for Ray.task()/Ray.actor() |
Usage Examples
Call Python Function from Java
import io.ray.api.Ray;
import io.ray.api.ObjectRef;
import io.ray.api.function.PyFunction;
// Call a Python function
ObjectRef<String> result = Ray.task(
PyFunction.of("my_python_module", "greet", String.class),
"World"
).remote();
System.out.println(result.get()); // "Hello, World!"
Create Python Actor from Java
import io.ray.api.Ray;
import io.ray.api.PyActorHandle;
import io.ray.api.function.PyActorClass;
PyActorHandle actor = Ray.actor(
PyActorClass.of("my_module", "MyActor"),
"init_arg"
).remote();
Related Pages
Implements Principle
Requires Environment
Page Connections
Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment