martes, 15 de julio de 2014

Qué es IDE? y cuales son los IDE´s mas populares para programar en Java


Los IDE son programas que te permite desarrollar en cierto lenguaje, las sigla IDE significa (Integrated Development Environment) nacieron desde la necesidad de que los desarrolladores tenemos que tener un ambiente de compilamiento y de pruebas en varios servidores, es decir ese programita que es un IDE aparte de chekear tu sintaxis ejecuta su código escrito en una maquinita virtual o servidores que le hayas  instalado.


Netbeans


Algunas características:


  • Hecho totalmente en Java usando la API de Swing, necesitas SDK para poder instalarlo.
  • Moldeable según tus necesidades: puedes descargarle plugins para añadirle funcionalidades.
  • Soporte para Multiples Lenguajes de programación: es posible programar en Ruby, C, C++, PHP... etc
  • Asistencia para funciones básicas: El IDE trae múltiples asistentes que te facilitan tus tareas cotidianas al momento de programar o de publicar proyectos.
  • Total integración con servidor de aplicaciones o contenedores Web: en la versión completa ya viene instalado el servidor de aplicaciones GlassFish y el contenedor web Apache Tomcat. Netbeans te fcilita la tarea de deployar tus proyectos y crear los recursos necesarios para que estos funcionen correctamente.
  • Múltiples Sistemas Operativos: esta hecho en Java recuerden WORA ("write once run everywhere").
  • Trae integrado el compilador con las tareas básicas (Apache Ant).
  • Desarrollo Web simplificado: No tienes porque usar otro editor para páginas web o componentes web seguro netbeans tiene lo que necesitas y si no es así seguro que lo encuentras como plugin.
Eclipse


Algunas características:

  • Es extensible, puede añadirle una gran cantidad de plugins disponibles en la web.
  • Es bastante práctico, fácil de usar.
  • Viene con varios ejemplos que hacen posible aprender a utilizarlo de manera eficiente.
  • Cuenta con bastante documentación disponible en la web oficial.
  • Es el IDE open source oficial para Android.




Garbage Collector



  • El garbage collector de Java provee una solución automática a la gestión de memoria. En la mayoría de los casos el proceso de liberar memoria debe de pertenecer a la lógica de las aplicaciones desarrolladas.

  • Esto es tipico para la memoria que ha sido usada para crear apilamientos (pilas – heap) en Java, estos casos se puede ver en constantes para gestión de pools y en las áreas de los métodos.

  • La pila (heap) es un parte de la memoria donde los objetos de java viven, y esta es la unica parte de la memoria que es de alguna manera involucrados en el proceso de recolección del garbage collector.

  • Todo el garbage collector gira entorno a asegurar que la pila (heap) de memoria siempre este liberando espacio tanto como sea posible. El próposito del garbage collector es encontrar y eliminar objetos que no puedan ser alcanzados.

API de JAVA


API de JAVA

 Un API es un conjunto de clases, funciones que sirven para realizar algo. El API de Java es muy grande, ya que incluye muchos paquetes y Clases que sirven para muchas cosas

Ejemplo:


java.io Entrada y Salida de Datos
java.util Estructuras de datos implementadas para que sean usadas etc
javax.swing Clases para crear una interfaz gráfica.

Ahora, los programadores de Java le llaman API, a la documentación del API de Java que se encuentra en la página de SUN. Cuándo te dicen que lo puedes usar, supongo que se refieren a qué lo vas a poder consultar. Está documentación es muy útil, ya que vienen descritos los métodos de cada clase, los parámetros que recibe, qué es lo que hace y qué es la información que regresa. 


JRE


El JRE (Java Runtime Environment) es una máquina virtual de Java y su función es hacer de intermediario entre una aplicación programada en Java y el sistema operativo que se este usando. De este modo, cualquier aplicación puede funcionar en cualquier sistema operativo que disponga del JRE.

Maquina Virtual (JVM)

La Máquina Virtual Java (JVM) es el entorno en el que se ejecutan los programas Java, su misión principal es la de garantizar la portabilidad de las aplicaciones Java. Define esencialmente un ordenador abstracto y especifica las instrucciones (bytecodes) que este ordenador puede ejecutar. El intérprete Java específico ejecuta las instrucciones que se guardan en los archivos cuya extensión es .class. Las tareas principales de la JVM son las siguientes:
  • Reservar espacio en memoria para los objetos creados
  • Liberar la memoria no usada (garbage collection).
  • Asignar variables a registros y pilas
  • Llamar al sistema huésped para ciertas funciones, como los accesos a los dispositivos
  • Vigilar el cumplimiento de las normas de seguridad de las aplicaciones Java












