就像这篇文章的主题所暗示的那样,我正在考虑开发一个像 nero 这样的套件来帮助刻录蓝光光盘。我有点不知道从哪里开始。Java API中有什么可以让你做到这一点的吗?如果我要从头开始,我需要从蓝光光盘规格开始吗?是否有任何开源工具已经在这样做?我尝试在 sourceforge.net 上进行搜索,但没有发现任何有用的信息。任何帮助深表感谢。
2 回答
从显而易见的开始:了解您的要求和工具。我试着在这里猜测,也许。
要求:
- 应该刻录蓝光光盘
- 图形用户界面
首选工具:
- 爪哇
现在,Java 可能是 90 年代 VM 语言的主要例子,它凭借其 VM 实现了其相对较好的平台无关性。它是一种设计用于在虚拟硬件上运行的语言,以简化对真实硬件的可移植性。
现在,这个事实带来的是你抽象出许多你必须关心的事情,比如内存管理细节和架构或平台细节。在那些你无法可靠访问的东西中,有硬件。毕竟,你把大部分内容抽象出来了。
现在,要刻录蓝光光盘,您必须访问硬件,尤其是蓝光刻录机。并不是说这是不可能的,但在我看来,Java 并不是解决此问题的正确工具。您可以通过在 C 或 C++ 中实现一个库并使用 JNI/JNA 来访问它,但看看它,您真正获得了什么?
当您需要具有大型标准库的相当现代的高级语言并且您的程序还需要在多个平台上运行时,Java 通常是一种选择。这些是主要的用例。使用其他技术并非不可能,但可能更难实现,具体取决于您的具体需求。
如果您实现了一个本地库来与 BluRay 编写器对话并通过 Java 与它对话,那么您也必然需要为其他平台重新实现它(假设这就是您想要的——如果不是,那么再次:为什么是 Java?) .
TL/DR 版本:我的观点是,您在该主题上找不到太多内容并不奇怪。一方面,Java 的设计初衷并不是为了做那种事情。大多数 Java/本机互操作位于 JVM 中,这已经是非常多的代码了。不要指望 Java 原生支持非常罕见的使用场景,例如 CD/DVD/蓝光刻录。其次,BluRay 是一种相对较新的技术,刻录机在 CD/DVD 刻录机等计算机中还不是常见的硬件,因此缺乏库和工具也可能是当前市场需求的反映。
低级硬件访问在纯 Java 中根本不可能,除非它在标准 API 中,而 Bluray 不是。
因此,您将不得不使用非 Java 代码来访问硬件;到那时你就失去了 Java 的平台独立性,并且必然有一个多语言系统,这总是比只使用一种语言更痛苦。
但是,如果您可以找到(或者,我猜,开发)一个多平台蓝光编写 API 或(很可能)C 中的命令行工具,那么用 Java 将应用程序的其余部分编写为 GUI 可能仍然有意义具有附加功能的包装器。