Java é pesado e lento, acho q vou voltar p Delphi

Ola pessoal!

Estou adorando programar em Java, mas só q as aplicações em Java para Desktop, ficam muito pesadas e lentas, alguém saberia como resolver isso ? Ou será q realmente não tem jeito …

Estou pensando em voltar p Delphi …

Se alguém souber d uma solução p favor … me ajudaria muito … gostaria de continuar c Java …

Um grande abraço a todos …

Olá realmente java ainda esta um pouco “pesado” para desktop se seu programa sera somente para windows eu adotaria .Net apesar de gosta muito de java mais se seu software tende-se a ser multiplataforma quando vc chegar para fazer um negocio e falar que seu software roda em varios S.O isso vai fazer a diferença…
Existe o SWT em java, ouvi falar que é mais leve que o swing… mais vc pode dar uma pesquisada sobre o SWT para ter certeza…

a questao é multiplataforma ou windows ?

flw

Nem é tão lento assim. Baixa o java 6.

Eu ja uso a versão 6, e até q a interface grafica num ta muito lenta msm não, o q fica lento é a conexão c o BD, tou usando mysql, e qdo trabalhando c uma qtidade de dados razoavel fica dvagar, tipo importar um arquivo d Texto c umas 3000.000 linhas , em java no tempo q eu importo 10.000 eu importo as 3000.000 linhas e gravo no BD, então tou preocupado mais na frente, qdo estiver c muitas informações e o sistema ficar muito lento c os clientes. C Delphi n vou ter esse problema, pq ja tenho aplicações rodando em Delphi.
Eu gostaria muito d uma aplicação Multi-plataforma, pq eu adoro Linux. Meu Pc e not, são particionados c os 2 S.O, p isso a escolha p Java, já q eu Rodo o msm codigo nos S.O diferentes …

Bom é isso … então se alguém tiver alguma dica, desde já agradeço, pq num queria deixar Java não , adoro muito essa linguagem …

Importar de arquivo texto?
De uma pesquisada no pacote java.nio.

A performance do pacote java.nio é maior que em C++.

Não deveria estar tão lento comparado ao Delphi, e nem necessariamente mais lento.
Você pode postar o trecho do código que faz esta operação? Talvez o pessoal do forum possa ajudar a ver o que tem de errado.

Olá,

Por acaso você está fazendo tudo na mesma thread?

Basicamente, se você estiver, a aplicação fica parada enquanto espera a resposta. Você deve utilizar outra Thread.

Procure no Google sobre SwingWorker. Um pouco de Google também:

http://www.google.com.br/search?hl=pt-BR&q=swing+threads&btnG=Pesquisar&meta=

O SwingWorker vai te ajudar bastante, mas tem também a forma de programar …

um exemplo bem simples só pra ilustrar o que eu estou falando …

tente executar estes dois códigos (estou escrevendo aqui no forum, pode ter algum errinho):

public class Teste{
public static void main(String[] args){
String out = "";
for(int i=0;i<100000;i++){
out = out + i;
}
System.out.println(out);
}
}

e este:

public class Teste{
public static void main(String[] args){
StringBuilder out = new StringBuilder();
for(int i=0;i<100000;i++){
out.append(i);
}
System.out.println(out.toString());
}
}

Dica, execute o segundo primeiro, pois o primeiro exemplo vai demorar muito para rodar …

para leitura do arquivo, você esta usando substring ou o Scanner?

o scanner vai te dar uma performance muito melhor se em utilizado …

ou seja, se você souber utilizar, o java vai ter uma performance excelente …
usando isto em conjunto com o SwingWorker vai ficar muito boa a performance, possivelmente melhor que no delphi …

ahh, mais uma coisa …
se não me engano o swingworker ja esta incluido no java6

Acho que deu pra perceber a principal desvantagem do java, não é?

A longa curva de aprendizado. :smiley:

Vejam só parte do codigo:

             FileReader reader01 = new FileReader(caminho);                           
             BufferedReader leitor01 = new BufferedReader(reader01);                 
             while ((linha = leitor01.readLine()) != null) {
                 if ( linha.substring(0,2).equals("10")) {
                     if ( telaImportacaoSintegra.importacaoSintegra.jChkR10.isSelected() == true ) {
                         dado01 = linha.substring(0,2) ;
                         dado02 = linha.substring(2,16) ;
                         dado03 = linha.substring(19,30) ;
                         dado04 = linha.substring(30,65) ;
                         dado05 = linha.substring(65,95) ;
                         dado06 = linha.substring(95,97) ;
                         dado07 = linha.substring(97,107) ;
                         dado08 = linha.substring(107,115) ;
                         dado09 = linha.substring(115,123) ;
                         dado10 = linha.substring(123,124) ;
                         dado11 = linha.substring(124,125) ;
                         dado12 = linha.substring(125,126) ;
                         
                         // - Formata campos
                         dado08 = dado08.substring(0,4) + "/" + dado08.substring(4,6) + "/" +
                                 dado08.substring(6,8) ;                                                          
                         dado09 = dado09.substring(0,4) + "/" + dado09.substring(4,6) + "/" +
                                 dado09.substring(6,8) ;                                                                                       
                         
                         // - Grava no Banco de dados
                         this.setReg10(Integer.toString(codigo10) , dado01 , dado02 , dado03 ,
                                 dado04 , dado05 , dado06, dado07, dado08 , dado09, dado10 ,
                                 dado11 , dado12 ) ;
                        i ++ ;                         
                     }
                 }

}

