Download optimización de aplicaciones orientada a objetos aplicando

Document related concepts
no text concepts found
Transcript
Universidad Libre, Ariza. A. P. J, Optimización de aplicaciones orientada a objetos aplicando JAVABENAS y la API REFLECTION de JAVA
1
OPTIMIZACIÓN DE APLICACIONES
ORIENTADA A OBJETOS
APLICANDO JAVABEANS Y LA API
REFLECTION DE JAVA
Ariza Acevedo, Pedro José
[email protected]
Universidad Libre Seccional Cúcuta
Resumen: Lo que se busca en este proyecto, es
visualizar la diferencia entre la Programación
Orientada a Objetos tradicional y la optimización de
ésta aplicando la API Reflection del lenguaje de
programación Java y Javabeans, construcción de
métodos prototipo, le permite así al desarrollador
realizar instancias dinámicas de objetos por medio
de JavaBeans e introspección de ellos, optimizando
costos de código y tiempo como lo realizan
diferentes FrameWorks como Hibernate, Spring
entre otros y base de la Programación Orientada a
Aspectos POA.
Palabras Clave: API, Reflection, objetos,
JavaBeans,
abstracción,
encapsulamiento,
FrameWork.
modificación de sus contenidos. Los JavaBeans se
localizan dentro de un proyecto orientado a objetos
en la capa de la Vista, el uso permitirá al
desarrollador desplegar una serie de funcionalidad
correspondiente a la lógica del negocio y, por medio
de la API Reflection de java, los programadores
pueden realizar creación de objetos en tiempo de
ejecución e introspección de ellos, ya sea a sus
atributos privados a través de sus métodos.
En este trabajo, se visualiza las ventajas al aplicar
los JavsBeans y la API Reflection de Java,
optimizando los procesos normales de la
programación orientada a objetos y reduciendo el
costo de la escritura de código.
II.
I.
GENERALIZADES
INTRODUCCIÓN.
Java es un lenguaje de programación orientado a
objetos,
basado
en
cuatro
propiedades:
abstracción,
encapsulamiento,
herencia
y
polimorfismo. La potencia de Java radica en su
repositorio de clases embebidas en paquetes
nativos, es por esto, que gran cantidad de
desarrolladores de software aplican java en la
construcción de sus aplicaciones, pero desconocen
su API Reflection, siendo una eficaz herramienta en
la optimización de métodos, generando la
independencia de código y de sus estructuras,
reduciendo así el costo de implementación y
mejorando los procesos para la calidad del
software.
El diseño de las abstracciones es muy relevante
para la eficacia de los JavaBeans, ya que sus
atributos permiten el encapsulamiento de éstos y
por medio de sus métodos la obtención o
Herramientas de pruebas automatizadas de
software inspeccionar y evaluar programas, sin
requerir el acceso en tiempo de compilación para la
estructura del programa. Asimismo, numerosas
plataformas de desarrollo de software (por ejemplo,
Google Web Toolkit) administrar componentes de
código de una manera que reduce el tiempo de
compilación de las dependencias entre ellos. [1]
A. Lenguaje de Programación Java
Los lenguajes de programación son idiomas
artificiales diseñados para expresar cálculos y
procesos que serán llevados a cabo por
ordenadores. Un lenguaje de programación está
formado por un conjunto de palabras reservadas,
símbolos y reglas sintácticas y semánticas que
definen su estructura y el significado de sus
elementos y expresiones. El proceso de
programación consiste en la escritura, compilación y
Tercer Encuentro Internacional Universidad – Empresa en el sector de la Ingeniería – Hotel Bolívar - San José de Cúcuta
2016
2
Universidad Libre, Ariza. A. P. J, Optimización de aplicaciones orientada a objetos aplicando JAVABENAS y la API REFLECTION de JAVA
verificación del código fuente de un programa [15].
Un programa en Java como lenguaje se compila
para ser ejecutado sobre una plataforma
independiente. Esta plataforma de ejecución
independiente está formada básicamente por:
• La máquina virtual de Java
• La interfaz de programación de aplicaciones
en Java o API.
Esta dualidad que consigue la independencia de
una plataforma es igual que la que hemos
identificado en Smalltalk-80: imagen virtual y
máquina virtual. [11] El API es un conjunto de
clases que están compiladas en el formato de
código binario de la máquina abstracta. Estas
clases son utilizadas por el programador para
realizar aplicaciones de una forma más sencillas.
La máquina virtual de Java es el procesador del
código binario de esta plataforma. El soporte a la
orientación a objetos está definido en su código
binario aunque no se define su arquitectura. Por lo
tanto la implementación del intérprete y la
representación de los objetos en memoria quedan a
disposición del diseñador del simulador.
Aprender lenguajes de programación como Java,
Lenguaje de programación orientado a objetos, es
un gran desafío, especialmente cuando se está
todavía en el nivel básico de programación de
eficiencia.
Un montón de ejercicios prácticos son necesarios
para ayudar a los estudiantes a llevar a mejor
entender permanente sobre un tema en particular
[14].
B. Programación Orientada a Objetos.
Los sistemas de software deben evolucionar para
responder a las cambiantes necesidades del cliente
y la evolución de sus entornos. Pero, por desgracia,
la evolución de las aplicaciones heredadas, se
genera un costo exorbitante. [2]
En los lenguajes orientados a objetos, variables
de programa están a menudo ligados a estructuras
de datos complejas que pueden superponerse. Este
es el caso de los programas de Java, cuyos objetos
se almacenan en una memoria compartida
denominada “heap” [3].
En programación estructurada, una función
trabaja sobre unos datos, y no debería modificar
datos que
no le corresponde hacer, pero de eso tiene que
encargarse el programador, en la programación
orientada a objetos POO es el propio sistema de
trabajo el que impide que esto ocurra. Además, la
reusabilidad del código escrito es mucho mayor que
con el uso de funciones, y las portabilidad es
también mayor. La POO, no es un lenguaje de
programación, de hecho las técnicas de POO
pueden utilizarse en cualquier lenguaje conocido y
los que están por venir, aunque estos últimos, al
menos en los próximos años, incluirán facilidades
para el manejo de objetos [8].
La POO, es una metodología de diseño de
software y un paradigma de programación que
define los programas en términos de “clases de
objetos”, objetos que son entidades que combinan
estado (es decir, datos) y comportamiento (esto es,
procedimientos o métodos)...”. La programación
orientada a objetos es un programa con un conjunto
de objetos, que se comunican entre ellos para
realizar tareas y que es un modelo que representa
un subconjunto del mundo real, tal fielmente como
sea posible, de modo fácil y natural, donde los
objetos van a tener características (atributos) y
comportamientos (métodos). Que a diferencia de los
lenguajes procedurales, en donde los datos y los
procedimientos se encuentran separados y sin
relación alguna [9].
Entonces, la programación orientada a objetos es
una técnica de análisis y diseño que se enfoca en
los elementos de un sistema, sus atributos y
responsabilidades, el modelo abstracto está
formado de clases. Una clase describe a un
conjunto de objetos que comparte los mismos
atributos, comportamiento y semántica, un objeto es
una instancia de una clase [12].
Todos los objetos de la misma clase pueden
recibir los mismos mensajes (realizar las mismas
acciones). La clase es el lugar donde se define el
comportamiento de los objetos y su esteuctura
interna. [7]
C. JavaBeans.
Un JavaBean es una clase puramente Java
desarrollada con unos patrones de diseño bien
definidos, que Permiten que sea usada en
posteriores aplicaciones y Permiten gestionar los
componentes de forma automática. JavaBeans
representa una implementación del módelo
Propiedad-Evento-Método,
un
componente
Tercer Encuentro Internacional Universidad – Empresa en el sector de la Ingeniería – Hotel Bolívar - San José de Cúcuta 2016
3
Universidad Libre, Ariza. A. P. J, Optimización de aplicaciones orientada a objetos aplicando JAVABENAS y la API REFLECTION de JAVA
JavaBean se define a través de [10]:
• Las propiedades que expone
• Los métodos que ofrece
• Los eventos que atiende o genera
Para gestionar estas características, todo
JavaBean debe ofrecer [10]:
• Soporte para “Introspection”: El bean tiene
que ofrecer la información necesaria para que la
herramienta de diseño pueda analizar sus
características de forma opaca.
• Soporte para “Customization”: La herramienta
de construcción de la aplicación puede adaptar
(“customizar”) la apariencia o comportamiento del
bean a la aplicación.
• Soporte para Persistencia: El estado de un
bean customizado puede ser almacenado para ser
utilizado más tarde.
• Soporte para Eventos: Los beans se
comunican a través del envío y recepción de evento
gran promesa para el mejoramiento de la calidad de
software proporcionando técnicas de lenguaje de
programación para abordar cuestiones de
modularidad,
reusabilidad,
mantenibilidad
y
extensibilidad. [4]
Se enuncian a continuación las clases del API
Reflection:
TABLA 1.
Clases de la API Reflection.
Clases de la API Reflection
Nombre de la clase
Descripción
java.lang.reflect.Constr
uctor
Proporciona información y acceso sobre
un método constructor
java.lang.reflect.Metho
d.
Proporciona información y acceso a un
método
java.lang.reflect.Array
Proporciona métodos estáticos para crear
y acceder dinámicamente a los arrays.
java.lang.reflect.Memb
er
Interfaz que refleja información sobre un
miembro de una clase (atributo, método o
constructor)
Reflection es la capacidad de un programa para
manipular datos como algo que representa el
estado del programa durante su ejecución. Hay dos
aspectos de este tipo de manipulación: la
introspección y la intercesión. La introspección es la
capacidad de un programa para observar y, por lo
tanto, razón acerca de su propio estado. La
intercesión es la capacidad de un programa para
modificar su propio estado de ejecución o alterar su
propia interpretación o significado. [1]
java.lang.reflect.Field
Proporcionan información y acceso
dinámico a un atributo de una clase. El
atributo puede ser de clase (static) o de
instancia
java.lang.Class
Representa clases e interfaces
java.lang.Package
Proporciona
paquete.
java.lang.ClassLoader
Clase abstracta. Proporciona servicios
para cargar clases dinámicamente
JavaBeans proporciona métodos que utilizan la
API Reflection para la creación de objetos y el
método de invocación. Estas capacidades son
proporcionadas
por
el
paquete
java.beans.expresión y java.beans.statement. Estas
clases se utilizan internamente en Frameworks
JavaBeans para manipular componentes de
software mediante herramientas construidas, pero
también están disponibles para su uso en
programas de cliente. [1]
java.lang.Class
forName
Carga una clase del classpath a partir de
su nombre (nombre completo, con todos
los paquetes.
D. API Reflection
La API Reflection de Java proporciona una forma
dinámica para manipular un objeto en tiempo de
ejecución. Tiene la capacidad de examinar o
modificar el comportamiento en tiempo de ejecución
de las aplicaciones que se ejecutan en la máquina
virtual de Java.[14]
Reflection computacional ha demostrado una
información
sobre
un
Métodos en Clases
public
getName()
public
isInterface( )
String
boolean
Devuelve el nombre de la clase reflejada
por este objeto Class.
Devuelve cierto si la clase es un interfaz.
public boolean isArray(
)
Devuelve cierto si la clase es un array
public
Class
getSuperclass( )
Devuelve el objeto Class que representa
a la clase base de la clase actual
public
Devuelve un array de objetos Class que
representan los interfaces implementados
Class[]
Tercer Encuentro Internacional Universidad – Empresa en el sector de la Ingeniería – Hotel Bolívar - San José de Cúcuta 2016
4
Universidad Libre, Ariza. A. P. J, Optimización de aplicaciones orientada a objetos aplicando JAVABENAS y la API REFLECTION de JAVA
getInterfaces( )
por esta clase.
public
Object
newInstance( )
Crea una instancia de esta clase
(invocando al constructor por defecto)
public
Constructor[]
getConstructors( )
Devuelve un array con todos los
constructores públicos de la clase actual.
public
Method[]
getDeclaredMethods( )
Devuelve un array de todos los métodos
públicos y privados declarados en la clase
actual.
public
Method[]
getMethods( )
public
Method
getMethod(
String
methodName, Class[]
paramTypes )
public
Method
getDeclaredMethod(
String methodName,
Class[] paramTypes )
invokeGetterMethod ( Object target, Cadena nombre)
Static
object
Devuelve un objeto Method que
representa el método público identificado
por su nombre y tipo de parámetros,
declarado en esta clase o heredado de
una clase base.
Devuelve un objeto Method que
representa el método público identificado
por su nombre y tipo de parámetros,
declarado en esta clase. El método puede
ser privado.
TABLA 2.
Contructor Reflectiontestutils.
Constructor
ReflectionTestUtils()
TABLA 3.
Métodos que implementan Reflection en Spring.
Métodos
getField ( Object target, Cadena
nombre)
Conseguir el campo con el
dado name de objeto
Se invoca el método getter con el nombre determinado
objeto suministrado con el value proporcionado.
Static
void
invokeSetterMethod (Object target, C
adena nombre, Object value)
Se invoca el método setter con
el nombre determinado objeto
suministrado con el
proporcionado value
static
void
invokeSetterMethod (Object target, Cadena nombre,
objeto de valor, la clase de tipo)
Invoque el método setter con lo dado nombre en el
objeto de destino se suministra con la
suministrada valor.
static
void
SetField (Object target, Cadena nombre, Object value
)
Establezca el atributo con el nombre
proporcionado target object al value suministrado.
static
void
SetField (Object target, Cadena nombre, objeto de
valor, la clase de tipo)
Establezca el atributo con el nombre
proporcionado target object al value suministrado.
Devuelve un array de todos los métodos
públicos en la clase actual, así como los
declarados en todas las clases base o
interfaces implementados por esta clase
Reflection en Frameworks
Los FrameWork, se puede considerar como
Sistemas los cuales embeben soportes definidos
como componentes o módulos de software. Son de
gran utilidad para minimizar el coste de código y
optimización de tiempos, ejemplo Spring. Se
describen constructor y métodos del FrameWork
Spring.
ReflectionTestUtils, es una colección de métodos
de utilidad basado en la Reflection, para su uso en
la unidad y la integración de pruebas de escenarios;
siempre se recomienda el uso de atributos nopúblicos.
Static
object
proporcionado.
Las investigaciones en los lenguajes de
programación han sido conducidas por la necesidad
de adquirir un software bien modularizado
respetando el principio de separación de intereses.
La buena modularización sirve muchas propiedades
de la ingeniería de software tales como el
entendimiento, extensibilidad, reusabilidad etc.
También ayuda a hacer el software más adaptable,
debido a que para que un interés sea adaptable
(posiblemente dinámico) primero este tiene que ser
limpiamente modularizado. El trabajo en la
Reflection computacional, metaprogramación, y más
recientemente, programación orientada a aspectos
(AOP) ha sido un camino fructuoso para alcanzar
mejor modularización y adaptación en muchos
sistemas, tales como Middleware, sistemas
concurrentes, programación distribuida, sistemas
operativos, interfaces de usuario, aplicaciones
contextualizadas.[5]
1. Metodología Propuesta.
En la presente investigación se pretenden analizar
los factores que inciden en la Optimización de
Aplicaciones Orientada a Objetos aplicando
Javabeans y la API Reflection de Java, realizando
conocimiento profundo de las áreas implicadas,
Tercer Encuentro Internacional Universidad – Empresa en el sector de la Ingeniería – Hotel Bolívar - San José de Cúcuta 2016
5
Universidad Libre, Ariza. A. P. J, Optimización de aplicaciones orientada a objetos aplicando JAVABENAS y la API REFLECTION de JAVA
considerando algunos estudios previos que ya se
tienen en otras investigaciones, e implementando
métodos y aplicativo para generar resultados y
documentación correspondiente. En este caso se
busca evaluar las ventajas y diferencias que puede
existir entre la programación orienta a objetos
tradicional y la incidencia de la API Reflection de
Java.
El nivel de investigación, hace referencia al grado
de profundidad con que se aborda el problema de
investigación [13], en éste caso corresponde a una
investigación inicialmente descriptiva, pero con
predominio de carácter explicativa.
Aplicación Sin API Reflection – Caso Cabecera
de Reportes Clientes.
public void cabecera()
{
jLabel1.setText("LISTADO DE ");
String
col[]
=
{"documento","primer_nombre","primer_apellido”};
String data[][] = {};
model = new DefaultTableModel(data,col);
jTable1.setModel(model);
jLabel1.setText(jLabel1.getText()
+
Metodos.etiqueta.toUpperCase()); }
Aplicación de API Reflection – Caso Cabecera de
Reportes.
En el siguiente código, se ilustra la aplicación de
la API Reflection en la generación dinámica de
obtener la cabecera de una tabla por medio de la
introspección de los contenidos de los campos de
un objeto dado como parámetro en tiempo de
ejecución. La ventaja incide en la reusabilidad del
código, además de la independencia del objeto
analizado, es decir, si a la abstracción “cliente” o
“Persona” se le agregan más atributos, esto no
afecta al código, manteniendo la independencia del
JavaBeans. Dado contrario ocurre sin la aplicación
de la API Reflection, ya que cada modificación de
atributos a la abstracción obliga al cambio manual
de los nombres de columnas de la cabecera,
incurriendo en posibles errores y perdidas
constantes de tiempo, es decir, la cantidad de
modificaciones a las abstracciones del proyecto es
proporcional a la perdida y costo del proyecto.
Aplicación Sin API Reflection – Caso Cabecera
de Reportes Personas.
public void cabecera(){
jLabel1.setText("LISTADO DE ");
String col[] = {"cedula","nombre”};
String data[][] = {};
model = new DefaultTableModel(data,col);
jTable1.setModel(model);
jLabel1.setText(jLabel1.getText()
+
Metodos.etiqueta.toUpperCase()); }
En los códigos anteriores se ilustra la creación del
encabezado en la programación orientada a objetos
sin la aplicación de la API Reflection. Vemos que se
debe especificar manualmente los nombres de las
columnas
dependiendo
de
los
atributos
presentados en la abstracción. Esto indica que por
cada abstracción y Javabeans creado se debe
generar un método donde especifique los nombres
de las columnas del encabezado, significando la
falta de optimización y costo en el desarrollo del
código.
Figura 1. Formulario de Reportes
En la figura 1, se ilustra el Formulario de Reportes
(Frame) que contiene los objetos “Table” y dos
objetos de tipo “Button”. Al hacer click en el botón
“Personas” o “Clientes” se genera el evento
“ActionPerformed” como vemos:
private void
personasActionPerformed(java.awt.event.ActionEve
nt evt) {
Persona p1 = new Persona("12345", "ANA");
cabecera(p1);
}
private void
clientesActionPerformed(java.awt.event.ActionEvent
evt) {
Tercer Encuentro Internacional Universidad – Empresa en el sector de la Ingeniería – Hotel Bolívar - San José de Cúcuta 2016
6
Universidad Libre, Ariza. A. P. J, Optimización de aplicaciones orientada a objetos aplicando JAVABENAS y la API REFLECTION de JAVA
potencia de las clases y métodos embebidos en la
API Reflection de Java. Estos métodos se reflejan la
eficiencia en los FrameWork ya mencionados como
Hibernate y Spring entre otros.Las siguientes
abstracciones ya mencionadas son la base para la
generación de los JavaBeans.
Cliente c1= new
Cliente(12345,"JUAN","ARIAS");
cabecera(c1);
}
En el evento “ActionPerformed “se instancia un
objeto – JavaBeans ya sea “Cliente” o “Persona”,
dependiendo del botón seleccionado y se invoca al
método “cabecera”.
public void cabecera(Object p){
jLabel1.setText("LISTADO DE ");
String data[][] = {};
model
=
DefaultTableModel(data,Metodos.saber(p));
jTable1.setModel(model);
jLabel1.setText(jLabel1.getText()
Metodos.etiqueta.toUpperCase()); }
new
+
El método “cabecera” recibe como parámetro
cualquier objeto, crea el modelo de datos e invoca
al método “saber”, éste se comporta como un
método prototipo, ya que recibe en tiempo de
ejecución cualquier objeto y retorna un vector de
tipo String, que contiene los nombres de las
columnas del encabezado para ser asignado al
modelo de la tabla.
public static String[] saber(Object objeto){
String[] col=null;
Class clase = objeto.getClass();
etiqueta= clase.getSimpleName();
Field[] userfield = clase.getDeclaredFields();
col = new String[userfield.length];
for(int x=0;x<userfield.length;x++)
{
userfield[x].setAccessible(true);
col[x]=userfield[x].getName();
}
return col;}
En el método estático “saber”, se muestra la
potencia de la API Reflection de Java, recibiendo
como parámetro cualquier objeto, realizando
introspección de éste en tiempo de ejecución
(RunTime), obteniendo así el nombre de la clase
del objeto relacionado, los nombres de sus atributos
por medio de un vector de tipo “Field” y, un vector
String que los almacena, para retornarlo y asignarlo
al modelo relacionado.
Los prototipos de métodos se pueden diseñar y
crear dependiendo de las necesidades aplicando la
package reflection_table;
public class Cliente {
private long documento;
private String primer_nombre;
private String primer_apellido;
public long getDocumento() {
return documento;}
public void setDocumento(long documento) {
this.documento = documento;}
public String getPrimer_nombre() {
return primer_nombre;}
public
void
setPrimer_nombre(String
primer_nombre) {
this.primer_nombre = primer_nombre;}
public String getPrimer_apellido() {
return primer_apellido;}
public
void
setPrimer_apellido(String
primer_apellido) {
this.primer_apellido = primer_apellido;}
public
Cliente(long
documento,
String
primer_nombre, String primer_apellido) {
this.documento = documento;
this.primer_nombre = primer_nombre;
this.primer_apellido = primer_apellido;}}
package reflection_table;
public class Persona {
private String cedula;
private String nombre;
public Persona(String cedula, String nombre){
this.cedula = cedula;
this.nombre= nombre;}
public Persona(){ }
public String getCedula() {
return cedula;}
public void setCedula(String cedula) {
this.cedula = cedula;}
public String getNombre() {
return nombre;}
public void setnombre(String nombre) {
this.nombre = nombre;}}
Una vez aplicado la API Reflection de Java, se
visualiza los siguientes formularios.
Tercer Encuentro Internacional Universidad – Empresa en el sector de la Ingeniería – Hotel Bolívar - San José de Cúcuta 2016
7
Universidad Libre, Ariza. A. P. J, Optimización de aplicaciones orientada a objetos aplicando JAVABENAS y la API REFLECTION de JAVA
} catch (IllegalArgumentException ex) {
Logger.getLogger(Persona.class.getName()).log(Lev
el.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Figura 2. Cabecera Listado de Personas aplicando API Reflection.
Logger.getLogger(Persona.class.getName()).log(Lev
el.SEVERE, null, ex);}}
campos=campos.substring(0, campos.length()1);
String sql="insert into"+" "+base+" "+"
"+"("+nombres+") VALUES ("+campos.trim()+")";
Figura 3. Cabecera Listado de Clientes aplicando API Reflection.
El siguiente ejemplo donde actúa la API Reflection
de java es el método “generarsql”, retorna un String
que representa el Sql de la cláusula insert dado el
nombre de la tabla de la base de datos donde se
realiza la inserción y el objeto a insertar.
public static String generarSql(String base, Object
objeto){
Class clase = objeto.getClass();
Field[] userfield = clase.getDeclaredFields();
String nombres="";
String campos="";
for(int x=0;x<userfield.length-1;x++) {
userfield[x].setAccessible(true);
nombres+=userfield[x].getName()+",";}
nombres+=userfield[userfield.length1].getName();
for(int x=0;x<=userfield.length-1;x++){
try {
campos += "'" +
userfield[x].get(objeto)+"',";
return sql;
}
IV. RESULTADOS
Resultados Parciales
Anteriormente se pensaba que si un algoritmo es
sencillo su eficiencia no es tan óptima, sin embargo,
la sencillez es una característica muy interesante a
la hora de diseñar un algoritmo, pues facilita su
verificación, el estudio de su eficiencia,
mantenimiento como escalabilidad y confiabilidad.
Por eso es mejor un código legible y sencillo que
algoritmos redundantes.
Respecto al uso eficiente de los recursos, éste
suele medirse en función de dos parámetros: el
espacio, es decir, memoria que utiliza, y el tiempo,
lo que tarda en ejecutarse. Ambos representan los
costes que supone encontrar la solución al
problema planteado mediante un algoritmo. Dichos
parámetros van a servir además para comparar
algoritmos entre sí, permitiendo determinar el más
adecuado, de entre varios que solucionan un mismo
problema. A la hora de medir el tiempo, se hace en
función del número de operaciones elementales que
realiza
dicho
algoritmo,
entendiendo
por
operaciones elementales (en adelante OE) aquellas
que el ordenador realiza en tiempo acotado por una
constante. En general, es posible realizar el estudio
de la complejidad de un algoritmo sólo en base a un
conjunto reducido de sentencias, aquellas que
caracterizan que el algoritmo sea lento o rápido en
el sentido que nos interesa[6].
Tercer Encuentro Internacional Universidad – Empresa en el sector de la Ingeniería – Hotel Bolívar - San José de Cúcuta 2016
8
Universidad Libre, Ariza. A. P. J, Optimización de aplicaciones orientada a objetos aplicando JAVABENAS y la API REFLECTION de JAVA
Una vez se tiene algoritmos cuya funcionalidad es
eficiente, es necesario definir criterios para medir su
rendimiento o comportamiento. Estos criterios se
centran principalmente en su simplicidad y en el
uso eficiente de los recursos. En este trabajo se
identificaron variables como líneas de código,
rehúso, bloques try-catch, llamados a métodos
dentro de muchas que pueden indicar la
optimización una vez aplicada la API Reflection de
java. Los resultados parciales se ajustan a la
siguiente figura 4 obtenidos del método “saber”.
POO VS API REFLECTION
programación orientada a objetos
• La API Reflection de Java y JavaBeans,
permite al programador realizar instancias
dinámicas de objetos e introspección de ellos en
tiempo de ejecución
• Aplicando la API reflection de Java se reduce
la sobrecarga de métodos utilizado en la
Programación orientada a objetos tradicional
• Aplicando los métodos nativos de la API
Reflection de Java de forma eficiente, se pueden
crear métodos prototipo, optimizando costos de
código y tiempo
• Con la API Reflection de Java se pueden
construir FrameWorks para enlazar con bases de
datos relacionales
REFERENCIAS
15
lineas de
codigo
10
llamados
a metodos
5
0
[1] Z. Shams and S. H. Edwards, “Reflection Support : Java
Reflection Made Easy,” pp. 38–52, 2013.
[2]
POO (No
API
reflection) Reflection
Figura 4. Medición de Factores entre la POO y API Reflection
En la gráfica anterior se ilustra como con la
Aplicación de la API Reflection de Java, facilita la
construcción de aplicaciones Orientado a objetos.
Prestando oportunidad a desarrolladores e
investigadores a optimizar procesos de desarrollo y
construcción de frameWork. Optimizando procesos
se genera reducción de los costos, ya que se
optimizan acciones relacionados de tipo CRUID
(create, read, update, insert, delete), ahorro de
tiempo y dinero.
El proyecto dará por resultado una vez terminado,
una matriz que visualice las ventajas de la API
Reflection de java sobre la Programación orientada
a objetos tradicional. El aplicativo tendrá métodos
embebidos que soportan la incidencia de la API
Reflection de Java.
V. CONCLUSIONES.
• La programación orientada a objetos
tradicional no optimiza procesos, ni reduce el coste
de implementación de un proyecto de software
orientado a objetos.
• Con la API Reflection de Java y JavaBeans,
se optimizan los métodos tradicionales de la
S. Allier, H. Sahraoui, S. Sadou, S. Allier, H. Sahraoui, S.
Sadou, and V. R. Object-oriented, “Restructuring Object-Oriented
Applications into Component-Oriented Applications by Using
Consistency with Execution Traces To cite this version : Restructuring
Object-Oriented Applications into Component-Oriented Applications by
using Consistency with Execution Traces,” 2010.
[3]
G. Amato, M. Chiara, and M. Francesca, “Exploiting Linearity in
Sharing Analysis of Object-oriented Programs,” Electron. Notes Theor.
Comput. Sci., vol. 322, pp. 3–18, 2016.
[4]
“RESEARCH
PAPERS
OPENC :
EXTENDING
C
WITH
COMPUTATIONAL REFLECTION,” vol. 8, no. 4, p. 2014, 2014.
[5] É. Tanter, R. Toledo, G. Pothier, and J. Noyé, “Flexible
metaprogramming and AOP in Java,” vol. 72, pp. 22–30, 2008.
[6] Universidad de Málaga, Lenguajes y Ciencias de la Computación,
[Documento
en
línea].
Disponible
en:
http://www.lcc.uma.es/~av/Libro/CAP1.pdf.
[Consulta: 2016, Marzo 20].
[7] Universidad de Alicante, Introducción al Paradigma Orientado a
objetos,
[Documento
en
línea].
Disponible
http://rua.ua.es/dspace/bitstream/10045/15993/1/POO-1-Intro-10-11.pdf.
[8] Morero,Francisco. Introducción a la OOP. Versión 1.0.0 19992000 © Grupo EIDOS.
[9] Arenas Luís. Universidad Nacional Autónoma de México, facultad
de contaduría y administración. [Documento en línea]. Disponible
http://fcasua.contad.unam.mx/apuntes/interiores/docs/98/opt/java.pdf.
Tercer Encuentro Internacional Universidad – Empresa en el sector de la Ingeniería – Hotel Bolívar - San José de Cúcuta 2016
9
Universidad Libre, Ariza. A. P. J, Optimización de aplicaciones orientada a objetos aplicando JAVABENAS y la API REFLECTION de JAVA
[10] Tecnología de componentes JavaBeans. [Documento en línea].
Disponible
http://www.ctr.unican.es/asignaturas/MC_OO/Doc/JavaBeans_0910.pdf
[11] Universidad de Oviedo. DISEÑO DE MÁQUINAS
ABSTRACTAS BASADAS EN REFLECTIVIDAD COMPUTACIONAL.
[Documento en línea]. Disponible
http://di002.edv.uniovi.es/~cueva/asignaturas/TI/pi-ortin.pdf.
[12] Universidad de Nebrija. Escuela Politécnica Superior de
Ingeniería Departamento de Ingeniería Informática. [Documento en
línea]. Disponible.
http://www.nebrija.es/~oruano/java/04%20Programacion%20orienta
da%20a%20objetos%20con%20Java.pdf.
[13] Arias, F. (2006). El Proyecto de Investigación. Introducción a la
Metodología Científica. Caracas: Editorial Episteme. [Consulta: 2015
Abril 5].
[14] Norazah Yusof, Nur Ariffin Mohd Zin, Noor Shyahira Adnan.
Java Programming Assessment Tool for Assignment Module in Moodle
E-learning System.
[15] Universidad Complutense de Madrid. Facultad de informática.
[Documento
en
línea].
Disponible.
http://pendientedemigracion.ucm.es/info/tecnomovil/documentos/fjava.p
df.
NOTA ACLARATORIA
El documento no ha sido publicado previamente, o
no presenta ninguna restricción previamente
declarada o certificada en otro medio de publicación.
Es un trabajo original. Se autoriza así su Publicación
en cualquier medio, digital o impreso.
Tercer Encuentro Internacional Universidad – Empresa en el sector de la Ingeniería – Hotel Bolívar - San José de Cúcuta 2016