Full Transcript

José Ramón Lozano Mínguez 22 TEMARIO OPOSICIONES COIICV | TEMA 28 En grafo La información se representa como nodos de un grafo y las relaciones son las aristas del grafo. Necesita de una estructura fija para proporcionar u n buen rendimiento. Algunos ejemplos son Neo4j (Infojobs) o Infogrid. Orienta...

José Ramón Lozano Mínguez 22 TEMARIO OPOSICIONES COIICV | TEMA 28 En grafo La información se representa como nodos de un grafo y las relaciones son las aristas del grafo. Necesita de una estructura fija para proporcionar u n buen rendimiento. Algunos ejemplos son Neo4j (Infojobs) o Infogrid. Orientadas a objetos Aunque se estudiaron en el apartado anterior, son u n ejemplo de bases de datos no solo SQL. 6.1. Ventajas de las bases de datos NoSQL Entre las ventajas de adoptar un sistema de base de datos NoSQL destacan: • Pueden utilizarse máquinas con pocos recursos. • Tiene una buena escalabilidad horizontal. Añadir má s servidores mejorará el rendimiento del sistema de forma óptima. • Proporcionan un alto rendimiento. • Pueden manejar grandes cantidades de datos. • No hay cuellos de botella en la gestión de las peti ciones, por los pocos recursos que requieren. • Permite estructuras de datos dinámicas. • Permite una arquitectura distribuida. 6.2. Inconvenientes de las bases de datos NoSQL Los inconvenientes de estos sistemas frente a los t radicionales son: • No utilizan SQL como lenguaje de consulta. • No existe un estándar de modificación de la base de datos. Cada sistema ha implementado el suyo. • No están suficientemente maduros. • Según la implementación, estos sistemas no pueden a segurar la consistencia en los datos que sí asegura el modelo relacional. Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019Sistemas de gestión de bases de datos TEMARIO OPOSICIONES COIICV | TEMA 28 23 • El análisis de datos (Bussiness Intelligence) es má s complicado que en los sistemas tradicionales. Referencias bibliográficas (1) Date, C.J. (2001). Introducción a los sistemas de bases de datos. Prentice Hall / Addison Wesley Iberoamericana (2) Pressman, Roger S. (1999). Ingeniería del softw are, un enfoque práctico. Ed Mc Graw Hill. (3) ANSI/X3/SPARC Study Group on Data Base Manageme nt Systems: (1975), Interim Report. FDT, ACM SIGMOD bulletin. Volume 7, No. 2. (4) Mota, L., Celma, M., Casamayor, J.C., (1994) Ba ses de datos relacionales: Teoría y diseño. Universidad Politécnica de Valencia (5) Silberschatz, S., Korth, H. (2002) Fundamentos de bases de datos. Mcraw-Hill (6) de Miguel, A., Piattini, M. (1993) Concepción y diseño de bases de datos. RA-MA (7) http://aws.amazon.com (8) Acens whitepapers. https://www.acens.com/wp-content/images/2014/02/bbd d-nosql-wp- acens.pdf . Bases de datos NoSQL. Qué son y qué tipos nos pod emos encontrar (9) MongoDB. https://www.mongodb.com/nosql-explained . NoSQL databases explained Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019José Ramón Lozano Mínguez 24 TEMARIO OPOSICIONES COIICV | TEMA 28 Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019TEMARIO OPOSICIONES COIICV | TEMA 29 1 Tema 29. Tecnologías para el desarrollo de aplicaciones. Microsoft.NET, JAVA, PHP. Frameworks de desarrollo Antonio Campos Serna Colegiado 0920 En el siguiente tema se expone, de manera muy resum ida, las principales tecnologías y lenguajes para el desarrollo de aplicaciones web. Java, PHP y MS.NET son, por su utilización tan exte ndida, los lenguajes de programación más importantes hoy por hoy. Con ellos se escribe el 30% de todo el código generado en el mundo y el 99% si nos referim os exclusivamente a los lenguajes web “del lado del servidor” (datos refere ntes a septiembre de 2.016 obtenidos de tiobe.com y w3techs.com). Java fue desarrollado desde 1.991 por un equipo de Sun Microsystems liderado por James Gosling. La primera versión de Java fue publi cada en enero de 1.996. En 2.007 Sun Microsystems empezó a distribuir Java bajo los términos de la licencia GNU-GPL (http://www.gnu.org/licenses/gpl.html ). En 2.009 Sun Microsystems fue adquirida por Oracle y desde entonces se ha mantenido una posició n ambigua respecto a la licencia de distribución de Java. En 2.010 James Gosling aba ndonó Oracle PHP fue desarrollado en 1.994 por Rasmus Lerdof com o un conjunto de herramientas para un proyecto personal. En 1.997 Zeev Suraski y Andi Gutsman retomaron el desarrollo y en 1.998 publicaron PHP 3. En 1.999 fu ndan la empresa Zend Technologies que desde entonces es la encargada de desarrollar el lenguaje y lo distribuye bajo la licencia PHP License ( http://www.php.net/license/3_01.txt ). Micorsoft comenzó el desarrollo de .NET (punto NET) en la segunda mitad de los 90’s y la primera versión estable se lanzó en febrero de 2.002. El lanzamiento de .NET puede considerarse como la alternativa de Microsoft para el mercado del desarrollo web, y en cierta medida una respuesta a Java. Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019Antonio Campos Serna 2 TEMARIO OPOSICIONES COIICV | TEMA 29 1. MS.NET 1.1. Introducción Microsoft .NET es un conjunto de tecnologías y herr amientas que proporcionan un entorno de ejecución que facilita diversos servicios a las apl icaciones en ejecución. Sus componentes principales: • Common Language Runtime (CLR): es el motor que cont rola las aplicaciones en ejecución. • Biblioteca de clases: proporciona una biblioteca de código probado y reutilizable. • ASP.NET: añade funcionalidad a las aplicaciones web . • Windows Forms: herramientas para el desarrollo de a plicaciones de escritorio. Figura 1: Entorno Microsoft.NET Los principales servicios que provee Microsoft .NET a las aplicaciones son: • Administración de la memoria: en las aplicaciones d e .NET, CLR proporciona este servicio. • Interoperabilidad de lenguajes: el compilador gener a un código intermedio denominado Common Intermediate Language (CIL). Es similar a los bytecodes de Java y se compila en tiempo de ejecución a través de Common Language Run time. • Ejecución en paralelo: se permite que varias versio nes de Common Language Runtime coexistan en el mismo equipo. Esto significa que ta mbién pueden coexistir varias versiones de las aplicaciones, y que una aplicación se puede ejecutar en la versión de .NET Framework con la que se compiló. Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019Tecnologías para el desarrollo de aplicaciones. MS. NET, JAVA y PHP TEMARIO OPOSICIONES COIICV | TEMA 29 3 1.2. Common Language Runtime El Common Language Runtime (CLR) es el núcleo de la plataforma .NET, es el encargado de la gestión y ejecución de las aplicaciones. Como se ha comentado anteriormente, las aplicacione s .NET cuando se compilan generan un código intermedio (CIL) que es de nuevo compilado e n tiempo de ejecución para generar el ejecutable definitivo en código nativo de la máquin a donde se va a ejecutar. El funcionamiento es similar al de Java, bytecodes y la JVM, pero a dife rencia de la JVM que interpreta los bytecodes, la CLR compila el CIL a código nativo de la máquina do nde se va a ejecutar. Figura 2: Proceso de compilación en .NET Los principales servicios que incorpora el CLR son: • Integración de lenguajes: permite integrar códigos fuentes escritos en distintos lenguajes. • Gestión de memoria: es el responsable de eliminar l os objetos que ya no están en uso liberando de esta manera la memoria. 1.2.1. Common Intermediate Language Todos los compiladores incluidos en la plataforma . NET generan código intermedio CIL, este es el único lenguaje que “entiende” la CLR. Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019Antonio Campos Serna 4 TEMARIO OPOSICIONES COIICV | TEMA 29 El CIL facilita la integración en una misma aplicac ión de distintos lenguajes de programación. También permite que las aplicaciones sean multiplat aforma al ser independiente de la especificación hardware de la máquina en la que se va a ejecutar la aplicación. El módulo encargado de generar el código nativo que se va a ejecutar a partir del código CIL se llama compilador JIT (Just-In-Time), y está integra do en la CLR. JIT va compilando dinámicamente el código CIL a medida que va a ser ejecutado. 1.2.2. Common Type System (CTS) Todos los compiladores de la plataforma .NET unific an los tipos de datos de cada uno de los lenguajes al Sistema de Tipos Común (CTS) que puede ser considerado como un sistema de tipos de datos independiente del lenguaje de programación . De esta manera, los datos del código intermedio CIL, son los únicos que admite la CLR. Figura 3: Tipos definidos en CTS Los tipos de datos por referencia siempre se gestionan con direcciones de memoria, t anto para la asignación como para la comparación. 1.3. Biblioteca de clases La plataforma .NET incorpora una librería de clases (Framework Class Library) formada por cientos de clases que facilitan la interacción del programa dor con los servicios ofrecidos por la CLR. Esta librería está escrita en CIL, lo que permite q ue sea usada por cualquier lenguaje de la plataforma .NET (C#, VB.NET,…). Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019Tecnologías para el desarrollo de aplicaciones. MS. NET, JAVA y PHP TEMARIO OPOSICIONES COIICV | TEMA 29 5 Todas las clases que incluye la FCL están organizad as en espacios de nombre (similares a los packages de Java) cuya raíz es System. Los espacios de nombres mas usados son: • System: contiene los tipos de datos básicos, tablas , excepciones,… • System.Object: Soporta la jerarquía de clases de .N ET. • System.Collections: Colecciones de datos (listas, p ilas, colas, …). • System.Data: Incluye las clases para el acceso a Ba se de Datos mediante la arquitectura ADO.NET. • System.IO: Gestión de ficheros. • System.Math: funciones matemáticas. • System.XML: Gestión de estructuras de datos en form ato XML. 1.4. Windows Forms Es la herramienta de .NET para crear aplicaciones a vanzadas de escritorio. Se utiliza para diseñar y programar los formularios (WinForms o ventanas) c on los que el usuario interactuará con la aplicación. Las clases que se utilizan descienden directamente de las Windows Foundation Classes (WFC) y su espacio de nombres es System.Windows.Forms . 1.5. ASP.NET Es el modelo de desarrollo para web que introduce . NET, puede decirse que es la extensión del lenguaje ASP para la plataforma .NET, incluyendo lo s servicios de la CLR y la FCL. El código de las aplicaciones puede escribirse en cualquier leng uaje que soporte la Common Language Runtime. Una de las características principales de ASP.NET e s que permite trabajar con elementos HTML en la propia página, por lo que la diferenciación d e código a ejecutar en el servidor o en el cliente se difumina, ya que todo está incluido en el mismo código. Incluye diseño de controles específicos para programar aplicaciones que se ejecutan sobre d ispositivos móviles. En cuanto a la capa de presentación, ASP.NET permit e controlar la apariencia general de los sitios web a través de la definición de temas y máscaras q ue pueden aplicarse tanto a las páginas como los controles. Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019Antonio Campos Serna 6 TEMARIO OPOSICIONES COIICV | TEMA 29 Respecto a la seguridad, ASP.NET permite identifica r usuarios con la autenticación de Windows que incluye Internet Information Server . También permite gestionar el acceso a los recurso s (ficheros, bases de datos, …) de la aplicación web mediante los grupos de Windows. ASP.NET permite almacenar el estado de la página de manera que, entre cada una de las llamadas desde el cliente, se pueda compartir infor mación. Puede guardar y administrar información específica de la aplicación, de la sesi ón, de la página y del usuario. 1.5.1. Hola Mundo en ASP.NET <% lblHolaMundo.Text = “Hola mundo”; %> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transi tional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitiona l.dtd”> Hola Mundo <asp:Label runat="server" id="lblHolaMundo" ></asp:Label> </div> </form> Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019Tecnologías para el desarrollo de aplicaciones. MS. NET, JAVA y PHP TEMARIO OPOSICIONES COIICV | TEMA 29 7 1.6. C# (C Sharp) Es un lenguaje de programación orientado a objetos que forma parte de la plataforma .NET. C# es un lenguaje multipropósito con el que pueden desarr ollarse aplicaciones de escritorio, servicios web, componentes distribuidos, aplicaciones cliente -servidor, aplicaciones de bases de datos, etc. La sintaxis de C# es muy similar a la de los lengua jes C, C++ y Java pero con características propias como tipos de datos que admiten el valor NULL , enumeraciones, delegados y acceso directo a memoria (que no incluye Java). También ad mite la definición de métodos genéricos (funciones donde tanto los parámetros de entrada co mo el tipo devuelto admiten cualquier tipo de dato). C# incluye todas las características de la POO (enc apsulación, herencia y polimorfismo). También soporta interfaces y al igual que en Java, en C# una clase subclase s ólo puede heredar de una única superclase pero puede implementar varias interfaces . Además de las clases C# incorpora el tipo de dato struct que puede definirse como una clase sencilla que admite interfaces pero no herencia. Además de estas características, C# facilita las co nsultas integradas en una gran variedad de orígenes de datos mediante Language-Integrated Quer y (LINQ). Se pueden escribir consultas sobre bases de datos SQL Server, documentos XML, co njuntos de datos ADO.NET y cualquier colección de objetos que admite la interfaz IEnumerable . 1.6.1. Hola Mundo en C# using System; public class HolaMundo { public static void Main(string[] args) { Console.WriteLine(“Hola mundo”); } } Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019Antonio Campos Serna 8 TEMARIO OPOSICIONES COIICV | TEMA 29 2. Java 2.1. Introducción e historia Java es un lenguaje de programación de propósito ge neral, multiplataforma y orientado a objetos. Su objetivo principal es que se escriba código una sola vez y este sea ejecutable en máquinas de distinta arquitectura. Esto se consigue compilando a un código intermedio llamado bytecode que es interpretado en el momento de la ejecución por la M áquina Virtual de Java (JVM). Java es, según el índice Tiobe ( http://www.tiobe.com/tiobe-index ), el lenguaje más usado (1), suponiendo el 18,24% del total de líneas de código escritas. Java ha mantenido esta posición privilegiada desde 2.001, siendo superado por C en contadas ocasiones. Java fue desarrollado desde 1.991 por un equipo de Sun Microsystems, liderado por James Gosling, en un proyecto denominado Green Project . Originalmente el lenguaje se denominó Oak (roble), pero por un problema de patentes pasó a ll amarse Java . Los objetivos iniciales eran implementar un lenguaj e con una estructura y sintaxis similar a C++ que pudiera ejecutarse en cualquier tipo de máquina , pero en el verano de 1.994 el equipo reorientó la plataforma hacia la web. Con esta nuev a línea de trabajo, crearon el navegador HotJava, que fue presentado junto a la primera vers ión de Java en mayo de 1.995 durante la conferencia SunWorld. En enero de 1.996 se publicó la primera versión de Java y desde entonces Java ha experimentado numerosos cambios, así como la inclusión de gran ca ntidad de clases y paquetes que se incluyen en la instalación estándar. 2.2. Características principales Java comparte muchas de sus características con C++ : lenguaje fuertemente tipado, orientado a objetos, sintaxis similar,… La diferencia fundament al entre ellos es el tratamiento de la memoria, ya que Java no permite la asignación dinámica de la misma y el uso de punteros. En Java todo son clases (objetos), siendo obligator io el uso del paradigma de la Programación a Objetos. Un programa en Java estará formado por uno o varios ficheros que a su vez contienen una o más clases. Una de estas clases debe contener un método main que contendrá el código principal del programa. La declaración de dicho mét odo será: public static void main ( String args[] ) Como vamos a escribir nuestro primer programa en Ja va, el clásico “Hola mundo!”: Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019Tecnologías para el desarrollo de aplicaciones. MS. NET, JAVA y PHP TEMARIO OPOSICIONES COIICV | TEMA 29 9 class Hola { public static void main(String argumentos[]) { System.out.println(“Hola mundo!”); } } 2.2.1. Comentarios Como en cualquier lenguaje de programación, los com entarios en Java son de gran valor, ya que se deben utilizar para hacer más comprensible el có digo y que este sea mantenible por personas que no fueron los programadores originales. En Java existen comentarios de dos tipos: • De una sola línea: // Esto es un comentario de una línea • De varias líneas: /* Esto es un comentario de más de una línea / 2.2.2. Tipos de datos En Java existen dos tipos de datos principales: • Tipos de datos primitivos. • Referencias a objetos. Entendemos por tipos de datos primitivos aquellos q ue se pueden definir sin el uso de la POO. En Java son: byte , short , int , long, float, double, char y boolean . Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019Antonio Campos Serna 10 TEMARIO OPOSICIONES COIICV | TEMA 29 Tabla I: Tipos de datos primitivos TIPO Longitud Valor mínimo Valor máximo byte 1 byte -128 127 short 2 bytes -32.768 32.767 int 4 bytes -2.147.483.648 2.147.483.647 long 8 bytes -9.223.372.036.854.775.808 9.223.372.036.854.775.807 float 4 bytes ±3,410 -38 ±3,410 38 double 8 bytes ±1,710 -308 ±1,7*10 308 char 2 bytes 0 65.535 boolean 1 byte False true En Java la longitud de los tipos primitivos no depe nde de la plataforma hardware ni del sistema operativo. Por contra, no se realizan comprobacione s de rango; esto quiere decir que a una variable de tipo byte con valor 127 se le suma 1, pasa a valer -128 sin que se produzca error. Las referencias almacenan un puntero a una zona de memoria que almacena a un tipo de dato más complejo como son los arrays y los objetos. Para cada tipo de dato primitivo existe una clase e quivalente que tienen métodos que facilitan el trabajo con variables cómo conversores de tipos. Tabla II: Equivalencia tipos primitivos y clases Tipo primitivo Clase Byte java.lang.Byte Short java.lang.Short Int java.lang.Integer Long java.lang.Long Flota java.lang.Float double java.lang.Double Char java.lang.Character boolean java.lang.Boolean En Java las variables se declaran de la misma forma que en C++, identificador (nombre de la variable) y tipo de dato al que corresponde. Las va riables también pueden ser inicializadas durante la declaración. int x; int x = 0; Los identificadores pueden estar formados por letra s, números y símbolos con las siguientes restricciones: Se autoriza el uso exclusivo de este documento a María Amparo Pavía García, DNI 20013968N, a 26 de julio de 2019