La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Curso de java básico (scjp)

Presentaciones similares


Presentación del tema: "Curso de java básico (scjp)"— Transcripción de la presentación:

1 Curso de java básico (scjp)

2 Objetivos generales Programar y ejecutar aplicaciones avanzadas Java™
Preparar al alumno para el Sun Certified Programmer 1.5 for the Java™ Platform Ver conceptos nuevos de Java 5.0 (Tiger)

3 Objetivos Generales Entry Level – nivel básico
Dentro de las distintas certificaciones Sun, encontramos cuatro niveles: Entry Level – nivel básico Foundation – nivel preparatorio Specialty – nivel especializado Advanced – nivel avanzado. Nuestro curso forma parte del nivel Foundation.

4 Contenido General Este curso desarrollará las siguientes áreas:
Sintaxis del lenguaje de programación Java Conceptos de Orientación a Objetos y cómo estos se aplican en el lenguaje de programación Java Interfaces, Clases abstractas, anidadas, excepciones, assertions, entre otros. Multithreading Networking

5 The Java Programming Language Basics – programación básica en Java
Siguiendo el mapa del curso, vemos que éste se divide en cuatro niveles: The Java Programming Language Basics – programación básica en Java Object-oriented Programming – programación orientada a objetos Building Applications – creación de aplicaciones Advances Java Programming – programación avanzada Este nivel tiene como objetivo comprender el funcionamiento de la plataforma Java: virtual machine, garbare collector, etc. Objetos: definir qué es un objeto, una clase, etc. Identificar palabras reservadas y tipos. Aprender expresiones y estructuras de control: sintaxis del lenguaje. Uso de estructura: array. Hace énfasis en el correcto diseño de clases y elementos avanzados para su diseño. Engloba el manejo de exceptions y assertions. Manejo de hilos, elementos de comunicación.

6 Objetivos Del Curso Describir las características principales del lenguaje Compilar y ejecutar aplicaciones Java Utilizar las API de documentación online de Java Describir constructores y sintaxis del lenguaje Describir el paradigma de Programación Orientada a Objetos Utilizar las características de orientación a objetos del lenguaje de programación Java Utilizar excepciones

7 Objetivos Del Curso Utilizar las API de Colecciones
Leer y escribir a archivos Utilizar el java.io package Describir los conceptos básicos de multithreading Desarrollar aplicaciones concurrentes Java Desarrollar programas cliente-servidor utilizando TCP/IP

8 Comenzando con java

9 Objetivos De Este Módulo
Describir las características  fundamentales de la  tecnología Java. Escribir, compilar y ejecutar una aplicación simple  de tecnología Java. Describir la función de la Máquina Virtual de Java  (JVM) Definir el concepto de garbage collection.

10 Qué es la Tecnología Java?
La tecnología Java no es solo un lenguaje de programación. ¿Qué es la tecnología Java?

