iwg-101: introducción a la ingenieríasoftware de desarrollo un lenguaje de programación es un...
TRANSCRIPT
Departamento de Informática, UTFSM 1
IWG-101: Introducción a la
Ingeniería
¿Qué es Programación?
Definiciones de Programación en la web:
Programación es el acto de crear un programa de computadora, unconjunto concreto de instrucciones que una computadora puedeejecutar. El programa se escribe en un lenguaje de programación,aunque también se pueda escribir directamente en lenguaje demáquina, con cierta dificultad. Un programa se puede dividir endiversas partes, que pueden estar escritas en lenguajes distintos.es.wikipedia.org/wiki/Programaci%C3%B3n
La acción de escribir un programa de computación.www.laopinion.com/glossary/p.html
Software de desarrollo
Un lenguaje de programación es un conjunto de
símbolos, instrucciones y enunciados que están sujetos
a una serie de reglas.
Utilizan un léxico, una sintaxis y una semántica.
Léxico: conjunto de símbolos conocido como vocabulario
Sintaxis: reglas para construir el lenguaje
Semántica: conjunto de significados de un lenguaje
Software de desarrollo
1. Lenguaje máquina (lenguaje de bajo nivel)
Es el que entiende la computadora.
Las instrucciones se expresan en forma binaria.
Los programas creados en lenguaje máquina solo pueden
ejecutarse en los procesadores para los que fueron creados.
Categorías de los Lenguajes de Programación
2. Lenguaje Ensamblador (lenguaje
de nivel medio)
Emplea representación simbólica
y utiliza procedimientos
mnemotécnicos de funciones
matemáticas. Los datos se
identifican con nombres y
permiten la introducción de
comentarios para entender el
programa con mayor facilidad y
optimiza los recursos del
hardware.
Software de desarrolloCategorías de los Lenguajes de Programación
3. Lenguaje de alto nivel
Lenguajes más acorde con el lenguaje humano.
Utilizan palabras y frases (por lo general en inglés).
Permiten modificar los códigos de los programas con facilidad.
Son independientes de la estructura física de la computadora, contando con
instrucciones de uso frecuente como las funciones matemáticas.
Son lenguajes de programación alejados del lenguaje máquina lo cual necesitan ser
traducidos antes de ejecutarse y esta tarea se realiza por medio de los intérpretes o
los compiladores.
Software de desarrolloCategorías de los Lenguajes de Programación
¿Qué es un Framework?
Un framework, en el desarrollo de software, es una estructura de soporte
definida, mediante la cual otro proyecto de software puede ser organizado y
desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas
y un lenguaje interpretado entre otros software para ayudar a desarrollar y
unir los diferentes componentes de un proyecto.
Representa una arquitectura de software que modela las relaciones
generales de las entidades del dominio. Provee una estructura y una
metodología de trabajo la cual extiende o utiliza las aplicaciones del
dominio.
Fuente: Wikipedia
Departamento de Informática, UTFSM 7
¿Qué es un framework?
Es como un “lego” especial:
Tiene definidas algunas
piezas.
Con esas piezas puedes
construirte nuevas piezas.
Agrega la metodología y
patrones de diseño.
Tienes herramientas que te
ayudan a armar más fácil.
Java y .NET no son solamente
lenguajes de programación,
son Frameworks de desarrollo.
Departamento de Informática, UTFSM 8
Framework J2EE: Arquitectura
Departamento de Informática, UTFSM 9
Framework J2EE: Patrones de diseño
Departamento de Informática, UTFSM 10
Framework J2EE: IDE de desarrollo
Departamento de Informática, UTFSM 11
Otros Ejemplos de Frameworks
.NET: http://msdn.microsoft.com/en-us/netframework/default.aspx
Eclipse: www.eclipse.org
OpenGl: www.openGL.org
OSGI: www.osgi.org
Departamento de Informática, UTFSM 12
Introducción a Java
Descripción de la Tecnología
Descripción de IDE Eclipse
¿Qué es Java?
Java es un lenguaje de programación orientado a objetos
desarrollado a principios de los años 90 por Sun
Microsystems.
El lenguaje en sí mismo toma mucha de su sintaxis de C y
C++, pero tiene un modelo de objetos más simple y elimina
herramientas de bajo nivel.
Es independiente de la plataforma. Las primeras
implementaciones de Java rezaban:“write once, run
anywhere”.
Posee un sistema de administración de memoria automático.
La plataforma Java 2
.16
Características Principales
Sencillo
Orientado a objetos
Distribuido
Interpretado
Robusto
Seguro
Arquitectura neutra
Portable
Altas prestaciones
Multithread (multihilo)
Dinámico
.17
Características: Sencillo
Elimina algunas de las características de C y C++:
No aritmética de punteros.
No existen referencias.
No existe typedef ni #define.
No sobrecarga operadores.
No herencia múltiple.
Posee clase String.
No necesidad de asignar y liberar memoria (Garbage Collector).
.18
Características: Orientado a objetos
Java trabaja con sus datos como objetos y con interfaces a
esos objetos.
Implementa:
Encapsulación. - Interfaces.
Herencia simple. - Paquetes.
Abstracción.
Reutilización.
Polimorfismo.
Características: Distribuido
Concebido para trabajar en un entorno conectado en red.
En sí no es distribuido, proporciona librerías y herramientas
para que los programas puedan ser distribuidos, que los
programas corran en varias máquinas interactuando.
.20
Características: Interpretado
Compilador tradicional
Traslada sentencias alto-nivel a múltiples instrucciones.
Creación de librerías como resultado de compilaciones previas.
Juntando, se crea programa ejecutable.
Intérprete de ByteCodes
Compilador Java
Traduce código fuente a código intermedio.
Interprete de Java
Virtual Machine(JVM)
(ByteCodes interpretados (ejecutados))
Características: Robusto
No se interrumpe fácilmente.
Evita sobreescribir o corromper memoria mediante punteros.
Manejo de excepciones.
Verificación de ByteCodes (por ejemplo no acceso ilegal de
memoria).
Características: Seguro
Aplicaciones seguras ya que no acceden a zonas delicadas
de memoria o de sistema
No existen punteros, no acceso a zonas delicadas de memoria.
Una applet no puede acceder al sistema, a los archivos de la
persona que lo está viendo.
Características: Arquitectura neutra
Java compila el código a un fichero objeto de formato
independiente de la arquitectura de la máquina en que se
ejecutará.
Cualquier plataforma donde exista una JVM se puede
ejecutar el código objeto independientemente de la máquina
en el que ha sido generado.
.java, .class, JVM???
En Java el código fuente se escribe en un archivo de texto plano
con extensión .java.
Luego, el código es compilado a archivos .class. Un archivo .class
no contiene código nativo a un tipo de procesador, en cambio
contiene bytecodes.
Finalmente, la aplicación es interpretada por la maquina virtual de
Java, transformando los bytecodes en código nativo en tiempo de
ejecución.
Bytecode
El bytecode es lenguaje nativo de cualquier implementación de la
maquina virtual de Java. De esta forma se logra que un programa
Java corra en cualquier plataforma que disponga de una JVM.
La plataforma Java
Una plataforma es el ambiente de software o hardware en el que
corre un programa.
La plataforma Java consta de dos componentes
La maquina virtual de Java
La API de Java (Application Programming Interface)
• La API de Java es una vasta colección de componentes
de software que proveen un conjunto de funciones útiles.
Características: Arquitectura neutra
Código fuente se compila
a un código de bytes
independientemente
de la máquina.
Los ByteCodes se
ejecutan en una
máquina hipotética
que se implementa
por un sistema
run-time, que es
dependiente
de la máquina.
Tiempo de compilaciónTiempo de ejecución
Características: Arquitectura neutra
Elementos que forman parte de arquitectura de Java
sobre una plataforma genérica.
Dependiente del sistema:
JVM.
Librerías fundamentales.
APIs de Java que
entren en contacto
directo con el hardware.
.29
Características: Portable
Más allá de la portabilidad básica
por ser de arquitectura
independiente.
Características: Altas prestaciones
Compiladores JIT (Just in time): Compilan en el momento de
ejecución.
Traslada los bytecodes al
código máquina de la plataforma
según los va leyendo, realizando
cierto grado de optimización.
JIT no pierde tiempo en
optimizar código que no se ejecutará.
Características: Multithread
Ejecución de varias tareas a la vez. Permite muchas
actividades simultáneas en un programa.
Posee una serie de clases que facilitan su utilización.
Mejor rendimiento interactivo y mejor comportamiento en
tiempo real.
Características: Dinámico
No conecta todos los módulos que comprenden una
aplicación hasta el mismo tiempo de ejecución.
Las librerías nuevas o actualizadas no paralizan la ejecución
de las aplicaciones siempre que mantengan la API anterior.
Características: Dinámico
Capaz de traer automáticamente cualquier pieza
que el sistema necesite para funcionar.
Estructura de un programa Java
La programación orientada a objetos se basa en que cada
programa es una simulación de un mundo real o virtual.
Cada uno de estos mundos esta compuesto de objetos.
Los objetos se comunican a través de mensajes
Por lo tanto, un programa orientado a objetos no es mas que
una configuración de un conjunto de objetos y los
mensajes que se envían entre ellos.
El “molde” que guarda la descripción de todos los objetos de
un mismo tipo e lo que conocemos como clase.
A su vez, las clases con propósitos similares pueden
agruparse en paquetes.
La ejecución de un programa comienza en el método “main”
de una clase.
Ejemplo de paquete
Estructura de una clase
Ejemplos de paquetes Java
java.io
El paquete de entrada/salida contiene las clases de acceso a
archivos: FileInputStream y FileOutputStream, etc.
java.lang
Incluye las clases del lenguaje Java propiamente dicho: Object,
Thread, Exception, System, Integer, Float, Math, String, etc.
java.util
Miscelánea de clases útiles para muchas cosas en
programación.
Incluyen, Date (fecha), Dictionary (diccionario), Random
(números aleatorios) y Stack (pila FIFO).
Java Development Kit (JDK)
El JDK consiste de lo siguiente: El Java development tools, incluyendo el compilador, debugger
y el intérprete Java.
Las Java class libraries organizadas como una colección de
paquetes.
Un número importante de programas de demostración.
Varias herramientas de soporte y componentes, incluyendo el
código fuente de las clases en la biblioteca.
URL: java.sun.com/javase/downloads
Ambientes de desarrollo Java (IDEs)
Un IDE (del inglés Integrated Development Enviroment). Es un
ambiente que integra un conjunto de herramientas (editor con
prestaciones especiales, compilador, administración de proyectos,
debugger,etc) que permiten realizar todo el proceso de desarrollo
dentro del mismo.
Si bien es posible escribir nuestros programas java en cualquier
editor de texto y compilarlos desde una consola con javac, es mas
cómodo y recomendable trabajar desde un IDE.
¿Y que tiene un IDE que no tenga mi bloc
de notas?
En general, todos los editores de los IDEs mas modernos proveen:
Un editor language aware: indentación de código, resaltador de
sintáxis, matching de variables y llaves, etc.
Parsing en tiempo de ejecución: corrección de errores,
remarcado de ocurrencias, tips, arreglos sencillos, etc.
Generación automática de código y funciones para completar
código mientras escribimos.
Administración de proyectos
Debugger
Múltiples opciones de configuración
Hola Mundo en Java
/** * Ejemplo Hola Mundo para Introducción a la
Ingeniería*/
class HolaMundo {
public static void main(String[] args) {
System.out.println(“Hola Mundo!"); // Muestra el mensaje
}
}
Departamento de Informática, UTFSM 41
Hola Mundo en .NET
Departamento de Informática, UTFSM 42
using System;
class Hola {
public static void Main() {
Console.WriteLine(“Hola desde C#”);
}
}
Algunos de los IDEs mas utilizados
Aprender Java en la web
Tutorial Java de Sun
http://java.sun.com/docs/books/tutorial/
Learning Connection
http://learningconnection.sun.com
Tutorial Eclipse
http://eclipsetutorial.sourceforge.net/
Aprender .Net en la Web
GotDotNet: The Microsoft .NET Framework Community: http://www.gotdotnet.com/
.NET home page: http://www.microsoft.com/net/
MSDN .NET Framework site: http://msdn.microsoft.com/netframework/
Website con ejemplos y ayuda en programación C#: http://www.c-sharpcorner.com/
http://www.csharphelp.com/
http://www.csharp-station.com/
Implementación Open Source .NET (Proyecto mono): http://www.go-mono.com/