miércoles, 13 de noviembre de 2013

Descargar Java


En el Siguiente link pueden apreciar un video tutorial en el que les explica como descargar Java y empezar a usar nuestros tips anteriores.
Gracias
El link para descargar JAVA ES:
http://www.java.com/es/download/

Link del video-tutorial.
http://www.youtube.com/watch?v=RhU-5h_Q9Vo

Proyecto Java - II Parte

Descarga el PDF del proyecto JAVA Total aquí:

https://mega.co.nz/#!eF42BI7A!F7VAhgD54XcISNnUZTyO8S9JBoMnJnZLSJr8IXHJUQM


CAPÍTULO 2. MARCO TEÓRICO.

1.      Antecedentes.
A lo largo de los años he programado ordenadores en muchos lenguajes, desde los más cercanos al código máquina como elEnsamblador, hasta lenguajes funcionales como Haskell, pasando por lenguajes lógicos como PROLOG o imperativos como Basic, Pascal, C,C++, C#, etc. Pero de entre todos ellos hay uno al que le tengo especial aprecio, tal vez porque ha sido el que más he utilizado en los últimos años, o tal vez porque para mí supuso un gran salto en productividad y simplicidad a la hora de desarrollar aplicaciones: el lenguaje Java. Es por eso que me he animado a escribir este artículo sobre las bondades de este lenguaje de programación, que descubrí en la facultad allá por el año 1998. Por aquel entonces yo llevaba bastantes años disfrutando de la programación en lenguaje C, y el aprendizaje de Java me hizo darme cuenta de algunas cosas que, hechas de otra forma, se podían realizar de forma más fácil y/o eficiente.

2.      Bases Teóricas.
¿Dónde está el fallo se seguridad?
Obviamente los fallos de seguridad dentro de toda la plataforma que comprende Java pueden encontrarse en cualquier versión o sistema operativo, pero realmente donde están los fallos de seguridad es en el navegador (en el complemento de Java de cada navegador que permiten ejecutar los applets) y no en todos los demás sitios (como por desgracia se está empando a creer).
¿Pero cuál es el fallo de seguridad?
Uno de los motivos por lo que los navegadores son el principal foco de malware es por el gran acceso que hay a Internet (como es lógico a través del navegador) y por la facilidad que existe para hacer que cualquier persona entre a una web sin conocerla (“¡Oh! mirar esto”… y si, lo normal que no haya nada, pero puede que te encuentres con una página normal que ha conseguido infectarte a través de un complemento del navegador).

A continuación expongo diez de los motivos que a mi entender hacen de Java uno de los mejores lenguajes de programación que se hayan inventado. He intentado no utilizar términos muy técnicos, aunque en ocasiones no he podido evitarlo ya que eran necesarios para la correcta explicación del motivo.

Motivo 1: Independiente de la Plataforma
La principal característica de Java es que es independiente de la plataforma. Esto significa que cuando estás programando en Java, no necesitas conocer a priori el tipo de ordenador o el sistema operativo para el que estás programando. Puedes ejecutar el mismo programa en un PC con Windows, otro con Linux, en un Servidor SUN con sistema operativo Solaris, o en un teléfono móvil de última generación. Esta es una ventaja muy significativa, sobre todo teniendo en cuenta que en la actualidad millones de ordenadores heterogéneos están interconectados entre sí a través de Internet… ¡y todos ellos pueden ejecutar el mismo código escrito en Java!
La independencia de la plataforma fue un reto perseguido por anteriores lenguajes de programación como el lenguaje C, pero no fue hasta la llegada de Java cuando se consiguió en su totalidad. ¿Cómo se consigue hacer un lenguaje que no dependa de la máquina en la que se ejecuta? James Gosling y el resto de creadores de Java se inventaron una máquina ficticia, llamada Máquina Virtual Java(JVM). De este modo, cuando tú estás haciendo un programa en Java, lo estás programando para que funcione en esta máquina virtual (que no existe realmente). Lo único que falta es hacer un simulador de esta máquina virtual para el entorno en concreto donde necesitas ejecutar tu programa, y será este simulador el que ejecute el código. Así, cuando se ejecuta un programa escrito en Java, en realidad lo que estamos ejecutando es un simulador de esta máquina virtual, y este simulador es el que realmente ejecuta el código. Por eso se dice que Java es un lenguaje Compilado e Interpretado a la vez, porque el código se compila a un lenguaje intermedio de una máquina que no existe (lenguaje ByteCode), y cuando queremos ejecutarlo, es un simulador (intérprete) el que lo hace.

