viernes, 5 de agosto de 2016

JAVA

Java es un lenguaje de programación que fue desarrollado a principios de los años 90.
El creador de este exitoso programa fue Patrick Naughton, ingeniero de SunMicroSystems, que trabajo con sus compañeros de trabajo llamando al proyecto "El proyecto verde". Él y otros ingenieros trabajaron sin descansar durante 18 meses.
Intentaban crear un lenguaje de programación fácil de usar y de utilizar, al principio consideraban el más útil C++ pero no todos estuvieron de acuerdo  lo encontraron inadecuado como Gosling. 
Gosling intentaba modificar C++, pero al final termino abandonando el proyecto y sus cambios y empezó desde cero con el lenguaje que llamo Oa k, similar a CC++. Luego Oak cambió el nombre a Java porque resultaba que ya existía un lenguaje llamado Oak, se dice que Java es originario de Asia, lo nombraron así mientras tomaban café.
En Agosto del 1991 Java ya tenía sus propios programas. Para 1992, el equipo o grupo desarrollo un sistema llamado Star7, parecido a PDA, cuyo nombre viene de la combinación del "Proyect Green" o "Proyecto Verde" como mencionamos antes, que permitía a los usuarios responder al teléfono desde cualquier lugar.
De 1993 a 1994 el equipo de Naughton lanzó nuevas propuestas al mercado, las mismas que se fueron dando en el sistema operativo base. Sin embargo, este proyecto fracasó por sus ambiciones de ganar ofertas. Afortunadamente el Proyecto Verde coincidió con el fenómeno mundial WEB.
Naughton procedió a la construcción del lenguaje Java y en Septiembre de 1994 se termina el prototipo de HotJava cuando se hace la demostración y se reconoce el potencial de Java y aceptan el proyecto.
CARACTERISTICAS ESPECÍFICAS REQUERIDAS PARA INSTALAR EL PROGRAMA:
Ø  Simple
Basado en el lenguaje C++ pero donde se eliminan muchas de las características OOP que se utilizan esporádicamente y que creaban frecuentes problemas a los programadores.
Ø  Orientado al objeto
Java da buen soporte a las técnicas de desarrollo OOP y en resumen a la reutilización de componentes de software.
Ø  Distribuido
Java se ha diseñado para trabajar en ambiente de redes y contienen una gran biblioteca de clases para la utilización del protocolo TCP/IP, incluyendo HTTP y FTP.
Ø  Interpretado
El compilador Java traduce cada fichero fuente de clases a código de bytes (Bytecode), que puede ser interpretado por todas las máquinas que den soporte a un visualizador de que funcione con Java.
Ø  Sólido
El código Java no se quiebra fácilmente ante errores de programación. Así el relaje que existe en la declaración y manejo de tipos en C y C++ se torna en restricciones en Java, donde no es posible la conversión forzada (cast) de enteros en punteros y no ofrece soporte a los punteros que permitan saltarse reglas de manejo de tipos.
Ø  Seguro
Como Java suele funcionar en ambiente de redes el tema de seguridad debe interesar en sobremanera. Las mismas características antes descritas que evitan la corrupción de código evitan su manipulación.


Ø  Arquitectura neutral

El compilador crea códigos de byte (Bytecode) que se envía al visualizador solicitado y se interpreta en la máquina que posee un intérprete de Java o dispone de un visualizador que funciona con Java.

Ø  Portable
Al ser de arquitectura neutral es altamente portable, pero esta característica puede verse de otra manera: Los tipos estándares (int, float...) están igualmente implementados en todas las máquinas por lo que las operaciones aritméticas funcionaran igual en todas las máquinas.

Ø  Alto desempeño


Al ser código interpretado, la ejecución no es tan rápida como el código compilado para una plataforma particular. El compilador Java suele ofrecer la posibilidad de compilar Bytecode en código máquina de determinadas plataformas, y según Sun este código resultar de una eficacia similar a compilaciones de C y C++.

Ø  Multihilos
Java puede aplicarse a la realización de aplicaciones en las que ocurra más de una cosa a la vez.

Ø  Dinámico
Al contrario que C++ que exige se compile de nuevo la aplicación al cambiar una clase madre Java utiliza un sistema de interfaces que permite aligerar esta dependencia. Como resultado, los programas Java pueden permitir nuevos métodos y variables en un objeto de biblioteca sin afectar a los objetos dependientes.


