Está en la página 1de 43

JAVA

Java es un lenguaje muy

til debido a la opcin multiplataforma que provee (desde PC, Linux, Windows, hasta MAC, telfonos, pocket PCs, etc.) y veremos en el transcurso de este texto como se puede optimizar la ejecucin de una aplicacin Java para que se aproxime a la ejecucin de un binario nativo como los que se compilan con gcc.

INTRODUCCION
La Mquina Virtual de Java (JVM, Java Virtual Machine)

La mquina virtual de Java se denomina al procesador o

entorno virtual que se utiliza para interpretar los bytecodes de los binarios de Java, ya que como sabemos Java se hizo para correr en cualquier plataforma sin recompilar los binarios. De esta manera este entorno virtual se puede obtener para nuestra arquitectura y sistema operativo sin modificaciones a nuestro programa original. Podemos entonces generar un binario y este podr Correr en Linux, MAC OSX, FreeBSD, Solaris, o Windows, y para las arquitecturas disponibles en las que podamos obtener la JVM, como ser AMD64, SPARC, PIV, etc. etc. La mquina virtual de Java ha tenido la caracterstica de ser un entorno de ejecucin pesado en trminos de recursos del procesador y memoria, que por medio de una administracin rigurosa del sistema operativo estos podran llegar a ser insuficientes y las aplicaciones ejecutarse de manera muy lenta.

Kit de desarrollo y Entorno de ejecucin (JDK, JRE)

El Kit de desarrollo conocido como

JDK (Java Development Kit) provee de un compilador, un mecanismo para comprimir un proyecto en un solo archivo de tipo JAR (que es compatible con ZIP) y un entorno de ejecucin para nuestros binarios. Cuando nuestro proyecto terminado se prepara para distribuir, no es necesario tener el compilador y la mayora de las herramientas que se proveen en el JDK, entonces podemos prescindir de dicho JDK y utilizar el entorno de ejecucin que es ms pequeo en cuestiones slo de espacio en disco. Este JRE (Java Runtime Environment) tambin puede

Comandos que inician el JDK, JRE

Comando java

Descripcin Inicia el entorno de ejecucin recibiendo como argumento el nombre del binario ejecutable en formato ByteCodes sin la extensin de archivo .class que identifica de manera visual un binario java. Este comando es parte de JDK y JRE Inicia el compilador Java recibiendo como argumento todos los archivos de cdigo fuente cuya terminacin es .java incluida dicha extensin. Este comando no es parte de JRE. Por medio de este comando iniciamos el empaquetador de clases y archivos de Java que nos permiten fabricar un nico archivo contenedor de nuestras aplicaciones, multimedia y grficos. Este comando es parte slo de JDK.

javac

jar

Programacin Orientada a Objetos con Java

Como es sabido hay muchos lenguajes de

programacin orientada a objetos POO que tienen muchas similitudes entre si, pero puntualmente nos enfocaremos en Java, utilizaremos para tal efecto un modelo de fbrica de objetos, para introducir los trminos clase, objeto, mtodo, propiedad, esttico, dinmico, donde la fbrica de objetos ser el entorno de ejecucin o JRE.

La fbrica de Objetos dentro de JRE

Descripcin Emprica del funcionamiento del entorno JRE


La fbrica de objetos utiliza memoria del sistema

para fabricar los objetos, pero para fabricarlos necesita la informacin pregrabada llamada clases, las clases son las que almacenan las propiedades y mtodos que contendr un objeto. Un objeto cambiar sus propiedades o las propiedades de otros objetos por medio de los mtodos. Los mtodos que slo pueden ejecutarse cuando el objeto existe, son los denominados dinmicos, y los mtodos que pertenecen a la clase son denominados estticos, porque pueden ser llamados sin necesidad de la existencia de un objeto.

En el ejemplo tenemos dos objetos, Reloj y Lmpara los

cuales tienen mtodos Cuerda e Interruptor, que son los que cambiaran el estado de las propiedades Hora e Iluminando. La clase reloj, podra tener un mtodo esttico llamado poner_en_hora, para ajustar todos los relojes fabricados. El programa en ejecucin inicia en un mtodo esttico ya que no existen inicialmente objetos en nuestro programa, este mtodo se llama main que se define como:

