domingo, 19 de julio de 2015

CHAT ECO CONCURRENTE

El siguiente programa nos muestra una arquitectura Cliente -Servidor , ya que definimos dos elementos :

 Servidor : este es el ente pasivo en la conversación.
 Cliente :es el ente activo  ya que inicia la conversación .

Aquí se muestra a continuación una conexión entre un Servido y un Cliente, en la cual el cliente manda un mensaje al Servidor, pero el Servidor le envía de vuelta el mismo mensaje (chat eco), pero el programa puede admitir mas Clientes siendo así un programa concurrente.
las clases que utilizamos son:

Servidor :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;


public class AplicacionServidor {

    public static void main(String[] args) {
     
         
     
        try {
         
            ServerSocket servidor = new ServerSocket(Integer.parseInt(args[0]));
             while(true){
            Socket clienteConectado = servidor.accept();
            BufferedReader lecturaServidor = new BufferedReader(new InputStreamReader(clienteConectado.getInputStream()));
            PrintWriter escrituraServidor = new PrintWriter(clienteConectado.getOutputStream(), true);
            String mensajeServidor = new String();
            escrituraServidor.println("Recibido....");
            try{
            while ((mensajeServidor = lecturaServidor.readLine()) != null) {
                System.out.println("\nMensaje recibido: \n\t" + mensajeServidor + "\n");
                escrituraServidor.println(mensajeServidor);
            }
           clienteConectado.close();
         
            }catch(SocketException e){
                continue;
                     }
             }
        } catch (IOException ex) {
            System.err.println(ex);
            ex.getStackTrace();
            ex.printStackTrace();
         }
       }
     }






Cliente:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;


public class AplicacionCliente {

    public static void main(String[] args) {
        
        try {
            Socket cliente = new Socket(args[0],Integer.parseInt(args[1]));
            BufferedReader lecturaCliente = new BufferedReader(new InputStreamReader(cliente.getInputStream()));
            
            BufferedReader lecturaTeclado = new BufferedReader(new InputStreamReader(System.in));
            
            PrintWriter escrituraCliente = new PrintWriter(cliente.getOutputStream(), true);
            String mensajeCliente =new String();
            
            escrituraCliente.println("Hola servidor soy el cliente! :)");
            while ((mensajeCliente = lecturaTeclado.readLine()) != null) {
                
                
                System.out.println("\nMensaje recibido: \n\t" + mensajeCliente + "\n");
                escrituraCliente.println(mensajeCliente);
                
            }
            cliente.close();
        } catch (IOException ex) {
            System.err.println(ex);
        }
    }
}

domingo, 28 de junio de 2015

SERIALIZACIÓN

¿QUE ES LA SERIALIZACIÓN?

La serialización de un objeto consiste  transformar un objeto q una secuencia de bytes que represente el estado de dicho objeto. 
Cuando el objeto ya está serializado se puede guardar en un fichero o puede enviarse a través de la red para reconstruirlo en otro lugar. 

Para que un objeto sea serializable basta con que implemente la interfaz Serializable. Como la interfaz Serializable no tiene métodos, para implementarla, solo debemos escribir implements Serializable . 



Para la implementacion de nuestro ejemplo debemos conocer que:

"Un ObjectOutputStream escribe tipos de datos primitivos y gráficos de objetos Java a un OutputStream
Los objetos pueden ser leidos(reconstituida ) utlizando un ObjectInputStream ."

Para comprender de mejor manera la serialización , lo explicaremos en el siguiente ejemplo:

el cual consta de 3 clases: Paciente , Aplicacion y  la AplicacionLectura.

Clase Paciente:

Creamos una clase Paciente a la cual vamos a implementar  Serialización.
para eso escribimos:  implements Serializable.
Luego implementamos cada una de las variables :


Implementacion de constructores :



Implementacion del toString, en el cual vamos a proporcionar todos los valores de cada uno de los atributos.

Clase Aplicacion:


En esta aplicación vamos a crear e inicializar 4 objetos del tipo Paciente con sus respectivos datos(documento,nombre,género ) .

luego vamos a crear un archivo llamado INFORMACION_PACIENTES.txt con el método FileOutputStream .
 Creamos un objeto llamado salida  del tipo ObjectOutputStream, el cual va a enviar a la salida el archivo de texto.




Al ejecutar el programa se creará automáticamente nuestro archivo.

Al abrir el archivo de texto se mostrará unos caracteres especiales (diferentes) esto se debe  a que lo que estamos envíando  son bytes  .




Clase AplicacionLectura:

Cuando el archivo ya este creado vamos a leerlo a través de el ArrayList de Paciente  en el cual  almacenaremos los diferentes valores de cada uno de los atributos , mediante la creación de un objeto del tipo ObjectInputStream.