DESCRIPCION DEL LENGUAJE:
Ø  Está orientado a objetos: si bien existen detractores de esta modalidad, la programación orientada a objetos resulta muy conveniente para la mayoría de las aplicaciones, y es esencial para los videojuegos.
Ø  Es muy flexible: Java es un lenguaje especialmente preparado para la reutilización del código; permite a sus usuarios tomar un programa que hayan desarrollado tiempo atrás y actualizarlo con mucha facilidad, sea que necesiten agregar funciones o adaptarlo a un nuevo entorno.
Ø  Funciona en cualquier plataforma: a diferencia de los programas que requieren de versiones específicas para cada sistema operativo (tales como Windows o Mac), las aplicaciones desarrolladas en Java funcionan en cualquier entorno, dado que no es el sistema quien las ejecuta, sino la máquina virtual (conocida como Java Virtual Machine o JVM).
Ø  Su uso no acarrea inversiones económicas: programar en Java es absolutamente gratis; no es necesario adquirir ninguna licencia, sino simplemente descargar el kit de desarrollo (Java Development Kit o JDK) y dar riendas sueltas a la imaginación.
Ø  Es de fuente abierta: Java ofrece el código de casi todas sus librerías nativas para que los desarrolladores puedan conocerlas y estudiarlas en profundidad, o bien ampliar su funcionalidad, beneficiándose a ellos mismos y a los demás.
Ø  Es un lenguaje expandible: Cada programador tiene la libertad de revisar y mejorar el código nativo de Java, y su trabajo puede convertirse en la solución a los problemas de muchas personas en todo el mundo. 


ESTRUCTURA DEL PROGRAMA:
La estructura de un programa simple en Java es la siguiente:
public class ClasePrincipal {
public static void main(String[] args) {
sentencia_1;
 sentencia_2;
 // ...
sentencia_N;
 }
}
Como primer ejemplo sencillo de programa escrito en Java se va a utilizar uno que muestra
Un mensaje por la pantalla del ordenador. Por ejemplo, el programa Hola.java:
/**
 * La clase hola construye un programa que
 * muestra un mensaje en pantalla
 */
public class Hola {
public static void main(String[] args) {
System.out.println("Hola, ");
System.out.println("me llamo Franklin");
System.out.println("Hasta luego");
 }
}
Como se ha indicado anteriormente, en un programa de Java todo se organiza dentro de las
Clases. En el ejemplo anterior, Hola es el nombre de la clase principal y del archivo que contiene el código fuente.
INCLUSION DE ARCHIVOS:
JAR
El JDK se envía con una herramienta llamada JAR, que significa Java Archive (archivo Java). Use esta herramienta para crear archivos JAR. Una vez que haya empaquetado el código en un archivo JAR, otros desarrolladores pueden simplemente dejar el archivo JAR en sus proyectos y configurar sus proyectos para usar su código.
Crear un archivo JAR en Eclipse es facilísimo. En su espacio de trabajo, hacer clic derecho en el paquete com.makotogroup.intro y seleccione Export. Verá el diálogo que se muestra en la Ilustración 8. Elija Java > JAR file.
TIPOS DE DATOS Y DECLARACION:
Tipo primitivo: están definidas como un valor único, que puede ser entero, de punto flotante, carácter o booleano.

Java permite distinta precisión y distintos rangos de valores para estos tipos de variables (char, byte, short, int, long, float, doublé, boolean).

El tipo booleano: no es un valor numérico: sólo admite los valores true false. El tipo booleanno se identifica con el igual o distinto de cero, como en C/C++. El resultado de la expresión lógica que aparece como condición en un bucle o en una bifurcación debe ser booleano.

El tipo char: contiene caracteres en código UNICODE (que incluye el código ASCII), y ocupa 16 bits por carácter. Comprende los caracteres de prácticamente todos los idiomas.

Los tipos byteshortint long son números enteros que pueden ser positivos o negativos, con distintos valores máximos y mínimos.  
Los tipos float double son valores de punto flotante (números reales) con 6-7 y 15 cifras decimales equivalentes, respectivamente.

Se utiliza la palabra void para indicar la ausencia de un tipo de variable determinado.
Variables referencia: Las variables referencia son referencias o nombres de una información más compleja: arrays u objetos de una determinada clase.

Un array es una colección determinada de elementos del mismo tipo que son accesibles a través de un índice. Un array puede contener datos primitivos o referencias a objetos.
Por ejemplo:
Los  arrays se declaran: 
[Modificadores] tipo_variable [ ] nombre;
Por ejemplo:
int [ ] a;
Punto [ ] p;
La declaración dice que es es un array de enteros y p un array de enteros tipo punto. Más específicamente es una referencia a una colección de enteros, aunque todavía no se sabe cuántos elementos tiene el array,  p es una referencia a una colección que apuntaran objetos punto.

