Declarações inter-tipos no AspectJ


O segundo JPM no AspectJ é conhecido como declaração inter-tipo. Na introdução original da POA, Kiczales e sua equipe listaram as seguintes possibilidades para essa inserção: um pré-processador do código fonte (similar as implementações originais do C++). Em tempo de carregamento (no caso do Java, os advices seriam inseridos assim que as classes fossem carregadas na máquina virtual (JVM)). Em tempo de execução (detectar cada join point em tempo de execução e executar todos os advices relevantes). O compilador gera código Java padrão em arquivos binários de classe, que qualquer JVM padrão pode executar. A inserção em tempo de carregamento será adicionada numa próxima versão como resultado da fusão do AspectJ e do AspectWerkz. Todas as opções de inserção, exceto a última, implicam na mudança do código em algum ponto. Muitos vêem isto como um problema da POA, devido ao fato disto dificultar o entendimento do modelo de execução do programa por parte do programador e dificultar a utilização de ferramentas de depuração. POA e outros paradigmas de programação A programação orientada a aspecto difere muito do conceito da programação orientada a objeto e tem funcionalidade similar aos protocolos de meta-objeto. A depuração é um dos maiores problemas. Enquanto no nível sintático o código POA aparece em separado, ele está junto do restante do código em tempo de execução.