Salve a tutti,
premetto che ho letto abbastanza in rete su conversione da codice java (o anche da bytecode) a codice nativo, e anche su offuscatori free e non.
Espongo il mio problema: ho scritto un programma java e quando lo stavo terminando mi sono accorto (girando in rete) che risalire dal bytecode al codice java non e' cosi' difficile.
Mi sono quindi imbattuto sugli offuscatori che alla fine modificano solo il codice rendendolo illeggibile...ma un malintenzionato, anche se il codice e' illeggibile, puo' usare lo stesso codice modificando qualche nome di variabile qua e la o modificando leggermente qualche ciclo while o for, ottenendo cosi un nuovo programma (COPIATO) da utilizzare per scopi commerciali, con una nuova licenza...in pratica se io lavoro per esempio 5 mesi per creare un programma, il malintenzionato ci lavora 5 giorni e in piu' puo' difendersi legalmente in quanto il codice ha molte variabili e molti cicli while cambiati (e questa secondo me e' una pecca di java, che si contrappone al vantaggio della sua portabilita').
Quindi mi sono detto che il metodo migliore per risolvere il probleme e' quello di compilare il mio programma in codice nativo per varie macchine...rinunciando alla portabilita' di un solo file jar...(lo so mi conveniva scrivere il programma in un altro linguaggio, ma ormai l'ho finito di scrivere in java).
Dunque mi sono messo a cercare in rete i modi (free) per convertire programmi java in codice nativo e ho trovato gcj...ma adesso viene il bello: gcj non e' compatibile con java6 (infatti durante la compilazione mida errore perche' non trova la classe javax.activation.DataContentHandler, che ho visto appartenere a java6).
Utilizzo gcj cosi:
gcj --main="packageClasseMain.nomeClasseMain" nomeProgramma.jar -o progCompilato.exe
La domande sono:
sbaglio nel modo di usare gcj?
esiste un metodo alternativo free e legale per compilare in codice nativo i programmi java?
Grazie a tutti per le vostre risposte.