http://4.bp.blogspot.com/_E3__54yV1LM/TQXvhtiWZ0I/AAAAAAAAAXI/FAyRBYTq-9w/s320/Figura1.jpg
Figura 1: El código Java es Compilado y luego Interpretado

Motivo 2: Orientado a Objetos
Otro de los grandes avances frente a lenguajes como C es que el lenguaje Java es orientado a objetos. El paradigma de programación orientada a objetos supuso un gran avance en el desarrollo de aplicaciones, ya que es capaz de acercar la forma de programar a la forma de pensar del ser humano. Así, al igual que pensamos en objetos como una silla, una mesa o un coche, cuando programamos en un lenguaje orientado a objetos también tenemos trabajamos con conceptos similares.
Hay que destacar que Java no fue el primer lenguaje orientado a objetos, ya existían otros lenguajes como Smalltalk C++ (evolución de C con características de orientación a objetos).

http://4.bp.blogspot.com/_E3__54yV1LM/TQXvu9KxvnI/AAAAAAAAAXM/VRKD0Vm1UlQ/s320/Figura2.jpg
Figura 2: Un simple programa escrito en Java

Motivo 3: Gestión de Memoria
Cuando estamos programando y necesitamos cierta cantidad de memoria RAM para albergar datos, es necesario que el programa solicite esa memoria al sistema operativo. En lenguaje C, cuando el programa no necesita utilizar más esa memoria, es necesario que explícitamente la devuelva al sistema. Uno de los motivos que más quebraderos de cabeza ha traído a los programadores en lenguaje C es la correcta liberación de la memoria. Si se te olvida liberar algo de memoria, cuando el programa termina esa memoria se queda ocupada (aunque el programa ya no siga ejecutándose), son los famosos “Memory Leaks”.
En Java decidieron romper con el sistema tradicional de liberación de memoria, haciendo que el programador ya no fuese el responsable de esa tarea. Así, lo único que necesita hacer el programador es solicitar la memoria al sistema. Existe un proceso independiente denominado “Garbage Collector” que se encarga de liberar automáticamente toda la memoria que ya no se utiliza, de manera que la liberación de memoria se hace de manera trasparente al programador.

Motivo 4: Facilidad de Aprendizaje
El lenguaje Java es relativamente fácil de aprender comparado con otros. Si se conoce algún lenguaje de programación como Pascal o C, la transición a Java no es muy costosa, ya que la sintaxis es muy parecida. Si no se conocen otros lenguajes, Java tiene algunas ventajas en cuanto a facilidad de aprendizaje, como la no existencia de los denominados punteros (que al principio suele costar bastante asimilar al aprender a programar en C), o la ya mencionada gestión automática de memoria gracias al Garbage Collector. Además, el aprendizaje de Java se puede realizar de manera gradual, según intentamos hacer en la asignatura de introducción a la programación del primer curso del grado en informática de la UC3M. Así, primero se explican las características del lenguaje puramente imperativo (variables, bucles, condicionales y métodos/funciones), y una vez asimilados estos conceptos, se introducen los de la programación orientada a objetos.

Motivo 5: Librerías Estándar
Una de las características que más potencia aporta al lenguaje Java es que viene acompañado de una serie de librerías estándar para realizar multitud de operaciones comunes a la hora de programar. Es el llamado Java API, que incluye tres bloques básicos: Java Standard Edition (JSE), Java Enterprise Edition (JEE) y Java Micro Edition(JME). La versión Standard cubre el desarrollo de aplicaciones de propósito general, y es la base sobre la que se apoyan las otras dos. La versión Enterprise proporciona librerías para el desarrollo de aplicaciones empresariales multicapa (ofrece los estándares para el desarrollo de aplicaciones en Servidor). La versión Micro está especialmente orientada a dispositivos embebidos como teléfonos móviles, PDA’s, etc.
http://2.bp.blogspot.com/_E3__54yV1LM/TQXv1eeyF1I/AAAAAAAAAXQ/-YBuWltiN1Q/s400/Figura3.jpg
Figura 3: El API de J2SE

Motivo 6: Comunidad Open Source
Otro de los motivos que aporta gran potencia al lenguaje es la gran comunidad de desarrolladores existente. De esta comunidad han surgido multitud de librerías de código abierto que se han convertido en estándares de-facto. Un ejemplo de comunidad de desarrolladores es la Asociación JavaHispano, que en su web ofrece todo tipo de información relativa a Java en castellano. Otro gran ejemplo de comunidad es el Proyecto Jackarta Jakarta de la Fundación Apache, que alberga y da soporte a multitud de librerías comúnmente utilizadas en el mundo del desarrollo Java. A esta lista se podrían añadir multitud de proyectos Open Source que sirven de punto de partida para muchos desarrollos.

