Ir al contenido principal

TÓPICOS AVANZADOS DE PROGRAMACIÓN

UNIDAD 4
PROGRAMACIÓN CONCURRENTE MULTIHILO

  • CONCEPTO DE HILO


Concepto de hilo Hilo (theread) llamado también proceso ligero o subproceso, es la unidad de ejecución de un proceso y esta asociado con una secuencia de instrucciones un conjunto de registros y una pila. 
Cuando se crea un proceso el S.O crea su primer hilo (hilo primario) en la cual puede,a su vez,crear hilos adicionales. esto pone de manifiesto que un proceso no ejecuta,si no que es sólo el espacio de direcciones donde recide el código que es ejecutado mediante uno o más hilos. 
En un S.O tradicional. Cada proceso tiene un espacio de direcciones y un único hilo de control por ejemplo, considere que un programa que incluya la siguiente secuencia de operaciones para actualizar el saldo de una cuenta bancaria cuando se efectúa un nuevo ingreso:

Saldo=Cuenta.ObtenerSaldo (); 
Saldo+=ingreso;
Cuenta.EstablecerSaldo (saldo);


Cada hilo se ejecuta de forma estrictamente secuencial y tiene su propia pila en estados de los registros de UCP y su propio contador de un programa en cambio comparte el mismo espacio de direcciones, lo que significa compartir también las mismas variables globales, el mismo conjunto de ficheros abiertos, procesos hijos (no hilos hijos), señales, semáforos, etc. 

A continuación se mostrara un pequeño vídeo del uso de multihilos.



  • CREACIÓN Y CONTROL DE HILOS



Los hilos de java se pueden crear en dos formas: escribiendo una nueva clase derivada de Theread, o bien haciendo una clase existente implementa la interfaz Runnable . 
La clase Thread,que implemente la interfaz Runnable,de forma resumida,está definida así:

public class Thread extends Object implements Runnable

//Atributos 

static int MAX_PRIORITY;
//Prioridad máxima que un hilo puede tener.

static int MIN_PRIORITY; 
//Prioridad mínima que un hilo puede tener.  

static int NORM_PRIORITY; 
//Prioridad asignada por omisión a un hilo. 
//Constructores 

Thread ([argumentos]) 
//Métodos 

static Theread currentThread()
//Devuelve una referencia al hilo que actualmente esta en ejecución. 

long getID() 
//Devuelve el identificador del hilo

String getName() 
//Devuelve el nombre del hilo.

int getPriority() 
//Devuelve la prioridad del hilo. 

void interrupt() 
//Envía este hilo al estado de preparado. 

boolean isAlive() 
//Verifica sí este hilo está vivo (no ha terminado). 

boolean isDaemon() 
//Verifica sí este hilo es un demonio. Se da este nombre a un hilo se ejecuta en segundo plano, realizando una operación específica en tiempos predefinidos, o bien en respuestas a ciertos eventos.

boolean is Interrupted() 
//Verifica si este hilo ha sido interrumpido. 

void join([milisegundos[. nanosegundos]]) 
//Espera indefinidamente o el tiempo especificado,a que este hilo termine (a que muera). 

void run()

En esta imagen se muestra la creación y utilización de un hilo, este hilo es llamado hilo.Start();


  • SINCRONIZACIÓN DE HILOS 



Cuando se están utilizando hilos múltiples, algunas veces es necesario coordinar las actividades de dos o más. El proceso por el cual se logra esto se llama sincronización. 
La razón más común para la sincronización es cuando dos o más hilos necesitan acceso a un recurso compartido que sólo puede ser utilizado por un hilo a la vez. 
Otra razón para la sincronización es cuando un hilo está esperando un evento causado por otro hilo. En este caso, debe de haber algún medio por el cual el primer hilo se mantenga en estado suspendido hasta que el evento ocurra. 
La sincronización esta soportada por la palabra clave synchronized y por unos cuantos métodos bien definidos que tienen todos los objetos.

A continuación se muestra un vídeo donde se utiliza la sincronización de distintos hilos:


  • PROGRAMAS VISTOS EN CLASE


