Bluray Burner на Java - с чего начать?

Как подсказывает тема этого поста, я смотрю на разработку пакета, подобного Nero, который помогает записывать диски Blu-ray. Я не знаю, с чего начать. Есть ли в Java API что-нибудь, что позволяет вам это делать? Если бы мне пришлось начинать с нуля, нужно ли мне начинать со спецификаций на диски Blu-ray? Есть ли инструменты с открытым исходным кодом, которые уже делают это? Я попытался поискать на sourceforge.net и не нашел ничего полезного. Буду признателен за любую оказанную помощь.

2 ответа

Решение

Начнем с очевидного: знайте свои требования и инструменты. Я пытаюсь угадать здесь, может быть.

Требования:

  1. Должны записывать диски BluRay
  2. Графический интерфейс пользователя

Предпочитаемый инструмент:

  • Джава

Теперь Java, являясь, пожалуй, ярким примером языка виртуальных машин 90-х годов, благодаря своей виртуальной машине достигает своего относительно хорошего платформенно-независимого подхода. Это язык, разработанный для работы на виртуальном оборудовании, чтобы облегчить переносимость на реальное оборудование.

Теперь этот факт заключается в том, что вы абстрагируете многие вещи, о которых вам нужно позаботиться, такие как детали управления памятью и архитектура или особенности платформы. Среди тех вещей, к которым вы не можете получить надежный доступ, относится аппаратное обеспечение. В конце концов, вы забрали большую часть этого.

Теперь, чтобы записать диск BluRay, вам нужно получить доступ к оборудованию, в частности, к устройству записи BluRay. Не то чтобы это невозможно, но Java, по моему скромному мнению, не подходит для этого. Вы можете пойти своим путем, реализовав библиотеку на C или C++ и используя JNI/JNA для доступа к ней, но, глядя на это, что вы действительно получаете?

Java обычно - выбор, когда вам нужен довольно современный язык высокого уровня с большой стандартной библиотекой, и вам также нужно, чтобы ваши программы работали на более чем одной платформе. Это основные случаи использования. Это не невозможно с другими технологиями, но, возможно, труднее достичь, в зависимости от того, что именно вам нужно.

Если вы реализуете нативную библиотеку, чтобы общаться с писателем BluRay и общаться с ней из Java, то вам обязательно нужно будет повторно реализовать ее и для других платформ (при условии, что это то, что вы хотите - если нет, то снова: почему Java?),

Версия TL/DR: Я хочу сказать, что неудивительно, что вы не можете найти много именно по этой теме. Во-первых, Java не была предназначена для такого рода вещей. Большая часть взаимодействия Java/native находится в JVM, и это уже очень много кода. Не ожидайте, что Java изначально будет поддерживать очень редкие сценарии использования, такие как запись CD/DVD/BluRay. Во-вторых, BluRay - это относительно новая технология, при которой устройства записи еще не являются распространенным аппаратным обеспечением в компьютерах, таких как устройства записи CD / DVD, поэтому отсутствие библиотек и инструментов может также отражать текущие требования рынка.

Низкоуровневый аппаратный доступ просто невозможен в чистой Java, если только он не находится в стандартном API, а Bluray - нет.

Поэтому для доступа к оборудованию вам придется использовать не-Java код; в этот момент вы теряете независимость от платформы Java и обязательно имеете многоязычную систему, которая всегда более болезненна для программирования, чем использование только одного языка.

Однако, если вы можете найти (или, я полагаю, разработать) многоплатформенный API-интерфейс для записи Bluray или инструмент командной строки (скорее всего) в C, то все равно может иметь смысл написать оставшуюся часть приложения на Java в виде графического интерфейса пользователя. обертка с дополнительным функционалом.

Другие вопросы по тегам