You are on page 1of 33

Tópicos Selectos de

Programación

Ingeniería En Sistemas
Computacionales

Ing. Heberto Ferreira Medina


Departamento de Sistemas y Computación
Instituto Tecnológico de Morelia.

Página: dsc.itmorelia.edu.mx/~hferreir/ts
Temario

1. Tipos de datos definidos por el usuario


2. Creación de componentes y librerías
dinámicas
3. Programación concurrente multihilo
4. Interfaz Gráfica de Usuario (GUI)
5. Multimedia
6. Programación de puertos e interrupciones
Objetivo de la Materia

z El estudiante integrará tópicos avanzados


de programación al desarrollo de
aplicaciones que requieran multihilo,
multimedia, interfaz grafica de usuario y
comunicación con puertos.
Aportación de la asignatura al perfil
del alumno:

z Desarrolla sistemas de información,


programación de redes de computadora,
sistemas distribuidos, de base y aplicación.
z Desarrolla interfaces de software hombre-
máquina, máquina-máquina.
z Aplica nuevas tecnologías a la solución de
problemas de su entorno laboral
Relación con otras materias
Herramientas necesarias
z Compiladores:
z Eclipse
z NetBeans

z Sistemas Operativos:
z Linux
z WindowsX
z MacOSx

z JDK 6 y JDK 7 (pruebas)


z Frameworks para desarrollo
z Visual Studio 8 (.NET)
Bibliografía
1. Deitel y Deitel. (1998). Como programar en Java. Ed.
Prentice Hall.
2. Mitchell will David. (2001). Java sin errores. Ed. Mc Graw
Hill.
3. Becerril C. Francisco. (1998). Java a su alcance. Ed. Mc
Graw Hill.
7. Schildt Herbert. (2001). The Complete Reference Java 2.
Fourth Edition.
Ed. McGraw-Hill.
8. Case Bradley Julia & Millspaugh Anita C. Mt. San Antonio
College. (2002). Programming With Java W/CD-ROM. Ed.
Mc Graw Hill.
9. 10. Elliotte Rusty Harold (1999). Java I/O O. Ed. O'Reilly &
Associates.
11. Scott Oaks and Henry Wong (1999). Java Threads, second
Edition.Ed. O'Reilly & Associates.
12. Manuales de Java en Internet.
Unidad 1
1. Tipos de datos definidos por el usuario.
1.1 Agregación de datos (struct).
1.2 Uniones de datos (union).
1.3 Registros variantes.
1.4 Tipos de datos enumerados.
1.5 Manejo de bits.
1.6 Campos de bits.
1.7 Operaciones con
Unidad 1
z Revisar material de Estructura de Datos
z Instalar JDK
z Desempolvar el compilador de java
z Probar pequeños programas de la unidad
2 de Deitel y Deitel
z ¿Qué Sistema Operativo utilizar para la
materia?
z ¿Qué Lenguaje utilizar para la materia?
z ¿Qué compilador utilizar para la materia?
1. Tipos de datos definidos por el
usuario

z 1.1 Agregación de datos (struct)


