Programación Orientada a Aspectos en Java SIN AspectJ?

ok, esta pregunta nunca se ha hecho antes en la web, así que aquí va: estoy aprendiendo Java (nivel principiante-intermedio) y decidí seguir adelante con el programa de clase probando la programación Orientada a Aspectos.

Ahora se supone que esto es fácil de aprender (al menos eso es el consenso web) tanto que se dice que los "aspectos" son versiones ligeramente modificadas de las clases estándar, por lo que mi pregunta es: si los aspectos son básicamente clases,

¿POR QUÉ tenemos que instalar AspectJ para hacer AOP en Java?

ya que eso solo agrega una capa adicional de complejidad que hace que el concepto sea aún más difícil de comprender.

Lo que quiero es poder escribir un aspecto sin usar AspectJ (o cualquier otro complemento), en otras palabras, quiero hacer AOP usando solo BASIC Java y sus clases estándar de Java. ¿es posible y si es así, cómo debo escribir estas clases?

Respuesta 1

AspectJ es un marco de aspecto "puro", a falta de una palabra mejor. El criterio es que puede usarse ampliamente en todo tipo de circunstancias. Cualquier aspecto, en cualquier clase, en cualquier momento.

Dicho esto, la técnica de aspecto de interceptar y envolver llamadas de método, ha encontrado su camino dominante en Java. Sin embargo, estas tendencias hacia la especialización del concepto de aspecto genérico para fines específicos.

Se hizo un "aspecto" muy temprano con las capacidades tempranas de EJB. Esto implicaba el uso de archivos XML para aumentar las clases y las interfaces, de modo que el contenedor pudiera crear objetos proxy que envolverían las invocaciones de métodos en contextos de transacción. Esta envoltura de los métodos es un concepto de aspecto, pero las primeras especificaciones de EJB solo ofrecían la capacidad en el caso de uso muy específico de la gestión de transacciones.

La llegada de las anotaciones con Java 1.5 abrió este concepto de aumento de la programación orientada a aspectos. No es que necesite anotaciones para habilitar esto, sino que simplemente hace que los marcos sean mucho más fáciles de usar, ya que las anotaciones eliminan la configuración externa de metadatos (usando, quizás, archivos XML).

Entonces, ahora, muchos sistemas Java usan conceptos de programación orientada a aspectos, típicamente a través de reflexiones y anotaciones, para implementar ciertas capacidades. Si esto es inyección de instancia, alrededor de métodos, validación, etc.

El componente clave para todo esto es algún mecanismo para interceptar la llamada al método. AspectJ trabajó cambiando la clase de destino sobre la marcha, en lugar de interponer un intermediario. EJB funciona mediante la creación de servidores proxy en las interfaces (algo que puede hacer de forma inmediata en Java), y luego, cuando un programa le pide una instancia al contenedor, proporciona un proxy respaldado por la instancia real.

Por lo tanto, para habilitar AOP "genérico", en todas partes, todo el tiempo, ciertamente necesita algo amplio como AspectJ. Pero para obtener muchos de los beneficios, no necesita ir tan lejos. Una simple clase Factory y una interfaz pueden hacer el trabajo fácilmente.

Respuesta: 2

Runtime.getRuntime (). MaxMemory () muestra qué memoria? ¿Es sobreviviente, Edén, viejo, permanente?

Estoy tratando de extraer la información del hipervínculo de un PDF usando PDFBox, pero no estoy seguro de cómo obtener (Object p: pages) {PDPage page = (PDPage) p; Lista <?> Anotaciones = página ...

Cuando pregunté esto por primera vez, incluí toda la información que pude, ya que nunca sé qué ayudará a alguien si puede dar una solución, pero por las respuestas, parece que no he aclarado mi punto ...

¿Cómo proporcionar subpaneles minimizables? Como puede ver en la imagen en un panel, hay 4 menús (No sé cuáles son) y son minimizables cuando se hace clic en la flecha al lado de los títulos. Soy ...