Al  ejecutar nuestra aplicación , si no existió ninguna excepción previa , vamos a obtener la siguiente salida :







domingo, 21 de junio de 2015

Ordenamiento en java

Unos de las diferentes formas de Ordenar diferentes atributos en java  es el de utilizar  la interfaz Comparable .
En el siguiente ejemplo veremos la funcionalidad de dicha interfaz.

Clase "Estudiante":

En esta clase hemos implementado la interfaz "Comparable" 


Hemos creado los  GETTERS Y SETTERS de cada uno de los atributos creados.


Sobre escribimos los métodos toString y compareTo .
En el método toString implementamos todos los atributos que hayamos creados y que deseemos que se impriman .
En el método compareTo , el argumento de entrada es un objeto de tipo Estudiante , en el cual se va a analizar el nombre de cada uno de los objetos Estudiante creados .


Clase "Curso":

Importamos la librería Collections.
Creamos un método llamado ordenarNombre( ), el cual nos va a permitir ordenar los nombres de cada uno de los estudiantes en orden alfabético.


y por ultimo la Clase "Aplicacion":
en esta clase vamos a crear el método main , desde el cual inicializamos nuestras variables con los respectivos constructores de cada Objeto.
Luego vamos a imprimir la  lista de estudiantes con cada uno de sus atributos.
y después  vamos llamar al método ordenarNombre( ) ,el cual va a preparar que  ordene los nombres , para luego llamar al método imprimir  , y obtener la lista de estudiantes ya ordenados.





La respectiva salida del programa es la siguiente :



Para ordenar mediante el "IRA"



En la clase Estudiante solo hemos modificado el método compareTo con la siguiente información (la la variable y el getter de "ira" ).

en la clase Curso , no hemos realizado ningún cambio 
en la clase Aplicacion , solo cambiamos el mensaje de impresión a "ESTUDIANTES ORDENADOS POR SU IRA".


La salida es la siguiente:


COMO CREAR TUS PROPIAS EXCEPCIONES EN JAVA

¿QUÉ SON LAS EXCEPCIONES?

Cuando se producen errores en tiempo de ejecución (mientras se esta ejecutando el programa) se denominan excepciones, esto ocurre cuando se produce un error en alguna de las instrucciones de dicho programa, unos de los ejemplos típicos son :cuando se hace una división entre cero,  cuando un objeto es "null", etc. Cuando se produce una excepción se muestra en la pantalla un mensaje de error y finaliza la ejecución del programa.

La jerarquía de excepciones en java es la siguiente:

Todas las excepciones lanzadas automáticamente  son objetos de la clase Throwable o de alguna de sus subclases 
La clase Throwable deriva directamente de Object y tiene dos clases derivadas directas: Error Exception.


 Throwable :es la clase base que representa a todas las excepciones que pueden ocurrir en un programa Java.En esta clase existen varios métodos útiles, que son heredados por las distintas subclases de Throwable.


 try:
En el bloque try se encuentran las instrucciones que pueden lanzar una excepción.
Solamente se pueden capturar las excepciones lanzadas dentro de un bloque try.
Una excepción se puede lanzar de forma automática o mediante la palabra reservada throw.

 catch:
Es el bloque de código donde se captura la excepción. El  catch es el manejador de la excepción. Aquí se decide qué hacer con la excepción capturada. Puede haber varios bloques catch relacionados con un bloque try.
Una vez finalizado un bloque catch la ejecución no vuelve al punto donde se lanzó la excepción. La ejecución continúa por la primera instrucción a continuación de los bloques catch.
finally:
Es opcional.
Se ingrese a continuación de los bloques catch;en ocasiones puede aparecer a continuación de un bloque try si no hay bloques catch.
La ejecución de sus instrucciones queda garantizada independientemente de que el bloque try acabe o no su ejecución incluso en estos casos:
  • Aunque el bloque try tenga una sentencia return, continue o break, se ejecutará el bloque finally
  • Cuando se haya lanzado una excepción que ha sido capturada por un bloque catch. El finally se ejecuta después del catch correspondiente.
Un bloque finally se usa para dejar un estado consistente después de ejecutar el bloque try.

Ejemplo Práctico:

Realizar un programa que me permita obtener la raiz cuadrada de un numero ingresado por el usuario.

Hemos creado una clase llamada ValorNoValido, en el cual se ha creado un constructor que recibe  un argumento de entrada de tipo String.


y otra clase llamada Aplicacion , en esta clase pediremos al usuario que ingrese un número por teclado , para obtener la raíz cuadrado de dicho numero.
se ha implementado nuestra propia excepcion llamada ValorNoValido.





martes, 7 de abril de 2015