11 Qué es la Tecnología Java?
Java es: Lenguaje de programación Entorno de desarrollo Entorno de ejecución Provee herramientas, librerías y frameworks para ayudar al desarrollador a elaborar aplicaciones más fácilmente Entorno para aplicaciones Web (Applets, JSP, Servlets, EJB, etc. Comunidad de desarrolladores. Como se menciono anteriormente, Java es un lenguaje de programación de alto nivel desarrollado por un grupo de ingenieros de la empresa Sun en Agosto de Se caracteriza por ser simple, orientado a objetos, robusto, portable, multihilos y seguro. Se utiliza para crear todo tipo de aplicaciones: locales, intranet o de internet. Diferentes iniciativas de la comunidad que atacan los mismos problemas Sun como empresa regula mediante especificaciones la comunidad Java

12 Qué es la Tecnología Java?
J2SE (JDK y JRE) J2ME J2EE o JEE Java está formado por varias aplicaciones: J2SE, J2EE o JEE y J2ME.

13 Qué es la Tecnología Java?
J2SE (Java Standard Edition) JRE (Java Runtime Environment) provee un conjunto de APIs, Java Virtual Machine (JVM), y otros componentes necesarios para ejecutar applets y aplicaciones escritas en el lenguaje Java JDK (Java Development Kit) contiene a la JRE y agrega diferentes herramientas como: compiladores, debuggers necesarios para desarrollar applets y aplicaciones. J2SE (JDK y JRE)

14 Qué es la Tecnología Java?
J2EE o JEE (Java Enterprise Edition) Especificación y modelo para desarrollar aplicaciones empresariales de gran porte, especialmente orientada a un entorno Web. Contiene un modelo, arquitectura y patrones para desarrollar este tipo de sistemas. ES UNA ESPECIFICACIÓN !! Diferentes empresas (entre ellas SUN) implementan las especificaciones. J2EE o JEE

15 Qué es la Tecnología Java?
J2ME (Java 2 Micro Edition) Especificación para desarrollar aplicaciones en dispositivos móviles. Los diferentes Vendors (Nokia, Motorola, etc.) implementan la JVM (para la micro edition) permitiendo hacer desarrollos independientes al dispositivo particular. J2ME

16 Qué es la Tecnología Java?
Como vemos en la figura anterior, Java posee por separado varias aplicaciones/librerías, de manera que dependiendo del tipo de aplicación que queramos desarrollar, necesitaremos ciertas librerías/aplicaciones. Dichas librerías proveen todo lo necesario para crear aplicaciones servidor, de escritorio y applets que son ejecutados en los más populares sistemas operativos, incluyendo: Linux, Macintosh, Solaris y Windows.

17 Principales Objetivos de la Tecnología Java
Brinda un lenguaje de fácil uso debido a que: Evita muchas de las fallas de otros lenguajes Es Orientado a Objetos Permite a los usuarios crear código claro Provee un ambiente interpretado que logra: Velocidad en el desarrollo Portabilidad de código Dentro de los distintos tipos de programación, encontramos: Programación funcional – F#, Haskell Programación lógica – Prolog Programación orientada a objetos – Java, C#, VB Programación orientada a aspectos – AspectJ Programación estructurada – C++ Java es un lenguaje de programación cuyo paradigma central es el orientado a objetos. Es un paradigma de programación declarativa, la cual se basa en el uso de funciones aritméticas. Es un paradigma de programación, la cual aplica conceptos de lógica, tablas de verdad, lógica proposicional, entre otras. Es un paradigma de programación la cual se basa en objetos y la interacción entre ellos. Es un paradigma de programación reciente, cuyo objetivo es modularizar la aplicación de manera de distribuir las responsabilidades de forma adecuada y eficiente. Es un paradigma de programación orientado a estructuras: secuencia, selección e iteración.

18 Puntos Importantes de la Tecnología Java
Permite a los usuarios correr más de un hilo de ejecución a la vez Carga las clases dinámicamente, esto es, en el momento que se necesitan Soporta el cambio dinámico de programas en tiempo de ejecución, debido al cargado de clases de orígenes diferentes. Provee mejor seguridad verificando módulos cargados Independencia de la arquitectura de hardware Java, permite a los usuarios correr más de un hilo de ejecución a la vez, es decir, se pueden ejecutar varias instancias de una aplicación o diferentes aplicaciones al mismo tiempo. Es una plataforma de desarrollo, es decir un ambiente de software en el que corre un programa. Java no permite manejar directamente el hardware ni la memoria. Como veremos mas adelante, La Java Virtual Machine junto con el Garbage Collector, son quienes se encargan de hacerlo. Posee un compilador inteligente para evitar problemas como ser: usar variables sin inicializar, modificar valores de punteros, acceder a métodos o variables de forma incorrecta, implementar herencias múltiples, entre otras.

19 Puntos Importantes de la Tecnología Java
Las siguientes características logran lo antes mencionado: La JVM – (Máquina Virtual) Garbage collection Seguridad de código

20 La Máquina Virtual .java JVM .class
En esta figura vemos la interacción de la maquina virtual con el código fuente generado. Como se explicara más adelante, la maquina virtual actúa como nexo entre el lenguaje de máquina y el hardware de una computadora. Para ello, a partir del código fuente (source code), se genera un archivo .class el cual contiene el código fuente escrito ya compilado. Ese archivo, es interpretado por un intérprete, de manera que este sea traducido a código de máquina, es decir 0s y 1s, pudiendo ser ejecutado por la máquina virtual a nivel de hardware.

21 La Máquina Virtual Provee especificaciones de la plataforma de hardware Lee los byte codes compilados que son independientes de la plataforma Es implementada por software o hardware

22 La Máquina Virtual El mayor control de tipos es realizado cuando el código es compilado La implementación de la JVM aprobada por Sun Microsystems debe ejecutar cualquier archivo de clase que cumpla la especificación El objetivo de la maquina virtual es brindar un entorno de ejecución que sea totalmente independiente de la plataforma de hardware y del sistema operativo en la que se encuentre, de manera que la plataforma de más abajo sea transparente. Permitiendo que un programa pueda ser ejecutado siempre de la misma manera en cualquier tipo de plataforma. Como vemos, Java es una plataforma independiente de hardware, por lo que un programa desarrollado en esta tecnología podrá correr en cualquier configuración de hardware y software: Linux, Solaris, Windows, etc. Así como Java definió su propia maquina virtual, cualquier programador podría definir la suya, teniendo en cuenta que el código generado, deberá ser traducido a código de maquina mediante ciertos procedimientos, los cuales pueden ser bastante engorrosos, pero no imposible.

23 La Máquina Virtual La JVM provee las siguientes definiciones:
Set de Instrucciones (CPU) Conjunto de registros Formato de los archivos de las clases Stack Recolección de espacios liberados de memoria (Garbage-collection) Área de memoria Una máquina virtual, es un software el cual emula una computadora. Actúa como una computadora en la cual se pueden ejecutar programas, pero es virtual, es decir, necesita de otra computadora que posea hardware y software especifico para que esta pueda funcionar. Existen 2 tipos de máquinas virtuales: Maquina virtual de proceso Una maquina virtual de proceso, se ejecuta como un proceso normal dentro de un sistema operativo. La maquina virtual de Java, es una maquina virtual de proceso. Maquina virtual de sistema Son aquellas que permiten a una maquina física multiplexarse entre varias maquinas virtuales, cada una ejecutando su propio sistema operativo. En este tipo de maquinas, se pueden tener varios sistemas operativos funcionando.

24 Garbage Collection Garbage collection:
Rastrea y libera la memoria que no se va a utilizar mas Esto es hecho automáticamente Si la memoria no se libera pueden darse memory leaks En otros lenguajes, la liberación de dicha memoria es responsabilidad de los programadores El lenguaje de programación Java provee hilos a nivel de sistema para rastrear memoria ocupada sin utilizar Como se menciono anteriormente, Java no permite el manejo de liberación de memoria, sino que es la Garbage Collection quien se encarga de rastrear y liberar la memoria que no se va a utilizar. Dado que Java trabaja sobre una máquina virtual de proceso, utiliza el hardware proporcionado por la máquina subyacente, de manera que toda liberación de memoria posible aumentara su capacidad y rapidez de ejecución.

25 Entorno de Ejecución y Seguridad en el Código
El entorno de aplicación Java funciona de la siguiente manera: Antes de comprender como se lleva a cabo la ejecución de un programa en Java, es necesario comprender qué es un compilador: “Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de maquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.” (Wikipedia) La compilación y creación de una aplicación está compuesta por las siguientes fases: A – Editor: se crea un programa con la ayuda de un editor y este es almacenado en un archivo con extensión .java. B – Compilación: se lee el archivo .java y se realiza los siguientes análisis: 1- Análisis léxico – se analizan las palabras escritas del archivo .java. El programa es descompuesto en una serie de tokens (palabras). Todos los caracteres deben formar parte de una palabra, de otro modo el compilador informa que hay un error léxico. 2- Análisis sintáctico – se crea un árbol sintáctico del programa, donde las hojas corresponden a las palabras, y los nodos internos a las reducciones gramaticales. 3- Análisis semántico – se chequean los tipos, reglas de inferencia. C – Generación de .class – una vez que los análisis anteriores se realizan de forma correcta, y no se encuentra ningún error sintáctico, léxico y semántico, se crea un archivo .class, el cual posee el código fuente compilado: bytecodes. D – Cargador de clases – El class Loader, carga el archivo .class, y lo traduce en un lenguaje de maquina abstracto, en este caso en bytecodes de java. E – Validador de bytecodes – se validan los bytecodes, de manera que estos suplan con las restricciones de la maquina virtual. F – Interprete de bytecodes – el interprete convierte los bytecodes en código de maquina; en archivos binarios, es decir en 0s y 1s, los cuales son interpretados por el hardware de la computadora.

26 Just-in-Time Code Generator (JIT)
La generación de código JIT, genera código intermedio el cual es guardado en un archivo. Este archivo, es leído por el compilador JIT quien lo traduce a instrucciones de maquina, a medida que el programa se va ejecutando. Este tipo de compilación, permite que el archivo resultante sea independiente de la plataforma y se pueda distribuir sin entregar el código fuente. En Java: archivos .class. Sin embargo, el tiempo de carga es ineficiente, ya que hay que compilar sobre la marcha, por lo que en programas de corta duración, la compilación es lenta.

27 Entorno de Ejecución en Java
Realiza tres tareas básicas: Cargar el código Verificar el código Ejecutar el código

28 Cargador De Clases Carga todas las clases necesarias para la ejecución del programa Mantiene las clases del sistema de archivos local en “namespaces” separados Previene spoofing Asignación de memoria en tiempo de ejecución El cargador de clases, se encarga de cargas las clases compiladas: archivos .class a la máquina virtual. Es responsable de localizar las bibliotecas(ficheros JAR), leer su contenido y cargar las clases contenidas dentro las mismas. Este proceso se lleva a cabo bajo demanda, de manera de optimizar el uso de los recursos. Las bibliotecas cargadas pueden ser de distintos tipos, es decir, bibliotecas de otro tipo de plataforma o lenguaje de programación. Cada clase contiene una referencia al ClassLoader que la definió.

29 Verificador de Bytecodes
Nos asegura que: El código sigue la especificación de la JVM El código no viola la integridad del sistema El código no tenga operaciones que causen stack overflows or underflows Los tipos de parámetros de todas las operaciones sean correctos No ocurran conversiones de datos ilegales (convertir un entero en un puntero) Los bytecodes son el lenguaje de máquina de la maquina virtual de Java. Estos son almacenados en los archivos .class, generados al compilar la aplicación. El verificador de bytecodes, se cerciora que los bytecodes son validos y no violan ninguna restricción de seguridad de la máquina virtual.

30 Comparación entre otros lenguajes
Si realizáramos una comparación entre los distintos lenguajes de programación, vemos que Java es el lenguaje que cumple de forma pareja con las variables: Seguridad, portabilidad y rapidez. Java es seguro, portable y puede correr en cualquier plataforma. Seguro: Se llevan a cabo varios controles para evitar los errores, como ser: análisis léxicos, semánticos, de bytecodes, permitiendo brindar una mayor seguridad. Portable: Su estructura (maquina virtual), permite que pueda ser ejecutado en cualquier ambiente, independientemente de la plataforma. Rápido: El compilador JIT, que traduce bytecodes a código nativo permiten que Java sea rápido. Además, la JVM permite monitorear la frecuencia de ejecución de todas las partes del programa con el objetivo de optimizar futuras compilaciones.

31 Herramientas de Desarrollo
IDE (Integrated Development Environment) Utilizaremos Eclipse Eclipse – – Versión: Helios Java jdk6 - “Eclipse es una plataforma de software de Código abierto independiente de una plataforma para desarrollar Aplicaciones. Esta plataforma, es usada para desarrollar entornos integrados de desarrollo (IDE), como el IDE de Java (Java Development Toolkit JDT). Eclipse fue desarrollado originalmente por IBM como el sucesor de VisualAge. Ahora es desarrollado por la Fundación Eclipse, una organización independiente sin ánimo de lucro que fomenta una comunidad de código abierto y un conjunto de productos complementarios, capacidades y servicios.” (AJPDSoft, 2011)

32 Estructura de un Programa
Un programa consiste en una o más clases. Una clase contiene uno o más métodos. Un método contiene sentencias. Uno de los métodos debe ser el llamado main(), que es donde comienza la ejecución del programa. Un método es una función la cuál será aplicada a un objeto. Por ejemplo: métodoSuma. Cada sentencia de un método, corresponde a los pasos que tengo que dar para llevar a cabo el objetivo de mi método. Siguiendo el ejemplo anterior: Método: sumarDosNumeros Sentencias: numero a, numero b, suma= a+b Una clase, posee varios métodos como ser: sumarDosNumeros, restarrDosNumeros, multiplicarDosNumeros, etc. Ahora bien, en programación, es necesario escribir todas las sentencias paso a paso teniendo en cuenta el orden en que son escritas.

33 Aplicación Básica en Java
TestGreeting.java // // Ejemplo aplicación “Hola Mundo“ public class TestGreeting{ public static void main (String[] args) { Greeting hola = new Greeting(); hola.greet(); } Greeting.java // La declaración de la clase Greeting. public class Greeting { public void greet() { System.out.println(“Hola Mundo”); Este ejemplo, crearemos dos clases, llamadas Greeting y TestGreeting, ambas separadas en distintos archivos .java. El objetivo de este ejercicio, es crear una aplicación que imprima un saludo por pantalla. Para ellos, las clases creadas son:TestGreeting.java y Greeting.java. El método de la clase Greeting es: greet(), mientras que en TestGreeting tenemos el método main(), el cual actúa como punto de arranque de la aplicación.

34 Compilar y Ejecutar TestGreeting
Compilar TestGreeting.java javac TestGreeting.java Greeting.java es compilado automáticamente Ejecutando una aplicación java TestGreeting Encontrar errores comunes de compilación y ejecución Existen dos maneras de compilar y ejecutar un programa en java: 1-por línea de comandos (Ver video 2-usando Eclipse (Ver video 1- Para compilar una clase por línea de comandos (MS-DOS, disponible en C:\windows\system32\cmd.exe), se utiliza la siguiente sintaxis: javac Greeting.java (Recordar primero estar ubicado en el directorio de Java) Este comando genera un archivo Greeting.class, que puede ser tomado por el interprete y ejecutado, en caso de que éste posea un main. java Greeting 2- Usando el IDE, solo es necesario hacer click en el botón de play, ubicado en la barra de tareas, o ir al menú Run>Run application.

35 Tipos De Errores En tiempo de compilación – compile-time-errors
En tiempo de ejecución – run-time-errors Lógicos – logical errors Los errores en tiempo de compilación, corresponden a errores sintácticos, léxicos o semánticos. Los errores en tiempo de ejecución, son aquellos que se producen mientras el programa esta siendo ejecutado. Los errores lógicos, son aquellos correspondientes a errores en sentencias lógicas.

36 Errores en Tiempo de Compilación
javac: Command not found Greeting.java:4: cannot resolve symbol symbol : method printl (java.lang.String) location: class java.io.PrintStream System.out.printl(“Hola Mundo"); TestGreet.java:4: Public class TestGreeting must be defined in a file called “TestGreeting.java” En este ejemplo, vemos que al querer ejecutar nuestro método greet(), obtuvimos errores de compilación, ya que el compilador no logro encontrar el comando javac, por lo que el archivo .class no pudo ser generado. En el segundo caso, al colocar comillas que no son reconocidas, el compilador nos indica que no comprende el símbolo, por lo que no puede resolver ni entender la expresión. Finalmente, en el último ejemplo, vemos que como la clase TestGreeting se encuentra en un archivo de distinto nombre, el compilador no puede hacer corresponder el nombre de dicha clase con el del archivo .java para crear el .class.

37 Errores en Tiempo de Ejecución
Can’t find class TestGreeting Exception in thread "main“ java.lang.NoSuchMethodError: main En este ejemplo, vemos que al querer ejecutar la aplicación, el compilador no logra encontrar la clase TestGreeting, y por ende no encuentra el método para iniciar la misma, la cual contiene el main().

38 Entorno de Ejecución Java
Como mencionamos anteriormente, la ejecución y compilación de una aplicación de java, comienza con la creación de los archivos .java, los cuales contienen el código fuente. Recordar colocar una clase por archivo, de manera que coincidan sus nombres para evitar errores. Una vez creado el .java, se lleva a cabo la compilación. Para ello, se realizan análisis de sintaxis y semántica. Una vez que dichos análisis, fueron pasados correctamente, el compilador crea un archivo .class el cual contiene el código expresado en bytecodes. Luego, el classLoader se encarga de cargar todas las librerías necesarias para llevar a cabo la correcta ejecución de la aplicación. Se lleva a cabo una validación de los bytecodes, de manera que los archivos .class respeten las restricciones de seguridad de la maquina virtual, y finalmente los bytecodes son transformados a código de máquina. El uso de una máquina virtual, nos permite que nuestra aplicación sea ejecutada de igual forma en cualquier plataforma, ya que es la máquina virtual quien interactúa con la plataforma de más abajo en código nativo (0s y 1s).

39 Ejemplo: Detección De Errores Comunes

40 Detección de Errores Comunes
Test1.java public class Test1 { public static void main(String[] args) { System.out.println("What's wrong with this program?"); } public class TestAnother1 { En el siguiente ejemplo, crearemos un solo archivo .java, denominado Test1, el cual posee dos clases: Test1 y TestAnother1. Ambas clases contienen un método main(). Qué sucede al querer compilar y ejecutar el programa?

41 Detección de Errores Comunes
Test1.java – Solución public class Test1 { public static void main(String[] args) { System.out.println("What's wrong with this program?"); } // Si se declara una clase pública en un archivo fuente, el archivo y la clase pública // deben llamarse igual. El ejemplo compilaría si se removiera el modificador public // de la segunda clase o si la misma se moviera a otro archivo fuente. class TestAnother1 { Como vemos, al querer compilar y ejecutar este archivo, obtenemos un error, ya que Java no sabe que método main() ejecutar primero. Por esa razón, para no obtener este tipo de errores, si se quiere tener mas de una clase en un mismo archivo, se debe indicar solamente con la palabra public la clase principal, cuyo nombre debe corresponder con el nombre del archivo. En este caso, el main() principal es el correspondiente al de la clase Test1, por lo que dicha clase deberá ser publica (public)

42 Resumen Objetivos del curso y contenido general.
Qué es la tecnología Java y sus características. Cómo está compuesta? Funcionamiento de JVM y GC. Compilación y ejecución. Ejemplos de clases. Tipos de errores.

43 Referencias Wikipedia http://es.wikipedia.org/wiki/Compilador
AJPDSOFT e=article&sid=270 Java


Descargar ppt "Curso de java básico (scjp)"

Presentaciones similares


Anuncios Google