Sobre obfuscadores

olá galera, nadei vendo sobre obfuscadores e vi q eles servem para dar uma ajeitada no codigo e ficar mais limpo e consequentemente menor, tb vi q no netbeans 6 tem um obfuscador, minha pergunta ele funciona? colokei no level maximo e nao adiantou nada, tem q fazer algo mais ? como funciona?
Grato.

[quote=JJjava]olá galera, nadei vendo sobre obfuscadores e vi q eles servem para dar uma ajeitada no codigo e ficar mais limpo e consequentemente menor, tb vi q no netbeans 6 tem um obfuscador, minha pergunta ele funciona? colokei no level maximo e nao adiantou nada, tem q fazer algo mais ? como funciona?
Grato.[/quote]

Bem, como detesto o Netbeans, só posso te dizer pelo que eu uso, que é o Eclipse com o plugin EclipseME.

Sim, o Proguard funciona e é fundamental usá-lo quando a aplicação ganhou um status de ser colocada em produção.
Até a fase de testes, desenvolvimento, não recomendo usar pois é só perda de tempo. Tá bom, pode ser que isto ajude a verificar a medida que a aplicação vai crescendo, o quanto seu tamanho final ficará, mas é opcional.

[quote=JJjava]olá galera, nadei vendo sobre obfuscadores e vi q eles servem para dar uma ajeitada no codigo e ficar mais limpo e consequentemente menor, tb vi q no netbeans 6 tem um obfuscador, minha pergunta ele funciona? colokei no level maximo e nao adiantou nada, tem q fazer algo mais ? como funciona?
Grato.[/quote]

É justamente ao contrário. Eles servem para “desajeitar” o código antes de compila-lo.
O que eles fazem é transformar o nome de propriedades e métodos para coisas nada intuitivas como “$”, “", "_”.

Eles tem um preço. Esqueça reflexão após usa-los e você terá que usar o ofuscador novamente, junto com uma tabela de símbolos, para poder ler uma stacktrace de erro.
Mas por outro lado, dificultam muito para alguém que queira fazer engenharia reversa no seu código.

Eu acho que não vale a pena utiliza-los. Os poucos bytes que você ganha não compensam o trabalho que você tem.

Eu tenho ganhado bytes valiósos com o obfuscador. Minhas aplicações diminuem no mínimo 7% do tamanho após a obfuscação, oque é bastante considerável. Além de aumentar a segurança.

Tenho utilizado o obfuscador do próprio Netbeans no level mais alto. Porém enquanto estiver fazendo testes é ruim utilizar o obfucador pois fica difícil saber em qual trecho do código ocorreu uma exceção. Então utilize apenas quando finalizar a aplicação ou para estimar o tamanho que sua aplicação vai ter como sugeriu o boone.

[quote=JavaES]Eu tenho ganhado bytes valiósos com o obfuscador. Minhas aplicações diminuem no mínimo 7% do tamanho após a obfuscação, oque é bastante considerável. Além de aumentar a segurança.

Tenho utilizado o obfuscador do próprio Netbeans no level mais alto. Porém enquanto estiver fazendo testes é ruim utilizar o obfucador pois fica difícil saber em qual trecho do código ocorreu uma exceção. Então utilize apenas quando finalizar a aplicação ou para estimar o tamanho que sua aplicação vai ter como sugeriu o boone.[/quote]

Pois é…eu ganho 30 Kb depois da obsfucação, ficando ela então com 70 Kb ao final e acho isto satisfatório…
Estou satisfeito e como eu disse, só me preocupo com isto depois de código testado e pronto para ser colocado em produção.

Reduzir o tamanho do JAR deveria ser a preocupação de todos que desenvolvem seriamente para a plataforma, pois isto além de agilizar o processo de download do usuário fazendo com que seja gasto menos tempo, pesa menos no bolso dele, pois é menos bytes consumidos do seu plano, ocupa menos espaço na memória de armazenamento e em alguns casos também na execução (heap).

Sei que consigo economizar mais bytes ainda, se juntar minhas várias imagens em um único arquivo, mas não deu ainda…mas tá anotado em minha to-do list…

[quote=JavaES]Eu tenho ganhado bytes valiósos com o obfuscador. Minhas aplicações diminuem no mínimo 7% do tamanho após a obfuscação, oque é bastante considerável. Além de aumentar a segurança.

