Oque usar?

Estou desenvolvendo um projeto que em determinado momento precisarei obter diversos comandos (em um primeiro momento serão tags HTML).
Estou meio perdido quanto a oque seria melhor utilizar para armazenar esses comandos, sendo que o usuário poderá incluir novos comandos a lista se quiser.
Oque vcs me sugerem? XML? Arquivo binário? Banco de Dados (não sei se esse seria o melhor sendo que minha aplicação não utiliza DB) ?

Valeu

As vezes precisamos de soluções simples para problemas simples, como é o seu caso.
Vc tem algumas opções:
** Serialização de objetos.
É muito simples e funciona legal, o problema é que se vc acrescentar ou tirar campos não transientes em sua classe ( a q vai ser serializada ) , objetos serializados com a versão anterior não poderão ser lidos.
** XML.
Java tem uma API fantástica para trabalhar com XML, o seu problema seria muito bem resolvido com DOM, pois os comandos aos quais vc se refere podem ser mapeados em estruturas Composite como é o caso do DOM, assim vc pode ler , atualizar e salvar em arquivos XML.
** Arquivos .properties.
Se a quantidade de dados manipulados pelo seu programa não for muito grande, então esta é a melhor opção. Dê uma olhada na classe
java.util.Properties e verá que é muito útil e simples de usar.

Claudio Gualberto
SCJP 2 1.4

Não tenho respostas pra você, só perguntas… perguntas que vc deverá responder pra achar o melhor caminho.

  1. Independentemente da persistência, o que é um comando pra vc? Prum shell, um comendo é um comando seguido por uma sequência de argumentos. Durante a execução do comando, cada argumento é um String imutável que precisa estar acessível para o programa. Enquanto um comando está sendo executado, o shell não quer saber nada sobre os outros comandos que estejam na fila.

(nota para os puristas: shell unix podem ser bem mais complexos do que isso, com pipes, comandos dentro de comandos, etc. Mas a essência de um comando é isso aí).

  1. Existe uma estrutura pré-definida para os seus comandos? Por exemplo, se vc escolhesse XML, vc seria capaz de construir uma DTD (ou um Schema) bem pequena que cobrisse todos os casos? Se vc serializar, vc tem uma interface bem clara??

Quando vc descobrir que metadados vc precisa pra representar novos comandos criados pelo usuário, vc vai encontrar a melhor representação para seus próprios comandos.

O Java tem uma estrutura ótima pra guardar JavaBeans de modo persistente. Já tentei usar o XMLEncoder com um JavaBean que não tinha um BeanInfo, e descobri que a coisa não é tão direta assim…

[]s!!