A diferencia de C/C++, los tipos de variables en Java están perfectamente definidos en todas y cada una de las posibles plataformas. Por ejemplo, un int ocupa siempre la misma memoria y tiene el mismo rango de valores, en cualquier ordenador.

Existen extensiones de Java 1.2 para aprovechar la arquitectura de los procesadores Intel, que permiten realizar operaciones de punto flotante con una precisión extendida de 80 bits.



DECLARACION DE UNA VARIABLE EN JAVA:

Para usar una variable en un programa hay que declararla.
Ø  Las variables han de ser declaradas antes de poder ser usadas.
Ø  Los identificadores de las variables son nombres que utilizaremos para referirnos a ellas.
Ø  Al declarar una variable, hay que definir su tipo: la variable solo admitirá valores del tipo especificado.
Ø  En una misma declaración se pueden declarar varias variables, siempre que sean del mismo tipo. En este caso los identificadores de las variables se separan por comas.
Ejemplos:                                                       
      ˂  tipo  ˃  identificador;
      ˂  tipo  ˃  lista de identificadores;
     Ejemplos:
// Declaración de una variable entera x de tipo int
Int x;
// Declaración de una variable real r de tipo double
Double r;
// Declaración de una variable c de tipo char
Char c;
// Múltiples declaraciones en una sola línea
Int i, j, k;

OPERADORES ARITMETICOS, RELACIONALES Y LÓGICOS:
Operadores Aritméticos: 
Ø  Suma +
Ø  Resta - .
Ø  Multiplicación *
Ø  División /
Ø  Resto de la División %

Operadores Relacionales: 

Permiten comparar variables según relación de igualdad/desigualdad o relación mayor/menor. Devuelven siempre un valor boolean.
Ø  '>': Mayor que
Ø  '<': Menor que
Ø  '==': Iguales
Ø  '¡=': Distintos
Ø  '>=': Mayor o igual que
Ø  '<=': Menor o igual que

Operadores Lógicos: 
Nos permiten construir expresiones lógicas.
Ø  '&&' :devuelve true si ambos operandos son true.
Ø  '||' : devuelve true si alguno de los operandos son true.
Ø  '!' : Niega el operando que se le pasa.
Ø  '&' : devuelve true si ambos operandos son true, evaluándolos ambos.
Ø  '|' : devuelve true uno de los operandos es true, evaluándolos ambos.


INICIALIZACION DE VARIABLES:
La inicialización es un paso importante de cara a permitir un uso seguro de una variable. Es tan importante, que en general plantearemos que se haga como paso previo a cualquier otra cosa. Por ejemplo, si pensamos utilizar una variable denominada precio lo primero que haremos será establecer un valor de precio o, si no lo conocemos o lo vamos a establecer más adelante, estableceremos explícitamente un valor por defecto: por ejemplo precio = - 99; o precio = 0.
Utilizar una variable sin haberla inicializado es una práctica no recomendada en Java (mal estilo de programación) que puede dar lugar a errores o al mal funcionamiento de los programas.
SENTENCIAS DE CONTROL CONDICIONALES (if, switch, case)
La sentencia if:
Una sentencia ifconsiste en una expresión booleana seguida de una o más sentencias.
Ejemplo:

1             if(expresion_Booleana)
2             {
3             //Sentencias se ejecutan si la expresión booleana es verdadera
4             }
Si la expresión booleana es verdadera, entonces el bloque de código dentro del ifse ejecuta. Si no se ejecutará el primer grupo de código después del final de la instrucción if.