Motivo 7: Entornos de Desarrollo
Cuando empecé a programar en Java, era muy común entre desarrolladores utilizar editores de texto para programar (comoNotePad o cualquier editor común en Windows, o Vi en Linux). El desarrollo con estos editores era bastante lento, porque aportaban muy pocas funcionalidades específicas del lenguaje (básicamente iluminación de sintaxis). Sin embargo, hoy en día existen excelentes editores (IDEs) que aportan multitud de ayudas a la programación, haciendo que el desarrollo sea más fluido y cómodo. Ejemplos de excelentes IDEs son EclipseNetBeans o el excelente IntelliJ Idea.

Motivo 8: Frameworks para desarrollo Web
Por encima de los estándares que ofrece JEE para el desarrollo de aplicaciones Java en el servidor (Servlets, JSP’s, etc.), existen multitud de frameworks y librerías que ofrecen capas para el desarrollo de aplicaciones Web de manera más ágil, organizada y escalable. Así, para la persistencia en base de datos podemos utilizar librerías como Hibernate. Como framework Modelo-Vista-Controlador existen alternativas como StrutsSpring, JavaServer Faces (JSF), etc. Estos frameworks facilitan y agilizan el desarrollo de aplicaciones en la parte Servidor.

Motivo 9: Gestión de Errores
Otra de las soluciones más elegantes propuestas por el lenguaje Java a uno de los problemas recurrentes en otros lenguajes de programación es la gestión de errores a través de excepciones. En Pascal, C o C++ no existe un mecanismo específico para la gestión de los errores que puedan producirse en el código. El programador tiene que analizar cada caso concreto e idear la mejor forma de resolverlo. Sin embargo, con Java se introdujo un mecanismo común para la gestión de errores, a través de las denominadas Excepciones. Cuando se produce un evento excepcional, se altera el flujo normal de ejecución del programa y se gestiona un flujo alternativo de control de este tipo de errores.

Motivo 10: Mutithreading y Sincronización
Cuando se estudia el funcionamiento de los sistemas operativos en ingeniería informática, existen diversas formas de abordar la gestión de múltiples hilos de ejecución paralelos (threads). Asimismo, hay diversos mecanismos para poner de acuerdo a los hilos en el acceso a los recursos del sistema, de manera que dos hilos no puedan acceder a la vez al mismo recurso (imagina que dos procesos quieren imprimir a la vez por la impresora, hay que ponerlos de acuerdo para que primero lo haga uno y luego el otro). 
No quiero profundizar demasiado en temas técnicos, tan sólo mencionar que la solución que aporta Java para la gestión multi-hilo y para la orquestación de procesos (basada en bloques sincronizados) me parece de las más elegantes y fáciles de utilizar que he visto.

CONCLUSIONES
Nosotros como desarrolladores sabemos cual es el problema, simplemente fallos de seguridad en un navegador (usado de forma masiva), pero la gente que no tiene unos conocimientos básicos de seguridad si nadie les previene acabarán con el malware de turno y se extenderá la creencia que últimamente está dando que hablar: “Java es inseguro, no uses nada que funcione con Java“, claramente, una creencia errónea, usa el PC, todo lo que quieras, pero con cabeza o te dará igual que sea Java u otro programa.

RECOMENDACIONES.
No quería terminar el artículo sin dejar claro que no todo son ventajas en Java. Se trata de un lenguaje con muchas cualidades, pero también tiene sus puntos flojos. Así, al tratarse de un lenguaje interpretado, el rendimiento en la ejecución de programas suele ser un poco menor (aunque este efecto se palió bastante con los compiladores Just-In-Time). Además, al contrario que los programas compilados a código nativo, sólo podemos ejecutar un programa en Java si disponemos de una máquina virtual (JVM), sin este simulador no podremos ejecutar ningún programa escrito en Java. Existen también puntos mejorables en algunos ámbitos como la gestión de Excepciones, políticas del Garbage Collector, polimorfismo, etc., que supongo irán mejorando con el tiempo.

Referencias

.

  Secuencial en Java 


       



Estructuras:

        If / Else:



       Switch:




Arreglos - Matrices:







Videos Tutoriales Utilizando Secuencias Repetitivas:

                 For:


          
          While:




        
           Do While:



lunes, 4 de noviembre de 2013

Condicional Seleccion:

Descarga el PDF aquí:

https://mega.co.nz/#!ScIh1ZKY!JZ5GkWxV8IS5R3DHw9nBBS78tx1D0RcwpIuLuJDKfKI


Condicional Selección

