Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JAVASCRIPT
2
¿Qué es JavaScript?
4
Especificaciones oficiales
5
Versión Nombre Oficial Cambios
1 ECMAScript 1 (1997) Primera edición
2 ECMAScript 2 (1998) Sólo cambios editoriales
3 ECMAScript 3 (1999) Añadidas expresiones regulares
Añadido try/catch
4 ECMAScript 4 Abandonada
5 ECMAScript 5 (2009) Añadido el “strict mode”
Añadido JSON
Añadido String.trim()
Añadido Array.isArray() y Array Iteration Methods
5,1 ECMAScript 5.1 (2011) Sólo cambios editoriales
6 ECMAScript 2015 Añadido let y const
Añadido valores de parámetros por defecto
Añadido Array.find() y Array.findIndex()
7 ECMAScript 2016 Añadido operador exponencial (**)
Añadido Array.prototype.includes
8 ECMAScript 2017 Añadido string padding
Añadidas nuevas propiedades de object
Añadidas Async functions
Añadida Shared Memory
9 ECMAScript 2018 Añadidas rest/spread propiedades
Añadidas Asynchronous iteration. (iteraciones asíncronas)
Añadido promise.finally()
Añadidos complementos adicionales a RegExp
6
Incorporando Javascript
7
Incorporación en línea
8
Incorporación en línea
<!DOCTYPE html>
<html lang=”es”>
<head>
<title>Este texto es el título del documento</title>
</head>
<body>
<div id=”principal”>
<p onclick=”alert(‘hizo click!’)”>Hacer Click</p>
</div>
</body>
</html>
9
Incorporación en línea
10
Incorporación embebido
11
Incorporación embebido
<!DOCTYPE html>
<html lang="es">
<head>
<title>Este texto es el título del documento</title>
<script>
function mostraralerta(){
alert('hizo click!');
function hacerclick(){
document.getElementsByTagName('p')[0].onclick=mostraralerta;
window.onload=hacerclick;
</script>
</head>
<body>
<div id=”principal”>
<p>Hacer Click</p>
</div>
</body> 12
</html>
Incorporación embebido
El elemento <script> y su contenido pueden ser posicionados en
cualquier lugar del documento, dentro de otros elementos o entre ellos.
Para mayor claridad, se suele colocar siempre el código Javascript en la
cabecera del documento y luego referenciar los elementos que van a
ser afectados usando los métodos Javascript apropiados para ese
propósito.
Actualmente existen distintos métodos disponibles para referenciar
elementos HTML desdeJavascript:
getElementsByTagName referencia un elemento por su nombre o palabra
clave.
getElementById referencia un elemento por el valor de su atributo id.
getElementByName referencia un elemento por el valor de su atributo name.
getElementsByClassName es una nueva incorporación que nos permite
referenciar un elemento por el valor de su atributo class.
13
Incorporación embebido
14
Incorporación Archivos Externos
15
Incorporación Archivos Externos
<!DOCTYPE html>
<html lang="es">
<head>
<title>Este texto es el título del documento</title>
<script src=”micodigo.js”></script>
</head>
<body>
<div id=”principal”>
<p>Hacer Click</p>
<p>No puede hacer Click</p>
</div>
</body>
</html>
16
Etiqueta noscript
18
Glosario
Script: cada uno de los programas, aplicaciones o trozos de código creados con
el lenguaje de programación JavaScript. Unas pocas líneas de código forman un
script y un archivo de miles de líneas de JavaScript también se considera un
script. A veces se traduce al español directamente como "guión", aunque script
es una palabra más adecuada y comúnmente aceptada.
Palabras reservadas: son las palabras (en inglés) que se utilizan para construir
las sentencias de JavaScript y que por tanto no pueden ser utilizadas
libremente. Las palabras actualmente reservadas por JavaScript son: break,
case, catch, continue, default, delete, do, else, finally, for, function, if, in,
instanceof, new, return, switch, this, throw, try, typeof, var, void, while, with.
19
else
enum
Palabras
export reservadas en javascript
extends
false
finally
for
function
if
implements
import
in
interface
instanceof
let
new
null
package 20
private
Sintaxis
La sintaxis de un lenguaje de programación se define como el conjunto de reglas que deben seguirse al
escribir el código fuente de los programas para considerarse como correctos para ese lenguaje de
programación.
La sintaxis de JavaScript es muy similar a la de otros lenguajes de programación como Java y C. Las
normas básicas que definen la sintaxis de JavaScript son las siguientes:
No se tienen en cuenta los espacios en blanco y las nuevas líneas: como sucede con XHTML, el intérprete
de JavaScript ignora cualquier espacio en blanco sobrante, por lo que el código se puede ordenar de forma
adecuada para entenderlo mejor (tabulando las líneas, añadiendo espacios, creando nuevas líneas, etc.)
Se distinguen las mayúsculas y minúsculas: al igual que sucede con la sintaxis de las etiquetas y elementos
XHTML. Sin embargo, si en una página XHTML se utilizan indistintamente mayúsculas y minúsculas, la página se
visualiza correctamente, siendo el único problema la no validación de la página. En cambio, si en JavaScript se
intercambian mayúsculas y minúsculas el script no funciona.
No se define el tipo de las variables: al crear una variable, no es necesario indicar el tipo de dato que
almacenará. De esta forma, una misma variable puede almacenar diferentes tipos de datos durante la ejecución
del script.
No es necesario terminar cada sentencia con el carácter de punto y coma (;): en la mayoría de lenguajes
de programación, es obligatorio terminar cada sentencia con el carácter ;. Aunque JavaScript no obliga a hacerlo,
es conveniente seguir la tradición de terminar cada sentencia con el carácter del punto y coma (;).
Se pueden incluir comentarios: los comentarios se utilizan para añadir información en el código fuente del
programa. Aunque el contenido de los comentarios no se visualiza por pantalla, si que se envía al navegador del
usuario junto con el resto del script, por lo que es necesario extremar las precauciones sobre la información incluida
en los comentarios.
21
Comentarios
JavaScript define dos tipos de comentarios: los de una sola línea y los que ocupan varias líneas.
Ejemplo de comentario de una sola línea:
// a continuación se muestra un mensaje
alert("mensaje de prueba");
Los comentarios de una sola línea se definen añadiendo dos barras oblicuas (//) al principio de
la línea.
Los comentarios multilínea se definen encerrando el texto del comentario entre los símbolos /* y
*/.
22
Variables
23
Variables
25
Variables
también sería correcto el siguiente código:
numero_1 = 3;
numero_2 = 1;
resultado = numero_1 + numero_2;
En cualquier caso, se recomienda declarar todas las variables que se
vayan a utilizar.
El nombre de una variable también se conoce como identificador y
debe cumplir las siguientes normas:
Sólo puede estar formado por letras, números y los símbolos $ (dólar) y _
(guión bajo).
El primer carácter no puede ser un número.
26
Variables
Por tanto, las siguientes variables tienen nombres correctos:
var $numero1;
var _$letra;
var $$$otroNumero;
var $_a__$4;
27
Variables
en Javascript no hace falta declarar una variable antes de su uso. Ejemplos:
var Testear = 0;
testeaTexto = “Mi casa”;
SeleccionarColor = true;
JavaScript permite que una variable pueda almacenar distintos tipos de datos
en cada trozo de código. Es decir, una variable que ahora almacena texto,
después puede almacenar números.
Tras declarar la variable, su valor puede cambiar mediante la asignación de un valor:
Testear = 12.3;
O mediante la asignación del resultado de una operación:
Testear = 12 * 3 + varX;
28
Conversion de datos en variables
29
Conversión de datos en variables
Var x = “50”;
Var y = 10;
Resultado = x + y; resultado = “5010” (printf(Resultado))
Typeof(Resultado); string (printf(Typeof(Resultado));)
31
Tipos de variables
33
Tipos de variables Cadenas de
texto
Se utilizan para almacenar caracteres, palabras y/o frases de texto. Para asignar el valor a la
variable, se encierra el valor entre comillas dobles o simples, para delimitar su comienzo y su
final:
var mensaje = "Bienvenido a nuestro sitio web";
var nombreProducto = 'Producto ABC';
var letraSeleccionada = 'c';
En ocasiones, el texto que se almacena en las variables no es tan sencillo. Si por ejemplo el
propio texto contiene comillas simples o dobles, la estrategia que se sigue es la de encerrar
el texto con las comillas (simples o dobles) que no utilice el texto:
// El contenido de texto1 tiene comillas simples, por lo que se encierra con comillas dobles
var texto1 = "Una frase con 'comillas simples' dentro";
36
Tipo de variables. Arrays
En ocasiones, a los arrays se les llama vectores, matrices e incluso arreglos. No obstante, el término array es
el más utilizado y es una palabra comúnmente aceptada en el entorno de la programación.
Un array es una colección de variables, que pueden ser todas del mismo tipo o cada una de un tipo
diferente. Su utilidad se comprende mejor con un ejemplo sencillo: si una aplicación necesita manejar los
días de la semana, se podrían crear siete variables de tipo texto:
var dia1 = "Lunes";
var dia2 = "Martes";
...
var dia7 = "Domingo";
Aunque el código anterior no es incorrecto, sí que es poco eficiente y complica en exceso la programación. Si
en vez de los días de la semana se tuviera que guardar el nombre de los meses del año, el nombre de todos
los países del mundo o las mediciones diarias de temperatura de los últimos 100 años, se tendrían que crear
decenas o cientos de variables.
En este tipo de casos, se pueden agrupar todas las variables relacionadas en una colección de variables o
array. El ejemplo anterior se puede rehacer de la siguiente forma:
var dias = ["Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"];
Ahora, una única variable llamada dias almacena todos los valores relacionados entre sí, en este caso los
días de la semana. Para definir un array, se utilizan los caracteres [ y ] para delimitar su comienzo y su final
y se utiliza el carácter , (coma) para separar sus elementos:
var nombre_array = [valor1, valor2, ..., valorN];
37
Tipo de variables. Arrays
Una vez definido un array, es muy sencillo acceder a cada uno de sus elementos.
Cada elemento se accede indicando su posición dentro del array. La única
complicación, que es responsable de muchos errores cuando se empieza a
programar, es que las posiciones de los elementos empiezan a contarse en el 0 y
no en el 1:
var array=[10];
var array2 = new Array(7);
var diaSeleccionado = dias[0]; // diaSeleccionado = "Lunes"
var otroDia = dias[5]; // otroDia = "Sábado"
En el ejemplo anterior, la primera instrucción quiere obtener el primer elemento
del array. Para ello, se indica el nombre del array y entre corchetes la posición del
elemento dentro del array
El valor dias[5] hace referencia al elemento que ocupa la sexta posición dentro del
array dias. Como las posiciones empiezan a contarse en 0, la posición 5 hace
referencia al sexto elemento, en este caso, el valor Sábado.
38
Tipo de variables. Booleanos
Las variables de tipo boolean o booleano también se conocen con el
nombre de variables de tipo lógico.
Una variable de tipo boolean almacena un tipo especial de valor que
solamente puede tomar dos valores: true (verdadero) o false (falso).
Los únicos valores que pueden almacenar estas variables son true y
false, por lo que no pueden utilizarse los valores verdadero y falso. A
continuación se muestra un par de variables de tipo booleano:
var clienteRegistrado = false;
var ivaIncluido = true;
39
Ámbito de las variables
42
Operadores
De estos ocho operadores, dos de ellos pueden ser difíciles de
entender para un principiante: se trata === y ! ==. de modo que se
indica cómo trabajan con algunos ejemplos:
var numero = 4, text = '4 ',
resultado = numero == texto;
alert (resultado); / / Muestra "verdadero"
mientras que "número" es un número y el "texto" de una cadena de
caracteres
resultado = numero === texto;
alert (resultado); / / Muestra "false"
porque este operador también compara tipos de variables en adición a sus
valores
43
Estructuras
JavaScript también permite tener expresiones condicionales (if {…} else {…})
Switch (switch(variable) { case valor_1: ... break; … default: … })
Bucles
For (for(inicializacion; condicion; actualizacion){…})
For in (for(indice in array) {…})
While (while(condicion) {…})
Do While (do { ... } while(condicion);)
Funciones
function nombre_funcion() { … }
Funciones con parámetros
function nombre_funcion(param1, param2,…) { ... }
44
Mensajes
Se trata de ventanas que desde el código se lanzan al usuario para
hacer que éste reaccione ante una situación o nos informe ante una
duda.
Las instrucciones que muestran mensajes son:
Alert
Prompt
Confirm
45
Mensajes - Alert
46
Mensajes - prompt
En este caso se trata de una ventana que pide entrar datos al usuario. De modo que
esta función devuelve un valor que se puede usar en el código si es asignado a una
variable. Su sintaxis es:
prompt(texto_del_mensaje,valor_por_defecto);
El segundo parámetro (valor por defecto) no es obligatorio incluirle y permite
asignar un valor al cuadro de texto en el que el usuario tendrá que introducir
información. Ejemplo de uso de prompt:
respuesta=prompt(“¿Qué quieres hacer?”,”comer”);
En el ejemplo, el resultado de lo que el usuario responde se almacena en la variable
resultado y al principio la ventana contendrá el valor comer en el cuadro de texto
destinado al usuario. Naturalmente, el usuario podrá variar este valor si lo desea.
El cuadro de diálogo que saca prompt posee dos botones, uno es el de Aceptar y el
otro es el de Cancelar. Si el usuario pulsa Cancelar, la función prompt devuelve el
valor nulo (null).
47
Mensaje - Confirm
48
DOM
49
DOM
Una de las tareas habituales en la programación de aplicaciones web con JavaScript
consiste en la manipulación de las páginas web. De esta forma, es habitual obtener el
valor almacenado por algunos elementos (por ejemplo los elementos de un formulario),
crear un elemento (párrafos, <div>, etc.) de forma dinámica y añadirlo a la página,
aplicar una animación a un elemento (que aparezca/desaparezca, que se desplace, etc.).
Todas estas tareas habituales son muy sencillas de realizar gracias a DOM. Sin embargo,
para poder utilizar las utilidades de DOM, es necesario "transformar" la página original.
Una página HTML normal no es más que una sucesión de caracteres, por lo que es un
formato muy difícil de manipular. Por ello, los navegadores web transforman
automáticamente todas las páginas web en una estructura más eficiente de manipular.
Esta transformación la realizan todos los navegadores de forma automática y nos
permite utilizar las herramientas de DOM de forma muy sencilla. El motivo por el que se
muestra el funcionamiento de esta transformación interna es que condiciona el
comportamiento de DOM y por tanto, la forma en la que se manipulan las páginas.
DOM transforma todos los documentos XHTML en un conjunto de elementos llamados
nodos, que están interconectados y que representan los contenidos de las páginas web y
las relaciones entre ellos. Por su aspecto, la unión de todos los nodos se llama "árbol de
nodos".
50
DOM
</head>
<body>
<p>Esta página es <strong>muy sencilla</strong></p>
</body>
</html>
51
Tipos de nodos
La especificación completa de DOM define 12 tipos de nodos, aunque las páginas
XHTML habituales se pueden manipular manejando solamente cuatro o cinco tipos
de nodos:
Document, nodo raíz del que derivan todos los demás nodos del árbol.
Element, representa cada una de las etiquetas XHTML. Se trata del único nodo que puede
contener atributos y el único del que pueden derivar otros nodos.
Attr, se define un nodo de este tipo para representar cada uno de los atributos de las
etiquetas XHTML, es decir, uno por cada par atributo=valor.
Text, nodo que contiene el texto encerrado por una etiqueta XHTML.
Comment, representa los comentarios incluidos en la página XHTML.
Los otros tipos de nodos existentes que no se van a considerar son DocumentType,
CDataSection, DocumentFragment, Entity, EntityReference, ProcessingInstruction y
Notation.
52
Acceso directo a los nodos
53
getElementsByTagName()
Como sucede con todas las funciones que proporciona DOM, la función
getElementsByTagName() tiene un nombre muy largo, pero que lo hace
autoexplicativo.
La función getElementsByTagName(nombreEtiqueta) obtiene todos los elementos de
la página XHTML cuya etiqueta sea igual que el parámetro que se le pasa a la
función.
El siguiente ejemplo muestra cómo obtener todos los párrafos de una página XHTML:
var parrafos = document.getElementsByTagName("p");
El valor que se indica delante del nombre de la función (en este caso, document) es
el nodo a partir del cual se realiza la búsqueda de los elementos. En este caso, como
se quieren obtener todos los párrafos de la página, se utiliza el valor document como
punto de partida de la búsqueda.
El valor que devuelve la función es un array con todos los nodos que cumplen la
condición de que su etiqueta coincide con el parámetro proporcionado. El valor
devuelto es un array de nodos DOM, no un array de cadenas de texto o un array de
objetos normales. Por lo tanto, se debe procesar cada valor del array de la forma que
se muestra en las siguientes secciones.
54
getElementsByTagName()
De este modo, se puede obtener el primer párrafo de la página de la siguiente
manera:
var primerParrafo = parrafos[0];
De la misma forma, se podrían recorrer todos los párrafos de la página con el
siguiente código:
55
getElementsByName()
56
getElementById()
58
Nuevos Selectores
59
Nuevos Selectores
querySelector()
Este método retorna el primer elemento que concuerda con el grupo de
selectores especificados entre paréntesis. Los selectores son declarados
usando comillas y la misma sintaxis
Sustituyendo en el ejemplo anterior:
function hacerclick(){
document.querySelector(“#principal p:first-child”).onclick=mostraralerta;
}
function mostraralerta(){
alert('hizo click!');
}
window.onload=hacerclick;
}
function mostraralerta(){
alert('hizo click!');
}
window.onload=hacerclick;
61
Nuevos Selectores
En este ejemplo no muestra el potencial de querySelectorAll().
Normalmente será utilizado para afectar a varios elementos y no solo
uno, como en este caso. Para interactuar con una lista de elementos
retornados por este método, podemos utilizar un bucle for:
function hacerclick(){
var lista=document.querySelectorAll(“#principal p”);
for(var f=0; f<lista.length; f++){
lista[f].onclick=mostraralerta;
}
function mostraralerta(){
alert('hizo click!');
}
window.onload=hacerclick;
62
Nuevos Selectores
window.onload=hacerclick; </div>
</body>
</html>
63
Manejadores de eventos
el código Javascript es normalmente ejecutado después de que el
usuario realiza alguna acción. Estas acciones y otros eventos son
procesados por manejadores de eventos y funciones Javascript
asociadas con ellos.
Existen tres diferentes formas de registrar un evento para un
elemento HTML:
Podemos agregar un nuevo atributo al elemento.
Podemos registrar un manejador de evento como una propiedad del
elemento
Podemos usar el nuevo método estándar addEventListener().
64
Conceptos básicos:
En Javascript las acciones de los usuarios son llamadas eventos.
Cuando el usuario realiza una acción, como un click del ratón o la
presión de una tecla, un evento específico para cada acción y cada
elemento es disparado.
Además de los eventos producidos por los usuarios existen también
otros eventos disparados por el sistema (por ejemplo, el evento load
que se dispara cuando el documento es completamente cargado).
Estos eventos son manejados por códigos o funciones. El código que
responde al evento es llamado manejador.
Cuando registramos un manejador lo que hacemos es definir cómo nuestra
aplicación responderá a un evento en particular.
Luego de la estandarización del método addEventListener(), este
procedimiento es usualmente llamado “escuchar al evento”, y lo que
hacemos para preparar el código que responderá a ese evento es “agregar
una escucha” a un elemento en particular.
65
Manejadores de eventos en línea
Se trata simplemente de utilizar los atributos provistos por HTML para
registrar eventos para un elemento en particular. Esta es una técnica
en desuso pero aun extremadamente útil y práctica en algunas
circunstancias, especialmente cuando necesitamos hacer
modificaciones rápidas para testeo.
<!DOCTYPE html>
<html lang=”es”>
<head>
<title>Este texto es el título del documento</title>
</head>
<body>
<div id=”principal”>
<p onclick=”alert(‘hizo click!’)”>Hacer Click</p>
</div>
</body> 66
</html>
Lista de eventos
onClick
Se produce cuando el usuario hace clic en el objeto. Sólo los vínculos y los botones de los formularios
permiten capturar este evento en ambos navegadores.
onDblClick
Se genera cuando el usuario hace doble clic con el ratón. Sólo los vínculos admiten este evento en
ambos navegadores.
onMouseOver
Se produce cuando el usuario pasa el cursor por encima del objeto. Sólo los vínculos permiten este
evento en ambos navegadores.
onMouseOut
Ocurre cuando el usuario abandona el objeto. Sólo los vínculos permiten este evento en ambos
navegadores.
onMouseDown
Se produce cuando el usuario mantiene pulsado el botón principal del ratón a la vez que se sitúa
encima de un objeto. Funciona en los vínculos, en los botones y en las imágenes.
67
Lista de eventos
onMouseUp
Ocurre cuando el usuario levanta el botón del ratón. Funciona en los mismos
casos que el anterior.
onMouseMove
Sucede cuando el usuario mueve el ratón. onKeyDown, onKeyPress y onKeyUp
Ocurren respectivamente cuando el usuario pulsa una tecla, cuando la
mantiene pulsada y cuando la suelta. Tienen poca utilidad y pocas etiquetas los
admiten. onLoad Se produce cuando la página se está cargando. La etiqueta
BODY es la idónea para este evento.
onUnload
Se produce cuando la página se está descargando, porque se está cargando
otra o porque se cierra el navegador. La etiqueta BODY es la idónea para este
evento.
onResize
Ocurre cuando se cambia el tamaño de la ventana. La etiqueta BODY o la
FRAME son las que manejan este evento.
68
Lista de eventos
onBlur
Se produce cuando un objeto pierde el foco (deja de ser el objeto activo).
La etiqueta BODY, los botones, cuadros de formulario y los enlaces
admiten esta propiedad.
onFocus
Sucede cuando un objeto gana el foco (pasa a ser el objeto activo). La
etiqueta BODY, los botones, cuadros de formulario y los enlaces admiten
esta propiedad.
onAbort
Se produce si el usuario pulsa el botón Detener mientras se estaba
cargando una imagen. La etiqueta IMG es la que maneja este evento.
onError
Se produce cuando ocurre un error. Casi todas lo permiten, no
obstante su uso no parece muy interesante.
69
addEventListener()
El método addEventListener() es la técnica ideal y la que es
considerada como estándar por la especificación de HTML5.
Este método tiene tres argumentos:
El nombre del evento
La función a ser ejecutada
Puede referenciar a una función
Puede referenciar a una función anónima
Funciones anónimas son funciones dinámicamente declaradas y que no tienen nombre
(por esto son llamadas “anónimas”). Esta clase de funciones son extremadamente útiles
en Javascript, nos ayudan a organizar el código y no sobre poblar el objeto global con
funciones independientes.
alert('hizo click!');
function hacerclick(){
var elemento=document.getElementsByTagName('p')[0];
</script>
</head>
<body>
<div id=”principal”>
<p>Hacer Clic</p>
</div>
71
</body>
</html>
Versiones de javascript
Versión Nombre Oficial Descripción
1 ECMAScript 1 (1997) First Edition
2 ECMAScript 2 (1998) Editorial changes only.
3 ECMAScript 3 (1999) Added Regular Expressions.
Added try/catch.
4 ECMAScript 4 Never released
5 ECMAScript 5 (2009) Added "strict mode".
Added JSON support.
Added String.trim().
Added Array.isArray().
Added Array Iteration Methods.
5.1 ECMAScript 5.1 (2011) Editorial changes.
72
Versiones de javascript
Versión Nombre Oficial Descripción
6 ECMAScript 2015 Added let and const.
Added default parameter values.
Added Array.find().
Added Array.findIndex().
7 ECMAScript 2016 Added exponential operator (**).
Added Array.prototype.includes.
8 ECMAScript 2017 Added string padding.
Added new Object properties.
Added Async functions.
Added Shared Memory.
9 ECMAScript 2018 Added rest / spread properties.
Added Asynchronous iteration.
Added Promise.finally().
Additions to RegExp.
73
JavaScript y los navegadores
74
JavaScript y los navegadores
https://www.w3schools.com/js/js_versions.asp
76
Applets
Los applets son pequeños programas en JAVA que se ejecutan en el
navegador.
Los applets de Java pueden ejecutarse en un navegador utilizando
la Java Virtual Machine (JVM), o en el AppletViewer de Sun.
Entre sus características podemos mencionar un esquema
de seguridad que permite que los applets que se ejecutan en el
equipo no tengan acceso a partes sensibles (por ej. no pueden
escribir archivos), a menos que uno mismo le dé los permisos
necesarios en el sistema.
En Java, un applet es un programa que puede incrustarse en
una página web. Cuando un navegador carga una página web que
contiene un applet, este se descarga en el navegador web y
comienza a ejecutarse. Esto permite crear programas que cualquier
usuario puede ejecutar con tan solo cargar la página web en su
navegador.
77
Ventajas Applets
Son multiplataforma (funcionan en Linux, Windows, OS X, y en cualquier sistema
operativo para el cual exista una Java Virtual Machine).
El mismo applet puede trabajar en "todas" las versiones de Java, y no sólo en la
última versión del plugin. Sin embargo, si un applet requiere una versión
posterior del Java Runtime Environment (JRE), el cliente se verá obligado a
esperar durante la descarga de la nueva JRE.
Puede ser almacenado en la memoria caché de los navegadores web, de modo
que se cargará rápidamente cuando se vuelva a cargar la página web, aunque
puede quedar atascado en la caché, causando problemas cuando se publican
nuevas versiones.
Puede tener acceso completo a la máquina en la que se está ejecutando, si el
usuario lo permite.
Puede ejecutarse a velocidades comparables a las de otros lenguajes
compilados, como C++ (dependiendo de la versión de la JVM).
Puede trasladar el trabajo del servidor al cliente, haciendo una solución web
más escalable tomando en cuenta el número de usuarios o clientes.
78
Desventajas Applet
Requiere el plugin de Java, sin embargo los navegadores Chrome y IE
Edge no soportan plugins y Firefox dejará de soportarlos próximamente. En
ese sentido también Oracle abandono el desarrollo del plugin de Java a
partir de la salida de Java 9.
No puede iniciar la ejecución de un applet, hasta que la JVM esté en
funcionamiento, y esto puede tardar la primera vez que se ejecuta.
Si no está firmado como confiable, tiene un acceso limitado al sistema del
usuario - en particular no tiene acceso directo al disco duro del cliente o al
portapapeles.
Algunas organizaciones sólo permiten la instalación de software a los
administradores. Como resultado, muchos usuarios (sin privilegios para
instalar el plugin en su navegador) no pueden ver los applets.
Un applet podría exigir una versión específica del JRE.
Puede tener vulnerabilidades que permitan ejecutar código malicioso
No es compatible con la mayoría de los navegadores web.
79
Servlet
Permite generar dinámicamente la respuesta HTML a las
peticiones de cliente, todo en el servidor
Recibe la petición en un objeto de clase httpservletrequest,
y contesta al cliente depositando la contestación en un
objeto de la clase httpservletresponse.
Requiere JRE en el servidor de aplicaciones.
80
Servlet - Ejemplo
Los métodos
son:
doGet
doHead
doPost
doPut
doDelete
doOptions
doTrace
81
Servlet – Ciclo de vida
1. Inicializar el servlet
Método init del servlet
2. Interactuar con los clientes
Atender peticiones del cliente (doGet, doHead, doPost, doPut, doDelete,
doOptions, doTrace)
3. Destruir el servlet
Método destroy del propio servlet
82
LENGUAJES DE SCRIPTING
SCRIPTS DE CLIENTE
Características de los Scripts de Cliente
Generación dinámica de contenido HTML en el propio navegador
Manejo de una interfaz más dinámica: animaciones, menús desplegables, etc.
Interacción con applets, plugins y demás elementos de la página
Comprobaciones básicas de la información introducida (javascritp…)
Manejo de las cookies del cliente
Ejecución 100% integrada en el cliente (en el propio HTML), sin interacción con
el Servidor, con la consiguiente reducción tráfico
Por seguridad, funcionalidad limitada en el cliente
Más ligeros que los Applets
Históricos problemas de compatibilidad entre distintos navegadores
83
JAVASCRIPT
84
VBScript
Características:
Desarrollo por Microsoft en respuesta a JavaScript
Creado a partir de VBA (Visual Basic for Applications), versión ligera de
Visual Basic incorporada en Excel y otros.
Mayor funcionalidad que JavaScript
Lenguaje más general, se ejecuta en un intérprete tipo IE (Internet
Explorer) o Windows Script Host que expone los objetos al script y gestiona
su ejecución
Se incluye también en ficheros con la extensión “.vbs”
85
TypeScript
TypeScript es un lenguaje de programación libre y de código abierto desarrollado y mantenido
por Microsoft.
Es un superconjunto de JavaScript, que esencialmente añade tipado estático y objetos basados
en clases.
Anders Hejlsberg, diseñador de C# y creador de Delphi y Turbo Pascal, ha trabajado en el
desarrollo de TypeScript. TypeScript puede ser usado para desarrollar aplicaciones JavaScript que
se ejecutarán en el lado del cliente o del servidor (Node.js).
TypeScript extiende la sintaxis de JavaScript, por tanto cualquier código JavaScript existente
debería funcionar sin problemas. Está pensado para grandes proyectos, los cuales a través de un
compilador de TypeScript se traducen a código JavaScript original.
TypeScript soporta ficheros de definición que contengan información sobre los tipos de librerías
JavaScript existentes, similares a los ficheros de cabeceras de C/C++ que describen la estructura
de ficheros de objetos existentes. Esto permite a otros programas usar los valores definidos en
los ficheros como si fueran entidades TypeScript de tipado estático. Existen cabeceras para
librerías populares como jQuery, MongoDB y D3.js, y los módulos básicos de Node.js.
El compilador de TypeScript está escrito asimismo en TypeScript, compilado a JavaScript y
con Licencia Apache 2.
TypeScript se incluye como lenguaje de programación de primer nivel en Microsoft Visual
Studio 2013 Update 2 y posteriores, junto a C# y otros lenguajes de Microsoft. Una extensión
oficial permite a Visual Studio 2012 soportar también TypeScript.
86
Lenguajes de script de servidor
Características.
Se utilizan para producir páginas dinámicas
Se 'embeben' en las páginas HTML
Se interpretan en el servidor antes de enviarse al cliente
Los principales beneficios:
Permiten separar parcialmente la lógica del programa de la
presentación
Portabilidad: en el servidor (multiplataforma) como en el cliente
(ejecución en el servidor)
Reutilización: usando componentes reusables (Ej: JavaBeans)
Extensibilidad: a través de librerías de tags o etiquetas personalizados
87
ASP (Active Server Pages)
Caracteristicas:
Tecnología propietaria de Microsoft
ASP usa lenguajes de script como Jscript o Vbscript interpretados.
Superado por ASP.NET (framework desarrollo .NET). Código MSIL
Se ejecuta sólo en servidores MS IIS
88
PHP (PHP Hypertext
Preprocessor)
Caracteristicas:
Inicialmente era un desarrollo personal que ha tenido gran éxito, dado su
buena integración en plataformas LAMP (Linux Apache MySql PHP).
Estructura similar a C ó Perl
Ventajas: Open Source, multiplataforma, sencillo, rápido
Pieza base en la arquitectura LAMP
Incorpora POO
Interpretado
89
Perl (Practical Extraction and Report Language)
Caracteristicas:
Lenguaje creado por Larry Wall en 1987 (act. Perl v5)
Orientado inicialmente a administradores de sistemas (basado en C y la
programación shell de Unix)
De propósito general.
Open Source y multiplataforma (muy portable).
Especializado en el tratamiento y generación de ficheros de texto
Muy eficiente, en la web se usa para la programación CGI
Para interactuar con Bases de Datos utiliza DBI/DBD
DBI: Capa de interfaz independiente de la BBDD
DBD: Driver Perl para la BBDD concreta. Es usado por DBI
90
JSP (JavaServer Pages)
Características:
Arquitectónicamente, JSP puede verse como una abstracción de alto
nivel de servlets de Java .
Los JSP se traducen en servlets en tiempo de ejecución, por lo que JSP es un
Servlet; cada servlet JSP se almacena en caché y se reutiliza hasta que se
modifica el JSP original.
JSP se puede utilizar de forma independiente o como el componente de vista de
un diseño del lado del servidor MVC , normalmente con JavaBeans como el
modelo y servlets de Java (o un marco como Apache Struts ) como el
controlador.
Los JSP generalmente se usan para entregar documentos HTML y XML, pero,
también pueden entregar otros tipos de datos.
El contenedor web crea objetos JSP implícitos como solicitud, respuesta, sesión,
aplicación, configuración, página, páginaContexto, salida y excepción. El motor
JSP crea estos objetos durante la fase de traducción.
91
JAVASCRIPT EN EL MARCO DE LA PROGRAMACIÓN WEB
Angular 1.X
Este framework, y el resto de sus versiones fue creado inicialmente y
es promovido por Google, entre sus características encontramos que
modifica el DOM directamente y alguna que otra característica
revolucionaria para su época que hoy en día nos sorprenden poco,
habiendo visto el panorama que hay de frameworks y librerías.
95
Framework más usados en FRONT-
END
VueJS
Vue fue creado por un ex-empleado de Google, que había estado relacionado con
AngularJS y que pretendía coger sus partes favoritas de este framework y crear
algo muy ligero. Desde 2014 está disponible a toda la comunidad y, como no podría ser
de otra manera es un proyecto Open Source.
Angular 2
introducía una gran diferencia con respecto a su versión anterior, lo que causó que los
desarrolladores se enfurecieran al encontrarse una nueva API e incluso que todo el nuevo
código está escrito en TypeScript, que no todo el mundo es experto en este compilador.
todas las novedades que introducía y el lavado de cara que llevaba a Angular 2 a poder
ser comparado con alternativas del momento como React hizo que los desarrolladores
optaran por migrar a esta tecnología. No debemos de olvidar también que Google
trabaja para que las siguientes versiones de Angular sea retrocompatibles
96
Framework más usados en FRONT-
END
No framework
Muchos desarrolladores prefieren no usar ningún framework y
trabajar con código Vanilla, que es como se le conoce a escribir
JavaScript puro.
Vanilla JS, o Javascript puro trae consigo numerosas ventajas como
el tiempo de carga que te ahorras al no tener un framework que cargar o
el poder estar en contacto con las APIs de Javascript de directamente.
97
JavaScript en BACK-END
Node js
es un entorno en tiempo de ejecución multiplataforma, de código abierto,
para la capa del servidor (pero no limitándose sólo a esta capa) basado en
el lenguaje de programación ECMAScript, es asíncrono, con entrada y
salida de datos en una arquitectura orientada a eventos y basado en el
motor V8 de Google.
Fue creado con el enfoque de ser útil en la creación de programas de red
altamente escalables, como por ejemplo, servidores web
98
Framework más usados en BACK-
END
Express
es un framework bastante grande y que resolverá la mayoría de las
necesidades en cuanto a servir un sitio, rutas, templates, etc.
Koa
Koa, según su propia definición, es la nueva generación de framework para
la web. Está creada por desarrolladores que estuvieron creando Express y entre
sus cualidades, con las que pretenden que este framework sea mejor que
Express, se encuentran:
Tamaño (menor que express)
Mayor expresividad en los métodos, es decir, que sus nombres sean más claros.
Mayor solidez a la hora de crear aplicaciones web y API’s.
Meteor
Va más allá de la definición de framework, puede llegar a ser considerado toda
una plataforma ya que, aunque en su estructura constituye un framework es
capaz de exportar el código escrito en diferentes entornos: web, mobile y
99
desktop.
Framework más usados en BACK-
END
Hapi
Este framework se centra en que el código que crees para tu aplicación
sea reusable en vez de estar perdiendo el tiempo con código innecesario.
Sails
SailsJS es un framework web creado por Mike McNeil, con el fin de tener
una estructura con la que crear aplicaciones para sus clientes, lo que no
esperaba es que se convertiría en uno de los frameworks más usados
En comparación al resto de los mencionados, destaca que la mayoría
de acciones pueden ser realizadas con el generador.
100
JSON
JavaScript Object Notation
Notación de Objetos de
JavaScript
101
JSON
102
JSON
Es un formato ligero de intercambio de datos.
Leerlo y escribirlo es simple para humanos, mientras que para las máquinas
es simple interpretarlo y generarlo.
Está basado en un subconjunto del Lenguaje de Programación JavaScript,
Standard ECMA-262 3rd Edition - Diciembre 1999.
JSON es un formato de texto que es completamente independiente del
lenguaje pero utiliza convenciones que son ampliamente conocidos por los
programadores de la familia de lenguajes C, incluyendo C, C++, C#, Java,
JavaScript, Perl, Python, y muchos otros.
Estas propiedades hacen que JSON sea un lenguaje ideal para el intercambio
de datos.
103
JSON
104
JSON
En JSON, se presentan de estas formas:
Objeto
Array
105
JSON - OBJETO
Un objeto es un conjunto desordenado de pares nombre/valor. Un objeto comienza
con { (llave de apertura) y termine con } (llave de cierre). Cada nombre es seguido
por : (dos puntos) y los pares nombre/valor están separados por , (coma).
107
JSON - ARRAY
108
JSON -NUMEROS
Los números son como las constantes numéricas de cualquier
lenguaje de programación moderno
109
JSON - STRING
Las cadenas son como las de cualquier lenguaje de programaci´on
moderno
110
Ejemplos válidos de JSON
"hola, mundo"
4243.12
-947e-5
null
[1,2,3,4]
[1, "azul", [1,2,3]]
[
1,
"azul",
[
1,
2,
3
]
]
111
Ejemplos válidos de JSON
{ "nombre":"Juan", "apellido":"Pérez"}
{ "v1":true, "v2":null, "v3":false}
{ "nombre": "Juan", "notas":[5.5, 7.2, 6.1]}
{ "nombre": "Juan", "notas": [
5.5,
7.2,
6.1
]
}
{"nombre":null }
112
Ejemplos NO válidos de JSON
True
’hola, mundo’
{"hola,mundo"}
{1:"uno", 2:"dos"}
113
XML VS JSON
XML
Ventajas:
Tiene un formato muy estructurado y fácil de comprender.
Puede ser validado fácilmente mediante Schemas(XSD)
Se pueden definir estructuras complejas y re utilizables.
Desventajas:
Es mas complicado de entender
El formato es sumamente estricto.
Lleva mas tiempo procesarlo
Un error con los namespace puede hacer que todo el documento sea invalido
JSON
Ventajas:
Formato sumamente simple
Velocidad de procesamiento alta
Archivos de menor tamaño
Desventajas:
Tiene una estructura enredosa y difícil de interpretar a simple vista
114
XML VS JSON
115
XML VS JSON
116