从 .NET 中的内存下载并运行 JAR

本文关键字:运行 JAR 下载 内存 NET | 更新日期: 2023-09-27 18:31:17

我有一个 C# 应用程序,我需要在其中下载并运行 JAR 文件,而无需将其保存到磁盘。这在 C# 中可能吗?我可以通过WebClient将文件下载到磁盘(这是我在发布时正在做的事情)并通过批处理脚本启动它,该脚本被保存然后删除,但我想更进一步,没有任何东西接触驱动器。

谢谢。

从 .NET 中的内存下载并运行 JAR

您可以编写一个特殊的 Java 类装入器,该加载器通过进程间通信 (IPC) 从 .NET 进程而不是从文件加载类。此外,您还需要一个小型启动器 JAR,它首先安装类加载器,然后执行通过 IPC 检索到的 JAR。并且需要在 .NET 应用程序中实现 IPC 通信的服务器部分。

但这值得吗?如此复杂的软件有什么好处?

JAR 文件需要由 javaw.exe(JVM)执行。 另一个进程无法进入您的虚拟内存空间并读取文件数据。 除非两个进程合作并使用共享内存部分。 你没有从javaw.exe得到这样的合作,它需要一个文件。

这在Windows中不是问题,因为javaw.exe实际上会从内存中读取文件。 在程序中写入文件时,实际上会写入文件系统缓存。 在RAM中缓冲文件数据,延迟将其写入磁盘。 只要文件不是很大(千兆字节或更多),并且您不会等待太长时间来启动java(分钟),并且机器有足够的RAM(千兆字节或两千兆字节),然后javaw.exe从文件系统缓存中读取文件。 内存,而不是磁盘。 与旧的RAM磁盘完全相同的想法。