Donde args es un vector o arreglo unidimensional que

contendr los argumentos que hayan sido pasados al comando java despus de las rdenes y el nombre de la clase principal que alojar este mtodo. El entorno de ejecucin o la JVM fabricar objetos de sistema que podrn ser utilizados llamando a mtodos estticos de clases pertenecientes a la biblioteca de java.

Herencia soportada por Java


Java no soporta herencia mltiple, es decir no

podemos fabricar un objeto ms complejo con dos diferentes ms simples, sino que slo podremos heredar objetos nuevos de un slo objeto padre, que proveer los mtodos y propiedades bsicas que sern extendidas y/o ampliadas por el nuevo objeto. Es decir no podramos tener un objeto Lmpara Reloj que derive del objeto Lmpara y del objeto Reloj, sino que tendramos que usar otros mecanismos para proporcionar esa funcionalidad, interfaces y alojamiento de objetos.

Esto podra comprenderse como:


Interfaces:

Permiten que sean implementadas por objetos para adquirir comportamiento, pero el comportamiento no es provisto por la interfaz, sino que el programador debe proporcionar una manera eficaz de construir los mtodos definidos en dicha interfaz uno por uno. Pueden implementarse varias interfaces al mismo tiempo, en todos los casos es necesario codificar funciones o mtodos. Alojamiento: Podemos pensar que al objeto Lmpara le insertamos en su interior un objeto Reloj entonces podemos llamar a los mtodos del Reloj que est en la Lmpara, Ya no sera la Lmpara Reloj, pero sera una Lmpara con Reloj. Herencia: Nos permite crear un objeto nuevo en base a uno existente, es una nueva clase de objeto, puede utilizar el alojamiento de otros objetos como propiedades para adquirir funcionalidad.

Nombres de variables y funciones.


En Java los nombres de las variables y las funciones siguen ciertas

reglas, por ejemplo las variables se acostumbra a nombrarlas con todas sus letras en minsculas, las funciones con la primer palabra que la identifica en minsculas y las palabras siguientes con la primer letra en maysculas y los nombres de las Clases de objetos con la primer letra de cada palabra que la define en maysculas.
VARIABLES int soles=3; char salir='q';
CLASES public class RelojAtomico{ .... }

FUNCIONES public static int redondearPromedio(int[] valores){ ... }

EJERCICIOS
Realiza las siguientes ejercicios desde su anlisis del

problema, identifica las clases, objetos, mtodos, realiza el diagrama de flujo, el algoritmo
Programa que lea una cantidad de grados centgrados y

la pase a grados Fahrenheit. La frmula correspondiente es: F = 32 + ( 9 * C / 5) Programa lea la longitud de los catetos de un tringulo rectngulo y calcule la longitud de la hipotenusa segn el teorema de Pitgoras.
Teorema de Pitgoras En todo tringulo rectngulo el cuadrado de la hipotenusa es igual a la suma de los cuadrados de los catetos.

Algoritmo: 1. Inicio 2. Hipotenusa a, b, c, cateto b 3. a= hipotenusa 4. a= a x a 5. b= b x b 6. c= c x c 7. b= cateto 8. a =b+c 9. Hipotenusa 10. b= a-c 11. Cateto 12. fin

Codificacin Inicial y Estructuras de Datos

El primer programa
Suponemos que nuestro sistema operativo ya tiene

instalado el kit de desarrollo (JDK) y procedemos a abrir un editor de texto de nuestro gusto. En KDE, podemos abrir kwrite en otros sistemas busquemos block de notas u otro editor como EditPlus, de todas maneras cualquier editor estar bien. public class HolaMundo {
public static void main(String[] args) { System.out.println("Hola, mi primer programa"); } }

Estructura de un programa Java


Se puede identificar los siguientes elementos del

lenguaje Java: comentarios, definicin de clase, definicin de mtodos y sentencias. Comentario: el programa comienza con un comentario el delimitador de inicio /* y el delimitador de fin es */ Definicin de clase: la primera lnea del programa, despus del primer comentario, define una clase. La definicin de la clase comienza por el carcter { y termina con el carcter }. Definicin de mtodo: Despus de la definicin de clase se escribe a definicin del mtodo main(). Indica la sentencias a realizar cuando se ejecuta un programa.

