Post on 13-Jun-2015
description
Android de la A a la Z
Introducción “Conceptos generales sobre Java”
1 Elaborado por: J. Ulises González Medina android.unam@gmail.com Noviembre 2011 Versión 1.2
1.1 Introducción
Java es un lenguaje de programación con el que podemos realizar cualquier tipo de programa. En la
actualidad es un lenguaje muy extendido y cada vez cobra más importancia tanto en el ámbito de Internet
como en la informática en general.
Java fue pensado originalmente para utilizarse en cualquier tipo de
electrodoméstico pero la idea fracasó. Uno de los fundadores de Sun
rescató la idea para utilizarla en el ámbito de Internet y convirtieron a
Java en un lenguaje potente, seguro y universal gracias a que lo puede
utilizar todo el mundo y es gratuito
Sun describe Java como un lenguaje simple, orientado a objetos,
distribuido, interpretado, robusto, seguro, de arquitectura neutral,
portable, de alto desempeño y multihilos. Cada una de estas palabras es
una característica del lenguaje Java. Mientras muchas de estas
características pueden usarse para describir otros lenguajes, esta
combinación en particular es única en Java y su ambiente.
Simple: Se dice que Java es simple porque aunque tiene todas las características de un lenguaje potente,
descarta las características menos usadas y más confusas de éstos. C y C++ son lenguajes muy conocidos,
por eso Java se diseñó para ser parecido a C++ y así facilitar su aprendizaje. En Java no es necesario liberar
memoria, no se usan la aritmética de punteros, las referencias, registros, definición de tipos (typedef) ni
macros.
Orientado a objetos: Desde el punto de vista del usuario la orientación a objetos no cambia nada. Al correr
un programa no importa si está escrito en programación convencional o en lenguaje orientado a objetos.
Pero si se está acostumbrado a programar en lenguajes convencionales como Pascal y C, entonces
“orientado a objetos” significa que serán necesarios mayores ajustes en la planeación e implementación de
las aplicaciones. Este ajuste es probablemente la parte más difícil en el aprendizaje de Java.
Android de la A a la Z
Introducción “Conceptos generales sobre Java”
2 Elaborado por: J. Ulises González Medina android.unam@gmail.com Noviembre 2011 Versión 1.2
Distribuido: Java viene con una completa biblioteca de aplicaciones para red que facilita al programador el
trabajar con protocolos desde bajo nivel como TCP/IP (Transport Control Protocol and Internet Protocol) o
alto nivel como HTTP (Hyper Text Transfert Protocol) y FTP (File Transfer Protocol).
Interpretado: La ejecución de un programa en Java pasa a través de dos fases:
1. El compilador de java convierte el código fuente en un tipo de lenguaje de bajo nivel llamado
bytecode.
2. Para correr el programa se usa un intérprete que ejecuta el bytecode compilado. Este intérprete
es conocido como la JVM (Java Virtual Machine).
Robusto: Java no solo verifica el código para encontrar problemas en tiempo de compilación, también
busca errores que se puedan presentar en tiempo de ejecución. La comprobación de tipos en Java ayuda a
detectar errores, lo antes posible, en el ciclo de desarrollo. Entre otras cosas proporciona la comprobación
de límites de arreglos, manejo de excepciones, etc.
Seguro: Debido a que Java fue diseñado para correr en un ambiente de red tienes restricciones de
seguridad. Además durante la ejecución el intérprete usa un mecanismo para verificar que el bytecode
cargado a través de la red no viola ninguna restricción del lenguaje Java.
Multihilos: En la actualidad muchas aplicaciones permiten al usuario realizar múltiples tareas en forma
simultánea. La capacidad para ejecutar varios procesos al mismo tiempo se conoce como multihilo. Java
proporciona paquetes para implementar y aplicaciones multihilo.
Dinámico: Java es un lenguaje dinámico porque puede adaptarse a un ambiente cambiante y en desarrollo.
Java no intenta conectar todos los módulos que conforman una aplicación hasta el tiempo de ejecución. Las
librerías nuevas o actualizadas no paralizarán las aplicaciones actuales.
Arquitectura Neutral: La internet es la composición de muchas computadoras interconectadas con
procesadores y sistemas operativos diferentes. Java fue desarrollado con la meta de ser capaz de correr en
cualquier tipo de computadora sin tener que recompilar el código. Por esta razón, cuando se compila un
programa fuente de Java, el resultado no es un código nativo sino un bytecode de arquitectura neutral de
bajo nivel que representa los datos en un formato independiente de la máquina objeto. El intérprete de
Java puede más tarde, leer este bytecode y traducirlo a llamadas de sistema dependientes de máquina.
Esta combinación de características es la razón por la que las aplicaciones de Java pueden correr en
cualquier computadora que implementa la Java Virtual Machine.
Portable: Ser de arquitectura neutral es sólo una parte de ser portable. Java además implementa otros
estándares de portabilidad para facilitar el desarrollo, por ejemplo los enteros son siempre de 32 bits, la
construcción de interfaces de usuarios se realiza utilizando las clases del paquete awt (abstract window
toolkit) de forma que las ventanas puedan ser implantadas en cualquier entorno.
Android de la A a la Z
Introducción “Conceptos generales sobre Java”
3 Elaborado por: J. Ulises González Medina android.unam@gmail.com Noviembre 2011 Versión 1.2
1.2 ¿Cómo se genera un programa en Java?
En el lenguaje de programación Java, todo el código es escrito en formato de archivo de texto plano con
extensión .java. Este código fuente es compilado en un archivo .class por el compilador javac.
Un .class no contiene código nativo en su proceso; este contiene bytecodes el cual es el lenguaje de la
maquina virtual de Java (VM Virtual Machine); la herramienta java ejecuta la aplicación con la instancia de
la maquina virtual.
Android de la A a la Z
Introducción “Conceptos generales sobre Java”
4 Elaborado por: J. Ulises González Medina android.unam@gmail.com Noviembre 2011 Versión 1.2
1.3 API´s de Java
Sun define tres plataformas en un intento por cubrir distintos entornos de aplicación. Así, ha distribuido
muchas de sus APIs (Application Program Interface) de forma que pertenezcan a cada una de las
plataformas:
Java Standard Edition (J2SE)
Java Enterprise Edition (J2EE)
Java Micro Edition (J2ME)
1.4 ¿Qué es el JRE (Java Runtime Environment)?
JRE es el entorno mínimo para ejecutar programas Java 2. Incluye la JVM y la API. Está incluida en el J2SE
aunque puede descargarse e instalarse separadamente. En aquellos sistemas donde se vayan a ejecutar
programas Java, pero no compilarlos, el JRE es suficiente.
El JRE incluye el Java Plug-in, que es el 'añadido' que necesitan lo navegadores (Explorer o Netscape) para
poder ejecutar programas Java 2. Es decir que instalando el JRE se tiene soporte completo Java 2, tanto
para aplicaciones normales (denominadas 'standalone') como para Applets (programas Java que se
ejecutan en una página Web, cuando esta es accedida desde un navegador).
Android de la A a la Z
Introducción “Conceptos generales sobre Java”
5 Elaborado por: J. Ulises González Medina android.unam@gmail.com Noviembre 2011 Versión 1.2
1.5 Tipos de datos
Java es un lenguaje que posee un control fuerte de Tipos (Strongly Typed). Esto significa que cada variable y
cada expresión tiene un Tipo que es conocido en el momento de la compilación. El Tipo limita los valores
que una variable puede tener, además de condicionar las operaciones soportadas sobre esos valores y
determina el significado de las operaciones. El control fuerte de tipos ayuda a detectar errores en tiempo
de compilación.
Los tipos primitivos contienen un sólo valor e incluyen los tipos como los enteros, coma flotante, los
caracteres, de tipo booleano, entre otros.
Los tipos referenciados o referencias se denominan así porque el valor de una variable es una referencia
(un puntero) hacia el valor real. En Java tenemos los arrays, las clases y los interfaces como tipos de datos
referenciados.
1.5 Tipos de datos primitivos
Los tipos primitivos son aquellos que permiten manipular valores numéricos (con distintos grados de
precisión), caracteres y valores booleanos (verdadero / falso).
El tamaño de los tipos de datos NO depende de la implementación de Java. Son siempre los mismos.
1.5 Variables
Una variable es un área en memoria que tiene un nombre y un Tipo asociado. El Tipo puede ser primitivo o
referenciado.
Android de la A a la Z
Introducción “Conceptos generales sobre Java”
6 Elaborado por: J. Ulises González Medina android.unam@gmail.com Noviembre 2011 Versión 1.2
Es obligatorio declarar las variables antes de usarlas. Para declararlas se indica su nombre y su Tipo, de la
siguiente forma:
tipo_variable nombre ;
Ejemplos:
int valor; // Declaración de un dato entero
float cantidad; // Declaración de un dato flotante
boolean respuesta; // Declaración de un dato booleano
En Java las mayúsculas y minúsculas son significativas. No es lo mismo el nombre de una variable cantidad
que CANTIDAD.
1.5 Literales
Un literal, constante literal ó valor literal es una constante cuyo nombre o identificador es la representación
escrita de su valor y posee ese significado en el código fuente de un programa Java. Hay literales para todos
los tipos de datos; por ejemplo:
Literales carácter (char) ‘A’, ‘B’, ‘y’, ‘z’, ‘%’, ‘2’
\n //nueva línea.
\r //retorno de carro.
\t //tabulador.
Literales booleanas (boolean) true
false
Literales enteras (int, short, long) 34 // de tipo int, solo dígitos
-78 // número negativo
034 // en octal (equivale al 28 decimal)
0x1C // en hexadecimal (equivale al 28 decimal)
875L // de tipo long
Literales reales (float, double) 15.2 // de tipo double
15.2D // el mismo valor de tipo double
1.52e1 // el mismo valor de tipo double
0.152E2 // el mismo valor de tipo double
.8e10 // de tipo double
15.8f // de tipo float
15.8F // tambien de tipo float
Android de la A a la Z
Introducción “Conceptos generales sobre Java”
7 Elaborado por: J. Ulises González Medina android.unam@gmail.com Noviembre 2011 Versión 1.2
1.5 Operadores
Un operador lleva a cabo operaciones sobre uno (operador unario), dos (operador binario) o tres (operador
ternario) datos u operandos de tipo primitvo devolviendo un valor determinado también de un tipo
primitivo. El tipo de valor devuelto tras la evaluación depende del operador y del tipo de los operandos. Por
ejemplo, los operadores aritméticos trabajan con operandos numéricos, llevan a cabo operaciones
aritméticas básicas y devuelven el valor numérico correspondiente.
Operador de asignación
Operadores aritméticos
Operadores aritméticos incrementales
Operadores aritméticos y de asignación
Operadores relacionales
Android de la A a la Z
Introducción “Conceptos generales sobre Java”
8 Elaborado por: J. Ulises González Medina android.unam@gmail.com Noviembre 2011 Versión 1.2
Operadores booleanos
Operadores a nivel de bits
Operadores de agrupación
Android de la A a la Z
Introducción “Conceptos generales sobre Java”
9 Elaborado por: J. Ulises González Medina android.unam@gmail.com Noviembre 2011 Versión 1.2
1.5 Programación orientada a objetos
1.5 Clases VS Objetos
Un objeto se define como la unidad que en tiempo de ejecución realiza las tareas de un programa. También
a un nivel más básico se define como la instancia de una clase.
Un objeto está formado por:
Un nombre, el cual es una designación que nos permite distinguir al objeto de otros.
Características o atributos que nos permiten determinar cómo es o cómo está dicho objeto.
Acciones o métodos; los cuales nos permiten describir el comportamiento que posee dicho objeto.
Ejemplos de objetos:
Una clase está formada por los métodos y los atributos que definen las características comunes a todos los
objetos de esa clase. Precisamente la clave está en abstraer los métodos y las características comunes a un
conjunto de objetos y almacenarlos en una clase.
Una clase es como una especie de molde que nos permite crear varios ejemplos o instancias del mismo
tipo; por ejemplo:
Android de la A a la Z
Introducción “Conceptos generales sobre Java”
10 Elaborado por: J. Ulises González Medina android.unam@gmail.com Noviembre 2011
Versión 1.2
A continuación desarrollaremos el código para la clase Ave y además crearemos un objeto de la misma: