Archivio

Archive for dicembre 2010

Dead Code Elimination in Java

21 dicembre 2010 Commenti disabilitati

Translate in English with Google Translate
Tempo fa mi sono imbattuto in questa simpatica tecnica di ottimizzazione del codice ad opera del compilatore java. In poche parole il compilatore non si limita semplicemente a compilare il codice che gli viene sottoposto ma in base a degli algoritmi di analisi, cerca di eliminare/ottimizzare il compilato da generare. Le ottimizzazioni effettuate dal compilatore sono di diverso tipo ma in questo articolo ci soffermeremo solo su una di queste.
Nel nostro caso ci soffermeremo sul “Dead Code Elimination” ( DCE ) che rappresenta un algoritmo di ottimizzazione del codice compilato che consente di eliminare quella porzione di codice che non produce alcun risultato utile. L’eliminazione di questa parte di codice, dal compilato, permette di compattare il codice generato, pertanto riduce il LOC ossia “Line Of Code” eliminando codice “morto” ossia codice/variabili che non verrebbe mai eseguito/assegnate in quanto irraggiungibile.
Leggi tutto…

Categorie:java

Java Instrumentation Framework con Javassist

15 dicembre 2010 Commenti disabilitati

Translate in English with Google Translate

Nell’articolo precedente ho introdotto il Java Instrumentation Framework recepito in Java 5 e che consente di instrumentare le classi in modo da poter apportare delle modifiche a Runtime al bytecode per esigenze di logging, debugging, profiling o per altro.

Precedentemente avevo introdotto solo le basi della instrumentazione mentre in questo articolo approfondiamo l’argomento e vediamo come l’agent riesca a modificare il bytecode utilizzando la libreria di manipolazione del bytecode javassist.
Leggi tutto…

Categorie:java

Java Instrumentation Framework

7 dicembre 2010 Commenti disabilitati

Translate in English with Google Translate
Con Java 5 è stata recepita la JSR-163 ( Java Platform Profiling Architecture API ) che include un meccanismo di instrumentation del bytecode tramite l’introduzione della Java Programming Language Instrumentation Services ( JPLIS ) che introduce un nuovo package dal nome java.lang.instrument che consente di eseguire le istruzione di un agente ed eventualmente modificare il contenuto del bytecode inerente ai metodi di una classe in modo tale da modificare a RunTime il suo comportamento.

Da precisare che il suddetto package non fornisce nessuna implementazione utile a modificare il bytecode ma, per fare ciò, occorre utilizzare librerie di terze parti, per esempio in ambito open-source possiamo utilizzare javassist, BCEL oppure ASM .
Leggi tutto…

Categorie:java Tag:,