¿Que es JDK?


Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la creación de programas en java. Puede instalarse en una computadora local o en una unidad de red.

En los sistemas Windows sus variables de entorno son

  • JAVAPATH: es un path completo del directorio donde está instalado el JDK.
  • CLASSPATH: son las librerias o clases de usuario.
  • PATH: variable donde se agrega la ubicación de JDK
Los programas más importantes que se incluyen son:

  • Appletviewer: es un visor de applet para generar sus vistas previas, ya que un applet carece de método main y no se puede ejecutar con el programa java.
  • Javac: es el compilador de JAVA.
  • java: es el intérprete de JAVA.
  • javadoc: genera la documentación de las clases java de un programa.

El JDK tiene el compilador que permite convertir código fuente en bytecode, es decir, el código "maquina" de la máquina virtual de Java.

¿Lenguaje de programación java?






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. 
Una de las principales características por las que Java se ha hecho muy famoso es que es un lenguaje independiente de la plataforma. Eso quiere decir que si hacemos un programa en Java podrá funcionar en cualquier ordenador del mercado.

Introduccion a POO (Concurrencia)


El término concurrencia significa tareas ejecutándose simultáneamente, en java la concurrencia se soporta mediante objetos Thread. Un thread es un tarea de ejecución en un programa. La JVM permite a una aplicación tener múltiples threads que se ejecutan simultáneamente.
Existen 2 tipos de thread en java, los daemon y los no-daemon, cuando la JVM se inicia, por lo general hay un solo thread no-daemon y el que manda llamar al método main () de un programa, y la JVM se ejecuta hasta que una llamada a System.exit () se haga o todos threads que no son daemon hayan muerto.

En otras palabras los daemon thread  pueden llamarse thread del sistema y losno-daemon thread, pueden ser llamados threads de programa o threads de usuario, y una aplicación se ejecuta hasta que no queden threads de usuario o programa ejecutándose.



Introduccion a POO (Metodos)


Los métodos determinan el comportamiento y la responsabilidad que tendrán las clases. Se definen métodos que representen como se van a utilizar las clases. Este como se van a utilizar las clases significa que debemos representar el uso que se les da a las clases en la lógica de negocios de la vida real, es decir, a una puerta se le pedirá que se abra y se cierre, por lo tanto se le agregaran métodos abrir() y cerrar().

 Métodos de instancia

Los métodos de instancia, como su nombre lo indica, son aplicables a una instancia de la clase en particular. Es decir, que un método de instancia trabaja sobre el estado actual de la instancia, y para cada instancia tendrán un resultado distinto, por ejemplo, el hecho de comer permitirá a la instancia mario estar satisfecho, mientras que la instancia maria estará insatisfecha hasta que también se le aplique el método comer.

                Ejemplo en Java:

                               public class Persona{
                              
                                               public void comer (int cantidadDeAlimento){
                                                               // Esto es un comentario. Acá va la definición del método.
                                               }

                               }

 Métodos de clase:


