Fala galera, vamos por parte como diria nosso amigo Jack…ehehehe
A aplicação hoje não possui reports, pois não é permitido (legislação) ter outra impressora que não seja a fiscal (ECF) conectada na estação.
Todos os relatórios são emitidos como texto puro direto na porta serial, então não cheguei a pensar nesse ponto.
Vi em um Livro que estou lendo [C++ GUI Programming with Qt 4] que a interface print é muito simples e exporta para HTML e XML, creio que isso seja o suficiente para relatórios, mesmo os mais complexos.
ViniGodoy:
black_fire, você já rodou um profiler na sua aplicação para saber pq ela consome tanta memória?
Por que talvez a migração não compense o esforço extra. Ou talvez você esteja é presenciando um consumo devido à um bug, não ao Swing.
Já fizemos uma análise que reduziu 200 Mb de memória, melhorando threads, e forçando o GC em alguns pontos, entre outros.
Agora o problema é o Hibernate, sem nada rodando (fora da aplicação) ele consome 150mb dos mapeamentos, tirar o hibernate hoje é quase escrever denovo, foi então que o C++ “veio a tona” como uma possibilidade muito forte.
Realmente não há mais o que fazer a não ser mudar alguns conceitos que hoje fazem parte da aplicação.
khaoz:
Dado a realidade que ele apresentou, eu acreidto que a execução de um profiler e a correção de qualquer bug/memory leak encontrado, não vai fazer com que uma aplicação java/swing consuma uma quantidade de memória aceitável para determinado perfil de máquina.
Ainda não tive a oportunidade de usar um aplicativo swing que, depois de um certo tempo de uso, não estivesse com uma quantidade de memória exagerada para o tamanho e funcionalidade executada no momento.
E a realidade que se encontra em pdv’s por exemplo e complicada em muitos casos.
[]'s
Pois é, fizemos um teste que foi simplesmente um absuro, dois formulários, um em Java e outro em QT. (Ambos limpos, sem nada)
Em QT o consumo ficou fixo 4Mb de memória, em Java, iniciou com 20 Mb e conforme a Janela é movida na tela chegou 30Mb, sem contar os picos de processamento.
Isso foi um tanto assustador…
ViniGodoy:
Onde ele apresentou a situação?
Mas realmente, fazer em C++ irá poupar bastante recursos. Só tem que tomar MUITO cuidado com as plataformas escolhidas, e também seguir direitinho os padrões, ou a aplicação não será portável.
black_fire, você precisa que ela rode em Linux também, ou só Windows?
Isso é um ponto importante, hoje temos apenas Clientes em Linux, porém tem que ser 100% portável para o windows, pois é isso que vendemos hoje.
Quando iniciar o desenvolvimento faremos como hoje, sempre testando em ambos os ambientes sempre que há desenvolvimento novo.
ViniGodoy:
Achei ali no blog onde ele descreve a situação.
Realmente, nem pelo Swing, mas pelo acesso direto a portas seriais e hardware, eu já desaconselharia o Java. A API javax.comm é praticamente abandonada, ainda na época da Sun (o suporte ao Windows, por exemplo, simplesmente sumiu). E a rxtx é boa, mas ainda deixa muito a desejar.
Usar C++ nesse caso é muito mais indicado. Não só vai te dar um controle maior da aplicação, como vai permitir que você rode em sistemas mais humildes.
Outra coisa, conside a possibilidade de seu PDV se comunicar via socket com um sistema de ponto de venda. Aí, somente o seu PDV fica em C++, enquanto o sistema em si continua em Java. A comunicação pode ser via socket, ou mesmo troca de arquivos (não sei como você faz isso hoje), mas não acho que valha a pena migrar as duas pontas do sistema.
Finalmente, não considero o Eclipse uma boa escolha de IDE. Ele é lento, tem pouca integração com o debugger. Se seu sistema for para Windows, sugiro que use o Visual C++. Se for multiplataforma, procure pelo Qt Develop.
Pois é, nossa retaguarda hoje é Java Web, e continuará, será apenas o ponto de venda que será migrado, pois nesse caso as máquinas são melhores e não vale o esforço com certeza.
Comunicação com Libs em geral em Java é Fod… o problema é não dar exception, sempre que há um erro, simplesmente o Java fecha do nada, imprimindo um “log de erro muito amigável”.
Também achei meio complicado o debug do Eclipse, ainda não sei se será a escolha final se não tiver uma forma de melhorar o debug.
Abraço valeu pelas dicas…