Este es el diseño al momento de crearlo


 Y este es cuando el programa esta en ejecución


Se utiliza un hilo.Start(); para iniciar la carrera mediante un botón llamado btnIniciar, este se detendrá cuando otro hilo se ejecute, en caso contrario seguirá en ejecución hasta que termine el programa.


Utilizamos otro hilo.Sleep(); para detener por un momento la carrera, este hilo interrumpe al hilo.Start(); ya que después del tiempo estimado este prosigue su ejecución hasta terminar el programa por completo. 


Para el botón abort (abortar) también se utiliza un hilo.Abort(); quiere decir que al momento de presionar el botón este programa se cerrara y terminara su ejecución.


UNIDAD 5
PROGRAMACIÓN DE DISPOSITIVOS MÓVILES

  • INTRODUCCIÓN
La generalización en los últimos años de teléfonos móviles, smartphones, PDs, etc. 
Ha generado una importante necesidad de aplicaciones para este tipo de dispositivos. 
Las prestaciones de los dispositivos móviles se incrementan día a día, posibilitando la implementación de aplicaciones muy interesantes tales como: 
  1. Acceso a Internet y conectividad mediante Bluetooth.
  2. Envío de mensajes cortos.

  • DISPOSITIVOS MÓVILES

Los dispositivos móviles (también conocidos como computadora de mano, laptop, celulares entre otros) son aparatos de pequeño tamaño, con algunas capacidades de procesamiento, con conexión permanente o intermitente a una red, con memoria limitada, diseñados específicamente para una función, pero que pueden llevar a cabo otras funciones más generales.

 

  • CLASIFICACIÓN Y APLICACIONES DE LOS DISPOSITIVOS MÓVILES 

Los conceptos de móvil y sin cables muchas veces se confunden. Por ejemplo, un PDA con datos en él y aplicaciones para gestionarlos puede ser móvil, pero no tiene por qué ser wireless, ya que puede necesitar un cable para conectarse al ordenador y obtener o enviar datos y aplicaciones. 
Veamos otro ejemplo. Un teléfono móvil equipado con un pequeño navegador puede navegar por Internet. En este caso, se considera wireless, pero no se considerará móvil si no dispone de un valor añadido en forma de aplicaciones que aporte alguna función cuando no está conectado a otros sistemas. 
Si el PDA es capaz de conectarse a una red para obtener datos "en medio de la calle", entonces también será wireless. 
Algunas de las características que hacen que estos dispositivos sean diferentes de los ordenadores de sobremesa son los siguientes:  
  1. Funcionalidad limitada.  
  2. No necesariamente extensible y actualizable. 
  3. En pocos años el usuario deberá cambiarlo.  
  4. Más barato. 
  5. Menos complicado en su manejo.  
  6. Fácil de aprender su operación. 
  7. No se requieren usuarios expertos. 


Algunos de estos dispositivos son los siguientes:  

  1. Comunicadores de bolsillo. 
  2. Teléfonos con pantalla para Internet (Internet Screen Phones). 
  3. Sistemas de navegación de automóviles. 
  4. Sistemas de entretenimiento. 
  5. Sistemas de televisión e Internet (WebTV). 
  6. Teléfonos móviles.




  • AMBIENTES DE LAS APLICACIONES 

El desarrollo de aplicaciones móviles es un nuevo animal, y los CIO no deben pensar en domarlo usando las mismas viejas tretas. Las compañías, impulsadas por el creciente número de smartphones y tablets, junto con redes móviles más capaces, buscan cómo emplear las herramientas móviles para transformar sus procesos core y sus modelos de negocio. 
El departamento IT necesita una gestión del ciclo de vida de las aplicaciones móviles que tome en cuenta el desarrollo, distribución, seguridad, soporte y mejora. 
Estas son áreas que dicho departamento tiene que planear antes de iniciar el proceso de desarrollo, porque impactarán el enfoque en el desarrollo de aplicaciones que la organización adopte. Y los equipos IT deben entregar esas nuevas capacidades móviles tomando en cuenta la rapidez con que cambia el ambiente. Mientras los operadores móviles despliegan servicios con mayor rapidez, también están recortando los planes de datos ilimitados. Muchos negocios dejan de comprar dispositivos móviles y se avienen a los que los empleados poseen. 
Este modelo BYOD (Bring Your Own Device) significa que el departamento IT tiene que dar soporte a más plataformas y proveer seguridad y gestión en este nuevo ambiente.
El principal reto será soportar aplicaciones empresariales en iOS, Android, Windows Mobile y otros sistemas operativos, en un ambiente donde el usuario –no el área IT– es quien decide cuándo actualizar el sistema operativo.