Sentencias: Dentro del mtodo main () se incluyen

una sentencia para mostrar un texto por la consola. Los textos siempre se escriben entre las comillas dobles para diferenciarlos de otros elementos del lenguaje. Todas las sentencias de un programa Java deben terminar con el smbolo punto y coma. Este smbolo indica al compilador que ha finalizada una sentencia.

Se utilizan para diferenciar una clase respecto de

otras con el mismo nombre, si nos ponemos a pensar sobre la cantidad de nombres diferentes de clases que podemos poner a los tipos objetos en nuestros programas es infinita, pero dos programadores diferentes pueden llegar a usar dos veces el mismo nombre para una misma clase, de esta manera podemos hacer que slo las clases de objetos que haremos visibles a otros programadores o que ejecutarn el componente principal del programa (el mtodo esttico main) sean pblicas. Las clases de objetos que no queramos hacer visibles a otros componentes de nuestro proyecto, entonces se podrn declarar como privadas, de esa manera slo una clase de objetos que pertenezca al

Los

paquetes suelen tener un nombre especial referente al de la organizacin que realiza el proyecto, esto es una sugerencia, en realidad se puede utilizar casi cualquier nombre, as que por ejemplo si nuestra empresa es compunauta, y el nombre de dominio de los servicios que se proporcionan en Internet es compunauta.com, entonces nuestro paquete podra llamarse com.compunauta y a su vez si tenemos un subproyecto, este podramos nombrarlo como com.compunauta.aprendiendojava, slo tengamos en cuenta que es el orden inverso de como aparecera en Internet. Usamos puntos para separar los nombres y tenemos cuidado respecto de las maysculas y minsculas.

Las palabras clave o reservadas son aquellas que

definen o se combinan con una definicin de datos de una variable o propiedad, clase de objetos o mtodos, por ejemplo class es una palabra clave y nos indica que a continuacin pondremos el nombre a la clase de objeto que vamos a crear, si queremos que dicha clase pueda ser accedida desde dentro o fuera de nuestro paquete de clases de objetos, entonces la definiremos como public (pblica), donde esta es otra palabra clave. A veces las palabras claves son palabras reservadas, por ejemplo goto es una palabra clave reservada en Java, ya que no tenemos permitido saltar a una lnea en particular de nuestro programa, tenemos que trabajar con llamadas a funciones y otras maneras de codificacin.

Definen los permisos a un mtodo o clase de objetos, haciendo visible

u oculto un mtodo propiedad o clase a otras clases de objetos u otros objetos que quieran accederlas.
Palabra clave Significado Para una clase, que es accesible desde cualquier parte, para un mtodo, que es accesible por cualquier mtodo que pueda acceder a la clase de objetos. Para que una clase que deriva de otra tiene que ser pblica la clase de objetos padre para poder ser accecible. Slo se permite a la misma clase de objetos acceder a sus propiedades o mtodos. Slo se permite al paquete acceder a esta clase. Define a que paquete pertenece una clase. Define que paquetes usaremos, para no escribir el nombre completo de la clase a la que hacemos referencia como: com.compunauta.aprendiendojava.HolaMundo Inicia la declaracin de una Clase (tipo de datos). Instancia un objeto, crea un objeto partiendo de una

public

private protected package import class

new

Palabra clave if (condicion){ .... } else { .... } for (inicial;condicin;repeticin){ .... }

Significado Ejecuta el bloque separado por {} siempre y cuando se cumpla la condicin, acompaada a esta estructura existe else (sin) que es para el caso contrario a la condicin, sin tener que evaluar la condicin negada. Se ejecuta la sentencia inicial, y si se cumple la condicin se ejecuta el cdigo en el interior de la llaves, una vez que se termina se ejecuta la repeticin y se vuelve a comparar la condicin, mientras la condicin sea cierta el bloque encerrado entre llaves se seguir ejecutando. Mientras se cumpla la condicin entre parntesis, se ejecuta el cdigo en el interior de {} de manera infinita hasta.

while (condicin){ .... }

Palabra clave switch (varieblenumrica){ case num1: ..... break; case num2: ..... break; default: } do{ ... }while(condicin); break continue return

