Uma conversa na RIOJUG me fez pensar…
Imagine o cenário:
Eu tenho meu Gerenciador de Morcegos Cegos, uma aplicação… uhm… Swing com HSQLDB, algo bem simples. Porém, eu contratei o maior especialista em Morcegos Cegos do mundo, que cobrou da minha emrpesa US$500/hora para fazer a especificação dos processos internos.
Minha emrpesa é extremamente capitalista, egoísta e malvada, não quer ninguém usando meu código sem ser pela interface swing.
Passamos um ofuscador inteligentíssimo que converteu todas as estruturas internas para nomes inacreditavelmente incompreensíveis sem modificar os atributos públicos e eventual uso de reflection. Ok, eu pdoeria até ofuscar os públicos, mas isso ia prejudicar o exemplo, então vamos supôr que eu uso bastante reflection e não posso fazer isso.
O que exatamente impede o cliente de descobrir que meu POJO nomeado BatManagerJaponeis tem os métodos que eu uso para gerenciar meus cmorceguinhos? o que impede que ele instancie objetos Bat e passe apra ele numa aplicação feita pelo meu concorrente, a IBM - International Bat Machines?
Considerando que o sistema roda no cliente, a JVM é dele, o AS (se necessário for) também, minha aplicação é um bando de bytecode zipado em um arquivo com uma extensão engraçadinha (jar, war, ear, sar…whatevear)… oq eu impede dele reutilizar minha classe?
Eu sei que pensar nisso é densnecessário em 99% dos casos, mas existem casos que é necessário sim.
O que eu pensei é criar decorators/interceptors (usando AOP, manipulação de bytecode, martelo e pregos, sei lá) passando chaves criptográficas para as classes ao chamar um método… mas… cacete que trabalho felomenal!
Any idea?
Shoes


