This is an automated email from the ASF dual-hosted git repository.
chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory.git
The following commit(s) were added to refs/heads/main by this push:
new 621ee5318 docs(java): update graalvm guide location (#3588)
621ee5318 is described below
commit 621ee531820c3239e2a68a045daa11f2ff3705a0
Author: Shawn Yang <[email protected]>
AuthorDate: Mon Apr 20 13:39:31 2026 +0800
docs(java): update graalvm guide location (#3588)
## Why?
## What does this PR do?
## Related issues
## AI Contribution Checklist
- [ ] Substantial AI assistance was used in this PR: `yes` / `no`
- [ ] If `yes`, I included a completed [AI Contribution
Checklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)
in this PR description and the required `AI Usage Disclosure`.
- [ ] If `yes`, my PR description includes the required `ai_review`
summary and screenshot evidence of the final clean AI review results
from both fresh reviewers on the current PR diff or current HEAD after
the latest code changes.
## Does this PR introduce any user-facing change?
- [ ] Does this PR introduce any public API change?
- [ ] Does this PR introduce any binary protocol compatibility change?
## Benchmark
---
README.md | 20 +-
docs/README.md | 2 +-
docs/guide/java/advanced-features.md | 2 +-
docs/guide/java/basic-serialization.md | 4 +
docs/guide/java/cross-language.md | 2 +-
.../{graalvm_guide.md => java/graalvm_support.md} | 6 +-
docs/guide/java/index.md | 2 +
docs/guide/java/migration.md | 2 +-
docs/guide/java/object-copy.md | 375 +++++++++++++++++++++
docs/guide/java/row-format.md | 2 +-
docs/guide/java/schema-evolution.md | 2 +-
docs/guide/java/troubleshooting.md | 2 +-
docs/guide/java/virtual-threads.md | 2 +-
java/README.md | 4 +-
14 files changed, 404 insertions(+), 23 deletions(-)
diff --git a/README.md b/README.md
index 21cbe1f3b..c132515d9 100644
--- a/README.md
+++ b/README.md
@@ -576,16 +576,16 @@ For more details on row format, see [Row Format
Specification](docs/specificatio
### User Guides
-| Guide | Description
| Source | Website
|
-| -------------------------------- |
------------------------------------------ |
----------------------------------------------- |
------------------------------------------------------------------- |
-| **Java Serialization** | Comprehensive guide for Java
serialization | [java](docs/guide/java) | [π
View](https://fory.apache.org/docs/guide/java/) |
-| **Python** | Python-specific features and usage
| [python](docs/guide/python) | [π
View](https://fory.apache.org/docs/guide/python/) |
-| **Rust** | Rust implementation and patterns
| [rust](docs/guide/rust) | [π
View](https://fory.apache.org/docs/guide/rust/) |
-| **C++** | C++ implementation and patterns
| [cpp](docs/guide/cpp) | [π
View](https://fory.apache.org/docs/guide/cpp/) |
-| **Scala** | Scala integration and best practices
| [scala](docs/guide/scala) | [π
View](https://fory.apache.org/docs/guide/scala/) |
-| **Cross-Language Serialization** | Multi-language object exchange
| [xlang](docs/guide/xlang) | [π
View](https://fory.apache.org/docs/guide/xlang/) |
-| **GraalVM** | Native image support and AOT compilation
| [graalvm_guide.md](docs/guide/graalvm_guide.md) | [π
View](https://fory.apache.org/docs/guide/graalvm_serialization) |
-| **Development** | Building and contributing to Fory
| [DEVELOPMENT.md](docs/guide/DEVELOPMENT.md) | [π
View](https://fory.apache.org/docs/guide/development) |
+| Guide | Description
| Source | Website
|
+| -------------------------------- |
------------------------------------------ |
-------------------------------------------------------- |
------------------------------------------------------------------ |
+| **Java Serialization** | Comprehensive guide for Java
serialization | [java](docs/guide/java) | [π
View](https://fory.apache.org/docs/guide/java/) |
+| **Python** | Python-specific features and usage
| [python](docs/guide/python) | [π
View](https://fory.apache.org/docs/guide/python/) |
+| **Rust** | Rust implementation and patterns
| [rust](docs/guide/rust) | [π
View](https://fory.apache.org/docs/guide/rust/) |
+| **C++** | C++ implementation and patterns
| [cpp](docs/guide/cpp) | [π
View](https://fory.apache.org/docs/guide/cpp/) |
+| **Scala** | Scala integration and best practices
| [scala](docs/guide/scala) | [π
View](https://fory.apache.org/docs/guide/scala/) |
+| **Cross-Language Serialization** | Multi-language object exchange
| [xlang](docs/guide/xlang) | [π
View](https://fory.apache.org/docs/guide/xlang/) |
+| **GraalVM** | Native image support and AOT compilation
| [graalvm_support.md](docs/guide/java/graalvm_support.md) | [π
View](https://fory.apache.org/docs/guide/java/graalvm_support) |
+| **Development** | Building and contributing to Fory
| [DEVELOPMENT.md](docs/guide/DEVELOPMENT.md) | [π
View](https://fory.apache.org/docs/guide/development) |
### Protocol Specifications
diff --git a/docs/README.md b/docs/README.md
index 678b3d2a0..cf90bf19e 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -4,7 +4,7 @@
- For Java Object Graph Guide, see [java serialization
guide](guide/java_serialization_guide.md) doc.
- For Row Format Guide, see [row format guide](guide/row_format_guide.md) doc.
- For Scala Guide, see [scala guide](guide/scala_guide.md) doc.
-- For using Apache Foryβ’ with GraalVM native image, see [graalvm native image
guide](guide/graalvm_guide.md) doc.
+- For using Apache Foryβ’ with GraalVM native image, see [graalvm
support](guide/java/graalvm_support.md) doc.
## Fory IDL Schema
diff --git a/docs/guide/java/advanced-features.md
b/docs/guide/java/advanced-features.md
index c45d700d1..765b00247 100644
--- a/docs/guide/java/advanced-features.md
+++ b/docs/guide/java/advanced-features.md
@@ -1,6 +1,6 @@
---
title: Advanced Features
-sidebar_position: 10
+sidebar_position: 11
id: advanced_features
license: |
Licensed to the Apache Software Foundation (ASF) under one or more
diff --git a/docs/guide/java/basic-serialization.md
b/docs/guide/java/basic-serialization.md
index caa9c1fd2..abc6d58dc 100644
--- a/docs/guide/java/basic-serialization.md
+++ b/docs/guide/java/basic-serialization.md
@@ -73,6 +73,9 @@ System.out.println(fory.deserialize(bytes));
Fory provides efficient deep copy functionality:
+For the full copy semantics, custom copy hooks, and troubleshooting guidance,
see
+[Object Copy](object-copy.md).
+
### With Reference Tracking
```java
@@ -123,5 +126,6 @@ MyClass obj = fory.deserialize(bytes, MyClass.class);
## Related Topics
- [Configuration](configuration.md) - All ForyBuilder options
+- [Object Copy](object-copy.md) - Deep-copy semantics and custom copy hooks
- [Type Registration](type-registration.md) - Class registration
- [Troubleshooting](troubleshooting.md) - Common API usage issues
diff --git a/docs/guide/java/cross-language.md
b/docs/guide/java/cross-language.md
index 31776ab7c..f1dfd4eb6 100644
--- a/docs/guide/java/cross-language.md
+++ b/docs/guide/java/cross-language.md
@@ -1,6 +1,6 @@
---
title: Cross-Language Serialization
-sidebar_position: 11
+sidebar_position: 12
id: cross_language
license: |
Licensed to the Apache Software Foundation (ASF) under one or more
diff --git a/docs/guide/graalvm_guide.md b/docs/guide/java/graalvm_support.md
similarity index 99%
rename from docs/guide/graalvm_guide.md
rename to docs/guide/java/graalvm_support.md
index e0135d7e8..607211ec3 100644
--- a/docs/guide/graalvm_guide.md
+++ b/docs/guide/java/graalvm_support.md
@@ -1,7 +1,7 @@
---
-title: GraalVM Guide
-sidebar_position: 19
-id: serialization
+title: GraalVM Support
+sidebar_position: 13
+id: graalvm_support
license: |
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
diff --git a/docs/guide/java/index.md b/docs/guide/java/index.md
index e4b7d05ac..95eccf6e2 100644
--- a/docs/guide/java/index.md
+++ b/docs/guide/java/index.md
@@ -203,8 +203,10 @@ ThreadSafeFory threadLocalFory = Fory.builder()
- [Field Configuration](field-configuration.md) - `@ForyField`, `@Ignore`, and
integer encoding annotations
- [Enum Configuration](enum-configuration.md) - `serializeEnumByName` and
`@ForyEnumId`
- [Basic Serialization](basic-serialization.md) - Detailed serialization
patterns
+- [Object Copy](object-copy.md) - Deep-copy Java object graphs in memory
- [Compression](compression.md) - Integer, long, and array compression options
- [Virtual Threads](virtual-threads.md) - Virtual-thread usage and pool sizing
guidance
- [Type Registration](type-registration.md) - Class registration and security
- [Custom Serializers](custom-serializers.md) - Implement custom serializers
- [Cross-Language Serialization](cross-language.md) - Serialize data for other
languages
+- [GraalVM Support](graalvm_support.md) - Build-time serializer compilation
for native images
diff --git a/docs/guide/java/migration.md b/docs/guide/java/migration.md
index 9c77b3564..e17152936 100644
--- a/docs/guide/java/migration.md
+++ b/docs/guide/java/migration.md
@@ -1,6 +1,6 @@
---
title: Migration Guide
-sidebar_position: 13
+sidebar_position: 15
id: migration
license: |
Licensed to the Apache Software Foundation (ASF) under one or more
diff --git a/docs/guide/java/object-copy.md b/docs/guide/java/object-copy.md
new file mode 100644
index 000000000..c0fd4f51e
--- /dev/null
+++ b/docs/guide/java/object-copy.md
@@ -0,0 +1,375 @@
+---
+title: Object Copy
+sidebar_position: 9
+id: object_copy
+license: |
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+---
+
+This page covers in-memory Java object graph copying with `Fory#copy(Object)`.
+
+`Fory.copy` is a deep-copy operation for Java object graphs. It does not
serialize to bytes first.
+Instead, it uses the same runtime type system and serializers to create a
copied object graph in
+memory.
+
+## When to Use Object Copy
+
+Use object copy when you want a detached in-memory clone of an existing Java
object graph.
+
+Typical use cases:
+
+- Clone request or response models before mutation
+- Duplicate cached state for optimistic updates
+- Copy graphs that contain collections, maps, arrays, or nested beans
+- Preserve shared references and circular references during cloning
+
+Use serialization instead when you need bytes for transport, storage, or
cross-process exchange.
+
+| Operation | `Fory.copy` | `serialize` / `deserialize`
|
+| ------------------------ | ------------------- |
----------------------------------------- |
+| Result | Java object graph | Binary payload plus
reconstructed objects |
+| Main use | In-memory deep copy | Transport, persistence,
interoperability |
+| Copy ref option | `withRefCopy(...)` | `withRefTracking(...)`
|
+| Cross-language payload | No | Yes, in xlang mode
|
+| Intermediate byte buffer | No | Yes
|
+
+## Quick Start
+
+For general-purpose object graphs, enable `withRefCopy(true)` so shared
references and cycles are
+handled correctly:
+
+```java
+import org.apache.fory.Fory;
+import org.apache.fory.config.Language;
+
+public class Example {
+ public static void main(String[] args) {
+ Fory fory = Fory.builder()
+ .withLanguage(Language.JAVA)
+ .withRefCopy(true)
+ .build();
+
+ Order original = new Order();
+ Order copied = fory.copy(original);
+ }
+}
+```
+
+`copy(null)` returns `null`.
+
+## Reference Semantics
+
+The most important copy option is `ForyBuilder#withRefCopy(boolean)`.
+
+### `withRefCopy(true)`
+
+This is the safe default for general object graphs. Shared references remain
shared in the copied
+graph, and circular references can be copied correctly.
+
+```java
+import org.apache.fory.Fory;
+import org.apache.fory.config.Language;
+
+public class Example {
+ static final class Address {
+ String city;
+ }
+
+ static final class Pair {
+ Address left;
+ Address right;
+ }
+
+ public static void main(String[] args) {
+ Fory fory = Fory.builder()
+ .withLanguage(Language.JAVA)
+ .withRefCopy(true)
+ .build();
+
+ Address address = new Address();
+ address.city = "Shanghai";
+
+ Pair pair = new Pair();
+ pair.left = address;
+ pair.right = address;
+
+ Pair copied = fory.copy(pair);
+ System.out.println(copied.left == copied.right); // true
+ }
+}
+```
+
+### `withRefCopy(false)`
+
+Disable copy ref tracking only when you know the graph is tree-like and does
not rely on shared or
+cyclic references. This can be faster, but repeated references are copied into
different objects.
+
+```java
+import org.apache.fory.Fory;
+import org.apache.fory.config.Language;
+
+public class Example {
+ static final class Address {
+ String city;
+ }
+
+ static final class Pair {
+ Address left;
+ Address right;
+ }
+
+ public static void main(String[] args) {
+ Fory fory = Fory.builder()
+ .withLanguage(Language.JAVA)
+ .withRefCopy(false)
+ .build();
+
+ Address address = new Address();
+ Pair pair = new Pair();
+ pair.left = address;
+ pair.right = address;
+
+ Pair copied = fory.copy(pair);
+ System.out.println(copied.left == copied.right); // false
+ }
+}
+```
+
+If you disable `withRefCopy` and the graph contains a cycle, copy can fail
with stack overflow.
+
+## `withRefCopy` vs `withRefTracking`
+
+These two options control different operations:
+
+- `withRefCopy(true)` affects `Fory.copy(...)`
+- `withRefTracking(true)` affects serialization and deserialization
+
+Enabling one does not automatically enable the other. If your application both
serializes and
+copies graphs with shared or circular references, configure both options
explicitly.
+
+```java
+Fory fory = Fory.builder()
+ .withRefTracking(true)
+ .withRefCopy(true)
+ .build();
+```
+
+## Immutable vs Mutable Values
+
+Fory may reuse the original instance for immutable values. For mutable values,
it creates a new
+object graph.
+
+In practice, this means:
+
+- `String`, boxed primitives, enums, and many immutable JDK value types may be
returned as-is
+- Primitive arrays, string arrays, collections, maps, beans, dates, and other
mutable structures
+ are copied into distinct objects
+
+Do not use object identity alone to decide whether copy succeeded. Use the
mutability contract of
+the value you are copying.
+
+## Class Registration
+
+If class registration is required, register copied classes before calling
`copy`.
+
+```java
+import org.apache.fory.Fory;
+
+public class Example {
+ public static void main(String[] args) {
+ Fory fory = Fory.builder()
+ .requireClassRegistration(true)
+ .withRefCopy(true)
+ .build();
+
+ fory.register(Order.class);
+ Order copied = fory.copy(new Order());
+ }
+}
+```
+
+This follows the same registration rules as the rest of the runtime: if the
runtime requires class
+registration, copied runtime types must be registered first.
+
+## Thread-Safe Copy
+
+`ThreadSafeFory` also supports `copy(...)`.
+
+For general multi-threaded usage:
+
+```java
+import org.apache.fory.Fory;
+import org.apache.fory.ThreadSafeFory;
+import org.apache.fory.config.Language;
+
+public class Example {
+ public static void main(String[] args) {
+ ThreadSafeFory fory = Fory.builder()
+ .withLanguage(Language.JAVA)
+ .withRefCopy(true)
+ .buildThreadSafeFory();
+
+ Order copied = fory.copy(new Order());
+ }
+}
+```
+
+The same API also works for `buildThreadLocalFory()` and
`buildThreadSafeForyPool(poolSize)`.
+
+## Built-In Coverage
+
+Fory already provides copy support for many common Java runtime types,
including:
+
+- Primitive values and boxed primitives
+- Strings and primitive arrays
+- Common JDK collections and maps
+- Java time and date/time values
+- Beans, records, and nested object graphs
+
+If the runtime already knows how to serialize a mutable type, it may still
need an explicit copy
+implementation in that serializer. For mutable serializers, the default
`Serializer.copy(...)`
+throws `UnsupportedOperationException` unless the serializer overrides it.
+
+## Custom Copy with `ForyCopyable`
+
+If a type needs custom copy logic, implement `ForyCopyable<T>`.
+
+This is the simplest approach when the class itself should control how nested
fields are copied:
+
+```java
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.fory.ForyCopyable;
+import org.apache.fory.context.CopyContext;
+
+public final class Node implements ForyCopyable<Node> {
+ private String name;
+ private final List<Node> neighbors = new ArrayList<>();
+
+ @Override
+ public Node copy(CopyContext copyContext) {
+ Node copied = new Node();
+ copyContext.reference(this, copied);
+ copied.name = name;
+ for (Node neighbor : neighbors) {
+ copied.neighbors.add(copyContext.copyObject(neighbor));
+ }
+ return copied;
+ }
+}
+```
+
+Guidelines:
+
+- Call `copyContext.reference(origin, copy)` immediately after creating a
composite mutable object
+ if the type can participate in cycles or shared-reference graphs
+- Use `copyContext.copyObject(...)` for nested values instead of manually
duplicating nested copy
+ logic
+- Keep copy logic consistent with the normal runtime semantics of the type
+
+## Custom Copy in a Serializer
+
+When a type already uses a custom serializer, override `Serializer.copy(...)`
for mutable values.
+
+```java
+import org.apache.fory.config.Config;
+import org.apache.fory.context.CopyContext;
+import org.apache.fory.serializer.Serializer;
+
+public final class EnvelopeSerializer extends Serializer<Envelope> {
+ public EnvelopeSerializer(Config config) {
+ super(config, Envelope.class);
+ }
+
+ @Override
+ public Envelope copy(CopyContext copyContext, Envelope value) {
+ Envelope copied = new Envelope();
+ copyContext.reference(value, copied);
+ copied.header = copyContext.copyObject(value.header);
+ copied.payload = copyContext.copyObject(value.payload);
+ return copied;
+ }
+
+ @Override
+ public void write(org.apache.fory.context.WriteContext writeContext,
Envelope value) {
+ throw new UnsupportedOperationException("omitted");
+ }
+
+ @Override
+ public Envelope read(org.apache.fory.context.ReadContext readContext) {
+ throw new UnsupportedOperationException("omitted");
+ }
+}
+```
+
+Use this approach when copy behavior belongs with a serializer rather than the
domain class.
+
+## Best Practices
+
+- Reuse `Fory` or `ThreadSafeFory` instances instead of rebuilding them for
each copy
+- Enable `withRefCopy(true)` unless you are certain the graph is acyclic and
does not rely on
+ shared references
+- Treat `withRefCopy(false)` as a performance optimization for tree-like data,
not as a default
+- Test custom copy implementations with both shared-reference and cyclic graphs
+- Keep mutable custom serializer copy paths explicit and do not rely on
fallback behavior
+
+## Troubleshooting
+
+### Stack Overflow or Copy Failure on Cyclic Graphs
+
+If copy fails on a cyclic object graph, enable `withRefCopy(true)`:
+
+```java
+Fory fory = Fory.builder()
+ .withRefCopy(true)
+ .build();
+```
+
+Disabling copy ref tracking is only safe for acyclic graphs.
+
+### Shared References Are Not Preserved
+
+If the same source object is copied into multiple distinct target objects,
`withRefCopy` is
+disabled. Turn it on:
+
+```java
+Fory fory = Fory.builder()
+ .withRefCopy(true)
+ .build();
+```
+
+`withRefTracking(true)` alone does not change `Fory.copy(...)` behavior.
+
+### `Copy for ... is not supported`
+
+This means the mutable serializer for that type does not implement `copy(...)`.
+
+Fix it by either:
+
+- Implementing `ForyCopyable<T>` on the class, or
+- Overriding `Serializer.copy(CopyContext, T)` in the registered serializer
+
+### Registration Errors
+
+If your runtime uses `requireClassRegistration(true)`, make sure the copied
runtime types are
+registered before calling `copy(...)`.
+
+## Related Topics
+
+- [Basic Serialization](basic-serialization.md) - Runtime creation and core
APIs
+- [Configuration](configuration.md) - Builder options including `withRefCopy`
+- [Custom Serializers](custom-serializers.md) - Serializer design and
registration
+- [Virtual Threads](virtual-threads.md) - Thread-safe runtime guidance
diff --git a/docs/guide/java/row-format.md b/docs/guide/java/row-format.md
index 14bb55ed4..5b3425bc8 100644
--- a/docs/guide/java/row-format.md
+++ b/docs/guide/java/row-format.md
@@ -1,6 +1,6 @@
---
title: Row Format
-sidebar_position: 12
+sidebar_position: 14
id: row_format
license: |
Licensed to the Apache Software Foundation (ASF) under one or more
diff --git a/docs/guide/java/schema-evolution.md
b/docs/guide/java/schema-evolution.md
index 5b754171a..acd870f55 100644
--- a/docs/guide/java/schema-evolution.md
+++ b/docs/guide/java/schema-evolution.md
@@ -1,6 +1,6 @@
---
title: Schema Evolution
-sidebar_position: 9
+sidebar_position: 8
id: schema_evolution
license: |
Licensed to the Apache Software Foundation (ASF) under one or more
diff --git a/docs/guide/java/troubleshooting.md
b/docs/guide/java/troubleshooting.md
index b693d51bc..c03c19a1a 100644
--- a/docs/guide/java/troubleshooting.md
+++ b/docs/guide/java/troubleshooting.md
@@ -1,6 +1,6 @@
---
title: Troubleshooting
-sidebar_position: 14
+sidebar_position: 16
id: troubleshooting
license: |
Licensed to the Apache Software Foundation (ASF) under one or more
diff --git a/docs/guide/java/virtual-threads.md
b/docs/guide/java/virtual-threads.md
index cc57166b3..764cd5243 100644
--- a/docs/guide/java/virtual-threads.md
+++ b/docs/guide/java/virtual-threads.md
@@ -1,6 +1,6 @@
---
title: Virtual Threads
-sidebar_position: 8
+sidebar_position: 10
id: java_virtual_threads
license: |
Licensed to the Apache Software Foundation (ASF) under one or more
diff --git a/java/README.md b/java/README.md
index 1e2f71104..57ef4aa05 100644
--- a/java/README.md
+++ b/java/README.md
@@ -39,7 +39,7 @@ Apache Foryβ’ Java provides blazingly-fast serialization for
the Java ecosystem
| Topic | Description | Source Doc Link
| Website Doc Link
|
| --------------------------- | -------------------------- |
------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------
|
| **Java Serialization** | Comprehensive usage guide |
[java_serialization_guide.md](../docs/guide/java_serialization_guide.md)
| [Java Serialization
Guide](https://fory.apache.org/docs/docs/guide/java_serialization) |
-| **GraalVM Native Image** | Native image support |
[graalvm_guide.md](../docs/guide/graalvm_guide.md)
| [GraalVM
Guide](https://fory.apache.org/docs/docs/guide/graalvm_serialization)
|
+| **GraalVM Native Image** | Native image support |
[graalvm_support.md](../docs/guide/java/graalvm_support.md)
| [GraalVM Support](https://fory.apache.org/docs/guide/java/graalvm_support)
|
| **Java Serialization Spec** | Protocol specification |
[java_serialization_spec.md](../docs/specification/java_serialization_spec.md)
| [Java Serialization
Spec](https://fory.apache.org/docs/specification/fory_java_serialization_spec) |
| **Java Benchmarks** | Performance data and plots |
[java/README.md](../docs/benchmarks/java/README.md)
| [Java Benchmarks](https://fory.apache.org/docs/benchmarks/java)
|
@@ -348,7 +348,7 @@ mvn package -Pnative
./target/my-app
```
-See [GraalVM Guide](../docs/guide/graalvm_guide.md) for details.
+See [GraalVM Support](../docs/guide/java/graalvm_support.md) for details.
## Development
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]