Significado La sentencia switch es un tanto compleja y probabilsticamente poco usada ya que no puede usarse con objetos y las comparaciones son primitivas, en algunos trozos o segmentos de cdigo es crucial para optimizar la velocidad de nuestro programa, de acuerdo al contenido de la variable numrica se ejecuta la sentencia case que coincida, cada bloque de cdigo debe terminar con break, ya que en caso contrario se seguir ejecutando la siguiente clusula case, existe una opcin default que es para cuando ninguno de los casos resulta ser el correcto. El bloque dentro de la palabra clave do, se ejecutar al menos una vez y si la condicin de while se cumple, se repetir mientras sea cierta. Interrumpe un bloque y se ejecuta la siguiente lnea fuera de l. Interrumpe el resto del cdigo del bloque y vuelve a empezar con la siguiente iteracin. Interrumpe el mtodo entero y devuelve el tipo de datos

Reservadas
Palabra clave goto Significado Palabra reservada en el lenguaje de programacin Java, no puede utilizarse pero el compilador en ciertas ocasiones es capaz de generar un comportamiento similar en las optimizaciones, de tal manera que los binarios si podran estar utilizando este tipo de salto a una etiqueta. Palabra reservada que no es utilizada por el momento en Java.

const

Excepciones, control de errores


En casi todos los lenguajes de programacin existen mecanismos para actuar segn sucedan errores de cualquier tipo, desde accesos al disco hasta divisin por cero, los cuales de no ser manipulados programa tendrn el comportamiento por defecto Palabra clave por nuestro Significado de la mquina virtual de java, que es reportarlos como excepciones y throws Indica que tipo de excepciones lanzar este mtodo en terminar el programa. caso de errores, es til para que los mtodos que llaman a
este que lanzar una excepcin en caso de errores, se vean obligados a tratar esa situacin. throw try{ ... }catch(tipo excepcion){ ... }finally{ ... } Transfiere el excepciones. control de errores al manejador de

Esta es la estructura de un manejador de excepciones o control de errores, try inicia el bloque de cdigo que ser manejado en caso de errores, la sentencia catch indica el tipo de excepcin que se capturar, esta ltima puede repetirse para hacer cosas diferentes de acuerdo por ejemplo si el problema fue una divisin por cero o un error de acceso de disco. La sentencia finally se ejecutar de todas maneras al salir del cdigo. Si una excepcin no es capturada por el listado de clusulas catch, entonces es probable que la JVM inicie el

Secuencias de escape
Las secuencias de escape son aquellas combinaciones de

