El documento presenta Dragome SDK, un framework que permite crear aplicaciones web client-side en Java compilando bytecode de Java a Javascript. Dragome usa metaprogramación para manipular bytecode y ofrece capas como Drangular para desarrollar interfaces web de forma declarativa. El framework paraleliza el flujo de trabajo entre cliente y servidor usando continuaciones y evita callbacks en llamadas asíncronas. El documento también discute el soporte futuro de otros lenguajes JVM, compilación por módulos y objetivos de interfaz adicionales.
This is the presentation we gave at Spring 2GX Madrid. It shows how Grails helped us to improve our productivity and why Grails is not that bounded to Groovy and how it can be an outstanding alternative if you are a 100% Java company.
Transparencias de la charla con la que participamos en las III Jornadas de Java de Alicante.
En las transparencias se muestran algunas herramientas para implantar metodologías ágiles en Java y se comentan algunas anécdotas e historias de diferentes implantaciones.
Este documento proporciona una introducción a Google Web Toolkit (GWT). Explica que GWT es un compilador que convierte código Java en JavaScript optimizado, lo que permite a los desarrolladores crear aplicaciones Ajax utilizando herramientas y lenguajes de Java. También describe las ventajas de usar un compilador en lugar de escribir JavaScript a mano, así como las características y herramientas principales de GWT. Finalmente, resume los pasos básicos para crear un proyecto GWT.
Node.js es una tecnología cada vez más popular para el desarrollo de servicios web. Grandes abanderados de Java como Netflix están usando cada vez más JavaScript para implementar parte de su backend. Pese a esta realidad, muchos javeros como yo no quieren tocar JavaScript ni con un palo, y cuando hay que hacerlo, sólo en el browser.
Si eres javero y no te gusta JavaScript, en esta presentación tendrás una visión general sobre cómo desarrollar servicios web con Node.js. Verás cómo con TypeScript, async/await y frameworks como Nest y TypeORM no echarás de menos a Spring y JPA. Pero lo mismo pasa al revés, verás cómo en Java también puedes implementar apps con los mismos principios reactivos y funcionales tan comunes en Node.js.
GWT permite a los desarrolladores crear aplicaciones web dinámicas utilizando Java en lugar de JavaScript. GWT compila el código Java en JavaScript optimizado que se ejecuta en cualquier navegador moderno. Al separar el desarrollo de la ejecución, GWT mejora la productividad de los desarrolladores y la velocidad de las aplicaciones compilando solo el código necesario para cada navegador. GWT también proporciona herramientas como depuración y pruebas que mejoran el proceso de desarrollo.
El documento presenta un curso sobre Angular. Incluye información sobre el temario que cubre conceptos básicos de Angular como componentes, servicios, rutas y librerías de componentes. También proporciona recursos como presentaciones y ejemplos de código para aprender Angular. El documento promociona los servicios de formación y consultoría sobre desarrollo de software de Micael Gallego.
This is the presentation we gave at Spring 2GX Madrid. It shows how Grails helped us to improve our productivity and why Grails is not that bounded to Groovy and how it can be an outstanding alternative if you are a 100% Java company.
Transparencias de la charla con la que participamos en las III Jornadas de Java de Alicante.
En las transparencias se muestran algunas herramientas para implantar metodologías ágiles en Java y se comentan algunas anécdotas e historias de diferentes implantaciones.
Este documento proporciona una introducción a Google Web Toolkit (GWT). Explica que GWT es un compilador que convierte código Java en JavaScript optimizado, lo que permite a los desarrolladores crear aplicaciones Ajax utilizando herramientas y lenguajes de Java. También describe las ventajas de usar un compilador en lugar de escribir JavaScript a mano, así como las características y herramientas principales de GWT. Finalmente, resume los pasos básicos para crear un proyecto GWT.
Node.js es una tecnología cada vez más popular para el desarrollo de servicios web. Grandes abanderados de Java como Netflix están usando cada vez más JavaScript para implementar parte de su backend. Pese a esta realidad, muchos javeros como yo no quieren tocar JavaScript ni con un palo, y cuando hay que hacerlo, sólo en el browser.
Si eres javero y no te gusta JavaScript, en esta presentación tendrás una visión general sobre cómo desarrollar servicios web con Node.js. Verás cómo con TypeScript, async/await y frameworks como Nest y TypeORM no echarás de menos a Spring y JPA. Pero lo mismo pasa al revés, verás cómo en Java también puedes implementar apps con los mismos principios reactivos y funcionales tan comunes en Node.js.
GWT permite a los desarrolladores crear aplicaciones web dinámicas utilizando Java en lugar de JavaScript. GWT compila el código Java en JavaScript optimizado que se ejecuta en cualquier navegador moderno. Al separar el desarrollo de la ejecución, GWT mejora la productividad de los desarrolladores y la velocidad de las aplicaciones compilando solo el código necesario para cada navegador. GWT también proporciona herramientas como depuración y pruebas que mejoran el proceso de desarrollo.
El documento presenta un curso sobre Angular. Incluye información sobre el temario que cubre conceptos básicos de Angular como componentes, servicios, rutas y librerías de componentes. También proporciona recursos como presentaciones y ejemplos de código para aprender Angular. El documento promociona los servicios de formación y consultoría sobre desarrollo de software de Micael Gallego.
Dev Tools para Kubernetes - Codemotion 2019Micael Gallego
Charla impartida entre Pablo Chico y Micael Gallego en la que se muestran algunas herramientas para mejorar la experiencia de desarrollo de aplicaciones cloud native para Kubernetes. Concretamente, se presenta cómo okteto puede reducir el tiempo empleado en el ciclo de change, build, push, deploy de pods Java en Kubernetes usando la sincronización de ficheros.
Ejemplos de código en https://github.com/micaelgallego/k8s-dev-tools-codemo19
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
Diapositivas de la presentación del fabuloso framework de desarollo Ruby On Rails usando la versión 2. Exposición realizada en el encuentro de Software Libre realizado por la Universidad Autónoma en Talca, Chile
Este documento describe JavaScript, incluyendo su historia, características y creador. Fue desarrollado originalmente por Brendan Eich en Netscape en 1995 bajo el nombre de Mocha y luego renombrado a LiveScript y finalmente JavaScript. Es un lenguaje de programación principalmente usado en navegadores web e implementa tipado dinámico, objetos y funcionalidad.
Charla en la que hablé sobre cómo hemos llegado al ecosistema actual de JavaScript, pasando por las distintas tecnologías web que hemos ido conociendo.
Grails es un framework web para Java que utiliza Groovy y está basado en Spring y Hibernate. Proporciona características como generación automática de CRUD, soporte para i18n, pruebas automatizadas y plugins. Se ha utilizado para desarrollar sitios como Sky.com y ha permitido aumentar la productividad hasta un 400%.
Este documento presenta sobre el desarrollo en 4G (Groovy, Grails, Git y Google App Engine). Explica las ventajas de usar Groovy y Grails para el desarrollo ágil, Git para el control de versiones y Google App Engine para la simulación de puesta en producción de una aplicación en la nube.
WebRTC permite la comunicación en tiempo real directamente entre navegadores sin pasar por un servidor mediante el marco ICE y el uso de servidores TURN. Existen numerosas aplicaciones y servicios de videoconferencia de código abierto basados en WebRTC como Jitsi Meet, BigBlueButton y otras. Para crear una aplicación de videoconferencia propia se puede utilizar directamente la API WebRTC, contribuir a proyectos existentes, hacer un fork o usar plataformas de videoconferencia de código abierto como OpenVidu, Kurento o Medooze.
Este documento resume una presentación sobre el desarrollo web con Google Web Toolkit (GWT). GWT permite a los desarrolladores crear aplicaciones Ajax complejas utilizando Java en lugar de JavaScript. GWT compila el código Java en JavaScript optimizado que funciona en cualquier navegador moderno. La presentación cubre los beneficios de usar un compilador en lugar de escribir JavaScript a mano, así como las características y componentes del kit de herramientas GWT.
Este documento proporciona una introducción a JavaScript en el lado del servidor usando Node.js y el framework Express. Explica cómo instalar las dependencias necesarias como Express y Jade, y cómo crear una primera aplicación Express con una estructura de carpetas estándar que incluye archivos para configuración, rutas, plantillas y recursos públicos. También enfatiza que aprender un nuevo lenguaje de programación toma tiempo y paciencia.
Este documento discute temas avanzados de GWT como pruebas de cliente, depuración, JSNI, enlace diferido, AJAX y RPC. Explica cómo ejecutar pruebas de cliente en diferentes modos como JUnit, Selenium y RemoteWeb. También cubre cómo depurar aplicaciones GWT de forma similar a otras aplicaciones Java y la recomendación de hacer TDD en lugar de depurar. Luego describe características clave de GWT como JSNI para usar JavaScript dentro de Java, enlace diferido para seleccionar implementaciones basadas en el navegador y AJ
Buenas Prácticas de desarrollo en Ruby on RailsSergio Gil
Este documento presenta las buenas prácticas de desarrollo en Ruby on Rails. Cubre temas como testing, control de versiones, documentación, arquitectura MVC, REST, acoplamiento, refactorización, uso de variables y el idioma del código. El objetivo es compartir opiniones sobre cómo escribir código Ruby on Rails de manera limpia, legible y mantenible.
Presentación realizada para la asignatura de Aplicaciones y Servicios Web del curso 2013-2014 en la FIB-UPC.
Da unas pinceladas muy básicas sobre el framework de desarrollo web Ruby on Rails.
El contenido de la presentación se rige en base a la rúbrica de evaluación de la asignatura, de ahí que salgan quizás demasiados datos históricos y de perspectivas
Este documento describe la estructura y flujo de trabajo típico de un proyecto GWT. Explica cómo crear un nuevo proyecto GWT, configurar el módulo, desarrollar código de cliente y servidor en Java, probar el código, depurar en modo desarrollo, compilar a JavaScript y desplegar la aplicación. También cubre temas como usar Eclipse, plugins de navegador y construir proyectos GWT con Ant o Maven.
Este documento proporciona una introducción al framework web Grails. Grails es un framework de alto rendimiento basado en Ruby on Rails que utiliza convenciones sobre configuración, reutiliza tecnologías probadas, y proporciona un entorno de desarrollo completo con soporte para plugins y scaffolding. El documento también resume brevemente la historia y arquitectura de Grails antes de concluir animando a los lectores a trabajar de manera inteligente en lugar de trabajar duro.
En esta charla realizaremos una introducción a los módulos JavaScript, formatos y empaquetadores, continuaremos hablando de Webpack, qué es y cómo utilizarlo. Realizaremos un ejemplo de configuración de Webpack desde cero, agregando distintos elementos como loaders y plugins, viendo como funciona cada una de estas partes.
Este documento presenta una introducción a Angular y resume errores comunes en JavaScript. Explica conceptos clave como Single Page Apps y frameworks, y por qué Angular es útil para construir aplicaciones dinámicas. Luego detalla errores comunes como el uso de variables globales y type wrappers, y recomienda el uso de punto y coma, comparaciones estrictas y parseInt con base. Finalmente, ofrece enlaces a ejemplos básicos de Angular.
1) Node.js es un entorno de ejecución de JavaScript del lado del servidor que permite ejecutar código JavaScript independientemente del navegador.
2) Npm es el administrador de paquetes predeterminado de Node.js que permite instalar paquetes y librerías.
3) El método forEach() ejecuta una función callback por cada elemento de un array sin devolver un nuevo array.
Dev Tools para Kubernetes - Codemotion 2019Micael Gallego
Charla impartida entre Pablo Chico y Micael Gallego en la que se muestran algunas herramientas para mejorar la experiencia de desarrollo de aplicaciones cloud native para Kubernetes. Concretamente, se presenta cómo okteto puede reducir el tiempo empleado en el ciclo de change, build, push, deploy de pods Java en Kubernetes usando la sincronización de ficheros.
Ejemplos de código en https://github.com/micaelgallego/k8s-dev-tools-codemo19
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
Diapositivas de la presentación del fabuloso framework de desarollo Ruby On Rails usando la versión 2. Exposición realizada en el encuentro de Software Libre realizado por la Universidad Autónoma en Talca, Chile
Este documento describe JavaScript, incluyendo su historia, características y creador. Fue desarrollado originalmente por Brendan Eich en Netscape en 1995 bajo el nombre de Mocha y luego renombrado a LiveScript y finalmente JavaScript. Es un lenguaje de programación principalmente usado en navegadores web e implementa tipado dinámico, objetos y funcionalidad.
Charla en la que hablé sobre cómo hemos llegado al ecosistema actual de JavaScript, pasando por las distintas tecnologías web que hemos ido conociendo.
Grails es un framework web para Java que utiliza Groovy y está basado en Spring y Hibernate. Proporciona características como generación automática de CRUD, soporte para i18n, pruebas automatizadas y plugins. Se ha utilizado para desarrollar sitios como Sky.com y ha permitido aumentar la productividad hasta un 400%.
Este documento presenta sobre el desarrollo en 4G (Groovy, Grails, Git y Google App Engine). Explica las ventajas de usar Groovy y Grails para el desarrollo ágil, Git para el control de versiones y Google App Engine para la simulación de puesta en producción de una aplicación en la nube.
WebRTC permite la comunicación en tiempo real directamente entre navegadores sin pasar por un servidor mediante el marco ICE y el uso de servidores TURN. Existen numerosas aplicaciones y servicios de videoconferencia de código abierto basados en WebRTC como Jitsi Meet, BigBlueButton y otras. Para crear una aplicación de videoconferencia propia se puede utilizar directamente la API WebRTC, contribuir a proyectos existentes, hacer un fork o usar plataformas de videoconferencia de código abierto como OpenVidu, Kurento o Medooze.
Este documento resume una presentación sobre el desarrollo web con Google Web Toolkit (GWT). GWT permite a los desarrolladores crear aplicaciones Ajax complejas utilizando Java en lugar de JavaScript. GWT compila el código Java en JavaScript optimizado que funciona en cualquier navegador moderno. La presentación cubre los beneficios de usar un compilador en lugar de escribir JavaScript a mano, así como las características y componentes del kit de herramientas GWT.
Este documento proporciona una introducción a JavaScript en el lado del servidor usando Node.js y el framework Express. Explica cómo instalar las dependencias necesarias como Express y Jade, y cómo crear una primera aplicación Express con una estructura de carpetas estándar que incluye archivos para configuración, rutas, plantillas y recursos públicos. También enfatiza que aprender un nuevo lenguaje de programación toma tiempo y paciencia.
Este documento discute temas avanzados de GWT como pruebas de cliente, depuración, JSNI, enlace diferido, AJAX y RPC. Explica cómo ejecutar pruebas de cliente en diferentes modos como JUnit, Selenium y RemoteWeb. También cubre cómo depurar aplicaciones GWT de forma similar a otras aplicaciones Java y la recomendación de hacer TDD en lugar de depurar. Luego describe características clave de GWT como JSNI para usar JavaScript dentro de Java, enlace diferido para seleccionar implementaciones basadas en el navegador y AJ
Buenas Prácticas de desarrollo en Ruby on RailsSergio Gil
Este documento presenta las buenas prácticas de desarrollo en Ruby on Rails. Cubre temas como testing, control de versiones, documentación, arquitectura MVC, REST, acoplamiento, refactorización, uso de variables y el idioma del código. El objetivo es compartir opiniones sobre cómo escribir código Ruby on Rails de manera limpia, legible y mantenible.
Presentación realizada para la asignatura de Aplicaciones y Servicios Web del curso 2013-2014 en la FIB-UPC.
Da unas pinceladas muy básicas sobre el framework de desarrollo web Ruby on Rails.
El contenido de la presentación se rige en base a la rúbrica de evaluación de la asignatura, de ahí que salgan quizás demasiados datos históricos y de perspectivas
Este documento describe la estructura y flujo de trabajo típico de un proyecto GWT. Explica cómo crear un nuevo proyecto GWT, configurar el módulo, desarrollar código de cliente y servidor en Java, probar el código, depurar en modo desarrollo, compilar a JavaScript y desplegar la aplicación. También cubre temas como usar Eclipse, plugins de navegador y construir proyectos GWT con Ant o Maven.
Este documento proporciona una introducción al framework web Grails. Grails es un framework de alto rendimiento basado en Ruby on Rails que utiliza convenciones sobre configuración, reutiliza tecnologías probadas, y proporciona un entorno de desarrollo completo con soporte para plugins y scaffolding. El documento también resume brevemente la historia y arquitectura de Grails antes de concluir animando a los lectores a trabajar de manera inteligente en lugar de trabajar duro.
En esta charla realizaremos una introducción a los módulos JavaScript, formatos y empaquetadores, continuaremos hablando de Webpack, qué es y cómo utilizarlo. Realizaremos un ejemplo de configuración de Webpack desde cero, agregando distintos elementos como loaders y plugins, viendo como funciona cada una de estas partes.
Este documento presenta una introducción a Angular y resume errores comunes en JavaScript. Explica conceptos clave como Single Page Apps y frameworks, y por qué Angular es útil para construir aplicaciones dinámicas. Luego detalla errores comunes como el uso de variables globales y type wrappers, y recomienda el uso de punto y coma, comparaciones estrictas y parseInt con base. Finalmente, ofrece enlaces a ejemplos básicos de Angular.
1) Node.js es un entorno de ejecución de JavaScript del lado del servidor que permite ejecutar código JavaScript independientemente del navegador.
2) Npm es el administrador de paquetes predeterminado de Node.js que permite instalar paquetes y librerías.
3) El método forEach() ejecuta una función callback por cada elemento de un array sin devolver un nuevo array.
Este documento introduce Node.js, un entorno de ejecución de JavaScript para el lado del servidor. Explica qué es Node.js, cómo instalarlo y crear una aplicación "Hola Mundo", y luego cubre frameworks como Express, plantillas como Jade y Stylus, y sockets como Socket.io, con el objetivo de crear aplicaciones en tiempo real que rompan paradigmas.
Este documento describe la utilidad de JDBC para conectarse a bases de datos desde Java usando SQL. JDBC permite que una aplicación Java se conecte a diferentes bases de datos y las trate de forma uniforme. JDBC consta de dos capas: la capa de aplicación que contiene las clases para interactuar con la base de datos, y la capa de controlador que se encarga de establecer la comunicación con el RDBMS.
GWT es un framework de desarrollo de Google que permite crear aplicaciones web complejas usando Java. Los proyectos GWT tienen una estructura de paquetes separando el código del cliente y servidor, e incluyen módulos, clases EntryPoint y llamadas RPC para comunicación con el servidor. GWT compila el código Java a JavaScript para ejecutarse en el navegador, permitiendo desarrollar interfaces gráficas ricas sin refrescos de página.
Este documento propone una arquitectura de software N-capa basada en Domain-Driven Design (DDD) para una aplicación web dentro de un proyecto aeronáutico. Describe las tecnologías back-end como Entity Framework y WCF, las tecnologías front-end como jQuery, HTML5 y CSS3, y otras tecnologías como Visual Studio 2012, Scrum y pruebas de calidad.
GWT es un framework para crear aplicaciones AJAX usando Java. Permite desarrollar interfaces de usuario, hacer llamadas RPC a servicios remotos, y compilar el código Java a JavaScript para su ejecución en el navegador. Entre sus ventajas se encuentran el alto dinamismo de las interfaces, desarrollo ágil, multiplataforma y reducción de ancho de banda y carga del servidor. Sus desventajas incluyen depender de desarrolladores Java y una curva de aprendizaje inicial.
Mootools es un framework JavaScript que facilita el desarrollo de aplicaciones web dinámicas mediante la agrupación de funciones para manipular el DOM, manejar eventos, crear y modificar elementos, y más. Algunas ventajas de Mootools son que es modular, de código abierto, bien documentado y con una gran comunidad de desarrolladores que lo mantienen y mejoran.
Este documento presenta una introducción a Node.js, incluyendo qué es Node.js, por qué usarlo, cómo instalarlo e implementarlo, el rol de los módulos, y cómo automatizar tareas con GruntJS. Node.js es un entorno de ejecución para aplicaciones web escalables usando JavaScript, y tiene buen rendimiento gracias a operaciones asíncronas. Los módulos proveen funcionalidades reusables, y GruntJS puede automatizar tareas como minificación y pruebas unitarias.
JavaScript es un lenguaje de programación interpretado que se ejecuta en el navegador para crear interactividad en las páginas web. JQuery es una biblioteca de JavaScript que simplifica la manipulación del DOM, los eventos y las animaciones. JQuery permite seleccionar elementos, agregar efectos y funcionalidades como validación de formularios y galerías de fotos de manera más sencilla que JavaScript puro.
Un poco más allá con grails. PrimerViernesDani Latorre
Este documento resume las principales características y capacidades del framework web Grails. Grails es un framework full-stack para Java que utiliza Groovy y está inspirado en Ruby on Rails. El documento describe elementos clave como GORM, controladores, vistas, plugins de autenticación, envío de correos, caché a diferentes niveles e internacionalización. También cubre temas como optimización para móviles, sistemas de mensajería y enlaces de interés.
GWT permite crear aplicaciones AJAX en Java que se compilan a JavaScript para su ejecución en los navegadores. Se programa en Java, se depura en Java y se testea en Java, obteniendo un rendimiento y escalabilidad mejorados frente a las aplicaciones web tradicionales. GWT incluye bibliotecas para la interfaz gráfica, comunicación con servidores, internacionalización, y herramientas para el desarrollo y despliegue de las aplicaciones.
[TOP 3 TECH UPDATES MEXICO]
Creando Aplicaciones Web en el 2015:
Nuevas tendencias, desafíos, y mejores prácticas
Empujado por la revolución mobile, el emergente mundo de Internet Of Things, la web a evolucionado hacia una gran y ubícua plataforma de desarrollo de aplicaciones. Sin embargo, esta evolución posee dos caras: la de posicionar a la web como una plataforma tecnológica capaz de desbancar tecnologías como Flash y Silverlight, y de competir con iOS, o Android; y la de una plataforma inmadura, difícil de aprender, y de utilizar para crear experiencias de usuario de calidad.
En esta charla se dará una introducción a las nuevas tendencias en el desarrollo web, sus dificultades y desafíos, y las lecciones aprendidas obtenidas trabajando con estas tecnologías de punta.
Speaker: Fernando Curra
Este documento proporciona una introducción a Dart, incluyendo su historia, características, herramientas y aplicaciones para backend, frontend y desarrollo móvil. Explica que Dart es un lenguaje de programación orientado a objetos desarrollado por Google que puede compilarse a código nativo para aplicaciones multiplataforma. También describe algunas de las herramientas más populares para Dart como AngularDart, Flutter y Stagehand.
Aprendiendo a Programas en 4 horas JavaScriptKarsarmi
El documento presenta una introducción a JavaScript, incluyendo su historia, características, versiones y relación con Java. También incluye ejemplos de código JavaScript resueltos por los integrantes del equipo.
Este documento presenta una aplicación de ejemplo en Java Server Faces (JSF) que permite personalizar los colores de un currículum vitae. La aplicación incluye páginas para personalizar los colores, mostrar mensajes de error si los colores seleccionados son iguales, y previsualizar el CV con los colores y datos seleccionados. El documento explica cada archivo JSP que compone la aplicación y muestra fragmentos de código para ilustrar el uso de etiquetas JSF.
El documento presenta a Fátima Casaú Pérez, una experta en desarrollo ágil de aplicaciones web con 5 años de experiencia como instructora y desarrolladora de software. Ella se especializa en plataforma Java, Groovy & Grails y metodologías ágiles. El documento también incluye sus datos de contacto.
Este documento presenta Google Web Toolkit (GWT), un framework de desarrollo en Java de código abierto que permite crear aplicaciones web AJAX. GWT compila el código Java en JavaScript y HTML para que las aplicaciones sean compatibles con cualquier navegador. El documento describe las características de GWT como componentes de interfaz de usuario, RPC, manejo del historial del navegador, depuración, compatibilidad con navegadores e integración con JUnit. También explica la arquitectura de GWT y los procesos de depuración, prue
Similar a Dragome en JavaConf Buenos Aires 2014 (20)
Buscador de Eventos y Fiestas en España - Buscafiestaholabuscafiesta
Buscafiesta.es es el buscador líder en España para fiestas y eventos, diseñado para satisfacer las necesidades tanto de organizadores como de asistentes. Este innovador software ofrece una plataforma integral que permite a los organizadores de eventos añadir, gestionar y promocionar sus actividades de manera totalmente autónoma, facilitando la visibilidad y escalabilidad de sus eventos.
Buscafiesta.es no solo conecta a los organizadores con su público objetivo, sino que también ofrece herramientas de marketing y análisis que ayudan a maximizar el impacto de cada evento. Ya sea para una fiesta local, un concierto multitudinario o un evento corporativo, Buscafiesta.es es la solución definitiva para hacer de cada evento un éxito rotundo.
2. www.dragome.com
Dragome SDK
1. Introduccion a Dragome
2. Manual de instalación (completo): “mvn archetype:generate”
3. Web != Desktop: Integrar tecnologías web y usarlas en el
dominio de Java
4. Metaprogramación y sin depender de los browsers
5. Paralelizando el flujo de trabajo con logicless templates,
services interfaces, backend y frontend.
6. Drangular: como AngularJS pero tipado
7. Futuro de Dragome: otros lenguajes de JVM y targets UI.
3. www.dragome.com
1- Qué es Dragome?
● Creación de aplicaciones web client side en Java
● Compila Bytecode --> Javascript
○ Otros lenguajes de JVM
○ Compilación automática e incremental
● Metaprogramación mediante manipulación de bytecode
● Capas de alto nivel para desarrollar web (optativas)
● Debugging desde Java impactando en el browser
○ Sin plugins ni instalaciones
○ Con cualquier IDE y cualquier browser
● Open Source
5. www.dragome.com
Dragome Architecture
Bytecode to js compiler
Drangular
Callback Evictor
GUIA (GUI Abstraction)
Methodlogger
js JRE
DOM
Handler
Dragome Core
Debugging
Capabilities
Serialization
Java <-> json
Service
Factory
Components
Events
Templates
Declarative UI
Angular style
Detects
methods
invocations
Remove
callbacks in
async calls
Js
generator
Java Runtime
for web
Basic Dragome
features
Required modules
Optional modules
6. www.dragome.com
Bytecode to js compiler
Drangular
Callback Evictor
GUIA (GUI Abstraction)
Methodlogger
js JRE
DOM
Handler
Dragome Core
Debugging
Capabilities
Serialization
Java <-> json
Service
Factory
Dragome Architecture
7. www.dragome.com
Bytecode to js compiler
Drangular
Callback Evictor
GUIA (GUI Abstraction)
Methodlogger
js JRE
DOM
Handler
Dragome Core
Debugging
Capabilities
Serialization
Java <-> json
Service
Factory
j2js compilerj2js JRE Harmony JRE Oracle JRE
gwt-pectin
asm library
javaflow
FlexJson
JQuery
Atmosphere
QooxdooXMLVM compiler
Projects used as base, they were modified to match requirements: refactoring, bug fixes, new features added, adapted for integration.
Tools used by Dragome
Dragome implementations
Dragome Architecture
Related projects
9. www.dragome.com
2- Cómo empezar?
● No requiere instalación
● 100% Compatible con Maven
● Arquetipo de Maven para crear aplicacion
● No requiere configuración para lo básico
● Sin archivos de configuración
○ Busca implementaciones de interfaces
○ Annotations como alternativa
10. www.dragome.com
● Integrar conceptos de web y desktop
○ Usarlos en el dominio de Java
○ Máxima portabilidad generando javascript
● Aumenta la metaprogramación
● Se conserva el mismo esquema de trabajo
○ Diseñadores gráficos
○ Desarrolladores Backend / Frontend
● Mejoras independientes de los browsers
○ ejemplo: javaflow vs yield
3- Web != Desktop
Criterio de integración
11. www.dragome.com
● Reflection
● Proxies dinámicos
● Instrumentación de bytecode
● Herramientas creadas usando metaprogramación
○ Methodlogger: detecta llamadas a métodos
○ Continuations: pausa y continuación de aplicación
○ Callback Evictor: llamadas async sin callbacks
○ Java 8 enabler: transforma InvokeDynamic
4- Metaprogramación
12. www.dragome.com
Callback-Evictor module
Full metaprogramming usage
async call and
pause
Client
sync call to service
Server
callback executed and
continue
ServiceProxy
Using continuations
(by javaflow)
Using dynamic
proxy
Using Service
Factory /
Serialization
13. www.dragome.com
5- Paralelizando el flujo de trabajo.
Aplicación Cliente/Servidor
public interface HelloWorldService
{
public abstract String getGreetingsFor(String name);
}
public class HelloWorldServiceImpl implements HelloWorldService
{
public String getGreetingsFor(String name)
{
return "Hello " + name + "! (" + new Date() + ")";
}
}
1) Service Interface
1)Service Interface (Backend/Frontend): HelloWorldService.java
2)Service Implementation (Backend): HelloWorldServiceImpl.java
3)GUI definition (Frontend): HelloWorldPage.java
4)HTML Template (Graphic Designer): helloworld.html
2) Service implementation
14. www.dragome.com
@PageAlias(alias= "helloworld")
public class HelloWorldPage extends DragomeVisualActivity
{
HelloWorldService helloWorldService= serviceFactory.createSyncService(HelloWorldService.class);
public void build()
{
VisualLabel<String> label= new VisualLabelImpl<String>("message");
VisualButton button= new VisualButtonImpl("button", c -> {
String message= helloWorldService.getGreetingsFor("World");
label.setValue(message);
});
mainPanel.addChild(label);
mainPanel.addChild(button);
}
}
3) GUI definition
<html>
<head>
<script type="text/javascript" src="dragome/dragome.js"></script>
</head>
<body>
Message: <b data-template="message"> text </b> <br>
<button data-template="button"> Say hello! </button>
</body>
</html>
4) HTML Template
5- Paralelizando el flujo de trabajo.
Aplicación Cliente/Servidor
15. www.dragome.com
6- Drangular
● Utiliza varios conceptos de AngularJs: templates, data
binding, ngRepeat, ngSwitch, ngClass ...
● Two-way databinding
○ Sin dirty check, con observers: mejor performance
● Define UI de manera más declarativa
● Patrón builder para crear componentes
● Ideal para usar Java 8
● Asistencia del IDE usando el tipado fuerte y generics
● Declaración de componentes separada del template
18. www.dragome.com
7- Futuro
● Incorporación de otros lenguajes de JVM: Scala, Ceylon,
Jython, JRuby, Clojure, Groovy
● Soporte para Classloaders
● Compilar cada JAR en un js separado.
● Capa de compatibilidad con GWT
● Un poco más lejano:
○ Otros UI targets: Android, IOS, Swing, wxWidgets
○ Simulador de multithread en js
○ JIT para balancear ejecución de código js y java
19. www.dragome.com
Initial Support For
Scala(alpha)
@PageAlias(alias= "simple-binding")
class SimpleBinding extends DragomeVisualActivity
{
var text= ""
def setText(t: String) { this.text= t }
def getText: String= this.text
def build
{
val componentBuilder= new ComponentBuilder(mainPanel)
componentBuilder.bindTemplate("textfield")
.as(classOf[VisualTextField[String]])
.toProperty(this, "text")
.build();
componentBuilder.bindTemplate("label")
.as(classOf[VisualLabel[String]])
.toProperty(this, "text")
.build();
}
}
20. www.dragome.com
Donde se esta usando
Game Authoring System: github.com/mirkosertic/GameComposer
JBox2D: physics engine
Rendering: DIVs and CSS
21. www.dragome.com
webapp.js
2nd bytecode to js
compiler
(Strict)
1st bytecode to js
compiler
(Node reduction)
HelloWorld.java HelloWorld.class
qooxdoo
javascript
class2
4
531
Chained bytecode
instrumentations
6
Bytecode to javascript compilation process
1 Java file is compiled to .class file
2 The .class file is processed by instrumentation chain to enhance it, using for example: javaflow, methodlogger, etc
3 Once bytecode is ready, first compiler tries to transform it to js. If node reduction algorithm fails, second compiler will take control.
4 If bytecode cannot be transformed to any combination of js structures, second compiler translate it to a JVM like
structure
5 Generated javascript code is stored as a qooxdoo class
6 Last step inserts each compiled qooxdoo class into the final webapp.js archive
5
22. www.dragome.com
Templates
● HTML puro y estandard
● Logicless
○ Pueden ser intercambiados por otros “similares”
○ Se pueden usar de diferente forma y en diferentes
páginas y/o componentes
● Placeholders marcados con atributos “data-template”
○ Único acople con Java
○ Pueden utilizarse anidados
○ No interfieren con atributos estándares como “id” o
“name”
● Parseado por el browser: soporta que no estén bien
formados
● Cualquier editor que maneje HTML puede servir