使用 Fuse 和 java 17 編寫一個簡單的檔案系統
FUSE(使用者空間中的檔案系統)允許您在實現其介面時建立使用者空間檔案系統。FUSE 專案由兩個元件組成:FUSE 核心模組和 libfuse 使用者空間庫。我們的實現將使用 libfuse 的高階 API。它提供了掛載檔案系統、解除安裝檔案系統、從核心讀取請求以及發回響應的功能。
Project Panama 是 Java 語言改進的集合。該專案的目標是豐富和改進 Java 和本地(外部)介面之間的連線,這些介面通常由用 C 編寫的應用程式使用。
Panama 由以下 JEP(JDK 增強提案)組成:
- Foreign-Memory Access API JEP:JEP-370、JEP-383
- 外部連結器 API JEP:JEP-389
- 向量 API JEP:JEP-338
我們將專注於 Foreign Linker API,因為它提供對本機程式碼的純 Java 訪問。使用外部連結器的另一個好處是它應該具有可比的效能或比 JNI 更好。
本文目標是探索 Project Panama 的外部連結器功能並建立我們的簡單檔案系統。我們將使用 Java 17 和 FUSE 來做到這一點。我們將研究如何進行向上呼叫、向下呼叫和使用記憶體地址來建立我們的記憶體檔案系統。
安裝
在開始之前,請確保您在 Linux/Mac 系統上安裝了 FUSE(如果您使用的是 Windows,則可以使用 WSL1 或 WSL2 來跟隨或任何 Linux VM)。我使用 libfuse 3.10.5 作為示例。在終端中執行ldconfig -p | grep libfuse 將顯示安裝的 Libfuse 版本。如果未安裝 Libfuse,您將不會得到任何輸出。
我們還需要 Jextract,它是一個從 C 標頭檔案生成 Java 檔案的工具,並且僅在 Panama 早期訪問版本中可用。轉到https://jdk.java.net/panama/併為您的系統下載最新版本並解壓縮。我們只需要這個特定版本的 Java 來生成 Java 檔案。我們要構建的專案可以使用任何 Java 17 GA 版本。
此外,在 ( https://github.com/libfuse/libfuse/releases )下載並解壓縮安裝在系統上的 Libfuse 原始碼版本,我們將使用它作為 Jextract 的輸入。
詳細點選標題
相關文章
- FUSE檔案系統
- 使用FUSE和ntfs-3g解決Mac上NTFS檔案系統無法寫入Mac
- 用Vue編寫一個簡單的仿Explorer檔案管理器Vue
- 用Java編寫一個最簡單的桌面程式Java
- 一個簡單的BypassUAC編寫
- GFS(谷歌檔案系統)的JAVA簡單實現谷歌Java
- 使用 Vala 編寫一個簡單的文字識別程式
- 用C++編寫一個簡單的員工工資管理系統~C++
- 編寫一個簡單的JavaScript模板引擎JavaScript
- 編寫一個簡單的智慧合約
- 編寫一個簡單的babel外掛Babel
- .yaml引數檔案的編寫和使用YAML
- [Vue]寫一個簡單的檔案上傳控制元件Vue控制元件
- 如何簡單的在TF卡上做一個Linux的檔案系統Linux
- 【python系統學習17】python中的檔案讀寫Python
- 在Linux下製作一個簡單的給ARM開發板使用的檔案系統Linux
- 一個簡單的 SpringBoot 專案的 Dockfile 和 cicd 檔案配置Spring Boot
- 編寫簡單的Java程式碼:HelloWoridJava
- Python編寫一個簡單計算器Python
- 簡單介紹一下 Linux 檔案系統?Linux
- znai: 使用Markdown編寫Java文件系統AIJava
- dotnet 簡單寫一個 pdb 符號檔案下載器符號
- 教你如何編寫第一個簡單的爬蟲爬蟲
- 一個簡簡單單的紅點系統框架框架
- NodeJs fs(檔案系統簡單操作)NodeJS
- 關於檔案讀寫使用RandomAccessFile類的一些簡單操作randomMac
- Python編寫簡單的學生資訊管理系統Python
- Linux的檔案系統與Shell簡單命令Linux
- 用C++編寫一個簡單的釋出者和訂閱者C++
- 用 Go 編寫一個簡單的 WebSocket 推送服務GoWeb
- 最簡單的 K8S 部署檔案編寫姿勢,沒有之一!K8S
- 使用nodeJS寫一個簡單的小爬蟲NodeJS爬蟲
- linux讀寫檔案 簡單版Linux
- mac系統上hdfs java api的簡單使用MacJavaAPI
- python+flask 編寫一個簡單的登入介面例子PythonFlask
- python+flask編寫一個簡單的登入介面例子PythonFlask
- 設計一個簡單的devops系統dev
- Python使用Socket寫一個簡單聊天程式Python