Pergunta

Como o assunto deste post sugere, estou pensando em desenvolver uma suíte como Nero, que ajuda a queimar discos de Bluray. Eu sou meio que sem noção sobre por onde começar. Existe algo na API Java que permite fazer isso? Se eu fosse começar do zero, precisaria começar com as especificações do BluRay Disc? Existem ferramentas de código aberto que já estão fazendo isso? Tentei pesquisar no fonteforge.net e não encontrei nada útil. Qualquer ajuda é muito apreciada.

Foi útil?

Solução

Para começar com o óbvio: conheça seus requisitos e ferramentas. Eu tento adivinhar aqui, talvez.

Requisitos:

  1. Deve queimar discos de Bluray
  2. Interface gráfica do usuário

Ferramenta preferida:

  • Java

Agora, Java, sendo talvez o principal exemplo de uma linguagem da VM dos anos 90, alcança seu relativamente bom agnosticismo de plataforma em virtude de sua VM. É uma linguagem projetado Para correr em um virtual Hardware para facilitar a portabilidade para o hardware real.

Agora, o que vem com esse fato é que você abstrava muitas coisas com as quais teria que se importar, como detalhes e arquitetura de gerenciamento de memória ou específicos da plataforma. Entre essas coisas às quais você não consegue ter acesso de maneira confiável, está o hardware. Afinal, você abstraiu a maior parte disso.

Agora, para queimar um disco de Bluray, você tenho Para acessar o hardware, em particular o escritor do BluRay. Não que seja impossível, mas Java é, na minha humilde opinião, não é a ferramenta certa para isso. Você pode sair do seu caminho implementando uma biblioteca em C ou C ++ e usando o JNI/JNA para acessar isso, mas olhando para isso, o que você realmente ganha?

O Java geralmente é uma opção quando você precisa de um idioma de alto nível bastante moderno com uma grande biblioteca padrão e também precisa que seus programas sejam executados em mais de uma plataforma. Esses são os principais casos de uso. Não é impossível com outras tecnologias, mas talvez mais difícil de alcançar, dependendo do que exatamente você precisa.

Se você implementa uma biblioteca nativa para conversar com o escritor do BluRay e conversar com isso da Java, então você precisa necessariamente reimplementá-lo para outras plataformas (supondo que seja o que você deseja-se não, novamente: por que Java?) .

Versão TL/DR: Meu argumento é que não é de surpreender que você não consiga encontrar muito sobre esse tópico. Por um lado, Java não foi realmente projetado para fazer esse tipo de coisa. A maior parte da interoperidade nativa Java/Native está na JVM e isso já é um monte de código. Não espere que o Java apoie nativamente cenários de uso muito raros, como a queima de CD/DVD/Bluray. Em segundo lugar, o Bluray é uma tecnologia relativamente nova, com escritores ainda não comuns em computadores, como escritores de CD/DVD; portanto, a falta de bibliotecas e ferramentas também pode ser um espelho das demandas atuais do mercado.

Outras dicas

O acesso de hardware de baixo nível simplesmente não é possível em Java puro, a menos que esteja na API padrão, que Bluray não é.

Portanto, você precisará usar o código não Java para acessar o hardware; Nesse ponto, você perde a independência da plataforma de Java e necessariamente possui um sistema de múltiplas línguas, que é sempre mais doloroso para programar do que usar apenas um único idioma.

No entanto, se você pode encontrar (ou, eu acho, desenvolver) uma API de escrita de BluRay de várias plataformas ou ferramenta de linha de comando em (provavelmente) C, ainda pode fazer sentido escrever o restante do aplicativo em Java como uma GUI invólucro com funcionalidade adicional.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top