caracteres que nos permiten insertar un carcter especial que no es posible tipear con el teclado estndar o que no es posible utilizar porque denota un trozo de texto, por ejemplo las comillas dobles en el ejemplo hola mundo que estn dentro de la funcin println. System.out.println("Hola, mi primer programa"); Si quisiramos incluir las comillas dobles en la ejecucin deberamos incluirlas con una secuencia de escape, para ello se utiliza la barra invertida \ seguida de las comillas dobles \. System.out.println("\Hola, mi primer programa\"); De esa manera el compilador entiende que el trozo de texto contendr las comillas dobles, pero que pasara si quisiramos escribir el carcter \ que en algn sistema operativo distinto de Linux podra significar divisin de directorios o carpetas, bueno para esto usaramos una \ seguida de otra \, es decir \\ para insertar el caracter \. System.out.println("Hola, mi primer programa, est en c:\\");

Secuencia

Significado

\b \t
\n

Retroceder un espacio (backspace) Tabulador Horizontal, sirve para alinear texto en la salida estndar de datos cuando es una terminal o consola de comandos.
Salto de lnea, es el carcter usado incluso en las viejas impresoras que necesitaban avanzar de lnea para escribir en el prximo rengln.

\r

Retorno de carro, es el carcter que devuelve el cursor o el cabezal de la impresora al inicio del rengln, Linux, usa \n para un nuevo rengln en los archivos de texto, Windows utiliza una combinacin \n\r.
Insertan las comillas dobles Insertan la coma simple. Insertan la misma barra invertida que usamos como escape. Las tres D son dgitos y representan un caracter en su versin octal.

\ \' \\ \DDD

\uDDDD

Las cuatro D son dgitos y representan un caracter unicode en

Ejercicio
Qu hace el siguiente codigo Java? System.out.print(Hola); System.out.print( ); System.out.print(Mundo); Y si implementas el siguiente cdigo que se muestra en pantalla System.out.println(Hola); System.out.printin(Mundo);

Investiga
Comentarios
Comentario de bloque
Comentario de documentacin Comentario de lnea

Enlista las palabras reservadas en Java Identificadores

Cules son las normas bsicas que se deben respetar para crear

Concatenacin y conversiones a texto


La concatenacin de texto se denomina a la

unin de trozos o fragmentos de textos y comnmente se utiliza la conversin de nmeros o de objetos a su representacin en texto, Java convierte automticamente los tipos de datos bsicos a texto antes de unirlos y llama por cada objeto al mtodo especial toString() para realizar la conversin de objetos nuestros o de la biblioteca de la JVM.

Salida por pantalla y entrada por teclado


System.out El objeto System es parte de la biblioteca de Java y es instanciado o fabricado al iniciar la JVM mucho antes que se comience a ejecutar nuestro programa. Este almacena 3 objetos, son out, in y err.
El objeto out es del tipo o clase Printstream que

tiene las siguientes propiedades y mtodos importantes.

System.in El objeto in que es una propiedad de System es de la

clase o tipo InputStream, que tambin es parte de la biblioteca de Java. System.err Este objeto es del mismo tipo que out (Printstream) y tiene las mismas propiedades, en los sistemas operativos derivados de Unix como ser Linux, existe mucho la diferencia entre salida estndar de datos (System.out) y la salida estndar de errores (System.err),

System.in El objeto in que es una propiedad de System es de la clase o tipo InputStream, que tambin es parte de la biblioteca de Java. Aqu vemos los mtodos que nos interesan.

El mtodo System.out,printf para mostrar datos con

Como mostrar texto con printf

formato; la f en el nombre printf representa la palabra formato. Ejemplo:


Public class Bienvenido3 {
Public static void main (String args [])
{

System.out.printf(bienvenido \n a\n la programacin \n en Java!);

Llaman al mtodo System.out.printf para mostrar la salida

del programa. La llamada al mtodo especifica tres argumentos. Cuando un mtodo requiere varios argumentos, estos se sepan con comas (,) a esto se le conoce como lista separadas por comas.

Todas las instrucciones en Java terminan con un

punto y coma (;). Java permite que las instrucciones largas se dividan en varias lineas. Sin embargo, no pueden dividir una instruccin a la mitad de un identificador, o de una cadena. El primer argumento del mtodo printf es una cadena de formato que pueda consistir en texto fijo y especificar el formato. El mtodo printf imprime el texto fijo de igual forma que print o println. Cada especificador es un receptculo para un valor, y especifica el tipo de datos e imprimirlo. Los especificadores de formato comienzan con un signo porcentual (%) y van seguidos de un ca.rcter que representa el tipo de datos

Suma de enteros
Nuestra siguiente aplicacin lee dos enteros

introducidos por el usuario mediante el teclado , calcula la suma de los valores y muestra el resultado. Este programa debe llevar la cuenta de los nmeros que suministra el usuario para que los clculos que el programa realiza posteriormente. Los programas recuerdan numeros y otros datos en la memoria de la computadora y acceden a los datos a travs de elementos del programa, conocido como variable..

Ejercicio
Realizar un ejercicio para implementar operadores

relacionales y de igualdad por medio de un if, capturando dos nmeros de enteros, recuerda implementar un objeto Scanner

== Igual != No es igual < x mayor y >y menor x <= x mayor o igual que y >= y menor o igual que x

Guardar y enviar como practica #7

Como resultado debe dar lo siguiente:


Escribe el primer entero:777 Escriba el segundo en entero: 777 777 == 777 777<=777 777>=777

Guardar y Investigar enviar como Que es un diagrama de clases practica #8


Que es un diagrama de secuencia
Que es un diagrama de comunicacin Que es un diagrama de actividad Realizar ejercicios de autoevaluacin 2 que se

encuentra en Dropox

También podría gustarte