COMO COMPILAR UN PROGRAMA EN JAVA UTILIZANDO EL BASH DE LINUX


Para poder compilar un programa de java primero debemos instalar el JDK (Java Development Kit)




Damos clic en "Accept License Agreement"Elegimos una de las opciones de linux  cuya extensión sea rpmNOTA : linux x64 corresponde a la arquitectura de 64 bits.linux x86 corresponde a la arquitectura de 32 bits
Abrimos el terminal de linuxIngresamos el siguiente comando cd seguido de la dirección donde se encuentra nuestro archivo descargado: cd Descargas/ Verificamos que nuestra programa se encuentre en dicha carpeta con el comando ls.

Ingresamos el siguiente comando:
sudo apt-get install alien
Luego ingresamos nuestra correspondiente contraseña



Al final nos aparecerá ¿desea continuar ? y tecleamos S
ingresamos el comando ls para copiar el nombre de nuestro archivo  
ingresaremos el comando sudo alien -d jdk-8u40-linux-i586.rpm
para convertir el mismo archivo pero con extensión .deb


 sion teclear nada , esperaremos un poco de tiempo y a continuación nos aparecerá lo siguiente:

Cerramos nuestra terminal e ingresamos a la carpeta de Descargas donde se encuentra nuestro nuevo archivo


damos doble clip en el archivo .deb
Se abrirá la siguiente ventana :

Clic en instalar
luego clic en Ignorar e instalar
Después de un momento nos saldrá la siguiente ventana para autenticarse , ingresamos nuestra contraseña correspondiente
Clic en auntenticar


Después de seguir todos los pasos la instalación ha finalizado.


Abrimos el terminal Ingresamos el siguiente comando:gedit Aplication.java &Se nos desplegara un editor de texto cuyo título es Aplication.javaIngresamos el siguiente código para nuestro programa

Clic en guardar y en la terminal ingresamos el comando cd seguido de la dirección de la carpeta en la que se encuentra nuestro programa Aplicacion.java      Ej:cd Documentos/Luego ingresamos el comando ls para comprobar que nuestro programa se encuentra en dicha carpeta

Luego ingresamos el comando sudo apt-get install default-jdk y esperamos a que se instale
finalmente ingresaremos los siguientes comandos:
javac Aplication.java
java Aplicacion





COMO COMPILAR UN PROGRAMA EN JAVA UTILIZANDO EL "CMD" DE WINDOWS









PRIMERO PROCEDEREMOS A INSTALAR EL JDK(Java Development Kit)

Ingresamos a la página oficial de ORACLE descargamos el programa JDK: http://www.oracle.com/technetwork/es/java/javase/downloads/index.html


Damos clic en "Accept License Agreement"Elegimos una de las opciones NOTA : Windows x64 corresponde a la arquitectura de 64 bits.Windows x86 corresponde a la arquitectura de 32 bits .


Finalizada la descargar nos aparecerá el siguiente icono
Damos doble clic para iniciar la instalación del programa



















Luego nos aparecerá la siguiente ventana
Damos clic en next en las siguientes ventanas
Y damos clic en Install





Finalmente clic en Install




Ingresamos a la carpeta donde se encuentran los archivos de los programas
Buscamos la carpeta JAVA e ingresamos a dicha carpeta

Clic en la primera opción


clic en bin


damos clic en la parte superior del buscador 




Nos aparecerá la dirección en la que se encontramos 
Clic en copiar


Luego clic en Equipo
Clic derecho 
clic en Propiedades



Clic en "Configuración avanzada del sistema"








clic en Variables de entorno


Clic en Variables de entorno



En variables del sistema buscamos la variables Path


clic en Editar


damos clic en Valor de la variable
Nos vamos al inicio de esa la dirección
clic derecho y clic en pegar (pegamos nuestra dirección copiada anteriormente)


Finalmente damos clic en aceptar varios veces

CREANDO EL PROGRAMA

Abrimos el blog de notas
Ingresamos el código de un programa en java




clic en archivo
clic en guardar como
Ingresamos el nombre de nuestro programa con extensión ".java"
NOTA: el nombre con el que vamos guardar deberá ser igual con el que escribimos la clase:
public class Promedio
clic en guardar



Luego damos clic en Inicio
en el buscador escribimos "CMD"
clic en cmd
SE NOS DESPLEGARÁ UNA VENTANA SIMILAR A ESTA:


 Escribimos el comando cd y luego el nombre de la carpeta en la que se encuentra nuestro programa seguido de dos puntos


En mi caso la carpeta en la que guarde mi código se llama ejemplos_java
cuya dirección es: C:\Users\hogar\Documents\ejemplos_java
por lo tanto escribo
cd C:\Users\hogar\Documents\ejemplos_java
javac Promedio.java
java Promedio