JaroslavTulach at 12:30, 29 May 2026 - 2026-05-29 12:30:51

←Older revision Revision as of 12:30, 29 May 2026
Line 3: Line 3:
The initial part of [[Java]] application is [[AOT]] compiled and as such it ''starts blazingly'' fast. At any time it can launch [[HotSpot]] [[JVM]] in the same process and run the remaining parts of the [[Java]] application ''more dynamically'' and [[JIT]] compile them.
The initial part of [[Java]] application is [[AOT]] compiled and as such it ''starts blazingly'' fast. At any time it can launch [[HotSpot]] [[JVM]] in the same process and run the remaining parts of the [[Java]] application ''more dynamically'' and [[JIT]] compile them.
-
See [https://github.com/jtulach/graalvm-native-libs github project] with the essential libraries.
+
See my new [https://github.com/jtulach/graalvm-native-libs github project] with the essential libraries.
The essential part of the [[Dual JVM]] system design includes an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of data allocated as direct NIO {{JDK|java/nio|Buffer}}''s between those two [[JVM]]s.
The essential part of the [[Dual JVM]] system design includes an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of data allocated as direct NIO {{JDK|java/nio|Buffer}}''s between those two [[JVM]]s.

JaroslavTulach at 12:30, 29 May 2026 - 2026-05-29 12:30:24

←Older revision Revision as of 12:30, 29 May 2026
Line 2: Line 2:
The initial part of [[Java]] application is [[AOT]] compiled and as such it ''starts blazingly'' fast. At any time it can launch [[HotSpot]] [[JVM]] in the same process and run the remaining parts of the [[Java]] application ''more dynamically'' and [[JIT]] compile them.
The initial part of [[Java]] application is [[AOT]] compiled and as such it ''starts blazingly'' fast. At any time it can launch [[HotSpot]] [[JVM]] in the same process and run the remaining parts of the [[Java]] application ''more dynamically'' and [[JIT]] compile them.
 +
 +
See [https://github.com/jtulach/graalvm-native-libs github project] with the essential libraries.
The essential part of the [[Dual JVM]] system design includes an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of data allocated as direct NIO {{JDK|java/nio|Buffer}}''s between those two [[JVM]]s.
The essential part of the [[Dual JVM]] system design includes an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of data allocated as direct NIO {{JDK|java/nio|Buffer}}''s between those two [[JVM]]s.

JaroslavTulach at 05:48, 2 May 2026 - 2026-05-02 05:48:30

←Older revision Revision as of 05:48, 2 May 2026
Line 3: Line 3:
The initial part of [[Java]] application is [[AOT]] compiled and as such it ''starts blazingly'' fast. At any time it can launch [[HotSpot]] [[JVM]] in the same process and run the remaining parts of the [[Java]] application ''more dynamically'' and [[JIT]] compile them.
The initial part of [[Java]] application is [[AOT]] compiled and as such it ''starts blazingly'' fast. At any time it can launch [[HotSpot]] [[JVM]] in the same process and run the remaining parts of the [[Java]] application ''more dynamically'' and [[JIT]] compile them.
-
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of data allocated as direct NIO {{JDK|java/nio|Buffer}}''s between those two [[JVM]]s.
+
The essential part of the [[Dual JVM]] system design includes an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of data allocated as direct NIO {{JDK|java/nio|Buffer}}''s between those two [[JVM]]s.

JaroslavTulach at 05:48, 2 May 2026 - 2026-05-02 05:48:04

←Older revision Revision as of 05:48, 2 May 2026
Line 2: Line 2:
The initial part of [[Java]] application is [[AOT]] compiled and as such it ''starts blazingly'' fast. At any time it can launch [[HotSpot]] [[JVM]] in the same process and run the remaining parts of the [[Java]] application ''more dynamically'' and [[JIT]] compile them.
The initial part of [[Java]] application is [[AOT]] compiled and as such it ''starts blazingly'' fast. At any time it can launch [[HotSpot]] [[JVM]] in the same process and run the remaining parts of the [[Java]] application ''more dynamically'' and [[JIT]] compile them.
-
 
-
 
-
=== Zero Copy Data Exchange ===
 
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of data allocated as direct NIO {{JDK|java/nio|Buffer}}''s between those two [[JVM]]s.
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of data allocated as direct NIO {{JDK|java/nio|Buffer}}''s between those two [[JVM]]s.

JaroslavTulach at 05:47, 2 May 2026 - 2026-05-02 05:47:33

←Older revision Revision as of 05:47, 2 May 2026
Line 1: Line 1:
-
A heroic effort was needed to marry the fast start of the [[Enso]] engine (to be attributed to AOT compilation) with the need to dynamically load JVM classes. The effort is being called a ''"dual JVM"'' (see [https://docs.google.com/presentation/d/1f0ygesiiUbMe3rEXVonDPzLI0TyKIWkMeLyhh4okkKE slides]) because there are two [[Java]] virtual machines running in the single [[Enso]] process communicating effectively with each other.
+
A heroic effort was needed to marry the fast start of the [[Enso]] engine (to be attributed to [[AOT]] compilation) with the need to dynamically load [[JVM]] classes. The effort is being called a ''"dual JVM"'' (see [https://docs.google.com/presentation/d/1f0ygesiiUbMe3rEXVonDPzLI0TyKIWkMeLyhh4okkKE slides]) because there are two [[Java]] virtual machines running in the single [[Enso]] process communicating effectively with each other.
The initial part of [[Java]] application is [[AOT]] compiled and as such it ''starts blazingly'' fast. At any time it can launch [[HotSpot]] [[JVM]] in the same process and run the remaining parts of the [[Java]] application ''more dynamically'' and [[JIT]] compile them.
The initial part of [[Java]] application is [[AOT]] compiled and as such it ''starts blazingly'' fast. At any time it can launch [[HotSpot]] [[JVM]] in the same process and run the remaining parts of the [[Java]] application ''more dynamically'' and [[JIT]] compile them.

JaroslavTulach: /* Zero Copy Data Exchange */ - 2026-05-02 05:46:49

Zero Copy Data Exchange

←Older revision Revision as of 05:46, 2 May 2026
Line 6: Line 6:
=== Zero Copy Data Exchange ===
=== Zero Copy Data Exchange ===
-
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of {{JDK|java/nio|Buffer}}'' data (typically) in the Apache Arrow format between those two [[JVM]]s.
+
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of data allocated as direct NIO {{JDK|java/nio|Buffer}}''s between those two [[JVM]]s.

JaroslavTulach: /* Zero Copy Data Exchange */ - 2026-05-02 05:45:40

Zero Copy Data Exchange

←Older revision Revision as of 05:45, 2 May 2026
Line 6: Line 6:
=== Zero Copy Data Exchange ===
=== Zero Copy Data Exchange ===
-
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of {{JDK|java/nio/|Buffer}}'' data (typically) in the Apache Arrow format between those two [[JVM]]s.
+
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of {{JDK|java/nio|Buffer}}'' data (typically) in the Apache Arrow format between those two [[JVM]]s.

JaroslavTulach: /* Zero Copy Data Exchange */ - 2026-05-02 05:45:19

Zero Copy Data Exchange

←Older revision Revision as of 05:45, 2 May 2026
Line 6: Line 6:
=== Zero Copy Data Exchange ===
=== Zero Copy Data Exchange ===
-
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of {{JDK|java/nio/buffer|Buffer}}'' data (typically) in the Apache Arrow format between those two [[JVM]]s.
+
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of {{JDK|java/nio/|Buffer}}'' data (typically) in the Apache Arrow format between those two [[JVM]]s.

JaroslavTulach: /* Zero Copy Data Exchange */ - 2026-05-02 05:44:43

Zero Copy Data Exchange

←Older revision Revision as of 05:44, 2 May 2026
Line 6: Line 6:
=== Zero Copy Data Exchange ===
=== Zero Copy Data Exchange ===
-
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of {{JDK|java.nio.buffer|Buffer}}'' data (typically) in the Apache Arrow format between those two [[JVM]]s.
+
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of {{JDK|java/nio/buffer|Buffer}}'' data (typically) in the Apache Arrow format between those two [[JVM]]s.

JaroslavTulach: /* Apache Arrow */ - 2026-05-02 05:43:52

Apache Arrow

←Older revision Revision as of 05:43, 2 May 2026
Line 4: Line 4:
-
=== [[Apache]] Arrow ===
+
=== Zero Copy Data Exchange ===
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of {{JDK|java.nio.buffer|Buffer}}'' data (typically) in the Apache Arrow format between those two [[JVM]]s.
The essential part of the [[Dual JVM]] system is an ''effective exchange'' of data between those two [[JVM]]s. The system allows '''zero copy''' exchange of {{JDK|java.nio.buffer|Buffer}}'' data (typically) in the Apache Arrow format between those two [[JVM]]s.