Tenho utilizado o obfuscador do próprio Netbeans no level mais alto. Porém enquanto estiver fazendo testes é ruim utilizar o obfucador pois fica difícil saber em qual trecho do código ocorreu uma exceção. Então utilize apenas quando finalizar a aplicação ou para estimar o tamanho que sua aplicação vai ter como sugeriu o boone.[/quote]
hum interessante e com problema a rodar as aplicações nos dispositivos está funcinando normal? vi em algum lugar q obsfuscar d+ pode causar problemas na hora de rodar a aplicação e como vc está usando no nivel 10 do netbeans…

Não é para ter problema não. Obfuscador nenhum deve alterar o programa de forma a causar problema, a não ser que ele seja bugado.

Viu…eu não uso Netbeans como te falei lá emcima…eu uso Eclipse com EclipseME e Proguard. Roda muito mais rápido e é mais leve do que o Netbeans.Quem quer performance na execução da IDE, usa Eclipse. Quem é newbie ou quer desenhar as telas, usa o Netbeans.Tá, estou simplista na comparação, mas é por aí.

Há anos o Eclipse vem sendo utilizado para J2ME e só recentemente (1 ou 2 anos) com o Mobility Pack o Netbeans veio para competir (?)

Como eu falei, ele pode causar problema se você usa reflexão. Apesar de que hoje você poderia usar anotações para contorna-los (o que deixaria o seu jar maior novamente).

Mas para JME, onde isso praticamente não existe, realmente, usar pode ser uma boa, já que o hardware em si costuma a ser bastante limitado.

[quote=boone]Não é para ter problema não. Obfuscador nenhum deve alterar o programa de forma a causar problema, a não ser que ele seja bugado.

Viu…eu não uso Netbeans como te falei lá emcima…eu uso Eclipse com EclipseME e Proguard. Roda muito mais rápido e é mais leve do que o Netbeans.Quem quer performance na execução da IDE, usa Eclipse. Quem é newbie ou quer desenhar as telas, usa o Netbeans.Tá, estou simplista na comparação, mas é por aí.

Há anos o Eclipse vem sendo utilizado para J2ME e só recentemente (1 ou 2 anos) com o Mobility Pack o Netbeans veio para competir (?) [/quote]

Realmente comecei com o Netbeans devido as facilidades do Mobility Pack e a possibilidade de desenhar as telinhas… Felizmente isso contribuiu muito para meu aprendizado e hoje descarto essas facilidades do Mobility Pack e faço tudo na marra mesmo. Assim, o Netbeans tem atendido as minhas demandas com muita eficiência, tenho tido um bom nível de produção e ele pelo menos aqui possui uma performance caparável a do Eclipse e com a vantagem de ser muito mais fácil de configurar.

Acredito que as duas ferramentas sejam boas, cada uma tem suas vantagens em particular.

boone… o que você acha melhor, o Eclipse+Antenna ou Eclipse+EclipseME?

Assim que sobrar um tempo vou fazer uns testes no Eclipse… quem sabe ele realmente é muito melhor… só testando mesmo.

Abraço

[quote=JavaES]boone… o que você acha melhor, o Eclipse+Antenna ou Eclipse+EclipseME?

Assim que sobrar um tempo vou fazer uns testes no Eclipse… quem sabe ele realmente é muito melhor… só testando mesmo.

Abraço[/quote]

Os dois são bons:

O que gosto no Eclipse + Antenna:

Permite você customizar cada passo do processo de compilação até chegar finalmente no JAR. Você pode a isso colocar ao final para jogar teu JAR em um FTP ou fazer qualquer outra coisa, enfim, já usei bastante é realmente é muito bom. Não tem uma interface gráfica, pois nada mais é que um XML do Ant que chama tarefas para cada etapa (compilar, preverificar, obfuscar, empacotar…)

O que gosto no Eclipse + EclipseME:

Ele tem uma integração maior com o Eclipse por ser um plugin para o mesmo, então algumas tarefas são facilitadas, mas se perde um pouco do controle que se tem quando se compara com o Antenna. Uma ótima opção também, inclusive a versão 1.7.9 já é a usada como base para o MTJ

O lance é este mesmo, é deixar de usar estas ferramentas “engessa-cérebro” e entender como fazer a mesma coisa inclusive se só tiver a linha de comando na máquina e mais nada instalado.(O notepad é meu amigo e nada me faltará…)