Los métodos de clase son un comportamiento común a todas las instancias que pertenecen a la misma clase. Al ser un método de clase, no hace falta instanciar un objeto de la clase para utilizarlo. Estos métodos no hablan del estado actual de la clase, sino solo de un comportamiento genérico de la clase, de un procedimiento que solo utiliza los parámetros de entrada o las variables estáticas. Son para un uso particular y es bien visible cuando un método debe ser estático.

             Ejemplo en Java:

                               public class Persona{

                                               public static int obtenerAlturaMaxima(){
                                                               // Esto es un comentario. Acá va la definición del método.
                                               }


Introduccion a POO (Atributos)


Definición:

Los atributos determinan el estado que tiene un objeto. Estos pueden ser tipo de datos primitivos u objetos de cualquier clase.

                Ejemplo:
                               La clase persona tiene como atributos la altura, el color de ojos y la edad.

                Ejemplo en java:
                             
                               public class Persona {
                             
                               public int altura;
                               public String colorDeOjos
                               public int edad;
                             
                               }
              
                Utilizacion:

                               Persona mario = new Persona();
                               mario.altura = 183;
                               mario.colorDeOjos = “marrones”;
                               mario.edad = 40;


Atributos de Instancia


Los atributos de instancia son aplicables a un solo objeto. Determinan el estado en el que se encuentra un objeto.

                Ejemplo:


El atributo altura en la clase Persona es de instancia, debido a que cada persona tendrá su propia altura.

                Ejemplo en Java:
                             
                               public class Persona{
                                             
                                               public int altura;

                               }
                Luego:
              
                               Persona mario = new Persona();
                               mario.altura = 184;
                               Persona maria = new Persona();
                               maria.altura = 152;


Atributos de clase:

                Un atributo de clase es un atributo común a todos los objetos instanciados de la clase. Al estar definido en la clase no hace falta instanciar la clase para utilizarlo. Las constantes se suelen definir como atributos de clase.

                Ejemplo:
                               El atributo cantidadDeOjos en la clase Persona es de clase, debido a que todas las instancias de la clase persona tendrán igual cantidad de ojos.

                Ejemplo en Java:

                               public class Persona{
                             
                                               public static int cantidadDeOjos = 2;

                               }

                Luego:

                               Persona mario = new Persona();
                               Persona maria = new Persona ();
                               mario.cantidadDeOjos                 // es igual a 2
                               maria.cantidadDeOjos                  // es igual a 2
                               Persona.cantidadDeOjos             // es igual a 2   

                Y este 2 es siempre el mismo, no se instancia un cantidadDeOjos para cada objeto, siempre es el mismo 2 de cantidadDeOjos.
Si modifico esta cantidad de ojos, se modifica para todas las instancias del objeto:
              
                               Persona.cantidadDeOjos = 3;

                entonces:

                               mario.cantidadDeOjos                 // es igual a 3
                               maria.cantidadDeOjos                  // es igual a 3


Introduccion a POO (Clase)


Definición:


 Una clase es una agrupación de reglas de negocio, o representaciones de un concepto de la vida real. Es un molde, con reglas, para armar un objeto. Esta formada por atributos, que definen un estado particular, y métodos, que definen su uso o comportamiento.

                Implementación en JAVA

                               Ejemplos de cómo codificar diferentes clases en Java:

                               public class Persona{
                               }
                               public class Auto{

                               }

           
Ejemplo:


Introduccion a POO (Interfaz)


Definición

Una interfaz es una declaración de comportamiento, es decir un conjunto de métodos sin su implementación. Define un protocolo de comportamiento. Es un contrato que publica una clase para ser utilizada por otras clases. Puede heredar de otras interfaces.

Ejemplo en Java:

     public interface Imprimible {
        
         public void imprimir ();
         public void imprimir (Tamaño t, Estilo e);
      }

Utilizacion:

     public class Documento implements Imprimible{

         public void imprimir(){
         //Acá va la definición.
         }

         public void imprimir(Tamaño t, Estilo e){
         //Acá va la definición.
         }
      }

Ejemplo de mini programa con interfaces:

public class Aeropuerto {
    
    public void darPermisoDeAterrizaje(Volador v){
        
       /*
       Aca va el codigo de despejar pista y permitir aterrizar al volador v
       En el programa se puede iterar sobre una lista de voladores e ir dando
       permiso de aterrizaje a cada volador, sin especificar que tipo 
       especifico de volador se trata 
       */
       
        v.aterrizar();
        
        if(v instanceof AvionPrivado){
            AvionPrivado ap = (AvionPrivado)v;
            System.out.println("Aterrizo Licencia " + ap.getLicencia());
        }
        
         if(v instanceof AvionDePasajeros){
            AvionDePasajeros adp = (AvionDePasajeros)v;
            System.out.println("Aterrizo Licencia " + adp.getAerolinea());
        }
         
       if(v instanceof Superman){
            Superman sp = (Superman)v;
            System.out.println("Aterrizo Licencia " + sp.getNombre());
        }
        
    }
}


Luego tenemos distintos TransportesAereos, un AvionDePasajeros, un AvionPrivado y luego tenemos a Superman.
Entonces lo que se hace es utilizar la interfaz para definir un mismo comportamiento a clases bien distintas, porque no heredan de la misma clase genérica.

public interface Volador {
    //Obligamos a cada volador a programar su modo de aterrizar
    public void aterrizar();
}
public abstract class TransporteAereo {
 }

class AvionPrivado extends TransporteAereo implements Volador{
    
    private String licencia;
    
    @Override
    public void aterrizar() {
      //Aca va el codigo del modo que tiene que aterrizar un avion privado
    }
    
    public String getLicencia() {
        return licencia;
    }
    
     public void setLicencia(String licencia) {
        this.licencia = licencia;
    }
     
}

class AvionDePasajeros extends TransporteAereo implements Volador{

    private String aerolinea;
    
    @Override
    public void aterrizar() {
    //Aca va el codigo del modo que tiene que aterrizar un avion de pasajeros
    }
    
    public String getAerolinea() {
        return aerolinea;
    }
    
     public void setAerolinea(String licencia) {
        this.aerolinea = licencia;
    }
}

class Superman extends TransporteAereo implements Volador{

    @Override
    public void aterrizar() {
    //Aca va el codigo del modo que tiene que aterrizar de Superman
    }
    
    public String getNombre() {
        return "Clark Kent";
    }
    
}


public class Programa {
    public static void main(String[] args) {
        
        AvionPrivado v1 = new AvionPrivado();
        v1.setLicencia("L123456F");
        
        AvionDePasajeros v2 = new AvionDePasajeros();
        v2.setAerolinea("Aerolineas Args");
        
        Superman v3 = new Superman();
        
        Aeropuerto ap = new Aeropuerto();
        
        ap.darPermisoDeAterrizaje(v1);
        
        ap.darPermisoDeAterrizaje(v2);
        
        ap.darPermisoDeAterrizaje(v3);
    }
}



En este caso se ve como se puede llamar al método aterrizar () de los objetos Voladores, porque la interfaz Volador tiene un método aterrizar () y al implementar una interfaz se esta diciendo que se tendrá ese comportamiento, es decir que se implementan sus métodos.

Introduccion a POO (Abstracción)



Definición:

 La abstracción es como puedes representar los objetos en modo de código. 
Es un método por el cual abstraemos, vale la redundancia, una determinada entidad de la realidad;  sus características y funciones que desempeñan. Estos son representados en clases por medio de atributos y métodos de dicha clase. 

Por ejemplo tienes un carro y quieres "abstraerlo" para hacer un programa en el que puedas realizar operaciones en base al carro. 

Puedes crear una clase con las características del carro por ejemplo. 

class carro { 
int cantidadDePuertas; 
int modelo; 
Color colorcito; 
String linea; 

public carro (int cantidadDePuertas, int modelo, Color colorcito, String linea){ 
this.cantidadDePuertas = cantidadDePuertas; 
this.modelo = modelo; 
this.colorcito = colorcito; 
this. linea = linea; 




Y ya con esto podás almacenar y utilizar en código de java un objeto que "emula" ser un vehículo por medio de la abstracción de los datos reales a tipos de datos equivalentes en java. 


Introduccion a POO (Encapsulación)


Definición:

El encapsulamiento habla del modo de ocultar como ha sido implementado el estado, los atributos, de un objeto. Se accede a este estado a través de los métodos públicos, es decir su interfaz pública. Una buena práctica es hacer las validaciones correspondientes a los posibles estados del objeto, en estos métodos, de modo tal de mantener al objeto en un estado consistente.
También se lo llama “information hiding”. De la misma forma podemos respetar el encapsulamiento si se tiene, en la clase Auto, un atributo velocidad, que sea privado, el único modo de modificar la velocidad es a través de los método acelerar() y frenar(), es decir que esta encapsulada la velocidad, y solo se la puede modificar por los métodos acelerar() y frenar(), no se puede cambiar la velocidad de ninguna otra forma.

                Ejemplo en Java:
                              
                               public class Persona{


                                               //Atributos
                                               prívate int altura;


                                               //Métodos
                                               public int getAltura(){
                                               return this.Altura;
                                               }
                                              
                                               public void setAltura(int unaAltura){
                                               this.altura = unaAltura;
                                               }


                                }

Métodos de acceso

                Los métodos de acceso son el medio de acceder a los atributos privados del objeto. Son métodos públicos del objeto.

                -El getter:
                               El método para acceder a los atributos en forma de solo lectura se los denomina “getters”. Son los métodos que retornan el valor de los atributos. El NetBeans, como la mayoría de los entornos de desarrollo, permite generarlos de forma automática.

                -El setter:
                               
El método para acceder a los atributos en forma de escritura se los denomina “setters”. Son los métodos que establecen el valor de los atributos. Tambien se los genera de forma automática en los entornos de desarrollo

Persona
- altura: int
+getAltura() : int
+setAltura(int) : void

*Diagrama UML de la clase Persona

Introduccion a POO (Polimorfismo)


Polimorfismo en Java

El polimorfismo se produce cuando un método adopta más de una forma. Un método puede modificar su comportamiento de acuerdo a su necesidad.


Como ejemplo se puede utilizar lo siguiente:
class Numero {   
    protected int numero;           
    public void proximo(){       
    }   
    @Override
    public String toString(){
        return " " + numero;
    }
}
    class NumeroPositivo extends Numero{       
        public NumeroPositivo(){
          numero = 0;
        }       
        public void proximo(){
        numero = numero + 1;
        }
    }   
    class NumeroNegativo extends Numero{       
        public NumeroNegativo(){
            numero = 0;
        }       
        public void proximo(){
        numero = numero - 1;
        }
    }

public class Programa {         
        public static void main(String[] args) {           
            Numero positivo = new NumeroPositivo();
            Numero negativo = new NumeroNegativo();
            System.out.println("Numero positivo inicial:" + positivo);
            System.out.println("Numero negativo inicial:" + negativo);
            positivo.proximo();
            negativo.proximo();
            System.out.println("Numero positivo siguiente:" + positivo);
            System.out.println("Numero negativo siguiente:" + negativo);
            positivo.proximo();
            negativo.proximo();   
            System.out.println("Numero positivo siguiente:" + positivo);
            System.out.println("Numero negativo siguiente:" + negativo);
            }
}

El resultado de este programa es el siguiente:

Numero positivo inicial: 0
Numero negativo inicial: 0
Numero positivo siguiente: 1
Numero negativo siguiente: -1
Numero positivo siguiente: 2
Numero negativo siguiente: -2

La conclusión que debemos observar en este ejemplo es que se tienen dos instancias de Numero, una instancia de NumeroPositivo y una de NumeroNegativo, cada cual tiene un comportamiento distinto. Sin embargo a la hora de declararlo se los declaro en su forma genérica de Numero y se tiene el método próximo () asociado.

El polimorfismo ha permitido que cada uno se comporte de manera distinta, y sin embargo parece llamarse siempre al mismo método. Es decir, es distinto el próximo negativo del próximo positivo, y eso se refleja en el resultado.

Otra cosa que puede verse en este ejemplo es que al imprimir los objetos positivos y negativos se llama automáticamente al método toString (), es el modo en el que Java imprime sus objetos en pantalla. Y el aprovechamiento del mecanismo de herencia, en la programación del método toString () que retorna el valor de numero como un String, es decir, algo que puede imprimirse fácilmente. Al llamarlo en un NumeroPositivo, como este no lo tiene programado, se ejecuta el que esta definido en la clase padre Numero. Al llamarlo en un NumeroNegativo también se llama al de la clase padre.

Con redefinición:

Se llama polimorfismo con redefinición cuando en una clase sobreescribimos un método, definido en la superclase.

Ejemplo en Java:

      public class Persona{
               public void cantar(){
                                //Esto es un comentario. Aca va la definicion.
                }
      }
      class Cantante extends Persona{
                 public void cantar(){
                               //Esto es un comentario. Aca va la redefinicion.
                 }
      }

En este caso se puede ver que todas las personas pueden cantar (), sin embargo no es lo mismo cantar () en la clase Cantante, pues el cantante logra mayor escala, mayor volumen de voz, y entona de una forma muy preparada. Un cantante logra llegar más lejos con su canto que una persona común. Al redefinir el método en la clase Cantante se logra que se ejecute el método cantar () de cantante en lugar de método cantar () de persona. Por lo tanto la especialización que se logra con este mecanismo permite cambiar el comportamiento de una familia de clases.

Sin Redefinición

Se llama polimorfismo sin redefinición cuando un método tiene distinto comportamiento de acuerdo a la clase a la que pertenece.

Ejemplo en Java:

      public class Persona{
                               public void beber(Agua unPocoDeAgua){
                                 //Esto es un comentario. Aca va la definicion.
                                 }
      }

      class Animal{
                   public void beber(Agua unPocoDeAgua){
                               //Esto es un comentario. Aca va otra definicion.
                               }
      }

En este caso ambas clases logran beber (), es decir que ambas clases tienen definido el método beber, solo que uno de los métodos beber lo hace como humano, y otro lo hace como un animal, el comportamiento es bien distinto, aunque el nombre sea el mismo.



 

Sample text

Sample Text

Sample Text

 
Blogger Templates