En este link se encuentra mas información acerca del ambiente de las aplicaciones móviles:
https://www.maxglaser.net/sobre-la-creacion-de-un-ambiente-para-el-desarrollo-de-aplicaciones-en-android-y-el-nexus-one/


  • PROTOCOLO DE INTERFAZ ENTRE APLICACIONES 

Interfaz de programación de aplicaciones o API es el conjunto de funciones y procedimientos que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción. Son usadas generalmente en las "librerías".
 Es una fuente de código basado en la especificación destinada a ser utilizada como una interfaz de componentes de software para comunicarse entre sí. 
Una API puede incluir especificaciones para las rutinas y estructuras de datos , las clases de objetos y variables.
 Una especificación de API puede tomar muchas formas, incluyendo una norma internacional, tales como POSIX la documentación o el vendedor como el Microsoft API de Windows , o las bibliotecas de un lenguaje de programación, por ejemplo, la Biblioteca de plantillas estándar de C + + o Java API. 
Una API difiere de una interfaz de aplicación binaria (ABI) en la que el primero es de código abierto basado mientras que el segundo es una interfaz binaria.

Protocolo para dispositivos móviles: 

Este es un pequeño vídeo acerca de las interfaces móviles:

  • PROGRAMACIÓN DE TELÉFONOS MÓVILES Y PDA 

Siempre presentes a nuestro alrededor, los teléfonos móviles han agregado un sin fin de funciones que los hace cada vez mas parecidos a computadoras de bolsillo. 
Es así que la pronosticada convergencia tecnológica (computadora-TV-cámara fotografica-teléfono) está cada día más cercana y parece tener la forma de teléfono.
 Los teléfonos móviles actuales permiten alojar en ellos o acceder desde ellos a programas que pueden realizar muchas tareas que hasta hace poco tiempo solo estaban destinadas a ser realizadas por computadoras, palmtops o cámaras fotográficas. 
Desde la aparación de móviles con sistemas operativos que permitían el agregado de algún tipo de programa surgió la posibilidad de programar para los mismos.
 La desventaja fue, durante bastante tiempo, que cada módelo de aparato tenía que ser programado en una forma específica. Había diferencia entre marcas e incluso entre módelos de una misma marca.

Programación móvil en Visual Studio
https://www.youtube.com/watch?v=OcE7s3xl_34



En este link se encuentran algunas herramientas para la programación móvil:
http://programacionmovilufps.blogspot.mx/





























Comentarios

Entradas populares de este blog

Tópicos avanzados de programación ll

UNIDAD 1 EVENTOS   Tipos de eventos  Eventos de bajo nivel.  Representan entradas o interacciones de bajo nivel con elementos del interfaz gráfico (Cambio de tamaño, cambio del foco, operación con el ratón o con el teclado). Eventos de alto nivel que encapsulan la semántica del modelo de componentes del interfaz de usuario (Hacer una acción, un cambio de estado en un elemento, etc.). No están relacionados con una clase específica de componente sino que pueden aplicarse a todos los componentes que implementen un modelo semántico similar. Generación y propagación de eventos. El paquete java.awt.event es el que contiene la mayor parte de las clases e interfaces de eventos. El modelo de delegación de eventos es un concepto que trabaja de la siguiente manera: Una fuente genera un evento y lo envía a uno a más oyentes o auditores, que han estado simplemente esperando hasta que reciben ese evento y una vez recibido lo procesan y lo devuelve...

Esta padre esta mezcla!!!!!

Dj Blend