El método de ordenación por selección en java para ordenar un array de enteros A es el siguiente:

//método java de ordenación por selección
public static void seleccion(int A[]) {
          int i, j, menor, pos, tmp;
          for (i = 0; i < A.length - 1; i++) { // tomamos como menor el primero
                menor = A[i]; // de los elementos que quedan por ordenar
                pos = i; // y guardamos su posición
                for (j = i + 1; j < A.length; j++){ // buscamos en el resto
                      if (A[j] < menor) { // del array algún elemento
                          menor = A[j]; // menor que el actual
                          pos = j;
                      }
                }
                if (pos != i){ // si hay alguno menor se intercambia
                    tmp = A[i];
                    A[i] = A[pos];
                    A[pos] = tmp;
                }
          }
}


El tiempo de ejecución del algoritmo de ordenación por selección es del orden O(n2)

Condicional múltiple:

Descarga el PDF aquí:

https://mega.co.nz/#!LdZWhQSC!YcagDXYXU6dhndFNWfjNgxV_XiEtSqiaNkthPXvieCQ


Condicional múltiple

 Se obtiene anidando sentencias if ... else. Permite construir estructuras de selección más complejas.

if (expresion_booleana1)

instruccion1;

else if (expresion_booleana2)

instruccion2;

       else

instruccion3;


Cada else se corresponde con el if más próximo que no haya sido emparejado.
Una vez que se ejecuta un bloque de instrucciones, la ejecución continúa en la siguiente instrucción que aparezca después de las sentencias if .. else anidadas.

Ejemplo de programa Java que contiene una estructura condicional múltiple: Programa que lee una hora (número entero) y muestra un mensaje según la hora introducida.


/*
 * Programa que muestra un saludo distinto según la hora introducida
 */
import java.util.*;
public class Ejemplo2If {
    public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      int hora;
      System.out.println("Introduzca una hora (un valor entero): ");
      hora = sc.nextInt();
      if (hora >= 0 && hora < 12)
          System.out.println("Buenos días");
      else if (hora >= 12 && hora < 21)
           System.out.println("Buenas tardes");
      else if (hora >= 21 && hora < 24)
            System.out.println("Buenas noches");
      else
            System.out.println("Hora no válida");
    }
}


Ejemplo de programa Java que contiene una estructura condicional múltiple: Programa que lee una nota (número entero entre 0 y 10) y muestra la calificación equivalente en forma de texto.



/*
 * programa que lee una nota y escribe la calificación correspondiente
 */
import java.util.*;
public class Ejemplo3If {
    public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      double nota;
      System.out.println("Introduzca una nota entre 0 y 10: ");
      nota = sc.nextDouble();
      System.out.println("La calificación del alumno es ");
      if(nota < 0 || nota > 10)
         System.out.println("Nota no válida");
      else if(nota==10)
           System.out.println("Matrícula de Honor");
      else if (nota >= 9)
           System.out.println("Sobresaliente");
      else if (nota >= 7)
           System.out.println("Notable");
      else if (nota >= 6)
           System.out.println("Bien");
      else if (nota >= 5)
           System.out.println("Suficiente");
      else
           System.out.println("Suspenso");
    }
}

Condicional doble:

Descarga el PDF aquí:



Condicional doble:

Se evalúa la condición y si ésta se cumple se ejecuta una determinada instrucción o grupo de instrucciones. Si no se cumple se ejecuta otra instrucción o grupo de instrucciones.

           if(expresión booleana){
              instrucciones 1
           }
           else{
                  instrucciones 2
           }


Ejemplo de programa Java que contiene una estructura condicional doble: Programa que lee la nota de un alumno y muestra si el alumno ha aprobado o no.

/*
 * Programa que pide una nota por teclado y muestra si se ha aprobado o no
 */
import java.util.*;
public class Ejemplo0If {
    public static void main( String[] args ){
        Scanner sc = new Scanner( System.in );
        System.out.print("Nota: ");
        int nota = sc.nextInt();
        if (nota >= 5 ){
            System.out.println("Enorabuena!!");
            System.out.println("Has aprobado");
        }
        else
            System.out.println("Lo Siento, has suspendido");
    }
}


Otro ejemplo de programa Java que contiene una estructura condicional doble: Calcular si un número es par. El programa lee un número por teclado y muestra un mensaje indicando si es par o impar.



/*
 * programa que pide un número por teclado y calcula si es par o impar
 */
import java.util.*;
public class EjemploIf {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num;    
        System.out.println("Introduzca numero: ");
        num = sc.nextInt();
        if ((num%2)==0)
           System.out.println("PAR");
        else
            System.out.println("IMPAR");
    }
}