Publicado el 25 de Abril del 2019
1.523 visualizaciones desde el 25 de Abril del 2019
559,6 KB
65 paginas
Creado hace 9a (08/05/2015)
Programando en Java
Raspberry Pi (RPi)
2015/05/08
Juan V. Capella
Contenido
● Objetivo
●
Introducción
● Tecnología Java
● Clases y objetos. Herencia
● Aplicaciones y Applets
● Tipos de datos y estructuras
● Operadores
● Networking
● GPIO
● GUI
armpower.blogs.upv.es
2
Objetivo
●
Introducirse en la programación en Java con la Raspberry Pi
● Aprender a desarrollar aplicaciones distribuidas
armpower.blogs.upv.es
3
Introducción
● Lenguaje de programación desarrollado por Sun Microsystems a principios
de los años 90
● La motivación principal Java: Write Once, Run Anywhere
● Proporcionar un lenguaje independiente de la plataforma y un entorno de ejecución ligero y
gratuito, para poder implementarlo en cualquier dispositivo
● Al tener que ser ejecutado mediante la JVM hace que no sea tan rápido
como con otras opciones, por ejemplo C/C++.
● Java es Orientado a Objetos
● Java es Multi-hilo
● No hay punteros
● Recolección de Basura “Garbage Collection”
● Responsable de liberar cualquier memoria que pueda ser liberada. Esto se realiza de
manera automática durante la vida del programa Java.
● El programador se libera de la carga de tener que liberar la memoria no utilizada.
● Seguridad
●
Java fue diseñado para hacer más fácil el desarrollo de código sin bugs
armpower.blogs.upv.es
4
Tecnología Java
● Lenguaje programación (JAVA)
● Entorno de desarrollo (JDK). Herramientas:
● Compilador (javac)
●
Intérprete (java)
● Generador de documentación (javadoc)
● Una herramienta para empaquetar los .class
● Etc…
● Entorno en tiempo de ejecución de Java (JRE)
●
formado por una Máquina Virtual de Java (JVM), un conjunto de bibliotecas Java
y otros componentes necesarios para que una aplicación escrita en lenguaje
Java pueda ser ejecutada
armpower.blogs.upv.es
5
Fases
Proceso generación
Proceso ejecución
Código fuente
Byte‐Code
Fichero
.java
Compilación
Fichero
.class
Plataforma
Windows
Plataforma
Linux
Plataforma
…
Resultados
Java Virtual Machine (JVM)
Tarea
Escribir el programa
Herramienta a
usar
Cualquier editor de
texto o IDE
Compilar el programa Compilador Java
Ejecutar el programa
(javac)
Intérprete Java
(java)
Salida
Fichero .java
Fichero .class
(Java bytecodes)
Salida programa
armpower.blogs.upv.es
6
Clases y objetos
● Las clases están compuestas por un conjunto
de miembros (datos y funciones)
● Una clase se usa como el modelo que deben
seguir los objetos
● Un objeto es una instancia de una clase
● Las clases y objetos son similares a los tipos
de datos y a las variables
armpower.blogs.upv.es
7
Clases y objetos
class Persona {
int dni;
String nombre;
int peso;
string profesion;
}
Definición de clase
Creación de objeto
Persona juan = new Persona();
armpower.blogs.upv.es
8
Herencia
Vehículo
Clase base o
superclase
Dos_Ruedas
Cuatro_Ruedas
Bicicleta
Moto
Coche
Camión
Clases derivadas o subclases
armpower.blogs.upv.es
9
Una aplicación en Java
Toda aplicación java debe
estar dentro de una clase
Método main()
public class HolaMundo {
public static void main(String [] args) {
System.out.println(”¡Hola Mundo!”);
}
}
armpower.blogs.upv.es
10
Applets
● Programa escrito en Java que puede ejecutarse en un navegador
web utilizando la Java Virtual Machine (JVM), o en el AppletViewer
de Sun.
Código fuente
Byte‐Code
Fichero
.java
Compilación
Fichero
.class
<html>
…
<APPLET CODE =
“miApplet.class” width
= 100 height = 100>
</APPLET>
…
Resultados
armpower.blogs.upv.es
11
Un applet en Java
Importación de paquetes
import java.awt.*;
import applet.Applet;
public class miApplet extends Applet {
public void paint(Graphics g) {
g.drawString(”¡Hola Mundo!”,50,50);
}
}
Los Applets no tienen
método main()
armpower.blogs.upv.es
12
Tipos de datos
● byte, short, int, long
● float, double
● boolean
armpower.blogs.upv.es
13
La clase String
● Se usa para almacenar cadenas de caracteres.
● Se pueden usar para: examinar los caracteres
contenidos en un texto, buscar subcadenas, comparar
cadenas, etc.
armpower.blogs.upv.es
14
Vectores en Java
● Almacenan valores de un mismo tipo
● El índice del vector identifica cada elemento
int vect[] = {2,7,1};
String[] s = {“hola”, “mundo”};
armpower.blogs.upv.es
15
Estructuras de control en Java: if
● if(){ }
● if(){ }else{ }
● if(){ }else if(){ }
armpower.blogs.upv.es
16
Estructuras de control en Java: Bucles
● for(;;){}
● while(){}
● do{}while();
armpower.blogs.upv.es
17
Estructuras de control en Java: switch-case
int a = 2;
switch(a){
case 1: a++;
break;
case 2: a = a + 4;
break;
default: a = a + 50;
}
armpower.blogs.upv.es
18
Declaración de variables
● Se pueden declarar variables en cualquier lugar del código
● Al declarar la variable podemos inicializar el contenido
● No se permite el uso de variables sin previa inicialización
int numCoches, identificador;
armpower.blogs.upv.es
19
Alcance y bloques de código
● Los bloques se definen con {}
● Las variables declaradas en ese bloque solo existen en
ese bloque
{
int numCoches = 0;
}
{
numCoches++
}
Dará error!
armpower.blogs.upv.es
20
Conversión de tipos
● La conversión automática se realiza siempre que el tipo de
la expresión a la derecha pueda ser transformado de
forma segura al tipo de la expresión a la izquierda
● Vamos, que no se puede convertir automáticamente un
float a un int porque el primero requiere de más
espacio de almacenamiento que el segundo, lo que
puede resultar en pérdida de información
● Para forzar la conversión → conversión explicita:
int v1;
float v2=3.47;
v1 = (int) v2;
armpower.blogs.upv.es
21
Operadores
● ==
● !=
● >
● <
● <=
● >=
● &&
● ||
● !
armpower.blogs.upv.es
22
Interfaz de programación en red:
Sockets en JAVA
● Al comunicarse dos procesos siguen un modelo Cliente / Servidor:
1. Petición
cliente
Internet
servidor
2. Respuesta
Cliente:
●Inicia la comunicación
●Solicita un servicio al servidor
●Ejemplo:
● Un cliente web solicita una página
Servidor:
● Espera peticiones
● Proporciona el servicio solicitado
● Ejemplo:
● El servidor web envía la página
solicitada por el cliente
armpower.blogs.upv.es
23
Interfaz de programación en red:
Sockets en JAVA
● Clientes y servidores utilizan protocolos de transporte
Los procesos de las
aplicaciones residen en
el espacio de usuario
HTTP
POP3
FTP
DNS
Los procesos de los
protocolos de
transporte forman
parte del S.O.
TCP
API
Red
UDP
Enlace de datos
Físico
●Se necesita un mecanismo para ponerlos en contacto
● API (Application Programming Interface)
armpower.blogs.upv.es
24
API socket
● Permite a las aplicaciones utilizar los protocolos de la
pila TCP/IP
● Define las operaciones permitidas y sus
argumentos
● Parecido a la forma de acceder a los
FTP
ficheros en Unix
● Operaciones: open, read, write, close
HTTP
POP3
DNS
socket
socket
socket
socket socket
TCP
socket
UDP
Red
Enlace de datos
Físico
armpower.blogs.upv.es
25
Socket
● Es una abstracción del sistema operativo
● Las aplicaciones los crean, los utilizan y los cierran cuando ya
no son necesarios
● Su funcionamiento está controlado por el sistema operativo
● Comunicación entre procesos
● Los procesos envían y reciben mensajes a través de sockets
● Los mensajes fluyen entre sockets
proceso
socket
Transpor
te
Enlace
Físico
Red
proceso
socket
Transpor
te
Enlace
Físico
Red
Internet
Identificación de los sockets
● La comunicación en Internet es de socket a socket
● El proceso que está comunicándose se identifica en
Internet por medio de su socket
● El socket tiene un identificador
Identificador = dir. IP del computador + núm. puerto
IP:128.1.1.1
Puerto:
1245
cliente
socket
Transpor
te
Enlace
Físico
Red
servidor
socket
Transpor
te
Enlace
Físico
Red
IP:62.3.3.
3
Puerto:
80
Internet
Tipos de sockets
● Sockets TCP
● Sockets UDP
● Las aplicaciones piden al
S.O. una comunicación
controlada por TCP:
● Orientada a la conexión
● Comunicación fiable y
ordenada
● También se denominan
sockets de tipo Stream
● Las aplicaciones piden al
S.O. una comunicación
controlada por UDP:
● Transferencia de bloques
● También se denominan
sockets de tipo Datagram
de datos
● Sin conexión ni fiabilidad ni
entrega ordenada
● Permite difusiones
cliente
socket
TCP
servidor
sock
et
TCP
bytes
cliente
socket
UDP
servidor
socket
UDP
datagramas
Los sockets en Java
● Dentro del paquete java.net existen tres clases de
sockets:
TCP
● Socket
TCP
● ServerSocket
● DatagramSocket Cliente/Servidor UDP
Cliente
Servidor
● También hay otras clases auxiliares que facilitan la
programación de aplicaciones en red
http://java.sun.com
http://java.sun.com
Direcciones IP en Java
Clase InetAddress
● InetAddress es la clase que se utiliza para
almacenar direcciones IP
● Algunos métodos importantes
● InetAddress getByName(String nombre)
● Obtiene la dirección IP asociada a un nombre
● String getHostAddress()
● Devuelve la dirección IP en formato "aa.bb.cc.dd"
● String getHostName()
● Devuelve el nombre del host
Sockets TCP
● Cliente:
● Crea un socket (sclient) y
lo conecta con el del
servidor
● Transfiere información
● Cierra el socket y la
conexión (a veces lo hace
el servidor)
● Servidor:
● Ha de estar en ejecución
cliente
sclient
cliente
sclient
cliente
sclient
servidor
sclient = new Socket(...)
sserv
in.readLine()
out.print()
sclient.close()
servidor
sserv
servidor
sserv
● Debe haber creado un socket (sserv) donde recibir a
los clientes que conectan con él
Clientes TCP
Clase Socket
● Constructores
● Socket(InetAddress dirIP, int puerto)
● Socket(String nombre, int puerto)
● Crea un socket y lo conecta con el servidor indicado
● Socket(InetAddress dirIP, int puerto,
InetAddress dirIPLocal, int puertoLocal)
● Socket(String no
Comentarios de: Programando en Java Raspberry Pi (0)
No hay comentarios