Este documento introduce JavaFX, un framework de Sun para crear aplicaciones ricas para Internet. Explica que JavaFX permite crear aplicaciones multiplataforma compartiendo código entre escritorio y móvil. También describe ventajas como arrastrar aplicaciones al escritorio y facilitar la integración de gráficos. Finalmente muestra un ejemplo Hello World en JavaFX utilizando bind para actualizar el texto automáticamente al cambiar un cuadro de texto.
Este documento proporciona una introducción a los componentes gráficos de usuario (GUI) en Java, incluidos contenedores, componentes atómicos, componentes de texto, menús y componentes complejos. Explica cómo crear y personalizar interfaces gráficas mediante el uso de estas clases de GUI de Java como JFrame, JButton, JTextField, JMenuBar y JTable.
El documento presenta un perfil UML para la representación de sistemas de información geográfica, definiendo estereotipos como Capa, Objeto Geográfico y Vista que se aplican a clases UML. También incluye restricciones en OCL para asegurar la consistencia de los modelos. Se muestra un ejemplo aplicando el perfil a diagramas de clases y despliegue de un sistema de información geográfica.
Programación Funcional en Javascript. 27/10/2014. NodeJS Madrid
Video: http://bit.ly/1xTizFc
Code: http://bit.ly/1qmmR3Q
La programación funcional está cogiendo fuerte tracción en los últimos años dentro de la comunidad de desarrollo. Tal vez ello se deba al surgimiento de nuevas arquitecturas que demandan cotas de escalabilidad, resistencia y flexibilidad en el marco de soluciones centradas en procesos de transformación. Pero más allá de una simple moda, como trataremos de mostrar en esta charla, la programación funcional conduce a soluciones de código robustas, versátiles y expresivas que difícilmente son comparables con las propias de la orientación a objetos.
Además JavaScript, como la mayoría de los lenguajes de scripting es un lenguaje idiomático que invita a pensar en términos funcionales. De hecho muchas veces, cuando programamos en Javascript, desarrollamos soluciones funcionales casi sin darnos cuenta. Pero para trabajar correctamente en el marco de este paradigma debemos saber, qué es exactamente la programación funcional, cuáles son sus ventajas y principios fundacionales, de qué mecanismos se sirve, qué técnicas de programación se utilizan, qué patrones de diseño funcional existen a nuestra disposición y qué estilos arquitectónicos emergen.
En esta charla descubriremos cómo se construyen arquitecturas funcionales dirigidas por los datos, hablaremos de programación por capas basada en orden superior y presentaremos modelos de programación concomitantes como la programación reactiva basada en streams o las arquitecturas map/reduce propias de las técnicas de big data.
Este documento presenta una introducción al lenguaje de programación Java. Explica que Java es un lenguaje orientado a objetos e independiente de la plataforma, y describe algunas de sus características principales como la robustez, la gestión automática de memoria y los mecanismos de seguridad incorporados. También introduce conceptos básicos de programación orientada a objetos como clases, objetos, encapsulamiento y herencia. Finalmente, brinda instrucciones sobre cómo instalar el kit de desarrollo Java y ejecutar programas y applets simples de
Viafirma Hanuman es una plataforma de desarrollo que permite generar código a partir de un modelo definido. Ofrece funciones como Model Driven Architecture, generación de proyectos JavaEE6 compatibles con cualquier servidor JavaEE6, y mecanismos de extensión y generación independiente del código. Usa tecnologías como Primefaces, JSF 2.0 y Prettyfaces para la interfaz de usuario en la capa cliente.
Estructura sintactica de los lenguajesEfrain Godoy
El documento compara y contrasta las características y estructuras de los lenguajes de programación C, Java, Visual Basic, Oracle, SQL, Microsoft Access. Describe que C es un lenguaje de propósito general de bajo y medio nivel, mientras que Java es más abstracto pero también permite control a bajo nivel. Visual Basic se origina del BASIC y utiliza una interfaz gráfica. Oracle y SQL son herramientas para gestión de bases de datos, mientras que Access es un sistema de gestión de bases de datos para uso personal.
Este documento proporciona una introducción general a JavaScript, incluyendo su historia, características, sintaxis, uso en páginas web y seguridad. JavaScript fue creado originalmente por Netscape en 1995 y adoptado como un estándar ECMA llamado ECMAScript. Es un lenguaje interpretado, multi-paradigma y orientado a objetos que se usa principalmente en el lado del cliente de las páginas web para mejorar la interactividad.
Desarrollo de Productos con Archetypes y ArchGenXMLRoberto Allende
Curso introductorio de desarrollo de productos archetypes para plone. Herramientas UML, introducción a diagramas uml para desarrollo archetypes, ArgoUml, archgenxml, vocabularios, workflow.
Este documento proporciona una introducción a los componentes gráficos de usuario (GUI) en Java, incluidos contenedores, componentes atómicos, componentes de texto, menús y componentes complejos. Explica cómo crear y personalizar interfaces gráficas mediante el uso de estas clases de GUI de Java como JFrame, JButton, JTextField, JMenuBar y JTable.
El documento presenta un perfil UML para la representación de sistemas de información geográfica, definiendo estereotipos como Capa, Objeto Geográfico y Vista que se aplican a clases UML. También incluye restricciones en OCL para asegurar la consistencia de los modelos. Se muestra un ejemplo aplicando el perfil a diagramas de clases y despliegue de un sistema de información geográfica.
Programación Funcional en Javascript. 27/10/2014. NodeJS Madrid
Video: http://bit.ly/1xTizFc
Code: http://bit.ly/1qmmR3Q
La programación funcional está cogiendo fuerte tracción en los últimos años dentro de la comunidad de desarrollo. Tal vez ello se deba al surgimiento de nuevas arquitecturas que demandan cotas de escalabilidad, resistencia y flexibilidad en el marco de soluciones centradas en procesos de transformación. Pero más allá de una simple moda, como trataremos de mostrar en esta charla, la programación funcional conduce a soluciones de código robustas, versátiles y expresivas que difícilmente son comparables con las propias de la orientación a objetos.
Además JavaScript, como la mayoría de los lenguajes de scripting es un lenguaje idiomático que invita a pensar en términos funcionales. De hecho muchas veces, cuando programamos en Javascript, desarrollamos soluciones funcionales casi sin darnos cuenta. Pero para trabajar correctamente en el marco de este paradigma debemos saber, qué es exactamente la programación funcional, cuáles son sus ventajas y principios fundacionales, de qué mecanismos se sirve, qué técnicas de programación se utilizan, qué patrones de diseño funcional existen a nuestra disposición y qué estilos arquitectónicos emergen.
En esta charla descubriremos cómo se construyen arquitecturas funcionales dirigidas por los datos, hablaremos de programación por capas basada en orden superior y presentaremos modelos de programación concomitantes como la programación reactiva basada en streams o las arquitecturas map/reduce propias de las técnicas de big data.
Este documento presenta una introducción al lenguaje de programación Java. Explica que Java es un lenguaje orientado a objetos e independiente de la plataforma, y describe algunas de sus características principales como la robustez, la gestión automática de memoria y los mecanismos de seguridad incorporados. También introduce conceptos básicos de programación orientada a objetos como clases, objetos, encapsulamiento y herencia. Finalmente, brinda instrucciones sobre cómo instalar el kit de desarrollo Java y ejecutar programas y applets simples de
Viafirma Hanuman es una plataforma de desarrollo que permite generar código a partir de un modelo definido. Ofrece funciones como Model Driven Architecture, generación de proyectos JavaEE6 compatibles con cualquier servidor JavaEE6, y mecanismos de extensión y generación independiente del código. Usa tecnologías como Primefaces, JSF 2.0 y Prettyfaces para la interfaz de usuario en la capa cliente.
Estructura sintactica de los lenguajesEfrain Godoy
El documento compara y contrasta las características y estructuras de los lenguajes de programación C, Java, Visual Basic, Oracle, SQL, Microsoft Access. Describe que C es un lenguaje de propósito general de bajo y medio nivel, mientras que Java es más abstracto pero también permite control a bajo nivel. Visual Basic se origina del BASIC y utiliza una interfaz gráfica. Oracle y SQL son herramientas para gestión de bases de datos, mientras que Access es un sistema de gestión de bases de datos para uso personal.
Este documento proporciona una introducción general a JavaScript, incluyendo su historia, características, sintaxis, uso en páginas web y seguridad. JavaScript fue creado originalmente por Netscape en 1995 y adoptado como un estándar ECMA llamado ECMAScript. Es un lenguaje interpretado, multi-paradigma y orientado a objetos que se usa principalmente en el lado del cliente de las páginas web para mejorar la interactividad.
Desarrollo de Productos con Archetypes y ArchGenXMLRoberto Allende
Curso introductorio de desarrollo de productos archetypes para plone. Herramientas UML, introducción a diagramas uml para desarrollo archetypes, ArgoUml, archgenxml, vocabularios, workflow.
Este documento presenta una introducción al manual de PHP 5. Explica cómo las versiones anteriores de PHP 3 y 4 tenían limitaciones en su soporte de programación orientada a objetos. PHP 5 mejora significativamente este soporte para hacer de PHP un lenguaje apto para todo tipo de aplicaciones. También describe cómo instalar WAMP, un paquete que instala Apache, PHP 5, y MySQL de forma sencilla en Windows para comenzar a usar PHP 5 sin complicaciones.
Este documento describe las tecnologías .NET, C#, WPF y herramientas relacionadas. Brevemente:
1) .NET es el marco de trabajo de Microsoft para desarrollo multiplataforma, que incluye un entorno de ejecución común (CLR) y una amplia biblioteca de clases.
2) C# es el lenguaje de programación preferido para .NET, diseñado para superar problemas de Java.
3) WPF es un conjunto de librerías para crear interfaces gráficas ricas con XAML y separación de
Este documento describe los componentes JButton, JCheckBox y JRadioButton de Swing en Java. Explica que estos son algunos de los componentes más importantes y comúnmente usados en aplicaciones modernas. También discute la evolución de las interfaces gráficas de usuario en Java, incluyendo AWT y Swing, y las ventajas de Swing sobre AWT.
Este documento describe las características fundamentales de JavaScript. JavaScript es un lenguaje de scripting orientado a objetos que se ejecuta en los navegadores web para crear efectos interactivos. A diferencia de Java, JavaScript no requiere compilación y se interpreta directamente en el navegador. El documento también explica conceptos básicos como variables, tipos de datos, operadores, estructuras de control de flujo y funciones.
Este documento describe los componentes básicos de Java AWT como etiquetas, cuadros de texto y botones. Explica cómo crear y usar estos componentes mediante constructores, métodos y eventos para desarrollar interfaces gráficas de usuario simples como una calculadora básica.
El desarrollo de aplicaciones en diversas plataformas y lenguajes en una empresa, es un caso de uso muy común que se presenta a lo largo del tiempo. Así mismo, la necesidad de poder integrar los datos de estas diversas aplicaciones, muchas veces incompatibles entre si, lleva a la necesidad de desarrollar aplicaciones que se encarguen del intercambio de estos datos para lograr un consolidado de información que aporte valor a la empresa.
Al momento de diseñar este tipo de aplicaciones, es común el observar patrones una y otra vez. Dichos patrones han sido recopilados y documentados por Gregor Hohpe y Bobby Woolf en su libro "Enterprise Integration Patterns", en el cual ofrecen una visión completa y muy bien explicada de estos patrones, así como de una nomenclatura que se ha vuelto estándar para representar estos patrones.
Apache Camel es la implementación de la gran mayoría de los patrones propuestos por Gregor y Bobby para la plataforma Java y de manera OpenSource bajo licencia Apache 2.0. Apache Camel es una alternativa a diversas herramientas comerciales para realizar aplicaciones empresariales de integración de aplicaciones.
En la conferencia se mostraran los patrones mas comunes, su notación, diseño e implementación usando Apache Camel, de igual manera se mostrara la infraestructura necesaria para ejecutar Apache Camel, los mecanismos de monitoreo de aplicaciones desarrolladas con Camel y como se puede integrar con productos de integración como Brokers de Mensajería (JMS), Enterprise Service Bus (ESB) y servidores de aplicaciones clásicos.
Este documento presenta una introducción básica al lenguaje de programación PHP. Explica que PHP es un lenguaje interpretado de código abierto que se puede embeber en páginas HTML para crear sitios web dinámicos. Detalla los conocimientos previos recomendados, cómo instalar PHP, la sintaxis básica, tipos de datos, estructuras de control, funciones incorporadas y el uso de sesiones y objetos. El documento proporciona ejemplos de código PHP para ilustrar los diferentes conceptos.
JavaScript es un lenguaje de scripting interpretado que se usa para crear páginas web interactivas y dinámicas. Fue desarrollado originalmente por Netscape como una forma de agregar funciones interactivas a las páginas HTML. Aunque comparte algunas similitudes sintácticas con Java, son lenguajes diferentes. JavaScript se ejecuta en el navegador del cliente y permite modificar dinámicamente el contenido, estructura y estilo de una página web.
Este documento proporciona una introducción a PHP y MySQL. Explica brevemente el origen y desarrollo de PHP, cómo funcionan las páginas PHP, e instalación de PHP y MySQL. Luego cubre conceptos básicos como variables, operadores condicionales y ciclos en PHP, y el uso de tablas y vectores. Finalmente incluye ejemplos de código PHP simple.
El documento proporciona una introducción al entorno de desarrollo integrado Eclipse, describiendo sus características principales como la capacidad de crear proyectos de Java y editar código fuente, y explica conceptos como proyectos, paquetes, clases y archivos. También describe algunas de las herramientas de Eclipse como el Explorador de paquetes, la búsqueda de código y la depuración.
El documento presenta conceptos básicos sobre el lenguaje de programación PHP, incluyendo variables, operadores aritméticos y de comparación, sentencias condicionales y bucles. También cubre temas como el manejo de cadenas, funciones, envío y recepción de datos a través de formularios, y el envío de correos electrónicos.
Tutoriales - Explorando AWS con Java.
Aprende a descubrir los diferentes servicios que ofrece AWS para explotar por medio de Java a través de la capa gratuita.
Este documento contiene el portafolio de Amado Alejandro Ibarra Cervantes. Incluye 5 programas en Java con sus descripciones y códigos. También incluye actividades sobre editores de texto para Java, palabras reservadas en Java y tipos de datos.
Desarrollo de Aplicaciones Web II - Sesión 04 - Programación Orientada a ObjetosDidier Granados
Este documento presenta una discusión sobre la programación orientada a objetos. Explica algunos conceptos fundamentales como clases, objetos, atributos, métodos, encapsulamiento, herencia y polimorfismo. También describe cómo la programación orientada a objetos intenta modelar el mundo real representando entidades como objetos que tienen características y comportamientos.
Introducción al desarrollo de aplcaciones con WPF (Windows Presentation Foundation), la cual utiliza la tecnología XAML (eXtensible Application Markup Language), haciendo uso simple del patrón de diseño orientado a plataformas XAML y consumo de datos de una api publica. Aplicación de ejemplo desarrollada dentro de la presentación.
Este documento contiene el portafolio de un estudiante de programación. Incluye 7 actividades realizadas en Java que van desde imprimir números hasta calcular promedios de varios alumnos. También incluye una tabla comparativa de 8 editores de texto comúnmente usados para Java y una lista de palabras reservadas y tipos de datos en este lenguaje.
Este documento presenta una introducción a las interfaces gráficas de usuario (GUIs) en Java. Explica los diferentes tipos de aplicaciones Java, las bibliotecas GUI principales como AWT y Swing, y los conceptos básicos para crear GUIs como componentes, contenedores, layouts y manejo de eventos. También incluye información sobre la jerarquía de clases Swing y pasos para construir una interfaz.
Este documento proporciona una introducción a Swing y sus componentes. Explica qué es Swing y cómo se relaciona con JFC, las versiones que contienen el API Swing, y los paquetes Swing más comunes. También describe brevemente las diferencias entre los componentes Swing y AWT. Finalmente, incluye ejemplos de código de una aplicación Swing sencilla para ilustrar sus características.
Este documento presenta un análisis detallado de varios pasajes bíblicos y cómo estos anticipan los principios de los derechos humanos. Resalta que la Biblia promueve la dignidad humana, la justicia y la igualdad para todos, así como limitaciones al poder de los gobernantes. También muestra cómo historias como la de Abraham, David y Betsabé, y Rut enfatizan valores como la compasión por los vulnerables y la no violencia, que son fundamentales para los derechos humanos. El autor argumenta que la Declaración Universal se basa
El documento describe las mejoras de XNA Game Studio 2.0, incluyendo nuevas características a nivel de plataforma y marco que lo han convertido en una de las plataformas más utilizadas para el desarrollo de aplicaciones 3D. Explica la estructura básica de cualquier proyecto XNA, dividida en inicialización, actualización y dibujado, y proporciona un ejemplo sencillo de cargar y mostrar un modelo 3D.
Una mujer de 38 años presentó dolor en la pierna izquierda progresivo. Exámenes revelaron esclerosis en la tibia izquierda. La resonancia magnética mostró esclerosis compatible con enfermedad de Ribbing. La paciente fue sometida a cirugía para fresar el hueso y aplicar un clavo, lo que mejoró su dolor. El estudio anatomopatológico confirmó el diagnóstico de enfermedad de Ribbing.
Este documento presenta una introducción al manual de PHP 5. Explica cómo las versiones anteriores de PHP 3 y 4 tenían limitaciones en su soporte de programación orientada a objetos. PHP 5 mejora significativamente este soporte para hacer de PHP un lenguaje apto para todo tipo de aplicaciones. También describe cómo instalar WAMP, un paquete que instala Apache, PHP 5, y MySQL de forma sencilla en Windows para comenzar a usar PHP 5 sin complicaciones.
Este documento describe las tecnologías .NET, C#, WPF y herramientas relacionadas. Brevemente:
1) .NET es el marco de trabajo de Microsoft para desarrollo multiplataforma, que incluye un entorno de ejecución común (CLR) y una amplia biblioteca de clases.
2) C# es el lenguaje de programación preferido para .NET, diseñado para superar problemas de Java.
3) WPF es un conjunto de librerías para crear interfaces gráficas ricas con XAML y separación de
Este documento describe los componentes JButton, JCheckBox y JRadioButton de Swing en Java. Explica que estos son algunos de los componentes más importantes y comúnmente usados en aplicaciones modernas. También discute la evolución de las interfaces gráficas de usuario en Java, incluyendo AWT y Swing, y las ventajas de Swing sobre AWT.
Este documento describe las características fundamentales de JavaScript. JavaScript es un lenguaje de scripting orientado a objetos que se ejecuta en los navegadores web para crear efectos interactivos. A diferencia de Java, JavaScript no requiere compilación y se interpreta directamente en el navegador. El documento también explica conceptos básicos como variables, tipos de datos, operadores, estructuras de control de flujo y funciones.
Este documento describe los componentes básicos de Java AWT como etiquetas, cuadros de texto y botones. Explica cómo crear y usar estos componentes mediante constructores, métodos y eventos para desarrollar interfaces gráficas de usuario simples como una calculadora básica.
El desarrollo de aplicaciones en diversas plataformas y lenguajes en una empresa, es un caso de uso muy común que se presenta a lo largo del tiempo. Así mismo, la necesidad de poder integrar los datos de estas diversas aplicaciones, muchas veces incompatibles entre si, lleva a la necesidad de desarrollar aplicaciones que se encarguen del intercambio de estos datos para lograr un consolidado de información que aporte valor a la empresa.
Al momento de diseñar este tipo de aplicaciones, es común el observar patrones una y otra vez. Dichos patrones han sido recopilados y documentados por Gregor Hohpe y Bobby Woolf en su libro "Enterprise Integration Patterns", en el cual ofrecen una visión completa y muy bien explicada de estos patrones, así como de una nomenclatura que se ha vuelto estándar para representar estos patrones.
Apache Camel es la implementación de la gran mayoría de los patrones propuestos por Gregor y Bobby para la plataforma Java y de manera OpenSource bajo licencia Apache 2.0. Apache Camel es una alternativa a diversas herramientas comerciales para realizar aplicaciones empresariales de integración de aplicaciones.
En la conferencia se mostraran los patrones mas comunes, su notación, diseño e implementación usando Apache Camel, de igual manera se mostrara la infraestructura necesaria para ejecutar Apache Camel, los mecanismos de monitoreo de aplicaciones desarrolladas con Camel y como se puede integrar con productos de integración como Brokers de Mensajería (JMS), Enterprise Service Bus (ESB) y servidores de aplicaciones clásicos.
Este documento presenta una introducción básica al lenguaje de programación PHP. Explica que PHP es un lenguaje interpretado de código abierto que se puede embeber en páginas HTML para crear sitios web dinámicos. Detalla los conocimientos previos recomendados, cómo instalar PHP, la sintaxis básica, tipos de datos, estructuras de control, funciones incorporadas y el uso de sesiones y objetos. El documento proporciona ejemplos de código PHP para ilustrar los diferentes conceptos.
JavaScript es un lenguaje de scripting interpretado que se usa para crear páginas web interactivas y dinámicas. Fue desarrollado originalmente por Netscape como una forma de agregar funciones interactivas a las páginas HTML. Aunque comparte algunas similitudes sintácticas con Java, son lenguajes diferentes. JavaScript se ejecuta en el navegador del cliente y permite modificar dinámicamente el contenido, estructura y estilo de una página web.
Este documento proporciona una introducción a PHP y MySQL. Explica brevemente el origen y desarrollo de PHP, cómo funcionan las páginas PHP, e instalación de PHP y MySQL. Luego cubre conceptos básicos como variables, operadores condicionales y ciclos en PHP, y el uso de tablas y vectores. Finalmente incluye ejemplos de código PHP simple.
El documento proporciona una introducción al entorno de desarrollo integrado Eclipse, describiendo sus características principales como la capacidad de crear proyectos de Java y editar código fuente, y explica conceptos como proyectos, paquetes, clases y archivos. También describe algunas de las herramientas de Eclipse como el Explorador de paquetes, la búsqueda de código y la depuración.
El documento presenta conceptos básicos sobre el lenguaje de programación PHP, incluyendo variables, operadores aritméticos y de comparación, sentencias condicionales y bucles. También cubre temas como el manejo de cadenas, funciones, envío y recepción de datos a través de formularios, y el envío de correos electrónicos.
Tutoriales - Explorando AWS con Java.
Aprende a descubrir los diferentes servicios que ofrece AWS para explotar por medio de Java a través de la capa gratuita.
Este documento contiene el portafolio de Amado Alejandro Ibarra Cervantes. Incluye 5 programas en Java con sus descripciones y códigos. También incluye actividades sobre editores de texto para Java, palabras reservadas en Java y tipos de datos.
Desarrollo de Aplicaciones Web II - Sesión 04 - Programación Orientada a ObjetosDidier Granados
Este documento presenta una discusión sobre la programación orientada a objetos. Explica algunos conceptos fundamentales como clases, objetos, atributos, métodos, encapsulamiento, herencia y polimorfismo. También describe cómo la programación orientada a objetos intenta modelar el mundo real representando entidades como objetos que tienen características y comportamientos.
Introducción al desarrollo de aplcaciones con WPF (Windows Presentation Foundation), la cual utiliza la tecnología XAML (eXtensible Application Markup Language), haciendo uso simple del patrón de diseño orientado a plataformas XAML y consumo de datos de una api publica. Aplicación de ejemplo desarrollada dentro de la presentación.
Este documento contiene el portafolio de un estudiante de programación. Incluye 7 actividades realizadas en Java que van desde imprimir números hasta calcular promedios de varios alumnos. También incluye una tabla comparativa de 8 editores de texto comúnmente usados para Java y una lista de palabras reservadas y tipos de datos en este lenguaje.
Este documento presenta una introducción a las interfaces gráficas de usuario (GUIs) en Java. Explica los diferentes tipos de aplicaciones Java, las bibliotecas GUI principales como AWT y Swing, y los conceptos básicos para crear GUIs como componentes, contenedores, layouts y manejo de eventos. También incluye información sobre la jerarquía de clases Swing y pasos para construir una interfaz.
Este documento proporciona una introducción a Swing y sus componentes. Explica qué es Swing y cómo se relaciona con JFC, las versiones que contienen el API Swing, y los paquetes Swing más comunes. También describe brevemente las diferencias entre los componentes Swing y AWT. Finalmente, incluye ejemplos de código de una aplicación Swing sencilla para ilustrar sus características.
Este documento presenta un análisis detallado de varios pasajes bíblicos y cómo estos anticipan los principios de los derechos humanos. Resalta que la Biblia promueve la dignidad humana, la justicia y la igualdad para todos, así como limitaciones al poder de los gobernantes. También muestra cómo historias como la de Abraham, David y Betsabé, y Rut enfatizan valores como la compasión por los vulnerables y la no violencia, que son fundamentales para los derechos humanos. El autor argumenta que la Declaración Universal se basa
El documento describe las mejoras de XNA Game Studio 2.0, incluyendo nuevas características a nivel de plataforma y marco que lo han convertido en una de las plataformas más utilizadas para el desarrollo de aplicaciones 3D. Explica la estructura básica de cualquier proyecto XNA, dividida en inicialización, actualización y dibujado, y proporciona un ejemplo sencillo de cargar y mostrar un modelo 3D.
Una mujer de 38 años presentó dolor en la pierna izquierda progresivo. Exámenes revelaron esclerosis en la tibia izquierda. La resonancia magnética mostró esclerosis compatible con enfermedad de Ribbing. La paciente fue sometida a cirugía para fresar el hueso y aplicar un clavo, lo que mejoró su dolor. El estudio anatomopatológico confirmó el diagnóstico de enfermedad de Ribbing.
Este poema describe la soledad y la búsqueda de amor de la autora. Expresa la distancia que siente de su familia y recuerdos del pasado. También habla de su deseo de encontrar a alguien para compartir su corazón, cuerpo y alma a través del amor y la intimidad física. El poema concluye celebrando haber encontrado a esta persona especial ahora, lo que le trae alegría, esperanza y un nuevo desafío en la vida.
El documento describe brevemente la historia del desarrollo de las computadoras desde la primera generación en la década de 1940 hasta la sexta generación actual. Comenzó con las primeras computadoras basadas en válvulas de vacío como la ENIAC. Luego vinieron las generaciones basadas en transistores, circuitos integrados y microprocesadores, lo que condujo al desarrollo de computadoras personales y supercomputadoras. Cada generación trajo avances en el tamaño, velocidad y capacidad de procesamiento de las computadoras.
Este documento describe un proyecto escolar sobre periféricos realizado por dos alumnos de tercer grado. El proyecto cubre periféricos de entrada, entrada y salida, y de salida para la materia de computación.
El documento explica qué es la inducción, cómo se realiza una inducción correctamente y los errores comunes que se cometen al inducir. La inducción es un razonamiento que va de lo particular a lo general para formular conclusiones probables a partir de la experiencia. Para inducir correctamente, se debe aclarar el concepto, diferenciar hechos de su interpretación, buscar relaciones entre los hechos, formular una conclusión tentativa y comprobarla con más observaciones para generar una generalización aplicable.
El documento presenta información sobre el personal de una empresa dividido por departamento, cargo y porcentaje de ventas totales. También incluye gráficos que muestran el porcentaje de ventas totales de perfumes mensualmente en 2011 y las ventas divididas por género.
Este documento describe los conceptos fundamentales relacionados con el procesamiento de datos. En primer lugar, define datos e información, y explica que los datos se convierten en información útil a través del procesamiento. Luego, describe las tres etapas del procesamiento de datos: entrada, proceso y salida. Finalmente, brinda una breve introducción a los componentes clave de un sistema de procesamiento de datos, incluidos los tipos de datos, el almacenamiento primario y secundario, y las bases de datos.
El documento presenta un análisis del consumo de energía eléctrica mensual en un hogar durante un año. Muestra las cifras de consumo por mes y un gráfico comparativo. Identifica los cinco aparatos que más energía consumen, liderados por los aparatos de refrigeración. Propone recortar el tiempo de uso de los aparatos de refrigeración a la mitad para reducir el consumo en un 50%, sin costo alguno.
La Unión Europea ha acordado un paquete de sanciones contra Rusia por su invasión de Ucrania. Las sanciones incluyen restricciones a las importaciones de productos rusos de alta tecnología y a las exportaciones de bienes de lujo a Rusia. Además, se congelarán los activos de varios oligarcas rusos y se prohibirá el acceso de los bancos rusos a los mercados financieros de la UE.
La globalización conduce a la homogenización cultural y educativa para adaptarse a las necesidades económicas. Esto ha llevado a una reestructuración de los sistemas educativos públicos con objetivos de productividad que benefician a unos pocos a costa de la pobreza de muchos. Las mujeres juegan un papel importante en la educación al apoyar a los maestros y pagar la educación privada, pero la globalización también ofrece oportunidades para promover la igualdad de género.
Este documento proporciona información sobre la actividad "Enreda Madrid", la cual busca mostrar la ciudad de Madrid en el siglo XVII a través de la tecnología y la cultura. Los participantes podrán experimentar la vida de diferentes personas de la época como un matrimonio noble, vecinos humildes o un cronista realizando un recorrido virtual y presencial. La actividad requiere dedicar 17 horas online y 8 horas presenciales para aprender sobre la historia y realizar un blog final.
Este documento define un subespacio vectorial y sus tres condiciones: 1) que incluya el vector cero, 2) que sea cerrado bajo suma, 3) que sea cerrado bajo multiplicación escalar. También indica que una ecuación lineal igualada a cero define un subespacio vectorial siempre que no contenga términos independientes o potencias. Como ejemplo, muestra que el conjunto {(x1, x2) | x1 + x2 = 1} no es un subespacio vectorial de R2 porque no incluye el vector cero.
El documento resume la historia del descubrimiento de planetas extrasolares. Explica que desde la antigüedad se ha especulado sobre la existencia de otros mundos más allá del sistema solar, pero no fue hasta 1995 que se confirmó el primer planeta extrasolar orbitando la estrella 51 Pegasi. Desde entonces, se han descubierto más de 120 planetas en otros sistemas mediante el método de velocidades radiales y tránsitos, aunque todos son gigantes gaseosos similares a Júpiter y no se ha encontrado ningún planeta terrestre. Actual
El documento discute los beneficios del aprendizaje colaborativo, en el que los estudiantes comparten sus ideas, dudas y crean conocimiento juntos en lugar de trabajar de forma individual. Explica que el aprendizaje colaborativo implica abordar problemas auténticos y complejos que requieren consultar a otros y trabajar en equipo. También señala que las plataformas virtuales y las herramientas sociales permiten nuevas formas de comunicación y trabajo colaborativo para mejorar los procesos de aprendizaje.
El documento discute el constructivismo como una corriente didáctica basada en la teoría del conocimiento constructivista. Propone que el aprendizaje es un proceso dinámico e interactivo donde el estudiante construye activamente nuevos conocimientos a partir de sus conocimientos previos, con la guía del maestro. Ve al estudiante como poseedor de conocimientos propios sobre los cuales desarrollar nuevos aprendizajes.
El documento describe una tarea para buscar información sobre "El papel de la fisioterapia en la prevención y el tratamiento de las lesiones deportivas" en al menos dos bases de datos internacionales. Identifica conceptos clave y traduce términos al vocabulario controlado DeCS. Une los términos con operadores booleanos para crear una estrategia de búsqueda y realiza búsquedas en Cinahl y SportDiscus, creando una alerta diaria en Cinahl para recibir actualizaciones.
Este documento proporciona un resumen de un tutorial sobre JavaFX. La primera parte describe las características clave de JavaFX como APIs de Java, FXML, WebView y soporte para gráficos 3D. También explica cómo ejecutar aplicaciones de ejemplo y crear nuevas aplicaciones JavaFX. La segunda parte cubre conceptos básicos sobre la arquitectura de JavaFX y sus APIs.
JavaFX es una plataforma de software desarrollada por Sun Microsystems para crear aplicaciones ricas de internet que pueden ejecutarse en escritorios, dispositivos móviles y otros dispositivos. El documento introduce JavaFX, su entorno de desarrollo NetBeans y algunas de sus características como efectos visuales en 3D, efectos fotográficos y reproducción de video. También menciona ejemplos de aplicaciones como un cliente de Twitter y proporciona enlaces para obtener más información.
Este documento describe varias tecnologías para el desarrollo de aplicaciones web como AJAX, JavaScript, JSP, servlets y JSF. Explica que AJAX permite actualizar partes de una página web sin recargar la página completa mediante comunicación asíncrona con el servidor. JSP y servlets permiten crear páginas web dinámicas usando Java como lenguaje de programación. JSF es un framework MVC que provee componentes para crear interfaces gráficas usando objetos Java como modelo y métodos como controladores.
El documento explica los diferentes tipos de descargas de Java que están disponibles en la página de Sun, incluyendo JRE para ejecutar aplicaciones Java, SDK para crear y compilar aplicaciones, y SDK+NetBeans para desarrollar aplicaciones con un entorno de desarrollo integrado. También describe los pasos para instalar Java y configurar las variables de entorno PATH y CLASSPATH para ejecutar aplicaciones Java desde cualquier carpeta del sistema.
El documento explica los requisitos para instalar Java, incluyendo JRE para ejecutar aplicaciones Java existentes, SDK para crear y compilar aplicaciones, y Netbeans como entorno de desarrollo integrado. También describe cómo configurar las variables de entorno PATH y CLASSPATH para ejecutar aplicaciones Java desde cualquier carpeta del sistema.
Un applet es un programa Java pequeño que se ejecuta en una página web. Para crear un applet, se extiende la clase Applet e incluye código para dibujar en la pantalla usando la clase java.awt. Los applets están limitados en lo que pueden hacer para garantizar la seguridad del usuario.
Este documento describe JavaFX, una plataforma para crear aplicaciones ricas de internet (RIA) que pueden ejecutarse en múltiples dispositivos. JavaFX permite incorporar video, imágenes y efectos 3D, y su lenguaje declarativo facilita el desarrollo de interfaces gráficas de usuario. El documento también menciona ejemplos de aplicaciones como un reproductor de video y directorios de contactos creados con JavaFX.
El documento habla sobre las API en Java. Explica que las API dan a los programadores la habilidad de desarrollar aplicaciones Java mediante el uso de clases predefinidas. También discute los frames en Java, que son contenedores para componentes visuales, y los sockets, que permiten la comunicación entre procesos en redes diferentes.
Java es un lenguaje de programación creado por Sun Microsystems en 1995 que se ejecuta en más de 850 millones de ordenadores personales y miles de millones de dispositivos. Java es gratuito, rápido, seguro y fiable, y se usa en una amplia variedad de aplicaciones y sitios web. Al descargar el software de Java, los usuarios obtienen el Entorno de tiempo de ejecución de Java (JRE), que incluye la Máquina virtual de Java (JVM) necesaria para ejecutar aplicaciones Java.
Java puede ser compilado e interpretado. El código Java se compila a bytecode que es independiente de la plataforma e interpretado por la Máquina Virtual de Java (JVM) específica de cada plataforma. Esto hace que Java sea multiplataforma. El Kit de Desarrollo de Java (JDK) contiene herramientas para compilar y ejecutar código Java y se debe configurar mediante las variables de entorno PATH y CLASSPATH.
Este documento introduce Java y sus elementos básicos. Explica que Java puede usarse para crear aplicaciones y applets, resume brevemente la historia y desarrollo de Java, y describe cómo crear, compilar y ejecutar un programa simple en Java. También identifica elementos comunes en los lenguajes de programación como palabras reservadas, identificadores, signos de puntuación y operadores.
Java es un lenguaje de programación orientado a objetos y concurrente diseñado para tener pocas dependencias de implementación. Permite escribir el código una vez y ejecutarlo en cualquier dispositivo, lo que facilita el desarrollo de aplicaciones multiplataforma. El documento presenta un ejemplo básico de código Java con dos clases, Deposito y Main, que ilustra el uso de campos, constructores, métodos y la palabra clave this.
Java es un lenguaje de programación orientado a objetos, multiplataforma e interpretado. Se compila a bytecode que es ejecutado por la máquina virtual de Java (JVM) en cualquier sistema operativo. El documento explica cómo descargar e instalar el kit de desarrollo Java (JDK) y el entorno de desarrollo integrado NetBeans, y cómo crear y ejecutar un programa Hola Mundo de consola en Java usando este IDE.
Este documento presenta un curso de Java que enseña desde los fundamentos hasta realizar conexiones con bases de datos MySQL. El curso explica los elementos básicos del lenguaje Java y crea una aplicación de escritorio de ejemplo que se conecta a MySQL para mostrar datos en tablas. El objetivo es explicar lo esencial de Java y crear una aplicación funcional que sirva como guía para aprender.
Este documento presenta un curso de Java que enseña desde los fundamentos hasta la conexión a bases de datos MySQL. Explica los objetivos del curso, que son enseñar los elementos esenciales del lenguaje Java y crear una aplicación de escritorio que se conecte a MySQL. También describe la metodología del curso, que es explicar la sintaxis básica de Java y luego crear una aplicación de ejemplo paso a paso.
Este documento explica qué es RMI (Invocación de Métodos Remotos) en Java y provee un ejemplo sencillo de su implementación. RMI permite que un programa Java invoque métodos de objetos que se ejecutan en otro equipo de forma remota. El ejemplo consiste en un servidor y un cliente: el servidor exporta un objeto que recibe mensajes, y el cliente puede enviar mensajes al servidor invocando el método remoto de ese objeto.
Java es un lenguaje de programación orientado a objetos, dinámico y simple de aprender. Permite crear aplicaciones independientes y applets, que son pequeños programas que se ejecutan en páginas web. Las applets tienen ventajas como ser multiplataforma, soportadas por la mayoría de navegadores, y poder acceder a recursos del sistema si el usuario lo permite.
Se trata de una de las herramientas de desarrollo incluidas en el JDK. Realiza un análisis de sintaxis del código escrito en los ficheros fuente de Java (con extensión *.java). Si no encuentra errores en el código genera los ficheros compilados (con extensión *.class).
Java es un lenguaje de programación y plataforma que permite el desarrollo de aplicaciones para la web y dispositivos móviles. A diferencia de JavaScript, Java no solo se ejecuta en el navegador sino que también permite crear aplicaciones más complejas. Muchos sitios y aplicaciones requieren Java para funcionar correctamente. Java es rápido, seguro y compatible con múltiples plataformas, lo que lo hace popular entre los desarrolladores.
Java es un lenguaje de programación orientado a objetos diseñado para ser independiente de la plataforma. Se compila a bytecode que puede ejecutarse en cualquier máquina virtual Java sin importar la arquitectura subyacente, permitiendo "escribir una vez y ejecutar en cualquier lugar". Originalmente fue desarrollado por James Gosling en Sun Microsystems y se ha convertido en uno de los lenguajes más populares, particularmente para aplicaciones web de cliente-servidor.
Imágenes de la entrega de los Premios al Trabajo Autónomo de Navarra y de la II Feria del Trabajo Autónomo de Navarra, celebrado en Baluarte los días 28 y 29 de septiembre de 2019
Jornada Energy Trends-ciudades inteligentes-ZabalaCein
Jornada “Energy Trends” (CEIN, 25 de noviembre de 2015). WORKSHOP. Renovables y ciudad. Francisco Javier Fernández (Kunak), Javier Urricelqui (Up Technologies), Daniel Ruiz (Txita Txirrindak), David Astráin (Instituto Samart Cities, UPNA), Florencio Manteca (CENER). Modera: Juan Cristóbal García ( Zabala Innovation Consulting).
Jornada “Energy Trends” (CEIN, 25 de noviembre de 2015). NUEVAS INICIATIVAS EN RENOVABLES. Retos Tecnológicos en los siguientes cinco años. Eduardo Aznar. Director de Desarrollo de Negocio. CENER (Centro Nacional de Energías Renovables)
Jornada “Energy Trends” (CEIN, 25 de noviembre de 2015). SHOWROOM. Presentaciones sobre el ecosistema emprendedor innovador de Navarra con impacto en el campo de las renovables a cargo de startups, grupos de investigación, universidad y centros tecnológicos.
Jornada “New Industry” (CEIN, 28 de octubre de 2015). SHOWROOM. Presentaciones sobre el ecosistema emprendedor innovador de Navarra con impacto en el campo de la mecatrónica a cargo de startups, grupos de investigación, universidad y centros tecnológicos.
Jornada “New Industry” (CEIN, 28 de octubre de 2015). NUEVOS MODELOS DE NEGOCIO EN LA INDUSTRIA 4.0. Modelos y oportunidades de negocio en la era digital industrial. Guillermo Gil. Emerging Businesses. TECNALIA.
Luis gabilondo gobierno de navarra-Jornada Biomed XXICein
Este documento describe las tensiones a las que se enfrentan los sistemas sanitarios como el aumento del gasto, la demografía y las enfermedades crónicas. También analiza la evolución del concepto de necesidad sanitaria y las necesidades cubiertas frente a las potenciales. Finalmente, señala que es probable que la distancia entre la oferta y la demanda sanitaria continúe aumentando debido al crecimiento de la demanda y los recursos limitados.
Juan ramón de la torre aditech-Jornada Biomed XXICein
NUEVOS MARCOS DE COLABORACIÓN CIENCIA/EMPRESA/ADMINISTRACIÓN. Entorno tecnológico en Navarra. Juan Ramon de la Torre. Director científico y tecnológico de ADITECH Corporación Tecnológica.
María rosario luquin idisna-Jornada Biomed XXICein
NUEVOS MARCOS DE COLABORACIÓN CIENCIA/EMPRESA/ADMINISTRACIÓN. Modelos de colaboración para la generación de valor añadido en la investigación sanitaria. María Rosario Luquin. Directora científica de IDISNA (Instituto de Investigación Sanitaria de Navarra).
Este documento presenta:
1) Una jornada sobre agronegocios y emprendimiento celebrada en CEIN el 12 de mayo de 2015. 2) La industria agroalimentaria navarras y el Plan Moderna. 3) Tendencias en el procesado y transformación de la leche. 4) Información sobre CEIN y los servicios que ofrece a empresas agroalimentarias.
Sodena y CEIN. ORIZONT. Construye una propuesta ganadoraCein
Este documento describe el proyecto Orizont, una nueva aceleradora de startups agroalimentarias creada por SODENA para impulsar proyectos innovadores en Navarra. Orizont ofrece a las startups un programa de aceleración de 6 meses que incluye financiación, oficinas, asesoramiento y acceso a instalaciones. El objetivo es crear más de 30 empresas en 5 años, atraer compañías externas y generar 200 puestos de trabajo.
Luis Goñi (Fundación MODERNA). Financiación de la innovación en agroalimentaciónCein
Este documento describe varias herramientas de financiación del Plan Moderna para proyectos agroalimentarios innovadores en fase inicial como proyectos semilla, start-ups o de desarrollo. El Plan Moderna ofrece financiación a medida para cada tipo de empresa con la participación de inversores institucionales, industriales, entidades financieras y business angels. El Plan también proporciona apoyo no financiero para proyectos con un plan de negocio sólido pero que carecen de gestión, contactos o acceso al mercado.
Carlos Franco (CDTI). Financiación de la innovación en agroalimentaciónCein
Financiación de la innovación en agroalimentación (CDTI). Ponencia de Carlos Franco (División Promoción de CDTI) en la jornada "Agrofuture&Ventures", celebrada en CEIN el 12 de mayo de 2015
Alberto Moratial (ENISA). Financiación de la innovación en agroalimentaciónCein
Financiación de la innovación en agroalimentación (ENISA). Ponencia de Alberto Moratiel, coordinador Relaciones Institucionale de ENISA, en la jornada "Agrofuture&Ventures", celebrada en CEIN el 12 de mayo de 2015
Victoria Iriarte (Sodena). Financiación de la innovación en agroalimentaciónCein
Financiación de la innovación en agroalimentación (Sodena). Ponencia de Victoria Iriarte, gerente de proyectos de Sodena, en la jornada "Agrofuture&Ventures", celebrada en CEIN el 12 de mayo de 2015
María Arbeloa (Gobierno de Navarra). Financiación de la innovación en agroali...Cein
Financiación de la innovación en agroalimentación (Gobierno de Navarra). Ponencia de María Arbeloa, (Sección de Diversificación Rural del Departamento de Desarrollo Rural, Medio Ambiente y Administración local del Gobierno de Navarra) en la jornada "Agrofuture&Ventures", celebrada en CEIN el 12 de mayo de 2015
Jorge Fernández (Planasa). INSPIRING SESSION. La anticipación y la I+D+i en l...Cein
INSPIRING SESSION. La anticipación y la I+D+i en la agroindustria agrotech. Ponencia de Jorge Fernández, director Industrial de Planasa, en la jornada "Agrofuture&Ventures", celebrada en CEIN el 12 de mayo de 2015
Jorge Fernández (Planasa). INSPIRING SESSION. La anticipación y la I+D+i en l...
Cesnavarra 2009-boletín 10
1. Título Introducción a JavaFX
Texto En éste artículo del boletín de septiembre se habló sobre los mashups, para
este mes, estaba pensando continuar desarrollándolo mostrando cómo hacer
un mashup con Yahoo pipes o con Morfeo EzWeb, pero el otro día leí
un artículo muy interesante en el que se creaba un mashup
con JavaFX Script y pensé que era interesante probarlo. Sin embargo, antes
de empezar a hablar de cómo se puede utilizar JavaFX para crear Mashups,
es importante conocer de qué se habla cuando este nombre se menciona.
JavaFX es un framework que presentó Sun en el JavaOne de 2007 y que
pretende introducir a Sun en el mercado de las RIAs (Rich Internet
Application) compitiendo contra Adobe Flex o Microsoft
SilverLight. Actualmente está en la versión 1.2 y se contemplan dos
vertientes, la Script y la Mobile, referidas a la ejecución de JavaFX en
ordenadores (ya sea como applet dentro del navegador, widget o como un
aplicación de escritorio) o en dispositivos móviles (teléfonos móviles,
pdas…) respectivamente. Para poder utilizar JavaFX 1.2 se necesita tener
instalado en el dispositivo en el que se vaya a ejecutar al menos la versión
1.6.13 de Java. Entre otras cosas, el uso de esta versión aporta que se
puedan ejecutar applets fuera del navegador, independientemente del mismo,
lo cual puede ser una gran ventaja en el caso de que uno funcione mal, pues
el resto de applets de una misma página Web podrán seguir ejecutándose.
Pero, ¿qué ventajas ofrece JavaFX? ¿Por qué se querría utilizar? Algunos
de los motivos podrían ser:
Perfil común. JavaFX está basado en el concepto de
un “perfil común” que pretende abarcar todos los
dispositivos soportados por JavaFX. Este acercamiento
hace posible a los desarrolladores usar un modelo
común de programación mientras está construyendo
una aplicación dirigida tanto para dispositivos móviles
como dispositivos de escritorio y compartir bastante
código, recursos gráficos y contenido entre las
versiones de escritorio y móvil. Para tratar la
necesidad de ajustar las aplicaciones a las necesidades
específicas de las clases de dispositivos, desde la
plataforma JavaFX 1.1 se incluyen APIs que son
específicas para escritorio o móvil. Por ejemplo, el
perfil Desktop de JavaFX incluye Swing y efectos
visuales avanzados.
Arrastrar para instalar. Desde el puto de vista del
usuario final “Drag-to-Install” permite arrastrar
un widget JavaFX o aplicación residente en un sitio
web dentro de la ventana del navegador y soltarlo en
su escritorio. La aplicación no perderá su estado o
contexto incluso si el navegador se cierra. Una
aplicación también puede volver a ser relanzada
clicando en un atajo que se crea automáticamente en
2. el escritorio del usuario. Este comportamiento está
permitido por el mecanismo de los applets de Java y
es aprovechado por JavaFX usando la capa Java
subyacente. Sun vende “Drag-to-Install” como una
apertura para un nuevo modelo de distribución y
permitiendo a los desarrolladores a “desprenderse del
navegador”.
Integrar gráficos (imágenes) creados con
herramientas de terceros. JavaFX incluye un
conjunto de plug-ins para Adobe Photoshop e
Illustrator que permiten que gráficos avanzados sean
integrados directamente en aplicaciones JavaFX. Los
plug-ins generan código JavaFX Script que preserva
capas y estructura de los gráficos. Los desarrolladores
pueden entonces añadir fácilmente animación o
efectos a los gráficos estáticos importados. Hay
también una herramienta de conversión de gráficos
SVG (también conocido como Media Factory) esto
permite importar gráficos y previsualizar recursos
después de convertirlos al formato JavaFX.
A la hora de ponerse a escribir código de JavaFX, antes de aprender la
sintaxis del mismo, es conveniente contar con las herramientas
adecuadas. En principio es suficiente contar con una herramienta tipo bloc
de notas que no te enriquece el texto ni añade caracteres extraños y permite
incluir cualquier tipo de extensión y además de esto será necesario
descargarse el SDK de JavaFX para poder compilar las
aplicaciones. Desde aquí, se podrá descargar tanto el SDK como la última
versión del Entorno de Desarrollo NetBeans con JavaFX o el plug-in para
el IDE Eclipse. Es recomendable el uso de cualquiera de estos dos entornos
de desarrollo puesto que ofrecen ventajas frente al hecho de simplemente
contar con un editor de texto normal. Básicamente la posibilidad de
compilar, ejecutar el código o depurarlo o encontrar los fallos del mismo de
manera más inmediata.
Una vez conocidas estas ventajas que ofrece JavaFX para el desarrollo de
aplicaciones y que ya se sabe con qué podemos desarrollar programas, es
conveniente comenzar a acercarse al lenguaje. En JavaFX en vez de
programas se escriben Scripts, es decir, es un lenguaje declarativo de script
estáticamente tipado. Los tipos primitivos que se emplean en Java FX son:
Boolean: booleanos: java.lang.Boolean,
Integer: números enteros de 32 bit:
java.lang.Integer,
Number: números en punto flotante con doble
precisión: java.lang.Double,
String: cadenas de caracteres: java.lang.String,
Duration: se emplea en animaciones:
3. java.lang.Duration.
Aunque al contrario que los tipos primitivos de Java, todos ellos son objetos.
Como en otros lenguajes de script, el tipo String de JavaFX soporta
expresiones embebidas de JavaFX empleando llaves ({}). JavaFX además
soporta el formateo de expresiones embebidas JavaFX en strings mediante el
uso de especificadores de formato. JavaFX no soporta Strings multi-línea
como otros lenguajes de script lo hacen. Sin embargo, para facilitar la
representación de Strings demasiado largos y Strings multi-línea, JavaFX
soporta concatenación de expresiones de String adyacentes.
Para el tipo Duration, JavaFX soporta literales de tiempo, que son evidentes
en sí mismos en forma y significado, por ejemplo, 1h representa 1 hora, 1s 1
segundo o 5m 5 minutos. Esto se emplea sobre todo para especificar
duraciones para los efectos de animación.
Por otra parte, en JavaFX se elimina el uso del patrón listener, para ello se
cuenta con el operador bind que permite que el contenido dinámico pueda
ser expresado declarativamente. La dependencia se basa en la evaluación de
cualquier expresión y en su actualización automáticamente sin falta de usar
el patrón listener. Así por ejemplo, si queremos hacer la típica primera
aplicación que aparece en todos los cursos de programación, el Hello
World!, en JavaFX se deberá hacer:
1. Crear un nuevo proyecto vacío JavaFX con Eclipse o
NetBeans.
2. Si se desea que el código esté dentro de un paquete,
en Eclipse se deberá crear el paquete después de
haber creado el proyecto, en NetBeans no hace falta
puesto que lo crea directamente al crear el proyecto.
3. Después se creará un Empty JavaFX Script.
4. En el script JavaFX se incluirá las siguientes líneas de
código:
package com.cein.hello;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.effect.Reflection;
/**
* @author blacubcru
*/
Stage {
title: "Hello World!!"
width: 305;
4. height: 330;
visible: true
scene: Scene {
content: [
Rectangle {
x: 25; //Posición X
y: 25; //Posición Y
width: 250; //Anchura del rectángulo
height: 250; //Altura del rectángulo
// Para redondear las esquinas se
emplea
// arcWidth y arcHeight
arcWidth: 25;
arcHeight: 25;
stroke: Color.BLACK; //Color de borde
// Se añade un gradiente lineal al
rectángulo
fill: LinearGradient {
startX: 0.0,
startY: 0.0,
endX: 0.0,
endY: 1.0,
proportional: true
stops: [
Stop {
offset: 0.0
color: Color.THISTLE
},
Stop {
offset: 1.0
color: Color.ORCHID
}
]
} // fill
}, // Rectangle
Text {
x: 40
y: 150
content: "Hello World!";
font: Font {
size:40;
name:"DirtyBakersDozen";
};
// Se añade un relleno basado en un
gradiente
// Lineal a la fuente
fill: LinearGradient {
startX: 0.0,
startY: 0.0,
endX: 1.0,
endY: 0.0,
proportional: true
stops: [
Stop {
offset: 0.0
color:
Color.LIGHTSLATEGREY
},
Stop {
offset: 1.0
color:
5. Color.STEELBLUE
}
]
} // fill
// (Se añade un reflejo al texto)
effect: Reflection {
fraction: 1.0,
topOpacity: 0.7,
topOffset: 5,
}
} // Text
] // content
fill: Color.BLACK;
}
}
Y al ejecutarlo esto nos mostrará:
Figura 1. Aplicación Hello World en JavaFX
Para ver el efecto del uso de bind, se modificará la aplicación para que saque
Hello X! donde X será el nombre que se introduzca en un control de texto.
package com.cein.hello;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.effect.Reflection;
import javafx.scene.control.TextBox;
/**
6. * @author blacubcru
*/
//Variable en la que se recoge el valor del cuadro de texto.
var txName:String = bind "Hello {tbInput.text}!";
//Caja de texto en la que se pone el nombre
var tbInput:TextBox = TextBox {
text:"World";
editable: true;
layoutX: 40;
layoutY: 230;
};
Stage {
title: "Hello World Binded!!"
width: 305;
height: 330;
visible: true
scene: Scene {
content: [
Rectangle {
x: 25; //Posición X
y: 25; //Posición Y
width: 250; //Anchura del rectángulo
height: 250; //Altura del rectángulo
// Para redondear las esquinas se
emplea
// arcWidth y arcHeight
arcWidth: 25;
arcHeight: 25;
stroke: Color.BLACK; //Color de borde
// Se añade un gradiente lineal al
rectángulo
fill: LinearGradient {
startX: 0.0,
startY: 0.0,
endX: 0.0,
endY: 1.0,
proportional: true
stops: [
Stop {
offset: 0.0
color: Color.THISTLE
},
Stop {
offset: 1.0
color: Color.ORCHID
}
]
} // fill
}, // Rectangle
Text {
x: 40
y: 150
// El contenido se liga a la variable
txName.
// Si no se usara bind entonces no
cambiaría
// el valor mostrado.
content: bind txName;
7. font: Font {
size:40;
name:"DirtyBakersDozen";
};
// Se añade un relleno basado en un
gradiente
// Lineal a la fuente
fill: LinearGradient {
startX: 0.0,
startY: 0.0,
endX: 1.0,
endY: 0.0,
proportional: true
stops: [
Stop {
offset: 0.0
color:
Color.LIGHTSLATEGREY
},
Stop {
offset: 1.0
color:
Color.STEELBLUE
}
]
} // fill
// (Se añade un reflejo al texto)
effect: Reflection {
fraction: 1.0,
topOpacity: 0.7,
topOffset: 5,
}
}, // Text
tbInput //Se incluye el cuadro de texto
] // content
fill: Color.BLACK;
}
}
Y esto da como resultado al ejecutarlo:
8. Figura 2. Aplicación Hello World Binded en JavaFX
ENLACES DE INTERÉS:
http://javafx.com/
http://en.wikipedia.org/wiki/JavaFX
http://es.wikipedia.org/wiki/JavaFX
http://en.wikipedia.org/wiki/JavaFX_Script
http://en.wikipedia.org/wiki/JavaFX_Mobile
http://onjava.com/pub/a/onjava/2007/07/27/introduct
ion-to-javafx-script.html
http://www.javaworld.com/javaworld/jw-11-2008/jw-
11-jump-into-jfx-1.html
http://www.javaworld.com/javaworld/jw-12-2008/jw-
12-jump-into-jfx-2.html
http://www.javaworld.com/javaworld/jw-02-2009/jw-
02-javafx-fights-flash.html
http://java.sun.com/developer/technicalArticles/javafx
/mobile/
http://java.sun.com/javafx/1/tutorials/core/
http://www.ibm.com/developerworks/web/library/wa-
9. javafx/index.html
http://javafx.com/docs/tutorials/mediabrowser/module
3_task1.jsp
http://arstechnica.com/old/content/2008/12/hands-
on-building-rich-internet-apps-with-javafx-1-0.ars
http://today.java.net/pub/a/today/2009/02/17/javafx-
http-networking-and-xml-parsing.html
http://weblogs.java.net/blog/caroljmcdonald/archive/2
009/02/javafx_restful_1.html
http://www.javafx.com/samples/Tweeter/index.html
http://blogs.sun.com/clarkeman/entry/javafx_1_0_an
other_improvment
http://www.javapassion.com/javafx/
http://java.sun.com/javafx/1/reference/system-
requirements-1-2.html#javafxsdk
Catego CES OpenSouce/Java
rías
Tema Desarrollo
Autor Blanca Cubas Cruz
Mes Octubre
Año 2009
Boletí 10
n
Títu Ejecutando Linux en Windows sin virtualizar
lo
Tex Hará unos meses ciertos cambios me llevaron a tomar la decisión de migrar
to mi sistema operativo (Ubuntu) a Windows.
No obstante, no deseaba perder el contacto con el sistema operativo Linux,
así que deseaba encontrar una forma de mantenerlo. Las opciones que tenía
conocía eran:
Arranque dual:
o Pros: no es virtualizado y por tanto, usa toda la capacidad del
ordenador (a excepción del disco duro).
o Cons: necesidad de arrancar el ordenador en un sistema u otro, de
forma alterna, no simultánea.
Virtualización:
10. o Pros: posibilidad de trabajar de forma simultánea en ambos
sistemas operativos, Linux y Windows.
o Cons: compartición de la potencia del ordenador, y del disco duro.
Además, a pesar de poder trabajar de forma simultánea, puede
resultar incómodo para el día a día.
Ninguna me acababa de convencer, hasta que encontré coLinux. Según su
página web “…Cooperative Linux is the first working free and open source
method for optimally running Linux on Microsoft Windows natively. More
generally, Cooperative Linux (short-named coLinux) is a port of the Linux
kernel that allows it to run cooperatively alongside another operating system
on a single machine. For instance, it allows one to freely run Linux on
Windows 2000/XP/Vista/7, without using a commercial PC virtualization
software such as VMware, in a way which is much more optimal than using
any general purpose PC virtualization software…”
En este artículo describiré el proceso que seguí en su día para
instalar coLinux, aunque es posible que algunas cosas puedan haber
cambiado desde entonces.
Con posterioridad, descubrí andLinux, que mencionaré por encima al final
del artículo. Una herramienta software basada en coLinux con imágenes de
Ubuntu totalmente pre-configurado con todo lo necesario.
coLinux
1 – Descarga e instalación
Vamos a la página de descargas de
coLinux, http://sourceforge.net/projects/colinux/files/, y obtenemos la
última versión estable del ejecutable coLinux.
En su día, la instalación requería de la herramienta WinPCap ( una utilidad
para realizar bridge networking en windows). Ahora, parece que la propia
instalación lo trae de “serie”, así que es posible que no sea necesario
instalarlo a parte.
Durante la instalación, también nos da la opción de descargar una imagen
de Linux (tan solo la descarga, no configura coLinux para su uso), pero es
opcional. Siempre podemos descargarnos la imagen de una distribución
Linux, comprimida en formato 7z, a nuestra elección, desde la misma página
de descargas del proyecto. En realidad, tan solo se trata de un sistema de
ficheros con un sistema Linux pre-instalado. Siempre podemos partir de un
sistema de ficheros vacío e instalar la distribución que queramos, aunque
esto requierirá conocimientos más avanzados.
Yo descargué, por recomendación, una imagen de debian 4.0.
2- Configuración
La parte más compleja de configurar y la más importante, quizás sea las
conexiones de red.
coLinux recomienda configurar dos redes de conexión entre el sistema
operativo huésped (en mi caso Windows) y la imagen coLinux (en mi caso
11. debían). Una para la conexión de coLinux a Internet que le da salida a través
de la tarjeta Ethernet. Y otra para la interconexión rápida entre la sistema
operativo huésped y la imagen de coLinux para el servidor gráfico, sin el uso
de la tarjeta Ethernet, y así no sobrecargarla.
coLinux ofrece varias opciones de conexión: Tap, WinPCap y Slirp.
En mi caso, configuré WinPCap para la conexión entre debían e Internet a
través de la tarjeta Ethernet por ser la recomendada y la más sencilla, y TAP
para la conexión rápida entre debian yWindows.
Antes de arrancar la máquina debían para configurar la red, vamos a
realizar algunos cambios necesarios en la configuración de las
conexiones Windows:
No es necesario pero modifiqué los nombres de las conexiones para
poder identificarlas fácilmente.
Por defecto, coLinux crea una conexión Tap. Yo establecí la siguiente
red interna debian-Windows: 10.10.10.0/24. Reservando la
10.10.10.1 para la IP de Windows y 10.10.10.2 para debian.
Modificamos las opciones del firewall para que permita todas estas
conexiones, en caso contrario tendremos que ejecutar coLinux como
administrador.
A continuación, toca configurar coLinux para que use la imagen descargada,
debian 4.0.
Descomprimimos la imagen dentro del directorio donde se ha instalado
coLinux.
Dentro del directorio de instalación de coLinux, existe un fichero ejemplo de
configuración llamado example.conf que usamos como punto de partida
para el nuestro. Lo copiamos y le damos el nombre de debían.conf.
Editamos el fichero y ajustamos los siguientes parámetros:
El parámetro cobd define las rutas a las particiones. Se van
numerando 0,1,2, etc y puede haber tantas como se desee.
El parámetro cobd0 es la principal, que debe apuntar al lugar donde
se encuentra nuestra imagen fs de debian.
El parámetro cobd1 es la ruta de la siguiente partición. En nuestro
caso, será la swap. Es opcional, y en el caso de la imagen descargada
de debían, venía sin ella. No obstante, se puede descargar
desde http://gniarf.nerim.net/colinux/swap. En realidad, son ficheros
vacios con el tamaño de swap que queremos. Posteriormente, una
vez arrancado coLinux, deberemos configurarlo para que la use.
El parámetro eth, establece las conexiones de coLinux. Y al igual que
en caso anterior, también puede haber tantas como se quiera.
El parámetro eth0 define la primera conexión. En nuestro caso será
la de acceso al mundo exterior, Internet, y será a través de WinPCap.
Debemos proporcionar el nombre indentificativo de la conexión le
hemos dado en Windows (de ahí que las haya renombrado
anteriormente). Esto es, eth0: winpcap,
nombre_conexión_windows
Con el parámetro eth1 definimos la conexión interna, mediante TAP,
entre debian y Windows. Por tanto, eth1: tap,
nombre_conexión_windows.
12. Ahora, ya podemos ejecutar coLinux (si no hemos configurado el firewall,
tendremos seguramente que hacerlo como administrador) para terminar de
configurarlo, indicando el fichero de configuración que hemos definido para
debian:
colinux-daemon.exe –t nt @debian.conf
Según indican en la wiki de colinux, las contraseñas son en “blanco” para las
imágenes con kernel 2.4 y “root” para las imágenes con kernel 2.6. En el
caso de nuestra imagen debían accedemos como usuario root y contraseña
root.
Una vez dentro, primero configuramos la swap que hemos definido antes:
Asumimos que la swap está en /dev/cobd1
Añadimos la entrada en /etc/fstab:
/dev/cobd1 swap swap defaults 0 0
Iniciámos la partición swap con:
mkswap /dev/cobd1
Finalmente, para no tener que reiniciar la máquina, ejecutamos:
run swapon -a
A continuación, seguimos con la configuración de red:
Editamos /etc/network/interfaces:
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
ip 10.10.10.2
netmask 255.255.255.0
Y reiniciamos la red:
/etc/init.d/network restart
En principio, la máquina ya está lista. En mi caso, además instalé una serie
de paquetes adicionales:
Preparamos el teclado, por defecto en USA, para soportar más
idiomas:
apt-get install console-data
apt-get install console-tools
apt-get install kbd
Y lo configuramos a nuestro gusto:
dpkg-reconfigure console-data
Ahora, pasamos a realizar el último paso, la comunicación gráfica debían-
Windows:
Instalamos las X en debían para el entorno gráfico:
apt-get update
13. apt-get install xserver-xfree86
apt-get install xfce4
Hay varios servidores de X en windows para el entorno gráfico,
nosotros instalaremos y usaremos Xming por ser open source y en
principio el más sencillo.
En Windows establecemos el display donde se visualizarán las
aplicaciones:
SET DISPLAY=10.10.10.1:0.0
En debían exportamos el display al que hemos fijando en Windows:
Export DISPLAY=10.10.10.1:0.0
Podemos añadir esta instrucción al /etc/profile para no ejecutarla
con cada sesión.
Por último, en debían, habilitamos la conexión gráfica desde cualquier
máquina, en nuestro caso Windows:
Xhost +
Y estos han sido todos los pasos necesarios, ahora podremos ejecutar
aplicaciones Linux como si fuesen nativas en Windows sin falta de usar
ninguna virtualización.
AndLinux
No pasaré a describir el proceso de instalación porque, como se puede ver
en su página web, es trivial.
En la sección de downloads, se puede observar que andLinux está preparado
para funcionar con una versión de escritorio XFCE y con KDE pero no con
GNOME, aunque con posterioridad no habría más que instalarla sobre
Ubuntu si así lo deseamos.
Dejar que la distribución vea, pueda leer/escribir, nuestro disco o
discos.
Esta última parte no la he comprobado, pero he creído interesante añadirla.
Consiste en configurar la imagen coLinux para que pueda acceder al disco
duro de la máquina huesped.
Para eso, en nuestro debían.conf debemos añadir lo siguiente:
Cofs0=c:
O ejecutar coLinux de la siguiente manera:
colinux-daemon.exe –t nt @debian.conf cofs0=c:
Por último, en debían, debemos montar esta nueva partición:
Asumimos que la swap está en /dev/cofs0
14. Creamos el directorio donde vamos a montar el disco:
mkdir /mnt/c
Añadimos la entrada en /etc/fstab:
cofs0 /mnt/c cofs defaults 0 0
O esta otra opción si queremos dar acceso completo:
cofs0:Share /mnt/c cofs defaults 0 0
Screenshoots
Aquí podemos ver algunas imágenes bastante ilustrativas de cuál sería el
resultado.
15.
16. Cat CES OpenSouce/Java
ego
rías
Tem Varios
a
Aut Raúl Sanz de Acedo
or
Mes Octubre
Año 2009
Bol 10
etín
Título ¿Para qué necesitan las empresas la supercomputación?
Texto Andrés Gómez Tato, del CESGA, en su charla ofrecida durante
la Semana Internacional de la Computación, nos comentó
cómo las empresas pueden utilizar la supercomputación y las
dudas que éstas plantean ante dicha tecnología.
La supercomputación se puede utilizar para cualquier cosa
que se pueda modelizar matemáticamente. Por ejemplo se
modelizó el mercado inmobiliario en Estados Unidos y Reino
Unido y se predijo su estallido dos años antes de que
ocurriera.
Esto implica que hay industrias potenciales usuarias de
supercomputación de sectores como son:
Aeronáutico: simulación del comportamiento en vuelo
de los aviones.
Automovilístico: simulación de choques entre
vehículos.
Financiero: análisis de riesgos. Estudio de situaciones
en concesión de créditos (qué riesgo tiene una cartera
de valores, tus ingresos…), simulación de mercados,
comportamiento bursátil. Probabilidades de catástrofes
para la gestión de seguros. Los modelos que manejan
los bancos no son públicos porque en ellos reside su
ventaja competitiva.
Eólico y naviero: estudio de la climatología para la
ubicación de parques de molinos o para
la navegabilidad de los buques.
Farmacéutico.
Electrónico.
Ciencias de la vida: simulación de la respiración a
través de las fosas nasales, por ejemplo.
17. Pero ¿realmente se utiliza la supercomputación?
Para ello se sondeó en 2004 a 500 empresas de Galicia: el
resultado fue que la simulación numérica era utilizada
proporcionalmente al tamaño de la empresa.
Un pequeña desagradable sorpresa fue que la industria
automovilística, con fuerte presencia en la zona, no hacía uso
de esta tecnología. La razón es que el diseño de productos no
se ubica en Galicia sino sólo la producción.
El uso que se hace de la supercomputación es sobre todo en
las áreas mecánicas y estructurales o en los procesos de
fabricación: inyección, estampación, forja…
Los servicios demandados por las empresas comenzaban por
algo tan básico como solicitar asesoramiento acerca de qué se
puede conseguir con esta tecnología.
Tras esto se solicita formación en simulación numérica puesto
que es algo que no es fácil de adquirir.
Finalmente se solicita ayuda en la implantación del software a
utilizar.
La aplicación que se hace de la simulación numérica se centra
en el diseño y validación del producto, en el diseño y
validación del proceso de fabricación.
El principal obstáculo para hacer uso de todo esto es la falta
de personal cualificado.
El tipo de software utilizado es CAE específico para el
problema a solucionar.
Pero desgraciadamente nadie utilizaba un supercomputador
para ejecutar esas simulaciones.
En 2008 se hizo un recorrido por diversas empresas
españolas para preguntarles qué uso podrían hacer
del supercomputador del CESGA y cuáles serían los
principales obstáculos para hacerlo.
Las respuestas por sectores fueron:
Naval:
o Necesidades:
El 90% de sus necesidades las cubren
internamente y el 10% restante la
subcontratan.
Se simula la hidrodinámica, las turbinas o
buques enteros (principalmente la estela
que producen al navegar).
o Barreras:
Confidencialidad de la información, que
debe estar en el centro de
supercomputación.
18. El pago de licencias.
El problema de mover grandes cantidades
de datos.
Eólico:
o Necesidades:
Tema de estructuras, diseño de palas.
Cómo circula el viento por las palas: CFD.
Mayor exactitud en los resultados.
o Barreras:
Confidencialidad de la información.
El pago de licencias.
El problema de mover grandes cantidades
de datos.
Financiero:
o Necesidades:
No desean externalizar: todo lo realizan
internamente. No quieren interactuar con
otros agentes.
Data Mining.
Scoring.
Análisis de fraude.
Análisis de productos financieros.
o Barreras:
Confidencialidad de la información.
El pago de licencias.
Necesitan los cálculos en tiempo real: no
quieren esperar.
El problema de mover grandes cantidades
de datos.
Automóvil:
o Necesidades:
Sólo para I+D, CFD.
o Barreras:
Confidencialidad de la información.
El pago de licencias.
El problema de mover grandes cantidades
de datos.
Aeronaútico:
o Necesidades:
Electromagnetismo.
CFD.
Sonido.
Estructuras.
Física del vuelo.
o Barreras:
No las tienen identificadas.
19. Respecto al tema de pago de licencias, esto ha hecho que se
impulse el uso de software libre.
En resumen la supercomputación es una tecnología que cada
vez coge más envergadura para hacer que las empresas sean
más competitivas. Pero el tema de la confidencialidad es un
gran problema que hay que superar.
Si quieres enviar algún comentario o sugerir temas a tratar en otros artículos, escribe a:
curtasun[simboloArroba]cein.es
Categorías General
Tema Varios
Autor Carlos Urtasun
Mes Octubre
Año 2009
Boletín 10
Título War is over?
Texto “If you want it”.
Bueno el caso es que Lennon no lo preguntaba si no que lo
afirmaba.
¿De qué guerra hablo? Como recordaréis por un artículo anterior,
se había suscitado una polémica en torno a las titulaciones
universitarias de informática, polémica que parece haberse
resuelto vía BOE.
El ocho de agosto (para que luego digamos que la
Administración no trabaja en verano) se publica en dicho Boletín
una, tomad aliento, Resolución de 8 de junio de 2009, de la
Secretaría General de Universidades, por la que se da publicidad
al Acuerdo del Consejo de Universidades, por el que se
establecen recomendaciones para la propuesta por las
universidades de memorias de solicitud de títulos oficiales en los
ámbitos de la Ingeniería Informática, Ingeniería Técnica
Informática e Ingeniería Química.
Dejando aparte la Ingeniería Química (mis conocimientos no van
mucho más allá de esto), vamos a ver lo que dice
dicha Resolución.
Además me centraré en la descripción de las competencias que
los estudiantes deben adquirir. Se indican así:
Capacidad para
Proyectar, calcular y diseñar productos, procesos e
instalaciones en todos los ámbitos de la ingeniería
informática.
La dirección de obras e instalaciones de sistemas
20. informáticos, cumpliendo la normativa vigente y asegurando
la calidad del servicio.
Dirigir, planificar y supervisar equipos multidisciplinares.
El modelado matemático, cálculo y simulación en centros
tecnológicos y de ingeniería de empresa, particularmente en
tareas de investigación, desarrollo e innovación en todos
los ámbitos relacionados con la Ingeniería en Informática.
La elaboración, planificación estratégica, dirección,
coordinación y gestión técnica y económica de proyectos en
todos los ámbitos de la Ingeniería en Informática siguiendo
criterios de calidad y medioambientales.
La dirección general, dirección técnica y dirección de
proyectos de investigación, desarrollo e innovación, en
empresas y centros tecnológicos, en el ámbito de la
Ingeniería Informática.
La puesta en marcha, dirección y gestión de procesos de
fabricación de equipos informáticos, con garantía de la
seguridad para las personas y bienes, la calidad final de
los productos y su homologación.
La aplicación de los conocimientos adquiridos y de resolver
problemas en entornos nuevos o poco conocidos dentro de
contextos más amplios y multidisciplinares, siendo capaces
de integrar estos conocimientos.
Comprender y aplicar la responsabilidad ética, la
legislación y la deontología profesional de la actividad de
la profesión de Ingeniero en Informática.
Aplicar los principios de la economía y de la gestión de
recursos humanos y proyectos, así como la legislación,
regulación y normalización de la informática.
“¡Caramba! ¡Guau! ¡Cohone!” que diría aquél. No sé si me
asombra más cada punto de los arriba indicados o la recurrente
coletilla “en todos los ámbitos de la Ingeniería en Informática”.
En todos, insisten.
Vuelvo a leer y sí son las “Competencias que los estudiantes
deben adquirir”, no los requisitos para las candidaturas
del premio Turing.
Respecto al “Máster vinculado con el ejercicio de la profesión de
Ingeniero en Informática, el plan de estudios deberá incluir,
como mínimo, los siguientes módulos” (elsubrayado es mío) “y
competencias”:
Capacidad:
Para la integración de tecnologías, aplicaciones, servicios
y sistemas propios de la Ingeniería Informática, con
carácter generalista, y en contextos más amplios y
multidisciplinares.
Para la planificación estratégica, elaboración, dirección,
coordinación, y gestión técnica y económica en los ámbitos
de la ingeniería informática relacionados, entre otros, con:
sistemas, aplicaciones, servicios, redes, infraestructuras o
instalaciones informáticas y centros o factorías de
desarrollo de software, respetando el adecuado cumplimiento
de los criterios de calidad y medioambientales y en entornos
de trabajo multidisciplinares.
Para la dirección de proyectos de investigación, desarrollo
e innovación, en empresas y centros tecnológicos, con
garantía de la seguridad para las personas y bienes, la
calidad final de los productos y su homologación.
Para modelar, diseñar, definir la arquitectura, implantar,
gestionar, operar, administrar y mantener aplicaciones,
redes, sistemas, servicios y contenidos informáticos.
21. De comprender y saber aplicar el funcionamiento y
organización de Internet, las tecnologías y protocolos de
redes de nueva generación, los modelos de componentes,
software intermediario y servicios.
Para asegurar, gestionar, auditar y certificar la calidad de
los desarrollos, procesos, sistemas, servicios, aplicaciones
y productos informáticos.
Para diseñar, desarrollar, gestionar y evaluar mecanismos de
certificación y garantía de seguridad en el tratamiento y
acceso a la información en un sistema de procesamiento local
o distribuido.
Para analizar las necesidades de información que se plantean
en un entorno y llevar a cabo en todas sus etapas el proceso
de construcción de un sistema de información.
Para diseñar y evaluar sistemas operativos y servidores, y
aplicaciones y sistemas basados en computación distribuida.
Para comprender y poder aplicar conocimientos avanzados de
computación de altas prestaciones y métodos numéricos o
computacionales a problemas de ingeniería.
De diseñar y desarrollar sistemas, aplicaciones y servicios
informáticos en sistemas empotrados y ubicuos.
Para aplicar métodos matemáticos, estadísticos y de
inteligencia artificial para modelar, diseñar y desarrollar
aplicaciones, servicios, sistemas inteligentes y sistemas
basados en el conocimiento.
Para utilizar y desarrollar metodologías, métodos, técnicas,
programas de uso específico, normas y estándares de
computación gráfica.
Para conceptualizar, diseñar, desarrollar y evaluar la
interacción persona-ordenador de productos, sistemas,
aplicaciones y servicios informáticos.
Para la creación y explotación de entornos virtuales, y para
la creación, gestión y distribución de contenidos
multimedia.
No tengo adjetivos: supongo que cuando dicen máster se
referirán a esto.
Uno de los puntos que me ha hecho abrir los ojos más de lo
normal es el de “diseñar y evaluar sistemas operativos” por no
decir nada del de “aplicar métodos matemáticos, estadísticos y
de inteligencia artificial”.
Además se realizará un Proyecto fin de máster que consistirá en
la “realización, presentación y defensa, una vez obtenidos todos
los créditos del plan de estudios, de un ejercicio original
realizado individualmente ante un tribunal universitario,
consistente en un proyecto integral de Ingeniería en Informática
de naturaleza profesional en el que se sinteticen las
competencias adquiridas en las enseñanzas.”
Un “proyecto integral de Ingeniería en Informática de naturaleza
profesional”, de naturaleza profesional, no académica ¡ojo!.
¿Quiere eso decir que el graduando dirigirá un proyecto con su
alcance, recursos y plazos o, simplemente, a lo Juan Palomo
hará de hombre-orquesta?
Bueno, teniendo en cuenta que en su día obtuve la licenciatura
en Informática, me siento que o bien me dieron un título de
la señorita Pepis o que los tiempos han cambiado mucho.
22. Sigo leyendo y llego a las competencias que los estudiantes de
Ingeniería Técnica en Informática deben adquirir.
Voici!
Capacidad para:
Concebir, redactar, organizar, planificar, desarrollar y
firmar proyectos en el ámbito de la ingeniería en
informática que tengan por objeto, de acuerdo con los
conocimientos adquiridos según lo establecido en el apartado
5 de este anexo, la concepción, el desarrollo o la
explotación de sistemas, servicios y aplicaciones
informáticas.
Dirigir las actividades objeto de los proyectos del ámbito
de la informática de acuerdo con los conocimientos
adquiridos según lo establecido en el apartado 5 de este
anexo.
Diseñar, desarrollar, evaluar y asegurar la accesibilidad,
ergonomía, usabilidad y seguridad de los sistemas, servicios
y aplicaciones informáticas, así como de la información que
gestionan.
Definir, evaluar y seleccionar plataformas hardware y
software para el desarrollo y la ejecución de sistemas,
servicios y aplicaciones informáticas, de acuerdo con los
conocimientos adquiridos según lo establecido en el apartado
5 de este anexo.
Concebir, desarrollar y mantener sistemas, servicios y
aplicaciones informáticas empleando los métodos de la
ingeniería del software como instrumento para el
aseguramiento de su calidad, de acuerdo con los
conocimientos adquiridos según lo establecido en el apartado
5 de este anexo.
Concebir y desarrollar sistemas o arquitecturas informáticas
centralizadas o distribuidas integrando hardware, software y
redes de acuerdo con los conocimientos adquiridos según lo
establecido en el apartado 5 de este anexo.
Conocer, comprender y aplicar la legislación necesaria
durante el desarrollo de la profesión de Ingeniero Técnico
en Informática y manejar especificaciones, reglamentos y
normas de obligado cumplimiento.
Resolver problemas con iniciativa, toma de decisiones,
autonomía y creatividad. Capacidad para saber comunicar y
transmitir los conocimientos, habilidades y destrezas de la
profesión de Ingeniero Técnico en Informática.
Para analizar y valorar el impacto social y medioambiental
de las soluciones técnicas, comprendiendo la responsabilidad
ética y profesional de la actividad del Ingeniero Técnico en
Informática.
Conocimiento:
De las materias básicas y tecnologías, que capaciten para el
aprendizaje y desarrollo de nuevos métodos y tecnologías,
así como las que les doten de una gran versatilidad para
adaptarse a nuevas situaciones.
Y aplicación de elementos básicos de economía y de gestión
de recursos humanos, organización y planificación de
proyectos, así como la legislación, regulación y
normalización en el ámbito de los proyectos informáticos, de
acuerdo con los conocimientos adquiridos según lo
establecido en el apartado 5 de este anexo.
Conocimientos para la realización de mediciones, cálculos,
valoraciones, tasaciones, peritaciones, estudios, informes,
planificación de tareas y otros trabajos análogos de
informática, de acuerdo con los conocimientos adquiridos
según lo establecido en el apartado 5 de este anexo.
23. El citado apartado 5 dice (agarraos que hay curva) dice que las
competencias que deben adquirirse son:
Capacidad para la resolución de los problemas matemáticos
que puedan plantearse en la ingeniería.
Aptitud para aplicar los conocimientos sobre: álgebra
lineal; cálculo diferencial e integral; métodos numéricos;
algorítmica numérica; estadística y optimización.
Comprensión y dominio de los conceptos básicos de campos y
ondas y electromagnetismo, teoría de circuitos eléctricos,
circuitos electrónicos, principio físico de los
semiconductores y familias lógicas, dispositivos
electrónicos y fotónicos, y su aplicación para la resolución
de problemas propios de la ingeniería.
Capacidad para comprender y dominar los conceptos básicos de
matemática discreta, lógica, algorítmica y complejidad
computacional, y su aplicación para la resolución de
problemas propios de la ingeniería.
Conocimientos básicos sobre el uso y programación de los
ordenadores, sistemas operativos, bases de datos y programas
informáticos con aplicación en ingeniería.
Conocimiento de la estructura, organización, funcionamiento
e interconexión de los sistemas informáticos, los
fundamentos de su programación, y su aplicación para la
resolución de problemas propios de la ingeniería.
Conocimiento adecuado del concepto de empresa, marco
institucional y jurídico de la empresa. Organización y
gestión de empresas.
Capacidad para diseñar, desarrollar, seleccionar y evaluar
aplicaciones y sistemas informáticos, asegurando su
fiabilidad, seguridad y calidad, conforme a principios
éticos y a la legislación y normativa vigente.
Capacidad para planificar, concebir, desplegar y dirigir
proyectos, servicios y sistemas informáticos en todos los
ámbitos, liderando su puesta en marcha y su mejora continua
y valorando su impacto económico y social.
Capacidad para comprender la importancia de la negociación,
los hábitos de trabajo efectivos, el liderazgo y las
habilidades de comunicación en todos los entornos de
desarrollo de software.
Capacidad para elaborar el pliego de condiciones técnicas de
una instalación informática que cumpla los estándares y
normativas vigentes.
Conocimiento, administración y mantenimiento sistemas,
servicios y aplicaciones informáticas.
Conocimiento y aplicación de los procedimientos algorítmicos
básicos de las tecnologías informáticas para diseñar
soluciones a problemas, analizando la idoneidad y
complejidad de los algoritmos propuestos.
Conocimiento, diseño y utilización de forma eficiente los
tipos y estructuras de datos más adecuados a la resolución
de un problema.
Capacidad para analizar, diseñar, construir y mantener
aplicaciones de forma robusta, segura y eficiente, eligiendo
el paradigma y los lenguajes de programación más adecuados.
Capacidad de conocer, comprender y evaluar la estructura y
arquitectura de los computadores, así como los componentes
básicos que los conforman.
Conocimiento de las características, funcionalidades y
estructura de los Sistemas Operativos y diseñar e
implementar aplicaciones basadas en sus servicios.
Conocimiento y aplicación de las características,
funcionalidades y estructura de los Sistemas Distribuidos,
las Redes de Computadores e Internet y diseñar e implementar
aplicaciones basadas en ellas.
24. Conocimiento y aplicación de las características,
funcionalidades y estructura de las bases de datos, que
permitan su adecuado uso, y el diseño y el análisis e
implementación de aplicaciones basadas en ellos.
Conocimiento y aplicación de las herramientas necesarias
para el almacenamiento, procesamiento y acceso a los
Sistemas de información, incluidos los basados en web.
Conocimiento y aplicación de los principios fundamentales y
técnicas básicas de la programación paralela, concurrente,
distribuida y de tiempo real.
Conocimiento y aplicación de los principios fundamentales y
técnicas básicas de los sistemas inteligentes y su
aplicación práctica.
Conocimiento y aplicación de los principios, metodologías y
ciclos de vida de la ingeniería de software.
Capacidad para diseñar y evaluar interfaces persona
computador que garanticen la accesibilidad y usabilidad a
los sistemas, servicios y aplicaciones informáticas.
Conocimiento de la normativa y la regulación de la
informática en los ámbitos nacional, europeo e
internacional.
Capacidad para desarrollar, mantener y evaluar servicios y
sistemas software que satisfagan todos los requisitos del
usuario y se comporten de forma fiable y eficiente, sean
asequibles de desarrollar y mantener y cumplan normas de
calidad, aplicando las teorías, principios, métodos y
prácticas de la Ingeniería del Software.
Capacidad para valorar las necesidades del cliente y
especificar los requisitos software para satisfacer estas
necesidades, reconciliando objetivos en conflicto mediante
la búsqueda de compromisos aceptables dentro de las
limitaciones derivadas del coste, del tiempo, de la
existencia de sistemas ya desarrollados y de las propias
organizaciones.
Capacidad de dar solución a problemas de integración en
función de las estrategias, estándares y tecnologías
disponibles.
Capacidad de identificar y analizar problemas y diseñar,
desarrollar, implementar, verificar y documentar soluciones
software sobre la base de un conocimiento adecuado de las
teorías, modelos y técnicas actuales.
Capacidad de identificar, evaluar y gestionar los riesgos
potenciales asociados que pudieran presentarse.
Capacidad para diseñar soluciones apropiadas en uno o más
dominios de aplicación utilizando métodos de la ingeniería
del software que integren aspectos éticos, sociales, legales
y económicos.
Capacidad de diseñar y construir sistemas digitales,
incluyendo computadores, sistemas basados en microprocesador
y sistemas de comunicaciones.
Capacidad de desarrollar procesadores específicos y sistemas
empotrados, así como desarrollar y optimizar el software de
dichos sistemas.
Capacidad de analizar y evaluar arquitecturas de
computadores, incluyendo plataformas paralelas y
distribuidas, así como desarrollar y optimizar software de
para las mismas.
Capacidad de diseñar e implementar software de sistema y de
comunicaciones.
Capacidad de analizar, evaluar y seleccionar las plataformas
hardware y software más adecuadas para el soporte de
aplicaciones empotradas y de tiempo real.
Capacidad para comprender, aplicar y gestionar la garantía y
seguridad de los sistemas informáticos.
Capacidad para analizar, evaluar, seleccionar y configurar
plataformas hardware para el desarrollo y ejecución de
25. aplicaciones y servicios informáticos.
Capacidad para diseñar, desplegar, administrar y gestionar
redes de computadores.
Capacidad para tener un conocimiento profundo de los
principios fundamentales y modelos de la computación y
saberlos aplicar para interpretar, seleccionar, valorar,
modelar, y crear nuevos conceptos, teorías, usos y
desarrollos tecnológicos relacionados con la informática.
Capacidad para conocer los fundamentos teóricos de los
lenguajes de programación y las técnicas de procesamiento
léxico, sintáctico y semántico asociadas, y saber aplicarlas
para la creación, diseño y procesamiento de lenguajes.
Capacidad para evaluar la complejidad computacional de un
problema, conocer estrategias algorítmicas que puedan
conducir a su resolución y recomendar, desarrollar e
implementar aquella que garantice el mejor rendimiento de
acuerdo con los requisitos establecidos.
Capacidad para conocer los fundamentos, paradigmas y
técnicas propias de los sistemas inteligentes y analizar,
diseñar y construir sistemas, servicios y aplicaciones
informáticas que utilicen dichas técnicas en cualquier
ámbito de aplicación.
Capacidad para adquirir, obtener, formalizar y representar
el conocimiento humano en una forma computable para la
resolución de problemas mediante un sistema informático en
cualquier ámbito de aplicación, particularmente los
relacionados con aspectos de computación, percepción y
actuación en ambientes o entornos inteligentes.
Capacidad para desarrollar y evaluar sistemas interactivos y
de presentación de información compleja y su aplicación a la
resolución de problemas de diseño de interacción persona
computadora.
Capacidad para conocer y desarrollar técnicas de aprendizaje
computacional y diseñar e implementar aplicaciones y
sistemas que las utilicen, incluyendo las dedicadas a
extracción automática de información y conocimiento a partir
de grandes volúmenes de datos.
Capacidad de integrar soluciones de Tecnologías de la
Información y las Comunicaciones y procesos empresariales
para satisfacer las necesidades de información de las
organizaciones, permitiéndoles alcanzar sus objetivos de
forma efectiva y eficiente, dándoles así ventajas
competitivas.
Capacidad para determinar los requisitos de los sistemas de
información y comunicación de una organización atendiendo a
aspectos de seguridad y cumplimiento de la normativa y la
legislación vigente.
Capacidad para participar activamente en la especificación,
diseño, implementación y mantenimiento de los sistemas de
información y comunicación.
Capacidad para comprender y aplicar los principios y
prácticas de las organizaciones, de forma que puedan ejercer
como enlace entre las comunidades técnica y de gestión de
una organización y participar activamente en la formación de
los usuarios.
Capacidad para comprender y aplicar los principios de la
evaluación de riesgos y aplicarlos correctamente en la
elaboración y ejecución de planes de actuación.
Capacidad para comprender y aplicar los principios y las
técnicas de gestión de la calidad y de la innovación
tecnológica en las organizaciones.
Capacidad para comprender el entorno de una organización y
sus necesidades en el ámbito de las tecnologías de la
información y las comunicaciones.
Capacidad para seleccionar, diseñar, desplegar, integrar,
evaluar, construir, gestionar, explotar y mantener las
26. tecnologías de hardware, software y redes, dentro de los
parámetros de coste y calidad adecuados.
Capacidad para emplear metodologías centradas en el usuario
y la organización para el desarrollo, evaluación y gestión
de aplicaciones y sistemas basados en tecnologías de la
información que aseguren la accesibilidad, ergonomía y
usabilidad de los sistemas.
Capacidad para seleccionar, diseñar, desplegar, integrar y
gestionar redes e infraestructuras de comunicaciones en una
organización.
Capacidad para seleccionar, desplegar, integrar y gestionar
sistemas de información que satisfagan las necesidades de la
organización, con los criterios de coste y calidad
identificados.
Capacidad de concebir sistemas, aplicaciones y servicios
basados en tecnologías de red, incluyendo Internet, web,
comercio electrónico, multimedia, servicios interactivos y
computación móvil.
Capacidad para comprender, aplicar y gestionar la garantía y
seguridad de los sistemas informáticos.
No tengo palabras. Es más: no siento las piernas.
Como colofón se realizará un Proyecto de Fin de Grado,
consistente en un “Ejercicio original a realizar individualmente y
presentar y defender ante un tribunal universitario, consistente
en un proyecto en el ámbito de las tecnologías específicas de la
Ingeniería en Informática de naturaleza profesional en el que se
sinteticen e integren las competencias adquiridas en las
enseñanzas.”
A lo largo de este artículo el tono ha sido irónico, basado en este
razonamiento (tengo este defecto):
1. Las cosas se escriben tras una reflexión.
2. Lo expuesto en la resolución arriba descrita refleja las
capacidades y conocimientos que deben tener los
ingenieros informáticos (técnicos y/o superiores) o
quienes cursan un máster.
3. Dichas capacidades y conocimientos me resultan
excesivos. Creo que sólo se adquirirían tras complementar
los años de estudio con años de experiencia laboral.
4. Luego: o esta resolución es un desiderátum o quiere
establecer un límite o está fuera de toda realidad.
5. Corolario: en caso de que un profesional informático posea
todas o algunas de estas habilidades podríamos aplicar
eso de “Y aún dicen que el pescado es caro.”
Si quieres enviar algún comentario o sugerir temas a tratar en otros artículos, escribe a:
curtasun[simboloArroba]cein.es
Categorías General
Tema Varios
Autor Carlos Urtasun
Mes Octubre
Año 2009
27. Boletín 10
Título Personalización del código generado en la Ingeniería inversa con JPA y
MyEclipse.
Texto
Estrategia de la ingeniería inversa
A la hora de generar código a partir de las tablas creadas en
nuestra base de datos, la estrategia por defecto usa reglas básicas
para mapear los nombres JDBC con los nombres java. También,
mapea los tipos JDBC con los tipos java.
En el wizard de MyEclipse vemos que tenemos varias opciones
para tener bajo nuestro control la generación del código.
Reveng.xml, el archivo de filtro para la ingeniería inversa.
Personalizar la estrategia de ingeniería inversa.
Templates, plantillas para la generación de pojos.
REVENG.XML
El archivo de filtro para la ingeniería inversa, es un archivo
XML donde podemos controlar la generación del código de manera
precisa.
28. Desde este archivo se puede controlar el mapeo de tipos JDBC a
tipos java,
excluir tablas y definir como debe ser la ingeniería inversa sobre
una tabla en concreto.
Mapeo de tipos:
mapeamos los tipos JDBC con los tipos java
<type-mapping>
<sql-type
jdbc-type="nombre de java.sql.Types"
length="valor numérico "
precision="valor numérico "
scale="valor numérico"
not-null="true|false"
hibernate-type="number del tipo hibernate"
/>
</type-mapping>
29. Filtrado de tablas:
mediante el atributo exclude, decidimos excluir la tabla de la
ingeniería inversa.
<table-filter
match-catalog="nombre del catálogo"
match-schema="nombre del esquema"
match-name="nombre de la tabla"
exclude="true|false"
package="package.name"
/>
Configuración de una tabla específica:
<table
catalog="nombre del catálogo"
schema="nombre del esquema"
name="nombre de la tabla"
class="nombre de la clase"
>
<primary-key.../>
<column.../>
<foreign-key.../>
</table>
El <primary-key> nos permite definir la clave primaria para
tablas que no la tienen en la base de datos.
Con <column> es posible definir explícitamente el nombre de
la propiedad. También nos permite definir su tipo java y si
queremos excluirla del proceso.
El <foreign-key> tiene dos propósitos. Uno de ellos es definir
claves externas en bases de datos que no las soportan,y
segundo, te permite definir el nombre de la propiedad
resultante (many-to-one, one-to-one, one-to-many).
REVERSE ENGINEERING STRATEGY
Podemos crear nuestra propia estrategia. Para ello debemos
crearnos una clase que
extienda DelegatingReverseEngineeringStrategy. En ella
modificaremos los métodos necesarios o crearemos nuestros
propios métodos.
Podemos sobrescribir el
método columnToPropertyName(TableIdentifier table, String
column) para nombrar las propiedades.
(Importante: Con Oracle los nombres de columnas llegan en
mayúsculas)
Podemos identificar prefijos que puedan tener nuestras columnas,
poner mayúsculas o minúsculas,…
En el siguiente ejemplo queremos identificar posibles prefijos
30. de las columnas, personalizarlos y poner mayúscula a la siguiente.
Así, de una columna con nombre TXALMNOMBRE obtenemos
txALMNombre.
private static String[] aTipos = {“iId”,”i”,”tx”,”dt”};
private static String[] aPrefijos = {“ALM”,”CMD”,”FA”,”GNR”};
public String columnToPropertyName(TableIdentifier table,
String column) {
int i = 0;
boolean capitalized = false;
StringBuffer java = new StringBuffer(column.length());
while(i<column.length()){
String subSqlName = column.substring(i);
//Tipos
for(int j = 0; j<aTipos.length;
j++){ if(subSqlName.startsWith(aTipos[j].toUpperCas
e()) && i==0){
java.append(aTipos[j]);
i+=aTipos[j].length();
capitalized = true;
}
}
//Prefijos
subSqlName = column.substring(i);
for(int j = 0; j<aPrefijos.length; j++){
if(subSqlName.startsWith(aPrefijos[j])){
java.append(aPrefijos[j]);
i+=aPrefijos[j].length();
capitalized = true;
}
31. }
if(capitalized){
java.append(Character.toU
pperCase(column.charAt(i)));
capitalized = false;
}else{
java.append(Character.toL
owerCase(column.charAt(i)));
}
i++;
}
return java.toString();
}
El método columnToHibernateTypeName nos permite mapear tipos
JDBC con los tipos java de distinto modo. Los que no nos interesen
los dejamos en mano de la
clase DelegatingReverseEngineeringStrategy. Por defecto el
mapeo es el siguiente:
CHAR -->String
VARCHAR --> String
LONGVARCHAR --> String
NUMERIC --> java.math.BigDecimal
DECIMAL --> java.math.BigDecimal
BIT --> boolean
BOOLEAN --> boolean
TINYINT --> byte
SMALLINT --> short
32. INTEGER --> int
BIGINT --> long
REAL --> float
FLOAT --> double
DOUBLE --> double
BINARY --> byte[]
VARBINARY --> byte[]
LONGVARBINARY --> byte[]
DATE --> java.sql.Date
TIME --> java.sql.Time
TIMESTAMP --> java.sql.Timestamp
CLOB --> Clob
BLOB --> Blob
ARRAY --> Array
Si queremos cambiar el tipo java, basta con crearnos el
método retornando los tipos deseados.
public String columnToHibernateTypeName(TableIdentifier
table, String
columnName, int sqlType, int length, int precision, int scale,
boolean nullable, boolean generatedIdentifi
er){
if(sqlType==Types.TIMESTAMP) {
return “java.util.Date”;
}else if(sqlType==Types.NUMERIC) {
return “int”;
}else if(sqlType==Types.CHAR) {
return “java.lang.Character”;
34. Puedes personalizar el código generado para los pojos y
DAOs con las plantillas Velocity (o FreeMarker). En el wizard
marcaremos Use custom templates y navegaremos hasta la carpeta
de donde se encuentren nuestras plantillas.
En las plantillas POJO podremos controlar los constructores,
setters y getters.
En las plantillas DAO podremos controlar los finders, las
acciones de salvar, borrar y actualización de modelos.
35. ENLACES DE INTERÉS
http://docs.jboss.org/tools/3.0.1.GA/en/hibernatetools/html_single
/index.html#reverseengineering
http://www.docjar.com/docs/api/org/hibernate/cfg/reveng/Delegat
ingReverseEngineeringStrategy.html
http://db.apache.org/ojb/docu/guides/jdbc-types.html
http://velocity.apache.org/
Categ CES OpenSouce/Java
orías
Tema Desarrollo
Autor Edurne Berastegi Zabalza
Mes Octubre
Año 2009
Boletí 10
n
Título Pinitos con Windows Communication Foundation
Texto Windows Communication Foundation (WCF) es un arma poderosa,
un framework para el desarrollo de aplicaciones con unas
36. capacidades de comunicación enormes. Y lo tenemos disponible en
nuestro “kit para programar” alias .NET Framework desde la versión
3.0 Una de esas capacidades y quizá la menos conocida es la
comunicación Peer-to-peer o P2P, típicamente asociada a los
programas de descarga.
El motivo de mi interés en este canal de comunicación es
que Microsoft incorpora en los S.O. Windows 2008R2 y en
Windows7 un uso profesional de las comunicaciones P2P en
lo que denomina BranchCache: un modo de compartir los
archivos de una empresa entre PCs mediante tecnologías
P2P de modo que se reduce sensiblemente el ancho de
banda requerido así como los tiempos de transferencia,
especialmente en empresas con oficinas distribuidas (no
voy a entrar en el detalle de esta solución, hay bastante
más info disponible en este enlace).
Viendo que WCF tiene este potencial y con ganas de volver
a pringarme con el código, vamos a ver este mes un
ejemplo de uso de WCF con conectividad P2P para
desarrollar un cliente de Chat muy simple. Al tajo…
Aplicación simple (simplísima) WCF
Lo primero que vamos a hacer es implementar una
aplicación Cliente-Servidor con WCF, será muy sencilla por
lo que usaremos sólo aplicaciones de modo consola.
Abrimos VS2008 (mañana paso a 2010 :) en modo
Administrador, ya que de otro modo VS no podrá
registrar nuestros servicios en la máquina y la depuración
fallará. Creamos un nuevo proyecto de tipo Aplicación de
Consola que yo he denominado BaseWCF. Una vez
generado, agregamos una referencia a
“System.ServiceModel” que es la librería que nos facilita el
acceso a la funcionalidad de WCF que nos interesa: botón
derecho sobre el proyecto, “Agregar referencia…” y la
seleccionamos.
Lo primero que vamos a definir es nuestro Interfaz de
comunicación, que será la clase que se encargará de recibir
las peticiones y emitir las respuestas. Para eso, estará
compuesta de unos métodos que en WCF se denominan
Operaciones. En nuestro caso sólo definimos una operación
que implementaremos más adelante. VisualStudio nos
facilita una plantilla para la definición de interfaces que
debemos emplear. Para eso, hacemos nuevamente botón
37. derecho sobre el proyecto y seleccionamos
“Agregar”,”Nuevo elemento…” y elegimos la plantilla
“Interfaz”. Como nombre le asigno “SaludoContrato” ya
que este interfaz va a contener los contratos públicos de
nuestro servicio y sus operaciones. El código es el
siguiente:
1: using System;
2: using System.Collections.Generic;
3: using System.ServiceModel;
4: using System.Text;
5:
6: namespace BaseWCF
7: {
8: [ServiceContract]
9: public interface IHola
10: {
11: [OperationContract]
12: string Comunica();
13: }
14: }
Hemos definido el interfaz IHola con una única operación
denominada Comunica que no acepta argumentos y nos
devuelve una cadena. Lo siguiente es implementarlo, para
lo que en nuestro archivo Program.cs incluiremos el
siguiente código:
1: using System;
2: using System.ServiceModel;
3:
4: namespace BaseWCF
5: {
6: public class Hola: IHola
7: {
8: public string Comunica()
9: {
10: return "Egun on guztiei!";
11: }
12: }
13:
14: class Program
15: {
16: static void Main(string[] args)
17: {
18: ServiceHost sh = new ServiceHost(typeof(Hola),
19: new Uri("http://localhost:4123/BaseWCF"));
20: sh.Open();
21: Console.WriteLine("Entzuten...");
22: Console.WriteLine("<Enter> pulsatu bukatzeko");
23: Console.ReadLine();
24:
25: sh.Close(); //close the service
26: }
27: }
28: }
Aquí tenemos dos clases diferenciadas. Por un lado, la
implementación de nuestra operación, que simplemente
devuelve un mensaje. Esta implementación la podíamos
haber hecho también en el fichero donde definimos la
Interfaz, pero de esta manera separamos la
implementación de la definición, una manera sencilla de
separar la lógica del desarrollo y que hace más sencillo la
38. gestión del código.
La siguiente clase es la implementación de nuestro Servicio
donde creamos un nuevo ServiceHost de WCF que invocará
un objeto de clase Hola (este será el que escucha y
responde a las peticiones, tal y como hemos dicho) en una
dirección en este caso de nuestra máquina (para poder
registrar esta URI debemos haber arrancando VS con un
usuario con privilegios de Administrador de la máquina). A
continuación, dejamos el programa en ejecución esperando
una tecla, para no cerrar antes de que algún cliente
invoque el servicio.
Lo que nos queda para completar este servicio es definir los
parámetros de configuración necesarios para su ejecución.
Esto lo haremos con un archivo App.config que añadimos al
proyecto: botón derecho, “Agregar”, “Nuevo elemento…” y
elegimos la plantilla de “Archivo de configuración de la
aplicación”. Este archivo contendrá lo siguiente:
1: <?xml version="1.0" encoding="utf-8" ?>
2: <configuration>
3: <system.serviceModel>
4: <services>
5: <service behaviorConfiguration="holaServiceBehavior"
name="BaseWCF.Hola">
6: <endpoint address="holaEndpoint" binding="wsHttpBinding"
bindingConfiguration="holaBinding"
7: contract="BaseWCF.IHola" />
8: </service>
9: </services>
10: <bindings>
11: <wsHttpBinding>
12: <binding name="holaBinding">
13: <security mode="Message">
14: <message />
15: </security>
16: </binding>
17: </wsHttpBinding>
18: </bindings>
19: <behaviors>
20: <serviceBehaviors>
21: <behavior name="holaServiceBehavior">
22: <serviceMetadata httpGetEnabled="true" />
23: </behavior>
24: </serviceBehaviors>
25: </behaviors>
26: </system.serviceModel>
27: </configuration>
Lo que hemos definido son tres elementos: servicios que se
ha de corresponder con las operaciones de nuestro interfaz,
bindings o enlaces de comunicación y behaviors o
especificidades de la comunicación de la información.
Servicio: definimos un servicio de nombre
BaseWCF.Hola que tiene un endpoint (punto de
conexión) llamado holaEndpoint y que
asociamos al contrato BaseWCF.IHola (es decir,
al servicio o interfaz que hemos creado antes).
39. También se asocia al binding wsHttpBinding y
usará de este su configuración holaBinding. Por
último el servicio ejecutará los behaviors
definidos en holaServiceBehavior.
Bindings: nada reseñable, usa seguridad en el
mensaje.
Behaviors: activa httpGet como petición.
A continuación implementaremos el cliente que llamará a
ese servicio. Vamos a añadir un nuevo proyecto a nuestra
solución, “Archivo”, “Agregar”, “Nuevo proyecto…”, y
seleccionamos una aplicación de consola a la que doy el
nombre de “Cliente” (vale, no estoy muy creativo :). A este
proyecto por simplificar le copiamos el mismo contrato que
al servidor (arrastrar y soltar SaludoContrato.cs sobre el
proyecto Cliente) y en su código Program.cs
introduciremos:
1: using System;
2: using System.ServiceModel;
3:
4: namespace Client
5: {
6: class Program
7: {
8: static void Main(string[] args)
9: {
10: Console.WriteLine("Zerbitzu prestatua bada, edozein tekla
pultsatu");
11: Console.ReadKey();
12: Console.WriteLine();
13:
14: ChannelFactory<BaseWCF.IHola> cnf =
15: new ChannelFactory<BaseWCF.IHola>("holaClient");
16: BaseWCF.IHola chn = cnf.CreateChannel();
17: Console.WriteLine(chn.Comunica());
18:
19: //Clean up
20: cnf.Close();
21: Console.WriteLine("<Enter> pulsatu bukatzeko");
22: Console.ReadLine();
23: }
24: }
25: }
Lo primero que hacemos es esperar… a que el servicio esté
listo. El motivo es que no sabemos si lo está o no y aunque
podíamos hacer pooling o similar hasta que lo esté lo más
sencillo es esperar “manualmente”. Una vez que sabemos
que ya está listo, pasamos a crear un canal por el que
comunicarnos. Esto con WCF es sencillo, creamos un
ChannelFactory de tipo BaseWCF.IHola (que tenemos
definido en el contrato) al que le pasamos su endpoint
(punto de comunicación) como parámetro, que definiremos
en seguida. A continuación creamos un canal desde esa
ChannelFactory y en este canal ya podemos invocar las
40. operaciones definidas en el contrato, en este caso
Comunica. Lo que haremos es mostrar el mensaje que nos
devuelve por pantalla, para ver el resultado. Finalmente,
cerraremos todo de manera correcta.
Nos queda pues definir los parámetros de nuestra
aplicación (endpoint y bindings), mediante un fichero
App.config. Boton derecho sobre “Cliente”, “Agregar”,
“Nuevo elemento…”, “Archivo de configuración de la
aplicación”, y en este tendremos que incluir lo siguiente:
1: <?xml version="1.0" encoding="utf-8" ?>
2: <configuration>
3: <system.serviceModel>
4: <client>
5: <endpoint
6: name="holaClient"
7: address="http://localhost:4123/BaseWCF/holaEndpoint"
8: contract="BaseWCF.IHola"
9: binding="wsHttpBinding"
10: bindingConfiguration="holaBinding">
11: </endpoint>
12: </client>
13: <bindings>
14: <wsHttpBinding>
15: <binding name="holaBinding">
16: <security mode="Message">
17: <message />
18: </security>
19: </binding>
20: </wsHttpBinding>
21: </bindings>
22: </system.serviceModel>
23: </configuration>
Como hemos dicho, estamos definiendo el Cliente y su
Binding. Como vemos el binding es exactamente igual que
en el caso del servidor, lógico para que se comuniquen, y
en cuanto al cliente definimos su endpoint que
denominamos holaClient (que hemos pasado como
parámetro al crear el canal), con el binding wsHttpBinding y
su configuración holaBinding, el contrato BaseWCF.IHola y
la dirección con la que se va a comunicar será la del
serviciohttp://localhost:4123/BaseWCF/holaEndpoint”.
Es decir, el cliente es una aplicación que usa WCF para
definir un “punto” por el que se comunicará y con que
“punto” del servidor se va a comunicar. Luego, en el código
invocaremos una u otra operación de ese servidor según
queramos.
Bien, ¡ya casi estamos! Sólo nos queda un “pero”, una
pequeña trampa pero que si no realizamos hará que si
ejecutamos ahora nuestra aplicación VS nos devuelva un
error TCP 100061. Y es que si bien VS si lo ejecutamos en
modo Administrador es capaz de registrar los servicios en
nuestra máquina, no puede autorizar la escucha en un
41. puerto específico y es algo que tenemos que hacer
nosotros. Lo que queremos es que nuestra máquina
escuche en el puerto 4123 (que hemos usado en el código),
para lo que hacemos uso del comando netsh desde un
intérprete de comandos que habremos lanzado con
privilegios de Administrador (botón derecho…). El comando
es este:
netsh http add iplisten ipaddress=127.0.0.1:4123
Hecho esto, para ejecutar la aplicación tenemos que indicar
a VS que se trata de una solución multiproyecto y ordenar
su ejecución correctamente. Para eso, pulsamos con el
botón derecho del ratón sobre el nombre de la solución y
seleccionamos sus Propiedades. En la sección de Proyecto
de inicio marcamos “Proyectos de inicio mútliples”, nos
aseguramos de que nuestros prouyectos Servicio y Cliente
tienen como Acción “Iniciar” y Servicio está por encima de
Cliente, como en esta pantalla.
Ahora ya podemos ejecutar la aplicación con este
resultado:
42. Servidor escuchando
Cliente con ejecución correcta.
Hasta aquí hemos usado WCF para implementar una
comunicación cliente-servidor tradicional. Al final se nos ha
echado el tiempo encima, el siguiente paso es emplear P2P,
tal y como comentaba al principio, pero tendrá que ser en
un artículo posterior. Nos vemos!
Categor CES Microsoft
ías
Tema Desarrollo
Autor Rafael Flores
Mes Octubre
Año 2009
Boletín 10