Beyond the Breaking News

C-Libraries in Java nutzen 2: Funktionen mit veränderlichen Parametern

Developer News

C-Libraries in Java nutzen 2: Funktionen mit veränderlichen Parametern
ITJavaProgrammiersprachen

Die Foreign Function & Memory API bietet in Java einen deutlich einfacheren Zugang zu Funktionen in C-Libraries als das veraltete JNI.

Java s Foreign Function & Memory API dient dazu, auf Code in einer Shared Library beziehungsweise DLL zuzugreifen, der in einer Programmiersprache wie C oder Rust geschrieben ist.

Allerdings muss der Code dazu einige Voraussetzungen erfüllen. Diese dreiteilige Artikelserie zeigt anhand, wie man in Java eine in C geschriebene Shared Library lädt und einfache Funktionen dieser Shared Library aufruft, geht es jetzt um komplexere Szenarien. Er zeigt, wie man aus Java Funktionen mit veränderbaren Parametern aufrufen und Arrays sowie Strukturen übergeben kann. Die bisherigen Beispiele haben die Aufrufe der nativen Funktionen einfach gehalten.

Die Java-Anwendung hat lediglich Parameter durchgereicht und den Rückgabewert übernommen.aus Teil 1 die Version der Library ermittelt. Die neue Funktion gibt die Versionsnummer aber nicht als Wert zurück, sondern verändert dazu einen Parameter. Das funktioniert in C, indem eine Anwendung für einen Parameter nicht den Wert selbst, sondern dessen Adresse übergibt . Dieses Konstrukt sieht in C folgendermaßen aus:kennzeichnet in C, dass die Funktion die Adresse der Variablen nutzt.

Java erlaubt das Vorgehen nicht, sodass ein Rückgabewert unerlässlich ist. Folgende Java-Methode verwendet die C-Funktion mit Referenz: public int getVersion2 throws Throwable { MethodHandle method=getMethodHandle); try ) { MemorySegment versionSeg= arena.allocate); method.invoke; int version=versionSeg.get; return version; } }Jetzt kommt der spannendere Teil: Um eine Adresse übergeben zu können, muss die Java-Anwendung mittels der FFM-API einen Speicherbereich von vier Byte throws Throwable { MethodHandle calcAverage= getMethodHandle, FunctionDescriptor.of); // number of elements try) { long totalSize=ValueLayout. JAVA_INT.byteSize * values.length; MemorySegment valueSegment=arena.allocate; for { valueSegment.setAtIndex; } double result= calcAverage.invoke; return result; } } auf und übergibt ihr als Parameter das Array und dessen Länge.

Schließlich gibt sie das Ergebnis der C-Funktion zurück. Links zu verschenkten Artikeln werden ungültig, wenn diese älter als 7 Tage sind oder zu oft aufgerufen wurden.

We have summarized this news so that you can read it quickly. If you are interested in the news, you can read the full text here. Read more:

heiseonline /  🏆 11. in DE

IT Java Programmiersprachen Softwareentwicklung

 

United States Latest News, United States Headlines

Similar News:You can also read news stories similar to this one that we have collected from other news sources.

»Das ergibt null Sinn«: Netflix entfernt gerade nützliche Funktionen und die Community versteht es nicht»Das ergibt null Sinn«: Netflix entfernt gerade nützliche Funktionen und die Community versteht es nichtNetflix hat gleich vier Funktionen aus der Web-Version entfernt, die Abonnenten dabei halfen, gezielter zu Suchen.
Read more »

Path of Exile 2 bekommt eine der nützlichsten Funktionen seit Release, spart euch den zweiten MonitorPath of Exile 2 bekommt eine der nützlichsten Funktionen seit Release, spart euch den zweiten MonitorEine neue Funktion bei Path of Exile 2 macht das ARPG für alle Spieler viel leichter, weil sie ein externes Tool integriert.
Read more »

Update für Outlook: Diese neuen Funktionen will Microsoft noch im Mai ausrollenUpdate für Outlook: Diese neuen Funktionen will Microsoft noch im Mai ausrollenMicrosoft verpasst seinem E-Mail-Programm Outlook neue Funktionen. Noch im Mai 2026 sollen etwa weitere Tools für den Kalender und zusätzliche KI-Features ausgerollt werden. Profitieren dürften vor allem
Read more »

Mittwoch: Handy-Neuheit mit alten Funktionen, Google-Interesse an SpaceX-PlänenMittwoch: Handy-Neuheit mit alten Funktionen, Google-Interesse an SpaceX-PlänenSony mit Klinkenbuchse & MicroSD-Fach + Google-Server mit SpaceX im All + München wieder mit Open Source + Gigabit-Anschlüsse holen auf + Ankers neue Solarbank
Read more »



Render Time: 2026-05-31 05:14:00