z Revisar Capítulo 2 de libro de Deitel y
Deitel
z Realizar los ejercicios al final de la unidad
z Revisar manual de aprendiendo java ,
Gustavo Guillermo P., compunauta.com
1.1Tipos de datos
z Las primitivas struct y union, son muy utilizadas
en lenguajes como C++ y Pascal
z Permiten encapsular información en una sola
estructura ahorrando memoria
z En java no son soportadas pero puede tenerse
analogías:
class MyUnionType { // ... }
public static class Foo extends MyUnionType
{ // ... }
public static class Bar extends MyUnionType
{ // ... }
1.4 Tipos enumerados
z El lenguaje java permite la definición de
arreglos enumerados que permite el uso de un
arreglo de elementos por su nombre o etiqueta
z int [ ] test_scores = new int [ ] { 70, 80, 20, 30
};
z String [ ] months = new String [ ] { "Jan",
"Feb", "Mar", "Apr", "May", "Jun" ,"Jul", "Aug",
"Sep", "Oct", "Nov", "Dec" };
Estructuras de datos
z Una estructura de datos es un conjunto de
tipos, un tipo diseñado partiendo de ese
conjunto de tipos, un conjunto de funciones, y
un conjunto de axiomas
z Esta definición implica que una estructura de
datos es un tipo de datos con
implementación. En la programación
orientada a objetos, es una clase y sus
métodos.
Tipos de estructuras de datos
z Existen estructuras estáticas y dinámicas
z La estructuras estáticas generalmente están
delimitadas por un buffer o capacidad de
almacenamiento
z Las estructuras dinámicas pueden crecer
mientras exista memoria que las soporte
z Las estructuras de datos más conocidas son:
• Arreglos • Enumerados • Arquitecturas
•Pilas •Iteradores •Árboles n-arios y B
•Colas •Ordenamiento en •Tablas Hash
•Listas ligadas •Árboles binarios •Gráfos
1.5 Operaciones con bits
z En java el manejo de bits se hereda de C++ y
es parecido
z Los operadores a nivel bit son:
Operador Uso
Desplazamiento de A a la izquierda en B
<< A << B posiciones
Desplazamiento de A a la derecha en B
>> A >> B posiciones, tiene en cuenta el signo.
A >>> Desplazamiento de A a la derecha en B
>>> posiciones, no tiene en cuenta el signo.
B
& A&B Operación AND a nivel de bits
| A|B Operación OR a nivel de bits
^ A^B Operación XOR a nivel de bits
~ ~A Complemento de A a nivel de bits
Operaciones con bits
z Para el manejo de dispositivos de I/O e muy
común el uso de bits por lo que la utilización
de máscaras es muy común (para encender
o apagar ciertos bits)
z Mascaras comunes:
z 0x (\x) Define un valor hexadecimal
z 0 (\u) Define un valor octal
z 0b (\b) Define un valor binario
Operaciones con bits

z Práctica 2, realizar operaciones con bits y


mostrar el resultado en diferentes bases 0x,
0 y 0b
z Utilizar los operadores para modificar bits y
máscaras necesarias
z Investigar el uso de puerto serie y paralelo
en java (Linux/Windows)
z Investigar el uso del BitSet, BitArray y
BitString
UNIDAD 2
Creación de componentes y librerías
dinámicas

2.1 Creación de componentes

2.2 Creación de librerías dinámicas


2.1 Tipos de bibliotecas en java
z ¿Es posible crear DLL en java?
z Con java no es posible crear DLL pero se
pueden utilizar mediante Java Native Interface
(JNI),
z En java existen bibliotecas o API o framework
para reutilizar código,
z Por ejemplo si se quiere utilizar el puerto serial
existe una libreria llamada JavaComm hay
versiones para windows, linux, solaris
z Java esta orientado a programas
multiplataforma
(Foros del web)
Bibliotecas (API Java)..
z Java se acompaña con una serie de bibliotecas que
se conocen como API Java
z Con cada una de las versiones que Sun lanza del
JDK, se acompaña de una serie de bibliotecas con
clases estándar que se utilizan como referencia para
los programadores en Java
z Estas clases se pueden incluir en los programas
Java, sin temor a fallos de portabilidad. Además,
están bien documentadas, y organizadas en
paquetes y en un gran árbol de herencia.
z A este conjunto de paquetes (o bibliotecas) se le
conoce como la API de Java (Application
(
Programming Interface).
Bibliotecas …
z La API de java se distribuye paquetes
básicos y algunos tienen subpaquetes
z Existen varios paquetes estándar que
ofrecen capacidades nuevas al lenguaje
Java
z Se dividen principalmente en:
1. Paquetes de utilidades
2. Paquetes para el desarrollo gráfico
3. Paquetes para el desarrollo en red
4. Paquetes propietarios/estándares (OMG)
1. Paquetes de utilidades:
z java.lang: Fundamental para el lenguaje. Incluye
clases como String o StringBuffer, entre otras
z java.io: Para la entrada y salida a través de flujos de
datos, y archivos del sistema.
z java.util: Contiene colecciones de datos y clases, el
modelo de eventos, facilidades horarias, generación
aleatoria de números, y otras clases de utilidad.
z java.math: Clases para realizar aritmética con la
precisión que se desee.
z java.text: Clases e interfaces para manejo de texto,
fechas, números y mensajes de una manera
independiente a los lenguajes naturales.
z java.security: Clases e interfaces para seguridad en
Java: Encriptación RSA...
2. Paquetes para el desarrollo gráfico:
z java.applet: Para crear applets y clases que
las applets utilizan para comunicarse con su
contexto (web).
z java.awt: Para crear interfaces con el usuario,
y para dibujar imágenes y gráficos.
z javax.swing: Conjunto de componentes
gráficos que funcionan igual en todas las
plataformas que Java soporta.
z javax.accesibility: Da soporte a clases de
accesibilidad para personas discapacitadas.
z java.beans: Para el desarrollo de JavaBeans.
3. Paquetes para el desarrollo en red:

z java.net: Clases para aplicaciones de red.


z java.sql: Paquete que contiene el JDBC, para
conexión de programas Java con Bases de datos.
z java.rmi: Paquete RMI, para localizar objetos
remotos, comunicarse con ellos e incluso enviar
objetos como parámetros de un objeto a otro.
z org.omg.CORBA: Facilita la posibilidad de utilizar
OMG CORBA, para la conexión entre objetos
distribuidos, aunque esté codificados en distintos
lenguajes.
z org.omb.CosNaming : Da servicio al IDL de Java,
similar al RMI pero en CORBA.
4. Paquetes propietarios:

z La Java Foundation Classes (JFC) desarrolla


continuamente mejoras a los paquetes
existentes y genera nuevos que son
distribuidos en los JDK (sun)
z La Internet Foundation Classes también
desarrolla bibliotecas estandarizadas de java
y fue la que desarrollo la API swing
z Existe una gran variedad de bibliotecas
desarrolladas para aplicaciones ad-hoc al
software que se desea desarrollar.
•JAAS
API Java, Mapa •Mule
•JAXP
•SWT
•JDMK
•Xerces
•JDOM •JSP
z API Java •JFace •JDBC
•JMF
z AWT •JNDI
•JOGL
z Expand
•Java 2D, Java 3D
z Hamlets •Java Database Connectivity
•Java Foundation Classes
z LWJGL
•Java Management Extensions
z Log4j •Java Micro Edition
•Java Native Interface
z Lucene
•Java Transaction API
z Faces •Java.net
•JavaFX
z SWING •JavaHelp
2.2 Creación de bibliotecas
dinámicas (JNI)
z Java Native Interface (JNI) es un framework de
programación que permite que un programa escrito
en Java y ejecutado en la máquina virtual java (JVM)
pueda interactuar con programas escritos en otros
lenguajes como C, C++ y ensamblador.
OS Side

I/O Devices

Native
functions OS

DLL Library
SO Library

Sofware Ad-Hoc
Uso de JNI …
z Se usa para modificar programas existentes escritos en algún
otro lenguaje, permitiéndoles ser accesibles desde
aplicaciones Java
z Muchas de las clases de la API estándar de Java dependen del
JNI para proporcionar funcionalidad al desarrollador y al
usuario, por ejemplo las funcionalidades de sonido o
lectura/escritura de archivos
z Es necesario asegurarse que la API estándar de Java no
proporciona una determinada funcionalidad antes de recurrir al
JNI, ya que la primera ofrece una implementación segura y
portable
z JNI permite a un método nativo utilizar los objetos Java de la
misma forma en que el propio código de Java lo hace
z Un método nativo puede crear objetos Java; y examinarlos y
utilizarlos para que lleven a cabo su función
z Un método nativo puede asimismo examinar y utilizar objetos
que han sido creados por código de aplicación escrito en Java
Riesgos de uso de JNI …
1. JNI no es un API fácil de aprender
2. Pequeños errores en el uso de JNI pueden
desestabilizar completamente la máquina virtual Java,
de formas muy difíciles de reproducir y subsanar
3. Solo las aplicaciones y applets firmados pueden
invocar el JNI
4. Una aplicación que recurre a JNI pierde una de las
características más importantes que Java le confiere,
su portabilidad. (Una forma de solventar esto, es
escribir una implementación separada del código JNI
por cada plataforma, y hacer a Java detectar el
sistema operativo para ejecutar una u otra
implementación llegado el momento).
5. No hay recolección de basura en el lado JNI, (el
código JNI debe deslocalizar explícitamente sus
punteros).
Creación y utilización
Creación …
z javah genera archivos fuentes y de cabecera
en C (archivos .h y .c) que describen las clases
especificadas. Estos archivos de C
proporcionan la información necesaria para
implementar métodos nativos para las clases
especificadas en C.
z El nuevo método de interface para código
nativo, Java Native Interface (JNI), no necesita
información de cabeceras o ficheros stub.
javah puede ser invocado con la opción -jni
para generar los prototipos de funciones que
necesitan los métodos nativos JNI. El resultado
se coloca en un fichero .h.
Material para aprender JNI:

z Manual de JNI, Fernando López, España


z Manual de referencia de JNI-SUN
z http://java.sun.com/developer/onlineTraini
ng/Programming/JDCBook/jni.html
z Práctica 3
Creación de paquetes en java

z Uso de bibliotecas propietarias


z Compilado

You might also like