E estou usando tdo dentro do SwingWorker .
Uso o substring , não sei usar o scaner, mas vou pesquisar …

Vlw msm galera pelas dicas q estão me dando, realmente o aprendizado é um poko complicado e n tenho grande tempo o q me prejudica muito.

Parei c Delphi e começei a estudar Java, logo depois estava desenvolvendo e sanando as Duvidas c as necessidades, com certeza uma pessima forma de aprendizado, mas eu n poderia parar d desenvolver e apenas estudar …

Bom VLW MSM …

Olá,

Recomendo que você estude bastante Java antes de pensar em fazer esta comparação e de colocar código em produção. Este trecho mostra que você precisa entender mais sobre estruturas básicas como arrays e buffers (que são os mesmos de Delphi, aliás), além de classes da biblioteca padrão que fazem o que você está fazendo na mão e conceitos como dividir um programa em funções menores.

Quanto ao arquivo, a menos que estejamos falando de milhões de linhas não há porque utilizar NIO. O problema no caso parece ser que você lê do arquivo e salva do banco em cada em cada linha. Guarde estes registros em uma lista e faça essa inserção de uma vez.

A propósito, você abre uma conexão com o banco de dados cada vez que faz um insert? Se sim altere isso apra reutilizar a mesma conexão em todos eles.

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html#addBatch()

Como eu coloco tdo em uma lista e faço a inserção de uma só vez?

[quote=bzanchet]Acho que deu pra perceber a principal desvantagem do java, não é?

A longa curva de aprendizado. :D[/quote]

a questão é que com java você faz programas de verdade. Se você quer algo realmente fácil, faça uma experiência com VB e depois volte e diga o que achou. :wink:

Digo isso porque eu vim do VB, e prefiro muito mais a a curva de aprendizado longa de uma plataforma extremamente rica como o java, com a vantagem de se poder fazer algo realmente certo, do que toda a facilidade de uma plataforma pobre.

[quote=neófito]…
a questão é que com java você faz programas de verdade. Se você quer algo realmente fácil, faça uma experiência com VB e depois volte e diga o que achou. :wink:

Digo isso porque eu vim do VB, e prefiro muito mais a a curva de aprendizado longa de uma plataforma extremamente rica como o java, com a vantagem de se poder fazer algo realmente certo, do que toda a facilidade de uma plataforma pobre.[/quote]

Bom dia!

Ano novo, vida nova, né pessoal. Sem partidarismo aqui, por favor. O que achas pode estar certo ou não. Quando puder provar que VB é uma plataforma “pobre” ou que o Java é tão mais “rico”, ou que se faz algo certo em Java e errado em VB, poste aqui para nos iluminarmos. Cada coisa tem sua colocação, uso e intuito.

Até!

[quote=maquiavelbona]
Bom dia!

Ano novo, vida nova, né pessoal. Sem partidarismo aqui, por favor. O que achas pode estar certo ou não. Quando puder provar que VB é uma plataforma “pobre” ou que o Java é tão mais “rico”, ou que se faz algo certo em Java e errado em VB, poste aqui para nos iluminarmos. Cada coisa tem sua colocação, uso e intuito.

Até![/quote]

Não é partidarismo. E não preciso provar o que vc pede para provar, todo mundo já sabe que é verdade. Na empresa onde eu trabalhava, migramos de VB para java para ter mais poder e flexibilidade. E também não disse que o VB não serve para nada, só que para certas situações a “facilidade” que ele propõe mais atrapalha do que ajuda.

A minha intenção foi contribuir com o assunto do tópico. Não acho correto afirmar algo arbitrariamente sem explicar os motivos daquilo ser do jeito que é. Volto a dizer, java é “complicado” (discordo totalmente disso) porque oferece recursos avançados que lhe permitem fazer programas de verdade, o que não vejo no, por exemplo, VB.

Ah, se vc reparar bem, não falei sobre Delphi, o qual já estudei mas não cheguei a trabalhar, mas falei de VB, uma experiência pessoal.

Desculpe se ofendi alguém.

Desculpe, mas não consigo evitar no primeiro dia inútil do ano.

Falácias:

Falácia de Composição

[quote=neófito]… Volto a dizer, java é “complicado” (discordo totalmente disso) porque oferece recursos avançados que lhe permitem fazer programas de verdade, o que não vejo no, por exemplo, VB.
[/quote]
Versão distorcida de Argumentum ad hominem e de Argumentum ad ignorantiam

Além de ter no contexto: Generalização Apressada, Petitio Principii.

Realmente peço desculpas por isso, mas as premissas que utilizaste não compõe uma argumentação favorável a seu ponto de vista.

Linguagem de programação é pior do que fundamentalismo, quando se tem uma linguagem-guia, é difícil abrir os seus horizontes para outras linguagens e não recriminar as contrárias.

Até!

Mais um filósofo.

Se a pessoa tivesse que provar sua dúvida em cada pergunta e provar cada argumento e/ou cada resposta neste forum, ele nem existiria.

Neófito não falou nenhuma mentira.