Proceso de programación. Estructura de una Máquina Virtual Java (JVM) Problema. Lenguajes tradicionales
|
|
- Santiago Vega Jiménez
- hace 8 años
- Vistas:
Transcripción
1 Estructura de una Máquina Virtual Java (JVM) Autor: Pedro Pablo Garrido Abenza Proceso de programación Primero se escribe el programa en un lenguaje de alto nivel (código fuente). Este código se traduce a instrucciones que una máquina específica puede ejecutar (código ejecutable). Para ello se han inventado varias estrategias: Ensambladores (ASM Código nativo) Compiladores (SRC Código nativo) Intérpretes Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) Problema Durante mucho tiempo un problema común ha sido la necesidad de poder ejecutar un mismo programa en diferentes plataformas (sistemas operativos, hardware, etc.). Hola.c Hola.c Lenguajes tradicionales Compilación Compilación (bcc) (bcc) Hola.obj Hola.obj Enlazado Enlazado (link) (link) C API API Hola.exe Hola.exe Compilación Compilación (gcc) (gcc) Hola.o Hola.o Enlazado Enlazado (ld) (ld) Hola Hola C API API Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM)
2 Java - Una nueva idea La tecnología Java es: Un lenguaje de programación Un conjunto plataformas especializadas JEE JSE JME Java - Una nueva idea Esto se consiguió gracias al uso de un código ermedio: bytecodes. En tiempo de compilación se generan bytecodes independientes de la plataforma. Java fué diseñado específicamente para ser: Write Once, Run Anywhere En tiempo de ejecución se ejecutan (erpretan) los bytecodes utilizando un programa llamado Java Virtual Machine (JVM) sobre una plataforma específica. Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) Java Java API API Tecnología Java Hola.java Hola.java JVM JVM (java) (java) Compilación (javac) (javac) Hola. Hola. bytecodes bytecodes (Código independiente de la plataforma:.) JVM JVM (java) (java) JVM JVM (java) (java) Tecnología Java Ventajas: Multiplataforma Código compacto: bytecodes Aplicaciones convencionales y applets Paradigma POO Inconvenientes: Velocidad de ejecución lenta Plataforma Plataforma Plataforma Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM)
3 Tecnología Java Ventajas: Multiplataforma Código compacto: bytecodes Aplicaciones convencionales y applets Paradigma POO Inconvenientes: Velocidad de ejecución lenta (erpretado) Tecnología Java Comparando Java con los lenguajes tradicionales: Programas (código nativo) Sistema Operativo Hardware Lenguajes tradicionales Prog. Java (bytecodes) Máquina Virtual (bytecodes > código nativo) Sistema Operativo Hardware Tecnología Java Clases Java (bytecodes) Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) 0 Por qué estudiar la JVM? Comprender aspectos sobre la portabilidad de los programas Java. Distinguir el funcionamiento de un érprete frente al de un compilador. If you don't understand erpreters, you can still write programs; you can even be a competent programmer. But you can't be a master (Friedman). Implementar nuestra propia JVM. Analizar la salida de los compiladores Java para optimizarlos. Implementaciones JVM Intérpretes desarrollados: Sun Microsystems Microsoft, Borland, IBM Otros: Kaffe, LaTTe, Kissme, SableVM, Wonka,...,. Todos deben ser compatibles: The Java Virtual Machine Specification Otras especificaciones (JNI,...). Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM)
4 Implementaciones JVM Programas Java JVM Librería clases Java JVM - JNI (awt.dll, net.dll,...) Java Language Specification Java API Specification JVM Specification JNI Specification Estructura de la JVM Una JVM contiene básicamente:. Zona de memoria dinámica (heap). Zona de métodos. Hilos de ejecución (threads) Memoria dinámica (Heap) Sistema Operativo Hardware Zona de métodos Hilos (Threads) La torre de especificaciones Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) Objeto Amarillo aun vigente Objeto Amarillo eliminado Estructura de la JVM /. Zona de memoria dinámica (heap): Heap Heap Es una zona de memoria reservada por la JVM para almacenar las instancias de las clases (objetos) que se crean. Periódicamente se ejecuta el algoritmo de Garbage Collection (GC) para liberar memoria ocupada por objetos eliminados, y compactar huecos libres. GC Heap Heap Estructura de la JVM /. Zona de métodos: Es una zona de memoria utilizada para almacenar el código de los métodos de todas las clases Java cargadas (bytecodes). Zona compartida por todos los hilos. Zona Zona métodos métodos factorial pr exit get get ; ; : : ldc ldc ; ; : : invokevirtual invokevirtual ; ; : : Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM)
5 SP Frame Poer Estructura de la JVM /. Hilos de ejecución (threads): Sólo uno estará activo en un instante. Cada hilo contiene: ID: un identificador único. Stack JVM: pila de llamadas a métodos Cada elemento de la pila es un marco (Frame). Frame Poer (): puntero que señala al marco de Hilo Hilo (Thread) (Thread) ID: la cima, el marco actual. Marco Marco Marco Marco 0 Stack JVM Marco actual () Estructura de una Java Virtual Machine (JVM) Estructura de la JVM /. Elementos de un marco (Frame): Zona Zona para para las las variables locales; locales; las las primeras siempre siempre son son los los argumentos recibidos por por el el método. método. Args. Vars. locales 0. args 0. args Código Código del del método, que que estará estará ejecutando la la instrucción indicada por por el el Los Los opcodes opcodesla la utilizan utilizan para para extraer extraer sus sus parámetros (pop) (pop) y dejar dejar los los resultados (push). (push). Pila de operandos Marco llamador Puntero Puntero al al marco marco que que le le ha ha llamado, para para retornarle valores. valores. Estructura de una Java Virtual Machine (JVM) Invocaciones: args/ Pe Pe n n sumanat sumanat (, (, ); ); private private sumanat sumanat ( ( ini, ini, fin) fin) i, i, suma0; suma0; for for (iini; (iini; i<fin; i<fin; i++) i++) suma+i; suma+i; (suma); (suma); Invocaciones: args/ Frame Poer Frame 0 () Args. Vars. locales 0. args args.... n? nsumanat(,); Null Frame Poer Frame 0 () Args. Vars. locales 0. args args.... n? nsumanat(,); Null Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) 0
6 Invocaciones: args/ Args. 0. ini. fin Vars. locales 0. ini. fin. i?. suma 0 private sumanat ( ini, fin) i, suma0; for (iini; i<fin; i++) suma+i; (suma); Invocaciones: args/ Args. 0. ini. fin Vars. locales 0. ini. fin. i. suma private sumanat ( ini, fin) i, suma0; for (iini; i<fin; i++) suma+i; (suma); Frame Poer Frame (sumanat) Frame 0 () Args. Vars. locales 0. args args.... n? nsumanat(,); Null Frame Poer Frame (sumanat) Frame 0 () Args. Vars. locales 0. args args.... n? nsumanat(,); Null Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) Invocaciones: args/ Args. 0. ini. fin Vars. locales 0. ini. fin. i. suma private sumanat ( ini, fin) i, suma0; for (iini; i<fin; i++) suma+i; (suma); Invocaciones: args/ Frame Poer Frame (sumanat) Args. Vars. locales 0. args args.... n? Frame 0 () Null nsumanat(,); Estructura de una Java Virtual Machine (JVM) Frame Poer Frame 0 () Args. 0. args... Vars. locales 0. args.... n Null nsumanat(,); Estructura de una Java Virtual Machine (JVM)
7 Clases - Procesado Fases para el procesado de clases Java antes de su ejecución: Carga Enlace.a.b.c Verificación Preparación Resolución Inicialización Tareas: Clases - Fase de carga Búsqueda y carga de clases Java Almacenamiento de clases Java: Archivos. empaquetados en los archivos.zip o.jar de Java: C:\Archivos de programa\java\jdk..0\jre\lib\rt.jar C:\WINDOWS\java\Packages\*.zip Archivos. en cualquier directorio especificado en la variable CLASSPATH. Archivos.ZIP o.jar especificados en la variable CLASSPATH. Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) Número mágico: 0xCAFE BABE Versión: 0x (JSDK..0) Clases - Fase de carga Los archivos. son archivos binarios: Clases - Fase de carga Estructura de una clase (.): Número mágico: 0xCAFEBABE Versión Java:.0 JSDK. Visibilidad: pública, privada, etc. Nombre de la superclase zona de antes numeradas (números, nombres de atributos y métodos, Strings, ), utilizadas por los siguientes. Fields: lista de campos. s: lista de métodos. Interfaces: lista de erfaces implementadas. Attributes: información adicional. Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM)
8 Clases - Fase de carga Lista de clases cargadas: cubetas Lista enlazada: A K Tabla Hash de dispersión abierta: 0 D A K D Q Q Función dispersión: Σ (ASCII(nombre)) % cubetas Ejemplo: A ( % ) Clases - Fase de enlace Se divide en subfases: Verificación: formato correcto Preparación: creación de datos de clase Resolución de referencias simbólicas: Estática: se resuelven todas al principio (de forma recursiva). Perezosa: se resuelven sólo cuando son realmente utilizadas. Resolución Estática Perezosa Sun Microsoft Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) 0 Tareas: Clases - Inicialización Ejecución de los ructores de clase (Métodos <clinit>). Una vez procesada una clase completamente, ya será posible... Crear instancias de esa clase. Ejecutar los métodos que incluye. Repertorio de instrucciones Cada MV tiene su propio juego de instrucciones, al igual que cualquier CPU. Tradicionalmente hay dos tipos de juegos de instrucciones: Basados en pila: las instrucciones toman los operandos de la pila de operandos Máquinas Virtuales (más sencillo). Basados en registros: los operandos se toman de unos "registros" CPUs. La JVM está basada en pila (CISC) Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM)
9 Repertorio de instrucciones La JVM tiene 00 opcodes: 00..FF A cada opcode se le asocia una palabra fácil de recordar: mnemónico: Repertorio de instrucciones Los opcodes se pueden agrupar por categorías: Carga y almacenamiento (Load & Store), Operaciones aritméticas, Conversiones de tipo, Creación y gestión de objetos, Gestión de pila de operandos, Control de flujo de ejecución, Invocación a métodos y retorno. Código de los métodos: bytecodes. Un bytecode a de: Un código de operación (opcode): byte Seguido de los argumentos (opcionales): 0.. bytes opcode [arg] [arg] [arg] [arg] [arg] Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) SP Stack Poer Repertorio de instrucciones Ejemplos Load y Store: La familia LOAD apila el valor de una variable local en la cima de la pila de operandos. La familia STORE desapila el valor de la cima de la pila y lo almacena en una variable local. Args. 0. ini. fin i ini; Se compila como... Vars. locales 0. ini iload_0. fin istore_. i? iload_0 istore_ Null SP Stack Poer Repertorio de instrucciones Ejemplos - varios: opcode (0xB) (0x0) (0x) 0 (0x0) mnemónico bipush ldc iadd Pila de operandos Operación iza la ejecución del método actual, retornando al método llamador. Apila en la pila de operandos el valor entero. Apila en la pila de operandos el valor de la ante nº de la zona de antes (Pool). Sumar dos enteros. Los pasos son:. Extraer operandos de la pila (pop). Realizar la operación (suma). Apilar el resultado en la pila (push) SP SP SP Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM)
10 Repertorio de instrucciones Para obtener el código de un método de una clase hay varias utilidades: javap (Java SDK): javap -c -verbose HelloWorld Jasper (& Jasmin): java -jar Jasper.jar HelloWorld jlib Bytecode Viewer Class Viewer for Java Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) Ejemplo HelloWorld.java HelloWorld.java HelloWorld HelloWorld System.out.prln System.out.prln ("Hello ("Hello World!!"); World!!"); C:\> javap -c verbose HelloWorld C:\> javap -c verbose HelloWorld Compiled from HelloWorld.java Compiled from HelloWorld.java HelloWorld extends Object HelloWorld extends Object HelloWorld(); HelloWorld(); aload_0 aload_0 : invokespecial : invokespecial : : get ; get ; : ldc ; : ldc ; : invokevirtual ; : invokevirtual ; : :.;.; Field Field.;.; String String ; ;.0;.0; ; ; ; ; 0 0 ; ; HelloWorld.java; HelloWorld.java; :; :; ; ; :; :; Hello Hello World!!; World!!; ; ; 0 0 :; :; HelloWorld; HelloWorld; java/lang/system; java/lang/system; out; out; Ljava/io/PrStream;; Ljava/io/PrStream;; java/io/prstream; java/io/prstream; prln; prln; (Ljava/lang/String;)V; (Ljava/lang/String;)V; Estructura de una Java Virtual Machine (JVM) 0
11 Ejemplo : control de flujo Par.java Par.java.;.; Par Par.;.; ; ; ; ; boolean boolean b b espar(); espar(); boolean boolean espar espar ; ; ( ( n) n) 0 0 if if ((n ((n % % ) ) 0) 0) espar; espar; (true); (true); (I)Z; (I)Z; else else (false); (false); Par.java; Par.java; :; :; :; :; Par; Par; Ejemplo : control de flujo C:\> C:\> javap javap -c -c verbose verbose Par Par Compiled Compiled from from Par.java boolean boolean espar(); espar(); Par.java Par Par extends extends Object Object Stack,Locals,Args_size Stack,Locals,Args_size Par(); Par(); iload_0 iload_0 : Stack, Stack, Locals, Locals, Args_size : i_ i_ Args_size aload_0 : aload_0 : irem irem : : invokespecial invokespecial ; ; : : ifne ifne java/lang/object."<init>":()v java/lang/object."<init>":()v : : : : i_ i_ : : i i : : i_0 i_0 : : i i Stack, Stack, Locals, Locals, Args_size Args_size bipush bipush : : invoke invoke ; ; espar:(i)z espar:(i)z : : istore_ istore_ : : Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM) Ejemplo : factorial iterativo FactIter.java FactIter.java.;.; FactIter FactIter.;.; ; ; ; ; n n fact(); fact(); fact( fact( n) n) res; res; for for (res; (res; (n>); (n>); n--) n--) ; ; res res * * n; n; 0 0 fact; fact; (res); (res); (I)I; (I)I; FactIter.java; FactIter.java; :; :; :; :; FactIter; FactIter; Ejemplo : factorial iterativo C:\> C:\> javap javap -c -c verbose verbose FactIter FactIter Compiled Compiled from from FactIter.java fact fact (); (); FactIter.java FactIter FactIter extends extends Object Object Stack,Locals,Args_size FactIter(); FactIter(); i_ i_ : : istore_ istore_ Stack, Stack, Locals, Locals, Args_size Args_size : : iload_0 iload_0 aload_0 aload_0 : : i_ i_ : : invokespecial invokespecial ; ; : java/lang/object."<init>":()v : if_icmplt if_icmplt java/lang/object."<init>":()v : : : : iload_ iload_ : : iload_0 iload_0 : : imul imul istore_ istore_ : : iinc iinc 0, 0, - - Stack, Stack, Locals, Locals, Args_size Args_size : : goto goto i_ i_ : : : invoke invoke ; : iload_ iload_ ; : fact:(i)i : i i fact:(i)i : : istore_ istore_ : : Estructura de una Java Virtual Machine (JVM) Estructura de una Java Virtual Machine (JVM)
12 Ejemplo : factorial recursivo FactRecu.java FactRecu.java.;.; FactRecu FactRecu.;.; ; ; ; ; n n fact(); fact(); fact( fact( n) n) if if (n) (n) (); (); ; ; else else 0 0 (n*fact(n-)); (n*fact(n-)); fact; fact; (I)I; (I)I; FactRecu.java; FactRecu.java; :; :; :; :; FactRecu; FactRecu; Estructura de una Java Virtual Machine (JVM) Ejemplo : factorial recursivo C:\> C:\> javap javap -c -c verbose verbose FactRecu FactRecu Compiled Compiled from from FactRecu.java FactRecu.java fact(); fact(); FactRecu FactRecu extends extends Object Object Stack,Locals,Args_size FactRecu(); FactRecu(); iload_0 iload_0 Stack, Stack, Locals, Locals, Args_size Args_size : : i_ i_ aload_0 aload_0 : : : invokespecial invokespecial ; : if_icmpne if_icmpne ; java/lang/object."<init>":()v java/lang/object."<init>":()v : : i_ i_ : : : : i i : : iload_0 iload_0 : : iload_0 iload_0 Stack, Stack, Locals, Locals, Args_size : Args_size : i_ i_ bipush bipush isub isub : : invoke invoke ; ; : fact:(i)i : invoke invoke ; ; fact:(i)i : : istore_ istore_ fact:(i)i fact:(i)i : : : : imul imul : : i i Estructura de una Java Virtual Machine (JVM) Bibliografía y enlaces The Java API documentation Tim Lindholm, Frank Yellin, The JVM Specification, Second Edition, Addison Wesley, Java Series, April. D. Friedman, M. Wand, and C. Haynes, Essentials of Programming Languages, nd ed. MIT Press, 00. Bill Blunden, Virtual Machine Design and Implementation in C/C++, Wordware Publishing, March 00 JVM Instruction Reference (Quick refer.). Estructura de una Java Virtual Machine (JVM) Estructura de una Máquina Virtual Java (JVM) Autor: Pedro Pablo Garrido Abenza pgarrido@umh.es Estructura de una Java Virtual Machine (JVM)
Tema 1. Introducción a JAVA
Tema 1. Introducción a JAVA Historia Características Plataforma Java Entorno de desarrollo Ejemplo: Hola mundo Estructura general de un programa Java 1 Historia de Java (i) Surge en 1991: Sun Microsystems
Más detallesIntroducción a Java LSUB. 15 de enero de 2015 GSYC
Introducción a LSUB GSYC 15 de enero de 2015 (cc) 2014 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada
Más detallesINF 473 Desarrollo de Aplicaciones en
INF 473 Desarrollo de Aplicaciones en Java Unidad II El Lenguaje de Programación Java Prof. José Miguel Rubio jose.rubio.l@ucv.cl jrubio@inf.ucv.cl PUCV Marzo 2008 1 Orígenes del Lenguaje Java 1991. James
Más detallesINTRODUCCIÓN A JAVA. Índice
INTRODUCCIÓN A JAVA Índice Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales Qué ventajas tengo como desarrollador? Bibliografía 2 1 Qué es Java? La tecnología Java
Más detalles1. Aplicaciones del J2SE SDK1.4.2 de Sun.
Dept Informatica Índice 1 Aplicaciones del J2SE SDK142 de Sun 1 11 javac 1 12 java 1 13 javadoc 2 14 Las que no se explican 3 2 Guía de estilo de Java 3 21 Clases 3 211 Nombres para las clases 3 212 Estructura
Más detallesSeminario de Java. Contenido
Seminario de Java Programación Orientada a Objetos Curso 2006/2007 Contenido 1. Introducción 2. Primeros pasos con Java. El entorno Eclipse 3. La sintaxis del lenguaje Java 4. Clases y objetos 5. Cadenas
Más detallesIntroducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp...
Contenido Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp... 5 Introducción Es tiempo de hablar en detalle de lo que significa
Más detallesCompilación y ejecución de programas en Java.
Java Virtual Machine La mayoría de los lenguajes de programación se caracterizan por ser interpretados o compilados, lo que determina la manera en como serán ejecutados en una computadora. Java tiene la
Más detallesProgramador en Plataforma Java y XML
Programador en Plataforma Java y XML Java Fundamentos Módulo 1: Java Básico Introducción En la presente unidad, se detalla los fundamentos de la tecnología Java, reconociendo las 3 plataformas que la conforman.
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez
PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Paradigmas de programación 2 Paradigmas de programación Paradigma de programación estructurada Enfatiza la separación datos de un programa
Más detallespicojava TM Características
picojava TM Introducción El principal objetivo de Sun al introducir Java era poder intercambiar programas ejecutables Java entre computadoras de Internet y ejecutarlos sin modificación. Para poder transportar
Más detallesINTELIGENCIA ARTIFICIAL 2015 TALLER RÁPIDO DE PROGRAMACIÓN EN JAVA
INTELIGENCIA ARTIFICIAL 2015 TALLER RÁPIDO DE PROGRAMACIÓN EN JAVA Fuente: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Por qué Java? TIOBE Index for March 2015 Fuente: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Más detallesservicios. El API es definido al nivel de código fuente y proporciona el nivel de
GLOSARIO API Application Program -ming- Interface Es la interfaz por la cual una aplicación accede al sistema operativo u a otros servicios. El API es definido al nivel de código fuente y proporciona el
Más detallesCompiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz
Compiladores y Lenguajes de Programación Maria de Guadalupe Cota Ortiz Organizaciones que rigen las normas para estandarización de Lenguajes de Programación IEEE (Instituto de Ingenieros Eléctricos y Electrónicos)
Más detallesTema 2: La Tecnología Java
Tema 2: La Tecnología Java 0 La Tecnología de Java Es : Un lenguaje de programación Similar a C/C++ sin los problemas de manejo de memoria. Un ambiente de desarrollo Compilador, intérprete, generados de
Más detallesA continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante
Modulo 2. Inicio con Java Muchas veces encontramos en nuestro entorno referencias sobre Java, bien sea como lenguaje de programación o como plataforma, pero, que es en realidad Java?, cual es su historia?,
Más detallesIntroducción al lenguaje de programación java
Introducción al lenguaje de programación java Algoritmia y Programación Slide 1 LENGUAJES DE PROGRAMACION Un lenguaje de programación es un idioma artificial diseñado y creado para expresar algoritmos
Más detallesQué es Java? Introducción a Java. Lenguajes Orientados a Objetos. Qué es Java? Historia de Java. Objetivos de Java
Qué es? Introducción a es Un lenguaje de programación Un entorno de desarrollo Un entorno de ejecución de aplicaciones Un entorno de despliegue de aplicaciones Utilizado para desarrollar, tanto applets
Más detallesProcesadores de lenguaje Tema 1: Introducción a los compiladores
Procesadores de lenguaje Tema 1 Introducción a los compiladores Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá Resumen del tema Traductores Estructura
Más detallesJava Inicial (20 horas)
Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción
Más detallesJava en 2 horas. Rodrigo Santamaría
+ Java en 2 horas Rodrigo Santamaría + Generalidades 2 Desarrollado por Sun en 1995 Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión
Más detallesTema 1: y el lenguaje Java 1.Programación orientada a objetos 2.El lenguaje Java 3.Compilación, bytecode y JVMs 4.Entornos de desarrollo Java 5.Java vs otros lenguajes OO Programación orientada a objetos
Más detallesEntre los más conocidos editores con interfaz de desarrollo tenemos:
Herramientas de programación Para poder programar en ensamblador se precisa de algunas herramientas básicas, como un editor para introducir el código, un ensamblador para traducir el código a lenguaje
Más detallesModelo de Objetos Distribuidos
Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo
Más detalles.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...
.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS Definiciones...2 C# y Java.....3 Similitudes...4 Ventajas...4 Definiciones Sobre J2EE J2EE (Java 2 Platform Enterprise Edition)
Más detallesTEMA 2. Agenda. Fundamentos de JAVA
TEMA 2 Fundamentos de JAVA V1.3 Manuel Pereira González Agenda Introducción Historia de Java Características Principales Hello World Tipos Operadores Control de Flujo E/S básica Atributos y Métodos Resumen
Más detallesRepaso desarrollo de software Parte #1. Jorge Iván Meza Martínez jimezam@gmail.com
Repaso desarrollo de software Parte #1 Jorge Iván Meza Martínez jimezam@gmail.com Especialización en Gestión de Redes de Datos Universidad Nacional de Colombia Sede Manizales 1/55 Contenido Concepto desarrollo
Más detallesJava y Eclipse. Lenguajes y Entornos de Programación Libre
Java y Eclipse Lenguajes y Entornos de Programación Libre El lenguaje Java Un poco de historia: 1990: James Gosling, responsable de una empresa filial creada por Sun Microsystems, empieza a diseñar Java
Más detallesJava Básico. Empaquetamiento y despliegue de aplicaciones. Copyright
Java Básico Empaquetamiento y despliegue de aplicaciones Copyright Copyright (c) 2004 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación
Más detallesCurso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos
Más detallesGENERACIÓN DE CÓDIGO
GENERACIÓN DE CÓDIGO INTRODUCCION La generación de código es la fase más compleja de un compilador, puesto que no sólo depende de las características del lenguaje fuente sino también de contar con información
Más detallesPrácticas: Introducción a la programación en Java. Informática (1º Ingeniería Civil) Curso 2011/2012
Prácticas: Introducción a la programación en Java Informática (1º Ingeniería Civil) Índice Introducción a Java y al entorno de desarrollo NetBeans Estructura de un programa Tipos de datos Operadores Sentencias
Más detallesRepaso de las características más importantes de la programación Java y su adaptación a Android
Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y
Más detallesÍndice. Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales Qué ventajas tengo como desarrollador?
INTRODUCCIÓN A JAVA 20/02/2007 Introducción a JAVA 2 Índice Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales Qué ventajas tengo como desarrollador? Bibliografía
Más detallesJava. Mtro. Manuel Suárez Gutiérrez
Java Mtro. Manuel Suárez Gutiérrez Introducción Creado por SUN Microsystems Su fin era homologar los lenguajes de programación ante una proliferación de multiples plataformas Trabaja bajo una maquina virtual
Más detallesIntroducción a la Programación en Java. Page 1
Introducción a la Programación en Java Page 1 Qué es Java? Java es un lenguaje de programación de propósito general, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias
Más detallesJava Básico. Introducción a Java. Copyright
Java Básico Introducción a Java Copyright Copyright (c) 2004 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano v1.0
Más detallesTaller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos
Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos Ingeniero en Computación José Alfredo Cobián Campos josealfredocobian@gmail.com Facultad de Ciencias
Más detallesPlataforma desarrollo Java Formación elearning tutorizada en castellano. Fabricante: Java Grupo: Desarrollo Subgrupo: Master Java
C/Comandante Zorita 4 28020 Madrid/ info@ceticsa.es 902 425 524 / 91 700 01 17 Plataforma desarrollo Java Formación elearning tutorizada en castellano JAVA00d Ciclo de formación en plataforma Java Curso
Más detallesIngº CIP Fabian Guerrero Medina Master Web Developer-MWD
1 Java es un lenguaje de programación de Sun Microsystems originalmente llamado "Oak. James Gosling Bill Joy 2 Oak nació para programar pequeños dispositivos electrodomésticos, como los asistentes personales
Más detallesProgramación para sistemas en red IV. Conceptos básicos II
Conceptos básicos II Maquina virtual de java (JVM): Una Máquina virtual Java (en inglés Java Virtual Machine, JVM) es un programa nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar
Más detallesEntorno de Ejecución del Procesador Intel Pentium
Arquitectura de Ordenadores Arquitectura del Procesador Intel Pentium Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Entorno de Ejecución del Procesador
Más detallesJava en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría
Java en 3 horas Ampliación de Sistemas Operativos Rodrigo Santamaría Generalidades Desarrollado por Sun Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas
Más detallesObjetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.
Sesión 03: Lenguajes web del servidor Competencias a Conseguir: - Conocer el entorno de trabajo a nivel de servidores web. - Instalación del localhost (Servidor Local). - Repaso general de PHP y ejercicios
Más detallesMódulo 2. Inicio con Java
Módulo 2. Inicio con Java Objetivos: -Clasificar el lenguaje de programación Java según las formas de clasificar los lenguajes de programación. -Describir el funcionamiento de la plataforma Java. -Explicar
Más detalles8. Sentencia return y métodos
92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente
Más detallesI. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro
I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro Utilizando Clases Definidas en Java La manera de utilizar una clase previamente definida
Más detallesEl lenguaje de programación Java
Departament d Arquitectura de Computadors El lenguaje de programación Java Java (I) Orientado a objetos Ejecutado por una maquina virtual Independiente de la plataforma Multithreaded Orientado a la red
Más detallesProgramación en Java. Temario. David Contreras Bárcena
Programación en Java David Contreras Bárcena David Contreras Bárcena (ETSI) - Comillas 1 Temario 1. Introducción 1. Lenguaje java 2. Compilador SDK 1.4 3. Sintaxis 4. Tipos de datos 5. Estructuras de Control
Más detallesIntroducción al lenguaje Java
Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno
Más detallesTema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código
Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación
Más detallesmari_clau_18@hotmail.com Java es el lenguaje de programación que
PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA Dra. Maricela Bravo mari_clau_18@hotmail.com JUSTIFICACIÓN Java es el lenguaje de programación que más impacto ha tenido en los últimos años, especialmente en
Más detalles1. Manejo de memoria estática 2. Manejo de memoria dinámica
1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo
Más detallesPrimera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.
Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO LAEFF - INTA raul@laeff.inta.es Qué es Java? Java es un lenguaje de programación orientado a objetos desarrollado por Sun
Más detallesProgramación en Java. Hola Jesus. Primera clase del curso de Java
Programación en Java Un programa o aplicación Java se compone de un conjunto de clases que contienen variables de diversos tipos utilizadas para almacenar datos, y métodos que implementan código capaz
Más detalles>> Programación de dispositivos móviles.
>> Programación de dispositivos móviles. Nicolás Álvarez S. nalvarezs@vtr.net Juan Monsalve Z. jmonsalve@elo.utfsm.cl Tópicos a tratar Repaso de conceptos de programación. Conceptos básicos de Java Plataforma
Más detallesTema 1. Java: Conceptos generales
Introducción James Gosling (Sun Microsystems) inicia en 1991 un lenguaje para programación de electrodomésticos denominado OAK. En 1994 se le cambia el nombre por el de Java y se orienta a Internet. La
Más detallesObjetos y Clases en Java. ELO 329: Diseño y Programación Orientados a Objetos
Objetos y Clases en Java ELO 329: Diseño y Programación Orientados a Objetos 1 Elementos de Análisis y Diseño orientado a objetos Notación y relaciones entre clases: Las clases son abstracciones para los
Más detallesProyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano juantomas@lared.es
Juantomás García GNOME Hispano juantomas@lared.es Qué es el proyecto MONO?. Estado actual del proyecto. Por qué es interesante para el software libre disponer de la tecnología relacionado con el proyecto
Más detallesJAVA EE 5. Arquitectura, conceptos y ejemplos.
JAVA EE 5. Arquitectura, conceptos y ejemplos. INTRODUCCIÓN. MODELO DE LA APLICACIÓN JEE5. El modelo de aplicación Java EE define una arquitectura para implementar servicios como lo hacen las aplicaciones
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS Clase 1. Introducción Profesor: Diego Sánchez Gómez Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases
Más detallesTema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle
Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión
Más detallesCAPITULO 3 VRML-JAVA-WWW
CAPITULO 3 VRML-JAVA-WWW 50 3.1 Introducción En éste capítulo se comenta brevemente sobre el origen y esencia de los lenguajes VRML 2 y Java, así como de la forma en que se pueden éstos complementar para
Más detallesGestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).
CAPÍTULO 4 Requerimientos de software Este capítulo presenta las herramientas necesarias para la construcción y ejecución de programas en el lenguaje de programación JAVA, los requerimientos mínimos de
Más detallesCAPITULO IV CONCLUSIONES Y RECOMENDACIONES
CAPITULO IV CONCLUSIONES Y RECOMENDACIONES VERIFICACIÓN DE OBJETIVOS El objetivo general del proyecto ha sido cumplido satisfactoriamente en la Unidad de Sistemas de PETROECUADOR, realizando el análisis
Más detallesTiempo de Compilación. Programa fuente. Secuencia. de caracteres. Scanner. Secuencia. de símbolos Parser. Compilador.
ORGANIZACIÓN DE LA MEMORIA EN TIEMPO DE EJECUCIÓN Compilador Tiempo de Compilación Programa fuente Secuencia de caracteres Scanner Secuencia de símbolos Parser Árbol sintáctico Analizador semántico Generador
Más detallesUna introducción al compilador C de GNU
Una introducción al compilador C de GNU Héctor Adrián Valdecantos Departamento de Ciencias de Computación Facultad de Ciencias Exactas y Tecnología - UNT Materia: Programación Carrera: Programador Universitario
Más detallesDesarrollo del software imposible si las tareas tuviesen que expresarse en código máquina. Lenguajes de más alto nivel: comprensibles, manejables y
1. Paradigmas de programación Desarrollo del software imposible si las tareas tuviesen que expresarse en código máquina. Lenguajes de más alto nivel: comprensibles, manejables y automáticamente convertibles
Más detalles9. Objetos y clases. 9.1. Clases
Programación orientada a objetos con Java 103 9. Objetos y clases Objetivos: a) Presentar el concepto de objeto, clase, atributo, método e instancia b) Interpretar el código fuente de una aplicación Java
Más detalles19. Packages o paquetes
Programación orientada a objetos con Java 201 19. Packages o paquetes Objetivos: a) Definir el concepto de paquete b) Interpretar el código fuente de una aplicación Java donde se utilicen paquetes c) Construir
Más detallesConceptos fundamentales de la POO. Fundamentos de la Programación Orientada a Objetos Objetos y Clases
Fundamentos de la Programación Orientada a Objetos Objetos y Clases Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad Complutense
Más detallesALGORITMICA Y PROGRAMACION POR OBJETOS I
ALGORITMICA Y PROGRAMACION POR OBJETOS I Nivel 2 Definiendo situaciones y manejando casos Marcela Hernández Hoyos Qué vamos a aprender en este nivel: Diferencia entre clase y objeto Modelar características
Más detallesIntroduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por
Más detallesArquitectura Von Neumann
Arquitectura Von Neumann Arquitectura Von Neumann Establecida en 1945 por Von Neumann Modelo básico de arquitectura utilizado en la mayoría de los computadores Su idea es la de conectar permanentemente
Más detallesEl lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org>
El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por
Más detallesProcessadors de Llenguatge II. Compiladores
Processadors de Llenguatge II Compiladores Que es un compilador Un traductor es cualquier programa que toma un texto escrito en un lengiaje y da como salida en otro lenguaje(llamado objeto) texto lenguaje
Más detallesLaboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO
Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO 1.- Objetivos del laboratorio Diseño de clases en C++ Comprensión y uso del TAD Árbol Binario de Búsqueda
Más detallesINTRODUCCIÓN A LA PROGRAMACIÓN DE DISPOSITIVOS MÓVILES
INTRODUCCIÓN A LA PROGRAMACIÓN DE DISPOSITIVOS MÓVILES CONTENIDO: J2ME. Arquitectura Conceptos Básicos APIs Principales MIDLets Herramientas de Desarrollo Ejemplo BIBLIOGRAFÍA: [Gal] Java a Tope: J2ME.
Más detallesProgramación Interactiva Introducción a Java. Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle
Programación Interactiva Introducción a Java Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle 1 Qué es Java? Java es un lenguaje de programación de propósito
Más detallesJ2ME ENTORNO DE EJECUCIÓN. Un entorno de ejecución determinado de J2ME se compone entonces de una selección de:
J2ME Esta versión de Java está enfocada a la aplicación de la tecnología Java en dispositivos electrónicos con capacidades computacionales y gráficas muy reducidas, tales como teléfonos móviles, PDAs o
Más detallesJava y JVM: programación concurrente
Java y JVM: programación concurrente Adolfo López Díaz Escuela de Ciencias de la Computación e Informática. Universidad de Costa Rica Resumen: El lenguaje de programación Java proporciona, sin necesidad
Más detallesTECNOLOGÍAS DE DESARROLLO: JAVA
Página 1 de 13 TECNOLOGÍAS DE DESARROLLO: JAVA Java es un lenguaje de programación de Sun Microsystems originalmente llamado "Oak", que fue concebido bajo la dirección de James Gosling y Bill Joy, quienes
Más detallesLlamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2
Tema 9 Llamada a métodos remotos (RMI). Departament d Informàtica. Índice 1. Introducción 2 1.1. Cómo funciona RMI?.......................................... 2 2. Usando RMI 4 2.1. Fase de desarrollo:
Más detallesHola Mundo en Java 1.5 en Windows XP - DrJava
Hola Mundo en Java 1.5 en Windows XP - DrJava Este documento explica cómo configurar un entorno de programación Java para el equipo con Windows XP y proporciona una guía paso a paso para crear, compilar
Más detallesProgramación I: Funciones y módulos
Programación I: Funciones y módulos Esteban De La Fuente Rubio 2 de abril de 23 Índice. Funciones.. Definición y llamado de funciones............................................. 2.2. Parámetros por omisión..................................................
Más detallesIntroducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4
Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4 by S. Muñoz-Gutiérrez stalinmunoz@yahoo.com, informes@grupolinda.org Grupo LINDA Facultad de Ingeniería UNAM México Octubre-Diciembre 2009 Identificando
Más detallesModulo 1 El lenguaje Java
Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto
Más detallesPreliminares. Tipos de variables y Expresiones
Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un
Más detallesTEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA
TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA Programa: Algoritmo (secuencia no ambigua, finita y ordenada de instrucciones para la resolución de un determinado problema) traducido
Más detallesIngeniería Superior de Informática. Curso 3º. Sistemas Operativos. Examen Final. TEORÍA. 31 de Enero de 2005
Ingeniería Superior de Informática. Curso º. Sistemas Operativos. Examen Final. TEORÍA. de Enero de 005 Nombre: DNI:. ( puntos). La TFA es la tabla que, en UNIX, guarda los punteros de posición de cada
Más detallesIntroducción a ZEUS. Introducción. Curso Doctorado Sistemas Multi-agente. Zeus es una herramienta de desarrollo de SMA.
Introducción a ZEUS Curso Doctorado Sistemas Multi-agente Introducción Zeus es una herramienta de desarrollo de SMA. 1 Introducción Está constituido fundamentalmente por 3 grupos funcionales: Biblioteca
Más detallesFigura 4.1 Clasificación de los lenguajes de bases de datos
1 Colección de Tesis Digitales Universidad de las Américas Puebla Romero Martínez, Modesto Este capítulo describen los distintos lenguajes para bases de datos, la forma en que se puede escribir un lenguaje
Más detallesLos Microprocesadores MIA José Rafael Rojano Cáceres Arquitectura de Computadoras I Evolución Histórica de los Microprocesadores Intel Evolución de los microprocesadores Intel de la década de los 70 4004
Más detallesRESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA
UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí
Más detallesPROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas
Departamento de Informática PROGRAMACIÓN DIDÁCTICA Curso 11-12 1 CONSEJERÍA DE EDUCACIÓN I.E.S. NERVIÓN Departamento de Informática CICLO FORMATIVO: TÉCNICO SUPERIOR EN DESARROLLO DE APLICACIONES MULTIPLATAFORMA.
Más detallesTema 2: Implementación del núcleo de un Sistema Operativo
Tema 2: Implementación del núcleo de un Sistema Operativo 1. Sistema Operativo Unix 2. Sistema Operativo Windows (a partir de NT) Dpto. Lenguajes y Sistemas Informáticos. Universidad de Granada 1 1. Sistema
Más detallesGUIA PROGRAMACIÓN ORIENTADA A OBJETOS
GUIA PROGRAMACIÓN ORIENTADA A OBJETOS 1. Por qué la P.O.O? R= A medida que se van desarrollando los lenguajes, se va desarrollando también la posibilidad de resolver problemas más complejos. En la evolución
Más detallesIntroducción a Java. Diseño y Programación Orientados a Objetos 1
Introducción a Java Diseño y Programación Orientados a Objetos 1 Java: Motivaciones de su origen Deja atrás características problemáticas : Punteros Asignación de memoria (malloc) Herencia múltiple (se
Más detallesEstructuras de datos: Proyecto 2
Estructuras de datos: Proyecto 2 28 de mayo de 2013 Instrucciones Enviar las soluciones por email a los ayudantes, con copia a la profesora. Plazo de entrega: 16 de junio (durante todo el día). Se debe
Más detallesAlgunas características de los lenguajes de programación orientados a objetos son:
Programación Orientada a Objetos (POO) La programación orientada a objetos es un paradigma de programación que, como su nombre lo indica, se basa en el uso de objetos estructuras de datos que consisten
Más detalles