Ejemplo:
1             public class Curso {
2
3       public static void main (String args []) {
4       int x = 15;
5
6       if(x<30) {
7       System.out.print (“Esto es una sentencia if");
8       }
10      }
11      }
Si ejecutamos el código anterior obtendremos lo siguiente:
1             Esto es una sentencia if

 La sentencia switch:

Una sentencia switch permite a una variable ser probada por una lista de condiciones. Cada condición se llama case. Veamos la sintaxis:
1             switch (expresión) {
2           case valor1:
3           / / Declaraciones
4          break; / / opcional
5          case valor2:
6          / / Declaraciones
7         break; / / opcional
8         / / Usted puede tener cualquier número de sentencias case.
9        default: / / Opcional
10        / / Declaraciones que cumplirá si la variable no entra en ningún caso.
11     }

SENTENCIAS DE CONTROL REPETITIVA: (while, do while, for)

Permiten ejecutar de forma repetida un bloque específico de instrucciones.

Las instrucciones se repiten mientras o hasta que se cumpla una determinada condición. Esta condición se conoce como condición de salida.

Tipos de estructuras repetitivas:

Ø  while
Ø  do – while
Ø  for
CICLO WHILE:
Las instrucciones se repiten mientras la condición sea cierta. La condición se comprueba al principio del bucle por lo que las acciones se pueden ejecutar 0 ó más veces.

La ejecución de un bucle while sigue los siguientes pasos:
1-Se evalúa la condición.
        2- Si el resultado es false las instrucciones no se ejecutan y el programa sigue ejecutándose por la siguiente instrucción a continuación del while.
        3-Si el resultado es true se ejecutan las instrucciones y se vuelve al paso 1
Ejemplo de programa Java que contiene una instrucción while: 

Programa que lee números por teclado. La lectura acaba cuando elnúmero introducido
sea negativo.  El programa calcula y muestra la suma de los números leídos.


/*
 * Programa que lee números hasta que se lee un negativo y muestra la
 * suma de los números leídos
 */
importjava.util.*;
public class Ejemplo1While {
    public static void main(String[] args) {
        intsuma = 0, num;
        Scanner sc = new Scanner(System.in);
        System.out.print("Introduzca un número: ");
        num = sc.nextInt();
        while (num>= 0){
               suma = suma + num;
               System.out.print("Introduzca un número: ");
               num = sc.nextInt();
        }
        System.out.println("La suma es: " + suma );
    }
}

CICLO DO – WHILE

Ø  Las instrucciones se ejecutan mientras la condición sea cierta.
Ø  La condición se comprueba al final del bucle por lo que el bloque deInstrucciones se ejecutarán al menos una vez. Esta es la diferencia fundamental con la instrucción while. Las instrucciones de un bucle while es posible que no se ejecuten si la condición inicialmente es falsa. 




Ejemplo de un programa Java que contiene una instrucción do while: 
Programa que lee un número entero N. El número debe ser menor que 100.

/*
 * Programa que obliga al usuario a introducir un número menor que 100
 */
importjava.util.*;
public class Ejemplo1DoWhile {
    public static void main(String[] args) {
        int valor;
        Scanner for(inicialización; condición; incremento/decremento){
Instrucción 1;
...........
Instrucción N;
}
in = new Scanner( System.in );
        do {
            System.out.print("Escribe un entero < 100: ");
            valor = in.nextInt();
        }while (valor >= 100);
        System.out.println("Ha introducido: " + valor);
    }
}

CICLO FOR

Hace que una instrucción o bloque de instrucciones se repitan un número determinado de veces mientras se cumpla la condición.

La estructura general de una instrucción for en Java es la siguiente:
A continuación de la palabra fory entre paréntesis debe haber siempre tres zonasseparadas por punto y coma:




Inicialización: es la parte en la que la variable o variables de control del bucle toman su valor inicial. Puede haber una o más instrucciones en la inicialización, separadas por comas. La inicialización se realiza solo una vez.

Condición: es una expresión booleana que hace que se ejecute la sentencia o bloque de sentencias mientras que dicha expresión sea cierta. Generalmente en la condición se compara la variable de control con un valor límite.

Incremento/decremento: es una expresión que decremento o incrementa la variable de control del bucle.

La ejecución de un bucle for sigue los siguientes pasos:

1. Se inicializa la variable o variables de control (inicialización)
2. Se evalúa la condición.
3. Si la condición es cierta se ejecutan las instrucciones. Si es falsa, finaliza la ejecución del bucle y continúa el programa en la siguiente instrucción después del for.
4. Se actualiza la variable o variables de control (incremento/decremento)
5. Se vuelve al punto 2.
Ejemplo de programa Java que contiene una instrucción for: 
/*
 * programa que muestra los números del 1 al 10
 */
public class Ejemplo0For {
    public static void main(String[] args) {
        inti;
        for (i=1; i<=10;i++)
            System.out.println (i + " ");
    }
}

La instrucción for del ejemplo anterior la podemos interpretar así:


Asigna a i el valor inicial 1, mientras que i sea menor o igual a 10 muestra i + “, a continuación incrementa el valor de i y comprueba de nuevo la condición.