DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Artigo Java Magazine 66 - Bytecode: Escondendo e Revelando

Artigo da Revista Java Magazine Edição 66.

Esse artigo faz parte da revista Java Magazine edição 66. Clique aqui para ler todos os artigos desta edição

Bytecode: Escondendo e Revelando

Usando ofuscadores, descompiladores e otimizadores – e entendendo o bytecode

Preocupado com a proteção de Propriedade Intelectual do seu código? Ou curioso com todos os artigos, ferramentas e bibliotecas de geração de código que falam no tal bytecode?

 

De que se trata o artigo:

Explicamos a estrutura dos arquivos .class do Java, inclusive o bytecode, que codifica todos os seus métodos de forma portável. Entrando numa aplicação mais comum e mais prática, examinamos o tema de ofuscação e descompilação de código.

 

Para que serve:

Entender o bytecode é um conhecimento necessário para o uso de bibliotecas que permitem gerar código dinamicamente, ou mesmo para ter domínio do que acontece “por baixo do pano” ao usar ferramentas que fazem isso por você (como APIs de ORM, AOP, e outras).

Desenvolvedores de software de código fechado muitas vezes se preocupam com a proteção da sua Propriedade Intelectual, não desejando que nenhum “curioso” possa descompilar facilmente suas classes. Para isso, exploramos a ferramenta open source ProGuard. Veremos também o aspecto de otimização de bytecode, devido ao qual estas ferramentas podem ser muito úteis até mesmo para projetos de código aberto.

 

 

Este artigo trata de um tema com aspectos importantes tanto do nível teórico quanto do prático. Vamos falar do bytecode do Java: sua estrutura, design, vantagens e limitações, seu papel dentro da plataforma. Mas vamos estudar isso no contexto de uma aplicação importante, a prática de ofuscamento e otimização (ou sua reversa: descompilação) de classes. A princípio você poderia aprender a usar estas ferramentas de uma forma superficial, simplesmente lendo suas instruções e usando facilitadores como plug-ins para IDEs. Mas o real domínio de qualquer ferramenta sempre depende de saber o que acontece “por baixo do pano”.

Por que conhecer o “executável” do Java?

Quando eu cursava a graduação, a linguagem da vez era C/C++, gerando executáveis nativos. E uma das melhores lições sobre arquitetura de computadores tratou do formato executável nativo na plataforma Wintel: .EXE, .DLL, .OBJ e .LIB. Lembro de um trabalho prático que consistia em fazer o parsing de um arquivo .OBJ e exibir seu conteúdo detalhado – algo como o javap do JDK, mas bem mais complexo pois o formato usado pelo Windows, o COFF, tem um design de baixo nível. Era um daqueles trabalhos que muitos estudantes detestam por que (além de difícil) não teria aplicação para a enorme maioria dos projetos de software no “mundo real”. No entanto, com o passar dos anos vi que poucos tópicos de estudo me foram tão úteis para adquirir um insight aprofundado de várias coisas – linguagens de programação, compiladores, sistemas operacionais.

O formato dos arquivos que armazenam um programa executável é de importância fundamental, pois tem enorme envolvimento em vários aspectos da linguagem. Se você duvida, basta ver como podemos categorizar linguagens/plataformas em famílias coerentes, pelo seu formato executável: veja o quadro “Linguagens, por Formato Executável”.

 

Linguagens, por Formato Executável

"



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Osvaldo Pinali Doederlein

é Mestre em Engenharia de Software Orientado a Objetos e Arquiteto de Tecnologia da Visionnaire Informática, trabalhando em projetos de software e prospecção tecnológica.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03