Bluray Burner на Java — с чего начать?
-
21-09-2019 - |
Вопрос
Как следует из темы этого поста, я рассматриваю возможность разработки такого пакета, как Nero, который поможет записывать диски Bluray.Я понятия не имею, с чего начать.Есть ли что-нибудь в Java API, которое позволяет вам это сделать?Если бы мне пришлось начинать с нуля, пришлось бы мне начинать со спецификации диска Bluray?Существуют ли какие-либо инструменты с открытым исходным кодом, которые уже делают это?Я попробовал поискать на sourceforge.net и не нашел ничего полезного.Буду признателен за любую оказанную помощь.
Решение
Начнем с очевидного:Знайте свои требования и инструменты.Я пытаюсь угадать здесь, может быть.
Требования:
- Должен записывать диски BluRay
- Графический интерфейс пользователя
Предпочтительный инструмент:
- Джава
Теперь Java, являясь, пожалуй, ярким примером языка виртуальных машин 90-х годов, достигает своей относительно хорошей независимости от платформы благодаря своей виртуальной машине.Это язык разработанный бежать по виртуальный аппаратное обеспечение для облегчения переносимости на реальное оборудование.
Этот факт приводит к тому, что вы абстрагируете от себя многие вещи, о которых вам придется заботиться, например, детали управления памятью, архитектуру или особенности платформы.Среди тех вещей, к которым вы не можете получить надежный доступ, — это оборудование.В конце концов, вы абстрагировали большую часть этого.
Теперь, чтобы записать диск BluRay, вам иметь для доступа к оборудованию, в частности к записывающему устройству BluRay.Не то чтобы это невозможно, но Java, по моему скромному мнению, не лучший инструмент для этого.Вы можете изо всех сил реализовать библиотеку на C или C++ и использовать JNI/JNA для доступа к ней, но, посмотрев на это, что вы действительно получите?
Java обычно является выбором, когда вам нужен достаточно современный язык высокого уровня с большой стандартной библиотекой, а также вам нужно, чтобы ваши программы работали более чем на одной платформе.Это основные варианты использования.С другими технологиями это не невозможно, но, возможно, добиться этого труднее, в зависимости от того, что именно вам нужно.
Если вы реализуете собственную библиотеку для связи с записывающим устройством BluRay и взаимодействуете с ней из Java, то вам обязательно потребуется повторно реализовать ее и для других платформ (при условии, что это то, что вы хотите, а если нет, то еще раз:Почему Ява?).
Версия TL/DR:Я хочу сказать, что неудивительно, что вы не можете найти много информации именно по этой теме.Во-первых, Java на самом деле не была предназначена для подобных вещей.Большая часть взаимодействия Java/native находится в JVM, а это уже очень много кода.Не ждите, что Java изначально поддерживает очень редкие сценарии использования, такие как запись CD/DVD/BluRay.Во-вторых, BluRay — это относительно новая технология, устройства записи которой еще не распространены в компьютерах, например устройства записи CD/DVD, поэтому отсутствие библиотек и инструментов также может быть отражением текущих потребностей рынка.
Другие советы
Низкоуровневый аппаратный доступ просто невозможен в чистой Java, если только он не реализован в стандартном API, чего нет в Bluray.
Следовательно, для доступа к оборудованию вам придется использовать код, отличный от Java;в этот момент вы теряете независимость Java от платформы и обязательно получаете многоязычную систему, программировать которую всегда труднее, чем использовать только один язык.
Однако, если вы можете найти (или, я думаю, разработать) многоплатформенный API для записи Bluray или инструмент командной строки на (скорее всего) C, то, возможно, все равно имеет смысл написать остальную часть приложения на Java в виде графического интерфейса. оболочка с дополнительным функционалом.