< prev index next >

src/java.base/share/classes/java/lang/foreign/package-info.java

Print this page
*** 91,11 ***
   *     stdlib.find("strlen").orElseThrow(),
   *     FunctionDescriptor.of(ValueLayout.JAVA_LONG, ValueLayout.ADDRESS)
   * );
   *
   * try (Arena arena = Arena.ofConfined()) {
!  *     MemorySegment cString = arena.allocateUtf8String("Hello");
   *     long len = (long)strlen.invokeExact(cString); // 5
   * }
   *}
   *
   * Here, we obtain a {@linkplain java.lang.foreign.Linker#nativeLinker() native linker} and we use it
--- 91,11 ---
   *     stdlib.find("strlen").orElseThrow(),
   *     FunctionDescriptor.of(ValueLayout.JAVA_LONG, ValueLayout.ADDRESS)
   * );
   *
   * try (Arena arena = Arena.ofConfined()) {
!  *     MemorySegment cString = arena.allocateFrom("Hello");
   *     long len = (long)strlen.invokeExact(cString); // 5
   * }
   *}
   *
   * Here, we obtain a {@linkplain java.lang.foreign.Linker#nativeLinker() native linker} and we use it

*** 107,11 ***
   * From this information, the linker will uniquely determine the sequence of steps which will turn
   * the method handle invocation (here performed using {@link java.lang.invoke.MethodHandle#invokeExact(java.lang.Object...)})
   * into a foreign function call, according to the rules specified by the ABI of the underlying platform.
   * The {@link java.lang.foreign.Arena} class also provides many useful methods for
   * interacting with foreign code, such as
!  * {@linkplain java.lang.foreign.SegmentAllocator#allocateUtf8String(java.lang.String) converting} Java strings into
   * zero-terminated, UTF-8 strings, as demonstrated in the above example.
   *
   * <h2 id="restricted">Restricted methods</h2>
   * Some methods in this package are considered <em>restricted</em>. Restricted methods are typically used to bind native
   * foreign data and/or functions to first-class Java API elements which can then be used directly by clients. For instance
--- 107,11 ---
   * From this information, the linker will uniquely determine the sequence of steps which will turn
   * the method handle invocation (here performed using {@link java.lang.invoke.MethodHandle#invokeExact(java.lang.Object...)})
   * into a foreign function call, according to the rules specified by the ABI of the underlying platform.
   * The {@link java.lang.foreign.Arena} class also provides many useful methods for
   * interacting with foreign code, such as
!  * {@linkplain java.lang.foreign.SegmentAllocator#allocateFrom(java.lang.String) converting} Java strings into
   * zero-terminated, UTF-8 strings, as demonstrated in the above example.
   *
   * <h2 id="restricted">Restricted methods</h2>
   * Some methods in this package are considered <em>restricted</em>. Restricted methods are typically used to bind native
   * foreign data and/or functions to first-class Java API elements which can then be used directly by clients. For instance

*** 145,11 ***
   * restricted methods is only granted to the modules listed by that option. If this option is not specified,
   * access to restricted methods is enabled for all modules, but access to restricted methods will result in runtime warnings.
   *
   * @spec jni/index.html Java Native Interface Specification
   *
!  * @since 19
   */
- @PreviewFeature(feature=PreviewFeature.Feature.FOREIGN)
  package java.lang.foreign;
  
- import jdk.internal.javac.PreviewFeature;
--- 145,9 ---
   * restricted methods is only granted to the modules listed by that option. If this option is not specified,
   * access to restricted methods is enabled for all modules, but access to restricted methods will result in runtime warnings.
   *
   * @spec jni/index.html Java Native Interface Specification
   *
!  * @since 22
   */
  package java.lang.foreign;
  
< prev index next >