Seja bem vindo ao Fórum do JavaFree.org
Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.
Deseja participar? Crie sua conta ou efetue seu login
Vitor, sempre que eu leio a palavra xml nos seus posts, você está falando mal do bichinho, explique-se
Ao restante, o que vocês acham sobre o XML, e se a Microsoft conseguisse patentear o XML? Como ficaria o Java? Seria possível uma mudança brutal de todos os frameworks para um novo padrão?
Vitor, sempre que eu leio a palavra xml nos seus posts, você está falando mal do bichinho, explique-se
Ao restante, o que vocês acham sobre o XML, e se a Microsoft conseguisse patentear o XML? Como ficaria o Java? Seria possível uma mudança brutal de todos os frameworks para um novo padrão?
Vamos lá
Só um detalhe, que eu saiba a MS quer patentear é o novo formato dos arquivos do Office que serao em XML e tem a extensao de XDOC.
_________________ JavaFree.org
Porque é lento, feio, gordo, e chato para escrever.
Lento para fazer o parse. Vide carga do hibernate com um grande número de tabelas. Baixa o hibernate 3 e compara a carga com as anotações para você ver a diferença. É grotesca...
Um exemplo verídico aconteceu em uma empresa de software que mantinha todas as suas telas em XML. Depois de 3 anos de desenvolvimento, o sistema levava dois minutos para carregar todas as telas. Fora as configurações.
Em comunicação então, nem se fala. XML é um lixo. Se você pensar em quanto dinheiro está perdendo fazendo uma comunicação entre seu celular e um servidor via XML, vc fica louco. Além do que, se a conexão é lenta, um arquivo XML possui muito mais informações repetidas para transmitir do que qualquer outro tipo de arquivo.
Acreditem, eu trabalho numa empresa que desenvolve softwares para Palm Tops (lançar pedidos e tals) e a comunicação entre o palm e um servidor é a parte mais complexa do software. E olha que eles usam arquivos texo, imagina com XML.
Fora que editar um arquivo XML na mão é um saco. O dia que inventarem alguma coisa que eu não precise ficar duplicando tags para representar dados homogênios eu troco de formato rapidinho.
Vítor, vc citou exemplos extremistas demais pra argumentar _contra_ o XML. Dizer que o XML foi o culpado pela lentidão de um sistema que definia suas telas neste formato, foi o cúmulo.
Concordo que XML eh grande d+ pra trafegar informações entre dispositivos que precisam economizar o máximo possível de banda.
Mas no caso do Hibernate, um delay só, na carga do sistema, eh aceitável. A não ser que seu cliente goste da idéia que sua aplicação fique reiniciando a cada 4 horas em produção...
As anotações do Hibernate vieram para facilitar o desenvolvimento e não o tempo de carga da aplicação.
E quanto a escrever XMLs, eu também nao gosto. Por isso que uso xDoclet ou Wizards de plugins/IDEs.
_________________ Se é tecnologia Java, é Free! Consultoria é pago!
Vítor, vc citou exemplos extremistas demais pra argumentar _contra_ o XML. Dizer que o XML foi o culpado pela lentidão de um sistema que definia suas telas neste formato, foi o cúmulo.
Concordo que XML eh grande d+ pra trafegar informações entre dispositivos que precisam economizar o máximo possível de banda.
Mas no caso do Hibernate, um delay só, na carga do sistema, eh aceitável. A não ser que seu cliente goste da idéia que sua aplicação fique reiniciando a cada 4 horas em produção...
As anotações do Hibernate vieram para facilitar o desenvolvimento e não o tempo de carga da aplicação.
E quanto a escrever XMLs, eu também nao gosto. Por isso que uso xDoclet ou Wizards de plugins/IDEs.
Também concordo que para transitar informações, XML é lento pra caramba (vide os ws-xml), porém eles possúem diversas qualidades, uma deles é realmente a organização de um xml bem formatado (vide o xml do spring). Também concordo que a demora no primeiro load da aplicação, é aceitável, uma vez que a aplicação não tenha que ser reiniciada toda hora. Existem N frameworks para manipulação de XML's hoje em dia, você não tá sendo extremista d+? _________________ Dalton Camargo
Acho que o XML é bom se souber usar, mas sair por ai colocando xml em tudo, o mesmo acontece com qualquer arquivo ou forma de persistência, ou alguém vai colocar no banco de dados o endereço do servidor que o seu programa deve se comunicar???? XML facilita a comunicação sim. É só usar quando realmente facilitar as coisas, não para contruir telas
_________________
Todo mundo sabe alguma coisa. Ninguém sabe tudo. Todo conhecimento esta contido na humanidade Piere Levy JavaFree.org
Vítor, vc citou exemplos extremistas demais pra argumentar _contra_ o XML. Dizer que o XML foi o culpado pela lentidão de um sistema que definia suas telas neste formato, foi o cúmulo.
Bom, foi o que aconteceu. É uma coisa a mais para vc se preocupar na hora de construir o seu sistema.
miojo:
Mas no caso do Hibernate, um delay só, na carga do sistema, eh aceitável. A não ser que seu cliente goste da idéia que sua aplicação fique reiniciando a cada 4 horas em produção...
Não... definitivamente não é aceitável. Ambientes desktop que se conectam no hibernate diretamente (sem um servidor de aplicações) tem a sua carga muuuuuito comprometida. Quando vc usa XML, parece que você está programando para celulares, parece que o processador não tem poder de processamento algum.
miojo:
As anotações do Hibernate vieram para facilitar o desenvolvimento e não o tempo de carga da aplicação.
Mas agilizam e muito o tempo de carga, que é o foco da discussão
miojo:
E quanto a escrever XMLs, eu também nao gosto. Por isso que uso xDoclet ou Wizards de plugins/IDEs.
Blz. Preciso de plugins bonitinhos para configuração de: Tomcat, Spring, WW, DWR, configurar plugins para o Eclipse, para ler dados gravados com um XMLEncooder, ler o arquivo de configurações do meu sistema, etc, etc, etc.. Todos eles com telinhas bonitinhas.
dalton:
Existem N frameworks para manipulação de XML's hoje em dia, você não tá sendo extremista d+?
Eu acho que não. Eu só concordo em usar XMLs quando não houver alguma outra forma de fazer o que você precisa. Exemplo, para i18n vc usa um arquivo de properties ou um XML? Eu uso um properties (que é muuuuuito mais simples que um XML).
O Bom do XML é a separação entre apresentação a dados. Voce coloca os dados em XML, e cria uma apresentação usando XSL e CSS para apresentar os dados. Voce tem um website, deixa os dados dele em xml ou banco de dados e a apresentação faça-a em xsl e css.
Uma vantagem do XML é que voce olha ele e consegue entender o que ele ta dizendo. Para dados, voce pode criar um arquivo de configuração com seus padroes mágicos e criar um parser para ele, OU pode usar xml e usar um dos vários bom parsers existentes, (xerces, dom4j e o default do java).
Mas... como *todo* parser de texto, é uma tarefa lenta. Não é culpa do XML, mas parsear texto é uma tarefa lenta nos computadores.
_________________
TODO: Do signature
Eu não tenho base p/ discutir sobre arquivos de configurações, frameworks, etc ... até por que estou começando no java, mas já uso XML a bastante tempo.
Eu entendo perfeitamente o por que dessa discussão, já que o XML foi criado para um fim, e como houve uma ampla aceitação do mercado ele começou a ser utilizado para outras funções (arquivos de configuração por exemplo), e com isso as pessoas que não sabiam XML, e estavam acostumadas a arquivos texto tiveram que aprender na marra, e isso gera insatisfação, e em algumas vezes um bloqueio (mais conhecido como -> meu santo não bateu com o XML). Mas eles não estão totalmente errados, por que muitas vezes a migração de aplicações que utilizavam arquivos texto para XML foi feita por puro modismo.
Mas acho que devemos olhar p/ o XML e ver ele aplicado em funções para que ele foi criado, como uma camada de persistência simples, capaz de ser utilizado em praticamente todas as plataformas conhecidas. Sem contar que não existe substituto para o XML quando falamos em padronização de documentos, vide EDI.
Vítor, vc citou exemplos extremistas demais pra argumentar _contra_ o XML. Dizer que o XML foi o culpado pela lentidão de um sistema que definia suas telas neste formato, foi o cúmulo.
Bom, foi o que aconteceu. É uma coisa a mais para vc se preocupar na hora de construir o seu sistema.
Vitor, é muito pouco provável que o XML sozinho tenha sido o responsável pela demora da carga do aplicativo. A construção das telas, que seria feito mesmo se não fosse usado XML, é que leva tempo.
Eu acho que o erro, já que são tantas telas assim, foi carregar tudo logo no início, ao invés de um lazy (usando XML ou não).
vfpamp:
miojo:
Mas no caso do Hibernate, um delay só, na carga do sistema, eh aceitável. A não ser que seu cliente goste da idéia que sua aplicação fique reiniciando a cada 4 horas em produção...
Não... definitivamente não é aceitável. Ambientes desktop que se conectam no hibernate diretamente (sem um servidor de aplicações) tem a sua carga muuuuuito comprometida. Quando vc usa XML, parece que você está programando para celulares, parece que o processador não tem poder de processamento algum.
Eu acho que o problema não é o fato de usar XML em si, mas alguma otimização feita na implementação usando anotações. Mas isso é só suposição, claro.
vfpamp:
miojo:
E quanto a escrever XMLs, eu também nao gosto. Por isso que uso xDoclet ou Wizards de plugins/IDEs.
Blz. Preciso de plugins bonitinhos para configuração de: Tomcat, Spring, WW, DWR, configurar plugins para o Eclipse, para ler dados gravados com um XMLEncooder, ler o arquivo de configurações do meu sistema, etc, etc, etc.. Todos eles com telinhas bonitinhas.
Dependente de ferramentas visuais? tá aprendendo VB?
O fato é que o uso de XML que possibilita a criação de ferramentas visuais, pois o formato é padronizado. Se cada um inventasse seu próprio formato, ou usasse sempre java pra guardar essas configurações (argh), seria bem mais difícil criar essas ferramentas (legibilidade, implementar seu próprio parser, lidar com coisas do tipo big-endian, little-endian, etc.).
vfpamp:
dalton:
Existem N frameworks para manipulação de XML's hoje em dia, você não tá sendo extremista d+?
Eu acho que não. Eu só concordo em usar XMLs quando não houver alguma outra forma de fazer o que você precisa. Exemplo, para i18n vc usa um arquivo de properties ou um XML? Eu uso um properties (que é muuuuuito mais simples que um XML).
Properties são mais simples, sem dúvida, mas também são mais limitados. Pro exemplo que você deu, de i18n, a escolha mais óbvia é o formato properties, mesmo porque todo o suporte do java a i18n é baseado nele.
Já se você tiver que criar estruturas hierárquicas, fazê-lo com arquivos .properties é um inferno. Alguém aqui já fez algum uso avançado de Log4J (vários loggers, vários appenders)? Comparou a configuração usando o log4j.properties e o log4j.xml?
Não estou dizendo que XML serve pra tudo (explicando, já que algumas pessoas adoram levar tudo ao extremo). Para transmissão de dados, só em casos muito especiais (celulares é um caso ainda mais especial, onde eu acho que XML não é apropriado). Para configuração, só se você precisar de dados hierárquicos. Pra desenho de telas... eu tive uns problemas como swixml, então não vou mais recomendar xml pra isso (jgoodies forms é bem melhor ), mas ainda acho que dá pra fazer uma solução flexível o bastante e fácil de usar usando o mesmo mecanismo, só falta alguém implementar isso . Talvez quem sabe JDNC...
Tetsuo
_________________ In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
Vitor, é muito pouco provável que o XML sozinho tenha sido o responsável pela demora da carga do aplicativo. A construção das telas, que seria feito mesmo se não fosse usado XML, é que leva tempo.
Eu acho que o erro, já que são tantas telas assim, foi carregar tudo logo no início, ao invés de um lazy (usando XML ou não).
Era isso mesmo, e eles resolveram com lazy como vc disse. Simplesmente tiraram a carga dos XMLs e o tempo caiu para 10 segundos.
ronaldtm:
Eu acho que o problema não é o fato de usar XML em si, mas alguma otimização feita na implementação usando anotações. Mas isso é só suposição, claro.
Não acredito...
ronaldtm:
Dependente de ferramentas visuais? tá aprendendo VB?
O mundo é visual . Mas até que implementem um visual decente eu prefiro ficar no texto.
ronaldtm:
O fato é que o uso de XML que possibilita a criação de ferramentas visuais, pois o formato é padronizado. Se cada um inventasse seu próprio formato, ou usasse sempre java pra guardar essas configurações (argh), seria bem mais difícil criar essas ferramentas (legibilidade, implementar seu próprio parser, lidar com coisas do tipo big-endian, little-endian, etc.).
Concordo
ronaldtm:
Properties são mais simples, sem dúvida, mas também são mais limitados. Pro exemplo que você deu, de i18n, a escolha mais óbvia é o formato properties, mesmo porque todo o suporte do java a i18n é baseado nele.
Já se você tiver que criar estruturas hierárquicas, fazê-lo com arquivos .properties é um inferno. Alguém aqui já fez algum uso avançado de Log4J (vários loggers, vários appenders)? Comparou a configuração usando o log4j.properties e o log4j.xml?
No entanto não vejo utilidade para um arquivo de configurações de nível hierárquico, mas cada caso é um caso.
danielsa:
Eu entendo perfeitamente o por que dessa discussão, já que o XML foi criado para um fim, e como houve uma ampla aceitação do mercado ele começou a ser utilizado para outras funções (arquivos de configuração por exemplo), e com isso as pessoas que não sabiam XML, e estavam acostumadas a arquivos texto tiveram que aprender na marra, e isso gera insatisfação, e em algumas vezes um bloqueio (mais conhecido como -> meu santo não bateu com o XML). Mas eles não estão totalmente errados, por que muitas vezes a migração de aplicações que utilizavam arquivos texto para XML foi feita por puro modismo.
Concordo completamente.
danielsa:
Sem contar que não existe substituto para o XML quando falamos em padronização de documentos, vide EDI.
Esse é o problema. Está faltando criatividade para essa galera . Monopólio não funciona.
albrecht:
Mas... como *todo* parser de texto, é uma tarefa lenta. Não é culpa do XML, mas parsear texto é uma tarefa lenta nos computadores.
Sim, mas parser de XML é mais lento ainda. Principalmente comparado a arquivos de propriedades.
Para dados homogênios (aka Banco de Dados) eu definiria uma nova especificação. Algo como o que está abaixo.
Definição XTL (Extensible Text Language):
Inicia com uma declaração cobolesca das linhas dos arquivos e termina com os dados. Quando existir uma divisão na linha utiliza-se números separados por ponto para definir o tipo de registro.
Exemplo:
Olha que lindo, fazer um parse disso é como tirar doce de criança :D. Trocentas vezes mais rápido que um parse de XML e com tantas possibilidades quanto ele :D
Para dados homogênios (aka Banco de Dados) eu definiria uma nova especificação. Algo como o que está abaixo.
Definição XTL (Extensible Text Language):
Inicia com uma declaração cobolesca das linhas dos arquivos e termina com os dados. Quando existir uma divisão na linha utiliza-se números separados por ponto para definir o tipo de registro.
Exemplo:
Olha que lindo, fazer um parse disso é como tirar doce de criança :D. Trocentas vezes mais rápido que um parse de XML e com tantas possibilidades quanto ele :D
Ah, fala mal de XML, mas quer substituir ele por esse lixo aí?
Como eu já disse em vários outros tópicos... Vitor, juro que não te entendo...
_________________ In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
Vitor muito boa esta sua piada de "dados cobolescos" !!! Te horas que vc me decepciona hehehe !!!
Apenas uma consideração:
XML NÃO É um padrão para trocas de arquivos EDI. Posso garantir que pouca gente no mundo está usando esse lixo para a troca de informações... afinal muitas empresas pagam por byte trafegado... tadinhos se fosse XML !!!
Outra coisa, XML apenas define uma sintaxe para definição, agora a semântica que você vai dar para as suas tags, você faz o que achar bonito, por isso não vingou no processo EDI.
_________________ Giovane Kuhn Blog - Home - JavaFree.org - SnailDB - Apollo - Priki "Chega um momento em que inteligência não faz a diferença, mas sim o tempo que você gasta utilizando-a" - Comba inspired "Mestrado é coisa pra burro" - Real-life inspired
Ah, fala mal de XML, mas quer substituir ele por esse lixo aí?
Como eu já disse em vários outros tópicos... Vitor, juro que não te entendo...
Não é a coisa mais bonita do mundo, mas prefiro isso do que esperar um XML carregar . Como eu disse antes tah faltando criatividade, mas quem sabe uma de uma idéia dessas não sai um novo formato de arquivo?
Cara, eu acho XML uma coisa linda. Posso criar meus próprios tipos de documentos com ele... É lindo para fazer as "coisas" conversarem... Tá, ele trafega mais coisa que deveria, é 1 milisegundo mais devagar? Sim é, mas vitor, c já tá programando em Java mesmo cara...
Se fosse pra economizar 1mls aqui e + 1 mls ali, eu tava programando em outra coisa...
_________________
Lucas Teixeira .·. lucas@ltvm.net
Cara, eu acho XML uma coisa linda. Posso criar meus próprios tipos de documentos com ele... É lindo para fazer as "coisas" conversarem...
er... 'lindo' eu não diria, mas bem melhor que as alternativas, pelo menos nos casos para os quais ele foi criado. E definitivamente um milhão de vezes melhor que esse XTL do Vitor _________________ In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
Cara, eu acho XML uma coisa linda. Posso criar meus próprios tipos de documentos com ele... É lindo para fazer as "coisas" conversarem...
er... 'lindo' eu não diria, mas bem melhor que as alternativas, pelo menos nos casos para os quais ele foi criado. E definitivamente um milhão de vezes melhor que esse XTL do Vitor
Super Vitor ativar: forma de um gerador de codigo cobolesco. Para combater o XML... _________________ Se é tecnologia Java, é Free! Consultoria é pago!
Comentei em meu blog a possibilidade das grandes empresas cegarem os desenvolvedores com a adoção em massa do XML como tecnologia padrão para transmissão de informação na internet. Talvez existam tecnologias muito melhores que esta, mas não conseguimos enxergar por causa das grandes empresas...
Bom, não li tudo. Tem muita coisa, mas ja entendi o tema então vou dar minha opnião. De certo ponto de vista o XML acaba sendo algo ruim mesmo pois ele realmente fica muito maior que um arquivo tabulado ou ";", alem do parse ser muito maior para algumas atividades. Mas dizer que ele é um lixo é um completo exagero. Nenhum padrão para arquivos texto é tão completo como o XML (pelo menos não que eu saiba). O padrão é regido por um orgão só (W3C) e portanto fica facil fazer regras para que a leitura de um documento seja compativel entre sistemas. Só isso ja da méritos ao XML. Hoje com os XSDs da vida é possivel validar todo um documento com poucas linhas. Num arquivo TXT teriamos que fazer várias validações para cada sistema novo. Isso é um saco. Ja no XSD não, é um padrão testado e aprovado a algum tempo. Agora veja por exemplo o Struts. Ele tem toda sua configuração em XML, o que permite que várias ferramentas o interpretem de forma simples. Mas eles não colocaram a internacionalização em XML (resource.properties). Adivinha porque? Imagina o tempo que ia levar para parsear tudo isso. Bom o XML é ótimo, mas não é a solução para tudo. É preciso saber usa-lo. Quanto ao Hibernate, tambem achei estranho a maneira como ele usa o XML com as tabelas, mas não consigo imaginar por exemplo a geração de PDFs sem o uso de XML.
Bom é isso, sou a favor do XML no lugar certo.
_________________ JavaFree.org
Atualmente utilizo o jdom para "parsear" os meus XMLs... Gostaria de saber qual "parseador" XML vcs consideram mais eficiente???
JDom ou Dom4J. Eu 'descobri' o dom4j não faz muito tempo, me parece que ele tem algumas vantagens sobre o jdom (implementa a DOM, + rápido, lança unchecked exceptions).
http://www.dom4j.org/compare.html _________________ In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
Não gosto do DOM acho ele muito lento. Uso sempre o SAX. Da mais trabalho, mas vale a pena quando o processamento é grande.
_________________ JavaFree.org
Eu tambem não gosto de escrever XML, alias, quem diacho gosta?! Mas, Vitor, esse teu formato de texto tem tantas implicações ruins que é praticamente inviavel. Por exemplo: 1. Como criar novos tipos? 2. Como impor restrições para validação? 3. Para tipos mais complexos, como eu sei que é o espaço (ou um caractere qualquer) está delimitando parte do campo ou um campo diferente? A impressão que tenho sobre esse aspecto é que vc vai acabar criando algo parecido com tags.
E mais um monte de outras coisas. Agora minha opinião sobre o post:
O miojo anda com o humor muito afinado ultimamente. Vou começar a entrar no forum só para esgasgar de tanto rir das piadas dele.
XML, como disseram antes, ganhou usos meio descabidos do proposito inicial, o que é até normal em computação. Como citei em um post sobre IoC, isso se chama ponto de inflexão, ou seja, quando alguma invenção toma rumos diferentes do proposito para a qual foi criada. Eu acho usar XML para definir telas ou trafegar dados entre dispositivos móveis algo completamente desprovido de cabimento!
Sobre as anotações do Hibernate, vale lembrar que elas NÃO implementam todas as possibilidades de mapeamento ainda, então é menos coisa para se preocupar e por consequencia, mais velocidade. Mas, concordo com o Vitor sobre o uso de annotations resultarem em um load mais rapido, afinal, é mais simples fazer reflection das anotações do que ler e parsear arquivos XML.
valeuz...
_________________
Marcos Silva Pereira http://marcospereira.wordpress.com Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Fowler)
Comentario do Sergio Oliveira nas listas do RSJug:
Quote:
Usar ou não usar XML é coisa de gosto. Cada um tem o seu. Eu prefiro não usar porque:
- Como eu compilo o XML para saber se tem erro? Um typo por exemplo? Quantas vezes vc já restartou a sua aplicação para descobrir que fez uma bobagem no XML?
- XML tem javadoc para eu consultar a sintaxe ??? Não dá para comparar dtd com javadoc....
- Me sinto mais confortável trabalhando com uma linguagem lógica, isto é, para programação, do que com uma linguagem de markup.
Mais uma vez, gosto é gosto. Respeito quem pensa totalmente diferente do que eu coloquei aí em cima.
valeuz...
_________________
Marcos Silva Pereira http://marcospereira.wordpress.com Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Fowler)
valeuz...
_________________
Marcos Silva Pereira http://marcospereira.wordpress.com Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Fowler)
A eXtensible Markup Language (XML) é uma linguagem para arquivos texto que armazenam todo o tipo de informação. Desde arquivos de configuração até bancos de dados. Foi construída baseada no HTML e é hoje uma das formas mais utilizadas para armazenar configurações de frameworks e softwares.
Só uma observação importante: o XML não foi baseado no HTML como afirma o texto de apresentação da discussão, pelo contrário, o XML e o HTML que são baseados no SGML.
Alessandro Leite JavaMail _________________
"Aquele que faz uma pergunta é um tolo por cinco minutos; aquele que não faz permanece tolo para sempre"[Provérbio Chinês] Extension Points
A eXtensible Markup Language (XML) é uma linguagem para arquivos texto que armazenam todo o tipo de informação. Desde arquivos de configuração até bancos de dados. Foi construída baseada no HTML e é hoje uma das formas mais utilizadas para armazenar configurações de frameworks e softwares.
Só uma observação importante: o XML não foi baseado no HTML como afirma o texto de apresentação da discussão, pelo contrário, o XML e o HTML que são baseados no SGML.
Não gosto do DOM acho ele muito lento. Uso sempre o SAX. Da mais trabalho, mas vale a pena quando o processamento é grande.
O DOM (independente da implementacao) sempre serah mais lento que o SAX. Sao dois conceitos de parser diferentes, cada um com sua finalidade.
DOM -> carrega os dados do documento XML em uma estrutura de dados orientada a objetos, possibilitando buscas aleatorias no arquivo.
SAX -> carrega os dados de forma linear, o que jah foi lido eh eliminado, ou seja nao guarda os nodes em memoria.
Concluindo: DOM eh "util" para documentos pequenos, SAX eh "bom" para documentos grandes. A diferenca entre util e bom, vai depender da finalidade da sua aplicacao.
[]'s
_________________ Se é tecnologia Java, é Free! Consultoria é pago!
Anunciante
daltoncamargo Offline
Posts: 8762
Vitor, sempre que eu leio a palavra xml nos seus posts, você está falando mal do bichinho, explique-se
Ao restante, o que vocês acham sobre o XML, e se a Microsoft conseguisse patentear o XML? Como ficaria o Java? Seria possível uma mudança brutal de todos os frameworks para um novo padrão?
Vamos lá
_________________
Dalton Camargo
JavaFree | Dalton Camargo
A Vitrine do seu Blog de Tecnologia
fabio_patricio Offline
Posts: 1509
Só um detalhe, que eu saiba a MS quer patentear é o novo formato dos arquivos do Office que serao em XML e tem a extensao de XDOC.
_________________
JavaFree.org
miojo Offline
Posts: 1355
pra mim, XML eh bom, desde q eu nao tenha q escrevê-los...
_________________
Se é tecnologia Java, é Free! Consultoria é pago!
Blog do Bruno Borges
daltoncamargo Offline
Posts: 8762
Bom, eu fiz só uma suposição
Bom, eles querem patentear tudo que está no caminho deles.
_________________
Dalton Camargo
JavaFree | Dalton Camargo
A Vitrine do seu Blog de Tecnologia
Anunciante
vfpamp Offline
Posts: 6007
Por que eu não gosto do XML?
Porque é lento, feio, gordo, e chato para escrever.
Lento para fazer o parse. Vide carga do hibernate com um grande número de tabelas. Baixa o hibernate 3 e compara a carga com as anotações para você ver a diferença. É grotesca...
Um exemplo verídico aconteceu em uma empresa de software que mantinha todas as suas telas em XML. Depois de 3 anos de desenvolvimento, o sistema levava dois minutos para carregar todas as telas. Fora as configurações.
Em comunicação então, nem se fala. XML é um lixo. Se você pensar em quanto dinheiro está perdendo fazendo uma comunicação entre seu celular e um servidor via XML, vc fica louco. Além do que, se a conexão é lenta, um arquivo XML possui muito mais informações repetidas para transmitir do que qualquer outro tipo de arquivo.
Acreditem, eu trabalho numa empresa que desenvolve softwares para Palm Tops (lançar pedidos e tals) e a comunicação entre o palm e um servidor é a parte mais complexa do software. E olha que eles usam arquivos texo, imagina com XML.
Fora que editar um arquivo XML na mão é um saco.
O dia que inventarem alguma coisa que eu não precise ficar duplicando tags para representar dados homogênios eu troco de formato rapidinho.
_________________
Vitor Pamplona
http://vitorpamplona.com
http://twitter.com/vitorpamplona
Não respondo dúvidas por e-mail, nem msn, nem via private message. Use o fórum para isso.
miojo Offline
Posts: 1355
Vítor, vc citou exemplos extremistas demais pra argumentar _contra_ o XML. Dizer que o XML foi o culpado pela lentidão de um sistema que definia suas telas neste formato, foi o cúmulo.
Concordo que XML eh grande d+ pra trafegar informações entre dispositivos que precisam economizar o máximo possível de banda.
Mas no caso do Hibernate, um delay só, na carga do sistema, eh aceitável. A não ser que seu cliente goste da idéia que sua aplicação fique reiniciando a cada 4 horas em produção...
As anotações do Hibernate vieram para facilitar o desenvolvimento e não o tempo de carga da aplicação.
E quanto a escrever XMLs, eu também nao gosto. Por isso que uso xDoclet ou Wizards de plugins/IDEs.
_________________
Se é tecnologia Java, é Free! Consultoria é pago!
Blog do Bruno Borges
daltoncamargo Offline
Posts: 8762
Também concordo que para transitar informações, XML é lento pra caramba (vide os ws-xml), porém eles possúem diversas qualidades, uma deles é realmente a organização de um xml bem formatado (vide o xml do spring).
Também concordo que a demora no primeiro load da aplicação, é aceitável, uma vez que a aplicação não tenha que ser reiniciada toda hora.
Existem N frameworks para manipulação de XML's hoje em dia, você não tá sendo extremista d+?
_________________
Dalton Camargo
JavaFree | Dalton Camargo
A Vitrine do seu Blog de Tecnologia
mcgyver Offline
Posts: 563
Acho que o XML é bom se souber usar, mas sair por ai colocando xml em tudo, o mesmo acontece com qualquer arquivo ou forma de persistência, ou alguém vai colocar no banco de dados o endereço do servidor que o seu programa deve se comunicar????
XML facilita a comunicação sim. É só usar quando realmente facilitar as coisas, não para contruir telas
_________________
Todo mundo sabe alguma coisa.
Ninguém sabe tudo.
Todo conhecimento esta contido na humanidade
Piere Levy
JavaFree.org
vfpamp Offline
Posts: 6007
Bom, foi o que aconteceu. É uma coisa a mais para vc se preocupar na hora de construir o seu sistema.
Não... definitivamente não é aceitável. Ambientes desktop que se conectam no hibernate diretamente (sem um servidor de aplicações) tem a sua carga muuuuuito comprometida. Quando vc usa XML, parece que você está programando para celulares, parece que o processador não tem poder de processamento algum.
Mas agilizam e muito o tempo de carga, que é o foco da discussão
Blz. Preciso de plugins bonitinhos para configuração de: Tomcat, Spring, WW, DWR, configurar plugins para o Eclipse, para ler dados gravados com um XMLEncooder, ler o arquivo de configurações do meu sistema, etc, etc, etc.. Todos eles com telinhas bonitinhas.
Eu acho que não. Eu só concordo em usar XMLs quando não houver alguma outra forma de fazer o que você precisa. Exemplo, para i18n vc usa um arquivo de properties ou um XML? Eu uso um properties (que é muuuuuito mais simples que um XML).
XML está loooonge de ser perfeito para alguns, para mim, está longe de ser utilizável.
_________________
Vitor Pamplona
http://vitorpamplona.com
http://twitter.com/vitorpamplona
Não respondo dúvidas por e-mail, nem msn, nem via private message. Use o fórum para isso.
albrecht Offline
Posts: 8
Duas coisas do XML:
O Bom do XML é a separação entre apresentação a dados.
Voce coloca os dados em XML, e cria uma apresentação usando XSL e CSS para apresentar os dados. Voce tem um website, deixa os dados dele em xml ou banco de dados e a apresentação faça-a em xsl e css.
Uma vantagem do XML é que voce olha ele e consegue entender o que ele ta dizendo. Para dados, voce pode criar um arquivo de configuração com seus padroes mágicos e criar um parser para ele, OU pode usar xml e usar um dos vários bom parsers existentes, (xerces, dom4j e o default do java).
Mas...
como *todo* parser de texto, é uma tarefa lenta. Não é culpa do XML, mas parsear texto é uma tarefa lenta nos computadores.
_________________
TODO: Do signature
danielsa Offline
Posts: 1
Eu não tenho base p/ discutir sobre arquivos de configurações, frameworks, etc ... até por que estou começando no java, mas já uso XML a bastante tempo.
Eu entendo perfeitamente o por que dessa discussão, já que o XML foi criado para um fim, e como houve uma ampla aceitação do mercado ele começou a ser utilizado para outras funções (arquivos de configuração por exemplo), e com isso as pessoas que não sabiam XML, e estavam acostumadas a arquivos texto tiveram que aprender na marra, e isso gera insatisfação, e em algumas vezes um bloqueio (mais conhecido como -> meu santo não bateu com o XML). Mas eles não estão totalmente errados, por que muitas vezes a migração de aplicações que utilizavam arquivos texto para XML foi feita por puro modismo.
Mas acho que devemos olhar p/ o XML e ver ele aplicado em funções para que ele foi criado, como uma camada de persistência simples, capaz de ser utilizado em praticamente todas as plataformas conhecidas. Sem contar que não existe substituto para o XML quando falamos em padronização de documentos, vide EDI.
Abraços
Daniel.
ronaldtm Offline
Posts: 2299
Vitor, é muito pouco provável que o XML sozinho tenha sido o responsável pela demora da carga do aplicativo. A construção das telas, que seria feito mesmo se não fosse usado XML, é que leva tempo.
Eu acho que o erro, já que são tantas telas assim, foi carregar tudo logo no início, ao invés de um lazy (usando XML ou não).
Eu acho que o problema não é o fato de usar XML em si, mas alguma otimização feita na implementação usando anotações. Mas isso é só suposição, claro.
Dependente de ferramentas visuais? tá aprendendo VB?
O fato é que o uso de XML que possibilita a criação de ferramentas visuais, pois o formato é padronizado. Se cada um inventasse seu próprio formato, ou usasse sempre java pra guardar essas configurações (argh), seria bem mais difícil criar essas ferramentas (legibilidade, implementar seu próprio parser, lidar com coisas do tipo big-endian, little-endian, etc.).
Properties são mais simples, sem dúvida, mas também são mais limitados. Pro exemplo que você deu, de i18n, a escolha mais óbvia é o formato properties, mesmo porque todo o suporte do java a i18n é baseado nele.
Já se você tiver que criar estruturas hierárquicas, fazê-lo com arquivos .properties é um inferno. Alguém aqui já fez algum uso avançado de Log4J (vários loggers, vários appenders)? Comparou a configuração usando o log4j.properties e o log4j.xml?
Não estou dizendo que XML serve pra tudo (explicando, já que algumas pessoas adoram levar tudo ao extremo). Para transmissão de dados, só em casos muito especiais (celulares é um caso ainda mais especial, onde eu acho que XML não é apropriado). Para configuração, só se você precisar de dados hierárquicos. Pra desenho de telas... eu tive uns problemas como swixml, então não vou mais recomendar xml pra isso (jgoodies forms é bem melhor
Tetsuo
_________________
In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
vfpamp Offline
Posts: 6007
Era isso mesmo, e eles resolveram com lazy como vc disse. Simplesmente tiraram a carga dos XMLs e o tempo caiu para 10 segundos.
Não acredito...
O mundo é visual
Concordo
No entanto não vejo utilidade para um arquivo de configurações de nível hierárquico, mas cada caso é um caso.
Concordo completamente.
Esse é o problema. Está faltando criatividade para essa galera
Sim, mas parser de XML é mais lento ainda. Principalmente comparado a arquivos de propriedades.
[]s
_________________
Vitor Pamplona
http://vitorpamplona.com
http://twitter.com/vitorpamplona
Não respondo dúvidas por e-mail, nem msn, nem via private message. Use o fórum para isso.
vfpamp Offline
Posts: 6007
Copiado de um post meu em outro tópico.
Para dados homogênios (aka Banco de Dados) eu definiria uma nova especificação. Algo como o que está abaixo.
Definição XTL (Extensible Text Language):
Inicia com uma declaração cobolesca das linhas dos arquivos e termina com os dados. Quando existir uma divisão na linha utiliza-se números separados por ponto para definir o tipo de registro.
Exemplo:
Olha que lindo, fazer um parse disso é como tirar doce de criança :D. Trocentas vezes mais rápido que um parse de XML e com tantas possibilidades quanto ele :D
_________________
Vitor Pamplona
http://vitorpamplona.com
http://twitter.com/vitorpamplona
Não respondo dúvidas por e-mail, nem msn, nem via private message. Use o fórum para isso.
ronaldtm Offline
Posts: 2299
Ah, fala mal de XML, mas quer substituir ele por esse lixo aí?
Como eu já disse em vários outros tópicos... Vitor, juro que não te entendo...
_________________
In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
brain Offline
Posts: 636
Vitor muito boa esta sua piada de "dados cobolescos" !!!
Te horas que vc me decepciona hehehe !!!
Apenas uma consideração:
XML NÃO É um padrão para trocas de arquivos EDI. Posso garantir que pouca gente no mundo está usando esse lixo para a troca de informações... afinal muitas empresas pagam por byte trafegado... tadinhos se fosse XML !!!
Outra coisa, XML apenas define uma sintaxe para definição, agora a semântica que você vai dar para as suas tags, você faz o que achar bonito, por isso não vingou no processo EDI.
_________________
Giovane Kuhn
Blog - Home - JavaFree.org - SnailDB - Apollo - Priki
"Chega um momento em que inteligência não faz a diferença, mas sim o tempo que você gasta utilizando-a" - Comba inspired
"Mestrado é coisa pra burro" - Real-life inspired
vfpamp Offline
Posts: 6007
Não é a coisa mais bonita do mundo, mas prefiro isso do que esperar um XML carregar
O Brain sabe o que é trabalhar com XMLs
_________________
Vitor Pamplona
http://vitorpamplona.com
http://twitter.com/vitorpamplona
Não respondo dúvidas por e-mail, nem msn, nem via private message. Use o fórum para isso.
lucastex Offline
Posts: 3748
Cara, eu acho XML uma coisa linda.
Posso criar meus próprios tipos de documentos com ele... É lindo para fazer as "coisas" conversarem... Tá, ele trafega mais coisa que deveria, é 1 milisegundo mais devagar? Sim é, mas vitor, c já tá programando em Java mesmo cara...
Se fosse pra economizar 1mls aqui e + 1 mls ali, eu tava programando em outra coisa...
_________________
Lucas Teixeira .·.
lucas@ltvm.net
ronaldtm Offline
Posts: 2299
er... 'lindo' eu não diria, mas bem melhor que as alternativas, pelo menos nos casos para os quais ele foi criado. E definitivamente um milhão de vezes melhor que esse XTL do Vitor
_________________
In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
vfpamp Offline
Posts: 6007
Pelo menos eu tentei
_________________
Vitor Pamplona
http://vitorpamplona.com
http://twitter.com/vitorpamplona
Não respondo dúvidas por e-mail, nem msn, nem via private message. Use o fórum para isso.
miojo Offline
Posts: 1355
enqto isso, eu rolo no xão de tanto rir...
Super Vitor ativar: forma de um gerador de codigo cobolesco. Para combater o XML...
_________________
Se é tecnologia Java, é Free! Consultoria é pago!
Blog do Bruno Borges
Flavio R. Bianchi Offline
Posts: 1244
Comentei em meu blog a possibilidade das grandes empresas cegarem os desenvolvedores com a adoção em massa do XML como tecnologia padrão para transmissão de informação na internet.
Talvez existam tecnologias muito melhores que esta, mas não conseguimos enxergar por causa das grandes empresas...
brunoambrozio Offline
Posts: 529
Atualmente utilizo o jdom para "parsear" os meus XMLs... Gostaria de saber qual "parseador" XML vcs consideram mais eficiente???
_________________
Bruno Brigantini Ambrózio
Consultor SAP Netweaver
SCJP, SCWCD
Softtek do Brasil - www.softtek.com
JavaFree.org
daltoncamargo Offline
Posts: 8762
Para serializar meus objetos java em xml e vice-versa, eu utilizo o XStream:
http://xstream.codehaus.org/
Later!
_________________
Dalton Camargo
JavaFree | Dalton Camargo
A Vitrine do seu Blog de Tecnologia
caitiff-jvampire Offline
Posts: 5
Bom, não li tudo. Tem muita coisa, mas ja entendi o tema então vou dar minha opnião. De certo ponto de vista o XML acaba sendo algo ruim mesmo pois ele realmente fica muito maior que um arquivo tabulado ou ";", alem do parse ser muito maior para algumas atividades. Mas dizer que ele é um lixo é um completo exagero. Nenhum padrão para arquivos texto é tão completo como o XML (pelo menos não que eu saiba). O padrão é regido por um orgão só (W3C) e portanto fica facil fazer regras para que a leitura de um documento seja compativel entre sistemas. Só isso ja da méritos ao XML. Hoje com os XSDs da vida é possivel validar todo um documento com poucas linhas. Num arquivo TXT teriamos que fazer várias validações para cada sistema novo. Isso é um saco. Ja no XSD não, é um padrão testado e aprovado a algum tempo. Agora veja por exemplo o Struts. Ele tem toda sua configuração em XML, o que permite que várias ferramentas o interpretem de forma simples. Mas eles não colocaram a internacionalização em XML (resource.properties). Adivinha porque? Imagina o tempo que ia levar para parsear tudo isso. Bom o XML é ótimo, mas não é a solução para tudo. É preciso saber usa-lo. Quanto ao Hibernate, tambem achei estranho a maneira como ele usa o XML com as tabelas, mas não consigo imaginar por exemplo a geração de PDFs sem o uso de XML.
Bom é isso, sou a favor do XML no lugar certo.
_________________
JavaFree.org
lucastex Offline
Posts: 3748
Bruno, para parsear objetos prontos, xstream... Já para arquivos XML em geral, JDOM...
(;
_________________
Lucas Teixeira .·.
lucas@ltvm.net
ronaldtm Offline
Posts: 2299
JDom ou Dom4J. Eu 'descobri' o dom4j não faz muito tempo, me parece que ele tem algumas vantagens sobre o jdom (implementa a DOM, + rápido, lança unchecked exceptions).
http://www.dom4j.org/compare.html
_________________
In fact, people who study design methods without also practicing design are almost always frustrated designers who have no sap in them, who have lost, or never had, the urge to shape things. Such a person will never be able to say anything sensible about "how" to shape things either. (Christopher Alexander)
caitiff-jvampire Offline
Posts: 5
Não gosto do DOM acho ele muito lento. Uso sempre o SAX. Da mais trabalho, mas vale a pena quando o processamento é grande.
_________________
JavaFree.org
brunoambrozio Offline
Posts: 529
Valeu pela resposta galera!!
_________________
Bruno Brigantini Ambrózio
Consultor SAP Netweaver
SCJP, SCWCD
Softtek do Brasil - www.softtek.com
JavaFree.org
albrecht Offline
Posts: 8
Acho que o problema do Vitor, é que ele gosta de escrever parses.
_________________
TODO: Do signature
jack_-_ganzha Offline
Posts: 4134
Eu tambem não gosto de escrever XML, alias, quem diacho gosta?! Mas, Vitor, esse teu formato de texto tem tantas implicações ruins que é praticamente inviavel. Por exemplo:
1. Como criar novos tipos?
2. Como impor restrições para validação?
3. Para tipos mais complexos, como eu sei que é o espaço (ou um caractere qualquer) está delimitando parte do campo ou um campo diferente? A impressão que tenho sobre esse aspecto é que vc vai acabar criando algo parecido com tags.
E mais um monte de outras coisas. Agora minha opinião sobre o post:
O miojo anda com o humor muito afinado ultimamente. Vou começar a entrar no forum só para esgasgar de tanto rir das piadas dele.
XML, como disseram antes, ganhou usos meio descabidos do proposito inicial, o que é até normal em computação. Como citei em um post sobre IoC, isso se chama ponto de inflexão, ou seja, quando alguma invenção toma rumos diferentes do proposito para a qual foi criada. Eu acho usar XML para definir telas ou trafegar dados entre dispositivos móveis algo completamente desprovido de cabimento!
Sobre as anotações do Hibernate, vale lembrar que elas NÃO implementam todas as possibilidades de mapeamento ainda, então é menos coisa para se preocupar e por consequencia, mais velocidade. Mas, concordo com o Vitor sobre o uso de annotations resultarem em um load mais rapido, afinal, é mais simples fazer reflection das anotações do que ler e parsear arquivos XML.
valeuz...
_________________
Marcos Silva Pereira
http://marcospereira.wordpress.com
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Fowler)
vfpamp Offline
Posts: 6007
De fato eu estendo essa idéia para qualquer comunicação entre sistemas.
_________________
Vitor Pamplona
http://vitorpamplona.com
http://twitter.com/vitorpamplona
Não respondo dúvidas por e-mail, nem msn, nem via private message. Use o fórum para isso.
jack_-_ganzha Offline
Posts: 4134
Comentario do Sergio Oliveira nas listas do RSJug:
A discussão era sobre o Mentawai - http://mentawai.lohis.com.br/
valeuz...
_________________
Marcos Silva Pereira
http://marcospereira.wordpress.com
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Fowler)
jack_-_ganzha Offline
Posts: 4134
Eu não!
valeuz...
_________________
Marcos Silva Pereira
http://marcospereira.wordpress.com
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Fowler)
lecadf Offline
Posts: 129
Só uma observação importante: o XML não foi baseado no HTML como afirma o texto de apresentação da discussão, pelo contrário, o XML e o HTML que são baseados no SGML.
http://www.w3.org/XML
http://www.w3.org/MarkUp
http://www.w3.org/TR/REC-html40/intro/sgmltut.html
Alessandro Leite
JavaMail
_________________
"Aquele que faz uma pergunta é um tolo por cinco minutos; aquele que não faz permanece tolo para sempre"[Provérbio Chinês]
Extension Points
vfpamp Offline
Posts: 6007
Corrigido!
_________________
Vitor Pamplona
http://vitorpamplona.com
http://twitter.com/vitorpamplona
Não respondo dúvidas por e-mail, nem msn, nem via private message. Use o fórum para isso.
miojo Offline
Posts: 1355
O DOM (independente da implementacao) sempre serah mais lento que o SAX. Sao dois conceitos de parser diferentes, cada um com sua finalidade.
DOM -> carrega os dados do documento XML em uma estrutura de dados orientada a objetos, possibilitando buscas aleatorias no arquivo.
SAX -> carrega os dados de forma linear, o que jah foi lido eh eliminado, ou seja nao guarda os nodes em memoria.
Concluindo: DOM eh "util" para documentos pequenos, SAX eh "bom" para documentos grandes. A diferenca entre util e bom, vai depender da finalidade da sua aplicacao.
[]'s
_________________
Se é tecnologia Java, é Free! Consultoria é pago!
Blog do Bruno Borges
Relacionados
XP é uma m***! http://javafree.uol.com.br/topic-851616-XP-e-uma-m***.html Erro com Select para Login http://javafree.uol.com.br/topic-847643-Erro-com-Select-para-Login.html Instalação Tomcat http://javafree.uol.com.br/topic-855065-Instalacao-Tomcat.html Logo http://javafree.uol.com.br/topic-537-Logo.html VO ou DTO http://javafree.uol.com.br/topic-7995-VO-ou-DTO.html Espanha http://javafree.uol.com.br/topic-854672-Espanha.html J2ME Orkut só para nós?! http://javafree.uol.com.br/topic-8542-J2ME-Orkut-so-para-nos.html Música http://javafree.uol.com.br/topic-9504-Musica.html Flamengo em Tokio...rsrsr http://javafree.uol.com.br/topic-8461-Flamengo-em-Tokiorsrsr.html
Anunciante