Este documento presenta una introducción a las nuevas características de Java 1.8 relacionadas con la programación funcional, incluyendo interfaces funcionales, expresiones lambda, referencias estáticas a métodos y constructores, streams y la clase Optional. También discute cómo estas características pueden usarse para mejorar el código Java existente y hacerlo más conciso y funcional.
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserMicael Gallego
Slides de la charla en el MadridJUG sobre TypeScript y su parecido con Java. Se presentan los parecidos entre estos dos lenguajes y sus diferencias más notables.
Esta conferencia fue dictada originalmente durante la 3ra Campus Party en Bogotá (2010). En ella se muestra cómo la JVM presenta al desarrollador con un abanico de lenguajes que van más allá de Java. Se hace una breve introducción a Jython, JRuby, Scala y Clojure, mostrando cómo el uso de estos lenguajes dinámicos puede simplificar la creación de programas, su utilidad como lenguajes de scripting o de “pegamento”, y la sencillez con la que se puede establecer una relación simbiótica con Java y sus librerías.
Este documento describe lenguajes dinámicos que se ejecutan en la máquina virtual de Java. Explica brevemente las características de lenguajes dinámicos y la máquina virtual de Java. Luego proporciona ejemplos de lenguajes como Jython, JRuby, Scala y Clojure que se ejecutan en la JVM, junto con breves descripciones de sus características y usos. Finalmente incluye una bibliografía de recursos adicionales.
Este documento describe las características principales del lenguaje de programación Java, incluyendo que es orientado a objetos, portable, seguro e interpretado y compilado a la vez. También describe los diferentes tipos de datos en Java como primitivos como enteros y cadenas, y referencias a objetos como clases. Finalmente, explica los diferentes tipos de operadores en Java como aritméticos, relacionales, de bits y de asignación.
Este documento presenta una introducción a Laravel, un popular framework PHP de código abierto para el desarrollo rápido de aplicaciones web. Explica qué es Laravel, sus características, ventajas y filosofía. También cubre conceptos fundamentales como MVC, Eloquent ORM, migraciones, seeders, controladores, rutas y vistas. Finalmente, describe los pasos para configurar un entorno de desarrollo local con Laravel.
Este documento presenta una introducción a la programación reactiva con RxJava. Explica que RxJava es una librería Java que implementa el patrón Observer para manejar eventos de forma asíncrona mediante observables. También describe algunos de los operadores más comunes como map, filter y zip que permiten transformar y combinar observables de forma declarativa. Finalmente, menciona algunas ventajas de este paradigma como la simplificación de la concurrencia y la mejora de la legibilidad del código.
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.
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserMicael Gallego
Slides de la charla en el MadridJUG sobre TypeScript y su parecido con Java. Se presentan los parecidos entre estos dos lenguajes y sus diferencias más notables.
Esta conferencia fue dictada originalmente durante la 3ra Campus Party en Bogotá (2010). En ella se muestra cómo la JVM presenta al desarrollador con un abanico de lenguajes que van más allá de Java. Se hace una breve introducción a Jython, JRuby, Scala y Clojure, mostrando cómo el uso de estos lenguajes dinámicos puede simplificar la creación de programas, su utilidad como lenguajes de scripting o de “pegamento”, y la sencillez con la que se puede establecer una relación simbiótica con Java y sus librerías.
Este documento describe lenguajes dinámicos que se ejecutan en la máquina virtual de Java. Explica brevemente las características de lenguajes dinámicos y la máquina virtual de Java. Luego proporciona ejemplos de lenguajes como Jython, JRuby, Scala y Clojure que se ejecutan en la JVM, junto con breves descripciones de sus características y usos. Finalmente incluye una bibliografía de recursos adicionales.
Este documento describe las características principales del lenguaje de programación Java, incluyendo que es orientado a objetos, portable, seguro e interpretado y compilado a la vez. También describe los diferentes tipos de datos en Java como primitivos como enteros y cadenas, y referencias a objetos como clases. Finalmente, explica los diferentes tipos de operadores en Java como aritméticos, relacionales, de bits y de asignación.
Este documento presenta una introducción a Laravel, un popular framework PHP de código abierto para el desarrollo rápido de aplicaciones web. Explica qué es Laravel, sus características, ventajas y filosofía. También cubre conceptos fundamentales como MVC, Eloquent ORM, migraciones, seeders, controladores, rutas y vistas. Finalmente, describe los pasos para configurar un entorno de desarrollo local con Laravel.
Este documento presenta una introducción a la programación reactiva con RxJava. Explica que RxJava es una librería Java que implementa el patrón Observer para manejar eventos de forma asíncrona mediante observables. También describe algunos de los operadores más comunes como map, filter y zip que permiten transformar y combinar observables de forma declarativa. Finalmente, menciona algunas ventajas de este paradigma como la simplificación de la concurrencia y la mejora de la legibilidad del código.
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.
Esta presentación nos muestra qué es la programación reactiva, en qué consiste, qué nos permite hacer y por qué está tan de moda. Además, podemos ver el uso concreto de esta programación utilizando RxJava.
Autor: Juan Pablo González de Gracia.
Este documento presenta una introducción a Groovy, un lenguaje de programación dinámico que se ejecuta en la JVM. Explica que Groovy permite aprovechar las capacidades de la JVM y agrega características como metaprogramación y transformaciones de árbol de sintaxis abstracto. También resume las técnicas de metaprogramación en Groovy como ExpandoMetaclass y mixins, y describe brevemente el ecosistema que rodea a Groovy.
Laravel es un framework para crear aplicaciones web con PHP. Ofrece una sintaxis elegante y permite funcionalidades como autenticación, enrutamiento y almacenamiento en caché de forma sencilla. Fue creado en 2011 por Taylor Otwell y está basado en arquitectura MVC. Laravel busca facilitar el desarrollo web eliminando complejidades comunes.
Este documento describe conceptos básicos de Java como su naturaleza independiente de plataforma, orientación a objetos, compilación e interpretación. También cubre temas como clases, objetos, métodos, herencia y polimorfismo.
Este documento trata sobre la programación avanzada de subprocesos en Java. Explica que un subproceso es similar a un programa secuencial con un inicio, secuencia y fin. Luego describe tres tipos de subprocesos: embebidos, reusables y múltiples. Finalmente, detalla el ciclo de vida de un subproceso y las clases relacionadas como Thread y Runnable.
Este documento presenta una introducción al lenguaje de programación Java, cubriendo su historia, características principales como su naturaleza independiente de plataforma, orientación a objetos, seguridad y portabilidad, y herramientas disponibles. También describe brevemente los tipos comunes de programas en Java como applets, aplicaciones y servlets.
Este documento presenta una introducción al lenguaje de programación Java, cubriendo su historia, características principales como su naturaleza orientada a objetos, independencia de plataforma e interpretación, y herramientas disponibles. También resume los objetivos y temas de una asignatura de programación avanzada en Java.
Este documento compara diferentes herramientas y gemas para varias tareas comunes en el desarrollo de aplicaciones web con Ruby on Rails, incluyendo frameworks, procesamiento de imágenes, internacionalización, notificación de excepciones, buscadores, testing, bases de datos, servidores, deploy, edición WYSIWYG, generación de PDFs, gráficas, agregación web, lectura de feeds, autenticación, gestión de estados, tags, envío de correo, CAPTCHA, chat y saneado de textos.
Este documento presenta una introducción al lenguaje de programación Ruby, incluyendo su historia, tipos de datos, colecciones, estructuras de control, expresiones regulares, gemas, orientación a objetos, metaprogramación, ORM y Ruby on Rails.
Programación Funcional y Orientada a Objetos con AsincronismosVíctor Bolinches
Este documento describe las diferencias entre la programación síncrona y asíncrona, y cómo los paradigmas de programación orientada a objetos y funcional pueden usar técnicas avanzadas de programación asíncrona. Luego, presenta ejemplos prácticos de cómo implementar programación asíncrona en Java 8 y Kotlin, incluido un emulador de Gameboy que usa coroutinas de Kotlin para manejar la CPU de forma asíncrona.
El documento describe el origen y desarrollo del lenguaje de programación Java. Java se creó originalmente en 1991 por un equipo de Sun Microsystems para proyectos de electrónica de consumo. Más tarde, en 1995, Java se expandió cuando se incluyó un intérprete de Java en el navegador Netscape Navigator, lo que permitió el desarrollo de applets para la World Wide Web. Java ha continuado evolucionando y ganando popularidad desde entonces como un lenguaje orientado a objetos, portable, robusto y seguro para aplicaciones web e Internet.
Este documento describe JRuby on Rails, que permite ejecutar aplicaciones Ruby on Rails en la máquina virtual Java (JVM). Explica que JRuby permite usar el lenguaje Ruby sobre la JVM, lo que aprovecha librerías y herramientas de Java como Servlet API, Tomcat y Ant. También menciona que Ruby on Rails es un marco web muy bien diseñado y flexible para construir aplicaciones web.
Java fue creado originalmente en 1991 por Sun Microsystems para aplicaciones de televisión interactiva. Consiste en un lenguaje de programación, un entorno de desarrollo y una máquina virtual que ejecuta el código Java de forma independiente de la plataforma hardware. Algunas características clave de Java incluyen su portabilidad, recolección de basura automática, seguridad del código y capacidad multihilo.
Este documento presenta un manual introductorio para usar Java y Netbeans. Explica cómo crear un proyecto en Netbeans, escribir código Java simple como imprimir "Hola mundo", y ejecutar el programa. También introduce conceptos básicos como variables, ciclos repetitivos, y valores iniciales, finales y de variación. Muestra cómo crear otro proyecto que utiliza un ciclo while para imprimir una serie de números.
El documento describe los orígenes y desarrollo del lenguaje de programación Java. Java se creó originalmente en 1991 por un equipo de Sun Microsystems para aplicaciones electrónicas de consumo y se caracterizó por su portabilidad. En 1995, cuando se incluyó un intérprete de Java en el navegador Netscape, Java se convirtió en un lenguaje popular para aplicaciones web. Desde entonces, Java ha continuado evolucionando y expandiéndose, con versiones posteriores que agregaron nuevas características y mejoras.
Java es un lenguaje de programación orientado a objetos que permite crear aplicaciones que funcionan en múltiples plataformas. Los programas Java se ejecutan dentro de un navegador a través de applets pequeñas aplicaciones que son descargadas de un servidor web al ordenador cliente, donde son verificadas por seguridad antes de ejecutarse.
Esta presentación nos muestra qué es la programación reactiva, en qué consiste, qué nos permite hacer y por qué está tan de moda. Además, podemos ver el uso concreto de esta programación utilizando RxJava.
Autor: Juan Pablo González de Gracia.
Este documento presenta una introducción a Groovy, un lenguaje de programación dinámico que se ejecuta en la JVM. Explica que Groovy permite aprovechar las capacidades de la JVM y agrega características como metaprogramación y transformaciones de árbol de sintaxis abstracto. También resume las técnicas de metaprogramación en Groovy como ExpandoMetaclass y mixins, y describe brevemente el ecosistema que rodea a Groovy.
Laravel es un framework para crear aplicaciones web con PHP. Ofrece una sintaxis elegante y permite funcionalidades como autenticación, enrutamiento y almacenamiento en caché de forma sencilla. Fue creado en 2011 por Taylor Otwell y está basado en arquitectura MVC. Laravel busca facilitar el desarrollo web eliminando complejidades comunes.
Este documento describe conceptos básicos de Java como su naturaleza independiente de plataforma, orientación a objetos, compilación e interpretación. También cubre temas como clases, objetos, métodos, herencia y polimorfismo.
Este documento trata sobre la programación avanzada de subprocesos en Java. Explica que un subproceso es similar a un programa secuencial con un inicio, secuencia y fin. Luego describe tres tipos de subprocesos: embebidos, reusables y múltiples. Finalmente, detalla el ciclo de vida de un subproceso y las clases relacionadas como Thread y Runnable.
Este documento presenta una introducción al lenguaje de programación Java, cubriendo su historia, características principales como su naturaleza independiente de plataforma, orientación a objetos, seguridad y portabilidad, y herramientas disponibles. También describe brevemente los tipos comunes de programas en Java como applets, aplicaciones y servlets.
Este documento presenta una introducción al lenguaje de programación Java, cubriendo su historia, características principales como su naturaleza orientada a objetos, independencia de plataforma e interpretación, y herramientas disponibles. También resume los objetivos y temas de una asignatura de programación avanzada en Java.
Este documento compara diferentes herramientas y gemas para varias tareas comunes en el desarrollo de aplicaciones web con Ruby on Rails, incluyendo frameworks, procesamiento de imágenes, internacionalización, notificación de excepciones, buscadores, testing, bases de datos, servidores, deploy, edición WYSIWYG, generación de PDFs, gráficas, agregación web, lectura de feeds, autenticación, gestión de estados, tags, envío de correo, CAPTCHA, chat y saneado de textos.
Este documento presenta una introducción al lenguaje de programación Ruby, incluyendo su historia, tipos de datos, colecciones, estructuras de control, expresiones regulares, gemas, orientación a objetos, metaprogramación, ORM y Ruby on Rails.
Programación Funcional y Orientada a Objetos con AsincronismosVíctor Bolinches
Este documento describe las diferencias entre la programación síncrona y asíncrona, y cómo los paradigmas de programación orientada a objetos y funcional pueden usar técnicas avanzadas de programación asíncrona. Luego, presenta ejemplos prácticos de cómo implementar programación asíncrona en Java 8 y Kotlin, incluido un emulador de Gameboy que usa coroutinas de Kotlin para manejar la CPU de forma asíncrona.
El documento describe el origen y desarrollo del lenguaje de programación Java. Java se creó originalmente en 1991 por un equipo de Sun Microsystems para proyectos de electrónica de consumo. Más tarde, en 1995, Java se expandió cuando se incluyó un intérprete de Java en el navegador Netscape Navigator, lo que permitió el desarrollo de applets para la World Wide Web. Java ha continuado evolucionando y ganando popularidad desde entonces como un lenguaje orientado a objetos, portable, robusto y seguro para aplicaciones web e Internet.
Este documento describe JRuby on Rails, que permite ejecutar aplicaciones Ruby on Rails en la máquina virtual Java (JVM). Explica que JRuby permite usar el lenguaje Ruby sobre la JVM, lo que aprovecha librerías y herramientas de Java como Servlet API, Tomcat y Ant. También menciona que Ruby on Rails es un marco web muy bien diseñado y flexible para construir aplicaciones web.
Java fue creado originalmente en 1991 por Sun Microsystems para aplicaciones de televisión interactiva. Consiste en un lenguaje de programación, un entorno de desarrollo y una máquina virtual que ejecuta el código Java de forma independiente de la plataforma hardware. Algunas características clave de Java incluyen su portabilidad, recolección de basura automática, seguridad del código y capacidad multihilo.
Este documento presenta un manual introductorio para usar Java y Netbeans. Explica cómo crear un proyecto en Netbeans, escribir código Java simple como imprimir "Hola mundo", y ejecutar el programa. También introduce conceptos básicos como variables, ciclos repetitivos, y valores iniciales, finales y de variación. Muestra cómo crear otro proyecto que utiliza un ciclo while para imprimir una serie de números.
El documento describe los orígenes y desarrollo del lenguaje de programación Java. Java se creó originalmente en 1991 por un equipo de Sun Microsystems para aplicaciones electrónicas de consumo y se caracterizó por su portabilidad. En 1995, cuando se incluyó un intérprete de Java en el navegador Netscape, Java se convirtió en un lenguaje popular para aplicaciones web. Desde entonces, Java ha continuado evolucionando y expandiéndose, con versiones posteriores que agregaron nuevas características y mejoras.
Java es un lenguaje de programación orientado a objetos que permite crear aplicaciones que funcionan en múltiples plataformas. Los programas Java se ejecutan dentro de un navegador a través de applets pequeñas aplicaciones que son descargadas de un servidor web al ordenador cliente, donde son verificadas por seguridad antes de ejecutarse.
Este documento describe Spring Roo, una herramienta de desarrollo ágil para crear aplicaciones Spring. Spring Roo permite generar rápidamente una aplicación base incluyendo frameworks populares como Spring MVC, GWT y JSF. También cubre temas como el acceso a datos mediante repositorios JPA, consultas personalizadas, relaciones entre entidades y la creación de un proyecto Roo.
Este documento proporciona una guía de comandos de Git útiles para el uso de Git. Incluye comandos básicos como git add, git commit y git push para agregar y enviar cambios. También cubre comandos para ramas como git branch, git checkout y git merge. Además, explica cómo deshacer commits, usar git stash y crear tags.
Desarrolla tu primera api con spring bootCloudAppi
Este documento presenta una introducción a Spring Boot, Spring Data Rest, HATEOAS y Spring MVC. Explica cómo crear rápidamente aplicaciones Spring, la publicación de APIs RESTful mediante Spring Data Rest y el uso de enlaces HATEOAS. También incluye demostraciones de código.
Introducción al análisis estático de código en java para mejorar la calidad del software tomando como referencia mejores prácticas, estándares y optimización de código.
Developing and deploying applications with Spring Boot and Docker (@oakjug)Chris Richardson
This presentation was given at Oakjug.
Describes why Spring Boot is an excellent choice for building microservices.
Talks about the various ways that Docker can simplify development and deployment.
Discusses how docker-compose makes the life of a developer easier.
Este documento describe cómo configurar la integración continua con TeamCity para aplicaciones móviles multiplataforma desarrolladas con Xamarin. Explica los beneficios de la integración continua, como encontrar errores más rápido, consistencia en los builds y poder desplegar en cualquier momento. Luego, detalla los pasos para configurar TeamCity para compilar, empaquetar, restaurar paquetes y ejecutar pruebas unitarias de las aplicaciones Xamarin de forma automática.
Service discovery in a microservice architecture using consulJos Dirksen
Presentation I gave at Nextbuild 2016. Gives an overview of how Consul can be used in microservice architecture. Accompanying examples and demo can be found here: https://github.com/josdirksen/next-build-consul
Microservice With Spring Boot and Spring CloudEberhard Wolff
Spring Boot and Spring Cloud are an ideal foundation for creating Microservices based on Java. This presentation explains basic concepts of these libraries.
Introduction to Continuous integration and the differences with continuous delivery and deployment. It shows the main benefits you should expect by incorporating CI practices to your project and how to do it with Drone.
Este documento describe cómo JRuby on Rails puede utilizarse para desarrollar aplicaciones web de manera ágil aprovechando las ventajas de Ruby y Rails, al tiempo que se ejecutan en la capa estable de Java. Se presenta un caso de éxito donde una aplicación se desarrolló en solo 3 días usando JRuby on Rails satisfaciendo los requisitos del cliente de correr sobre infraestructura Java. Finalmente, se concluye que aprovechar lenguajes dinámicos como capa superior junto a Java permite construir aplicaciones poliglotas.
Este documento presenta una introducción a Scala para desarrolladores de C# y JavaScript. Explica brevemente la historia de Scala y por qué vale la pena aprenderlo, ya que es menos verboso, estáticamente tipado, funcional y compatible con Android. Luego, detalla cómo instalar Scala e IDEs como IntelliJ y Eclipse, y recomienda recursos para empezar como documentación, ejemplos y katas. Finalmente, muestra demos de conceptos básicos como hola mundo, variables, clases, funciones, traits y case classes.
El documento introduce el lenguaje de programación Java, discutiendo brevemente su historia y desarrollo, su sintaxis y componentes básicos como clases, paquetes y la máquina virtual Java. También presenta algunas de las herramientas de desarrollo más populares como NetBeans, permitiendo a los programadores crear y ejecutar aplicaciones Java.
Java es un lenguaje de programación orientado a objetos desarrollado originalmente por James Gosling en 1995. Es un lenguaje concurrente, basado en clases y compilado a bytecode que puede ejecutarse en cualquier máquina virtual Java independientemente de la arquitectura subyacente. Ha tenido varias versiones mejoradas desde 1996 hasta la actual Java SE 10.
- Java es un lenguaje de programación orientado a objetos que toma su sintaxis de C y C++ pero tiene un modelo de objetos más simple. Se ha convertido en una tecnología ideal para aplicaciones en redes.
- Algunas características clave de Java incluyen seguridad, portabilidad, applets, programación orientada a objetos e implementaciones en más de 4500 millones de dispositivos.
- El JDK y NetBeans son herramientas gratuitas para desarrollar aplicaciones en Java.
Este documento presenta JRuby on Rails como una alternativa a J2EE para el desarrollo de aplicaciones web. Explica que JRuby on Rails combina Ruby on Rails, un popular framework para desarrollo web ágil, con JRuby, una implementación de Ruby que ejecuta código Ruby en la máquina virtual Java, lo que permite aprovechar las ventajas de Ruby on Rails y la capa estable de Java/J2EE. Luego, el documento muestra un ejemplo de cómo se puede crear rápidamente una aplicación web simple usando JRuby on Rails.
[ES] Primeros pasos con la Plataforma JavaEudris Cabrera
Este documento presenta una introducción a Java, incluyendo su ecosistema, características del lenguaje como su independencia de plataforma y orientación a objetos, y los primeros pasos para configurar el entorno de desarrollo como instalar el JDK. También cubre conceptos básicos como definir clases, tipos de datos, operadores y libros recomendados para aprender Java.
Este documento presenta una introducción a Java, incluyendo: 1) una descripción de Java como un lenguaje de programación orientado a objetos e independiente de la plataforma, 2) detalles sobre el Java Development Kit y cómo instalarlo, y 3) un pequeño ejemplo de código Java que muestra una clase simple.
09. Java desde Cero autor UNAM_1.111.pdfIrene619127
Este documento presenta una introducción a Java, incluyendo: 1) una descripción de Java como un lenguaje de programación orientado a objetos e independiente de la plataforma, 2) detalles sobre el Java Development Kit y cómo instalarlo, y 3) un pequeño ejemplo de código Java que crea una ventana con botones. El documento proporciona una guía para aprender Java de forma ordenada.
Java fue creado como una herramienta de programación orientada a objetos diseñada para ejecutarse en múltiples sistemas operativos. Es un lenguaje concurrente y seguro que permite el desarrollo de aplicaciones distribuidas y applets. Java tiene características como portabilidad, robustez, dinamismo e interpretación y compilación simultáneas.
Este documento introduce los conceptos básicos del lenguaje de programación Java, incluyendo su historia, elementos de la plataforma, estructura de un programa en Java, y cómo programar en Java desde NetBeans. Explica los tipos de datos, normas básicas de programación, y realiza una comparación entre diagramas de flujo y la sintaxis de Java.
Este documento presenta las principales características de Java 8 como el manejo de fecha y hora con la clase Clock y las clases DateTime, la programación funcional mediante expresiones lambda, el uso de Optional para evitar nulos, los streams de colecciones para iterar de forma declarativa sobre conjuntos de datos, y CompletionStage para trabajar de forma asíncrona y no bloqueante.
The document provides an introduction to programming in Java and object-oriented programming. It covers topics such as Java language fundamentals, setting up a development environment, defining classes, and object-oriented programming principles. The agenda outlines configuring the development environment, defining classes, and the object-oriented paradigm.
Este documento presenta un curso introductorio de Java dividido en 17 lecciones. La primera lección introduce Java como un lenguaje de programación orientado a objetos e independiente de la plataforma. Otras lecciones cubren temas como clases, métodos, estructuras de control, interfaces gráficas, hilos, sockets y multimedia. El curso proporciona una guía ordenada para el estudio y dominio del lenguaje Java.
Mi lenguaje de programacion de preferenciaNelson Rivera
Java es un lenguaje de programación orientado a objetos multiplataforma que puede ejecutarse en cualquier sistema operativo. El documento describe las características clave de Java como su filosofía orientada a objetos, su máquina virtual que permite ejecutar el código en múltiples plataformas, y sus ventajas como su portabilidad y amplio uso en aplicaciones web.
Mi Lenguaje de Programacion de PreferenciaNelson Rivera
El documento describe Java como el lenguaje de programación preferido del autor. Java es un lenguaje orientado a objetos multiplataforma que puede ejecutarse en cualquier sistema operativo como Windows, Linux y Mac OS. El documento también discute las características clave de Java como su filosofía orientada a objetos, su máquina virtual, sintaxis y ventajas como su portabilidad entre plataformas.
Este documento introduce Java como un lenguaje de programación orientado a objetos e independiente de la plataforma. Explica algunas características clave de Java como su robustez, manejo automático de memoria y capacidades multithreading. También describe brevemente las clases, objetos, encapsulamiento y herencia como elementos centrales de la programación orientada a objetos en Java. Finalmente, menciona las herramientas incluidas en el Java Development Kit.
Este documento presenta un curso introductorio sobre Java. Cubre temas como qué es Java, sus características como lenguaje de objetos e independiente de la plataforma, y estructuras básicas como clases, métodos y objetos. También incluye ejemplos de código Java y explica conceptos como encapsulamiento y herencia. El documento está organizado en varios capítulos que profundizan sobre estas ideas a lo largo del curso.
Este documento presenta un curso introductorio de Java dividido en 17 lecciones. La primera lección introduce Java como un lenguaje de programación orientado a objetos e independiente de la plataforma. Otras lecciones cubren temas como clases, métodos, estructuras de control, interfaces gráficas, hilos, sockets y multimedia. El curso proporciona una guía ordenada para el estudio y desarrollo de aplicaciones en Java.
Similar a Java 1.8:Road to Functional Language (20)
2. Presentación
▪ Cristian Romero Matesanz
▪ Ingeniero Informático Uc3m
▪ Colegiado 105 colegio Ingenieros Informáticos de Madrid
▪ Arquitecto Software Adesis Netlife
▪ 8 años de profesión
▪Especialista en Aplicaciones basadas en Java, J2ee,
Spring.
▪Pragmático/ Obsesionado con realizar software probado.
▪Apasionado por el continuo aprendizaje dentro de la
profesión (Spring Boot, Java 1.8, Spring Integration,
Jhipsters, Neo4j etc....).
▪Amante y apasionado de la música electrónica.
https://github.com/cristianprofile
4. Concepto programación
funcional
▪ Me: "Sofia, let's put the toys away. Is there a toy on the
ground"
▪ Sofia: "Yes, the ball"
▪ Me: "Ok, put the ball in the box. Is there something else?"
▪ Sofia: "Yes, there is my doll"
▪ Me: "Ok, put the doll in the box. Is there something else?"
▪ Sofia: "Yes, there is my book"
▪ Me: "Ok, put the book in the box. Is there something
else?"
▪ Sofia: "No, nothing else"
▪ Me: "Fine, we are done"
“put inside the box all the toys that are on
the ground".
▪ Podemos procesar varios juguetes a
la vez, uno en cada mano
▪ Puede ir recogiendo los juguetes que
más le interesen por cercanía primero
Enfoque funcional
Enfoque iterativo clásico
5. Functional Interfaces
▪ Un único método abstracto
▪ N métodos default y estáticos
▪ Importante: pueden ser instanciadas usando lambdas (sin
necesidad de realizar un new de una clase que la
implemente).
▪ Deberían ir anotadas @FunctionalInterface (no obligatorio)
▪ Similitud con clases abstractas → diferencia las clases
abstractas pueden tener estado e incluir constructores (las
variables son final)
7. Lambda
▪ Se puede definir como una función anónima (Método sin
declaración).
▪ (arg1, arg2...) -> { body }
▪ (type1 arg1, type2 arg2...) -> { body }
9. Funciones en java (1/2)
▪ Existe la creencia que las funciones son nuevas en la
versión java 1.8, pero en realidad todos las hemos usado
desde java 5/6/7.
Clase anónima
11. Lambda recordatorio
▪ Lambda is only syntactic sugar to simplify the
Function (or Whatever) interface
implementation by an anonymous class. It has
in fact absolutely nothing to do with functions.
▪ Java 8 does not know anything about functions.
Functions are ordinary object with ordinary
methods that we may call. Nothing more.
▪ Java solo dispone de funciones de uno o dos
parámetros, si quiero más parámetros entonces
necesitare la técnica de Currificar la función.
12. Referencias estáticas a métodos y
constructores
▪ Mecanismo que permite el acceso a métodos y constructores
de manera sencilla
▪ Sintaxis: NombreClase::nombreMetodo
▪ Ejemplo:
▪ Math::addExact;
▪ Person::new;
13. Referencias estáticas a métodos y
constructores
Referencia método estático
Referencia método clase con
un objeto arbitrario
Referencia método de la clase con
instancia de objeto especifica
Referencia constructor
Método Sin argumentos
Método 1 argumento
Método 1 argumento
15. Lambdas e interfaces funcional:
Cuál es su utilidad dentro de java?
▪ Los métodos permiten definir como parámetro de llamada
una interfaz funcional: parámetro lambda.(función anónima)
▪ Java 8 ha reescrito y creado nuevas clases basadas en este
potente mecanismo, de modo que podemos pasar como
parámetro una lambda.
▪ Este enfoque permite usar gran parte de los mecanismos en
los que se basa la programación funcional (no todos ya que
java no fue concebido como un lenguaje funcional)
16. Java Streams: bienvenido al
mundo funcional!!!!
▪ Api añadida a las colecciones para permitir manipular de
manera sencilla y funcional.
▪ Se basa en concepto de pipeline de operaciones:
▪ Operaciones intermedias: realizan una operación y devuelve un
nuevo stream
▪ Operaciones terminales: produce un resultado y cierra el stream
21. Java Streams: Stream versus
parallel Stream!!!!
▪ Como hemos comentado una de las ventajas de la
programación funcional era la posibilidad de procesar los
elementos en paralelo
▪ Para ello java 1.8 ha introducido el concepto de
paralellstream: stream().parallel().
▪ Common fork-join thread pool problem. Bloqueos por uso
compartido de hilos. (No todo podía ser bueno :) )
▪ Posible workaround: (usamos un fork nuevo no el pool común)
!!!!! Cuidado con la creación infinita de hilos !!!!!!
27. Optional: No es oro todo lo que
reluce!!!!
▪ Nuevas apis y métodos de Stream incluyen el uso de
optionals (findFirst,findAny,max,min)
▪ Las antiguas apis siguen dando la posibilidad de devolver
null.
▪ Difícil cambiar las apis por retrocompatiblidad
▪ En el futuro veremos hacia donde quieren orientar su uso:
solo para nuevas Apis.
28. Nueva interfaz Date and Time.
▪ Date/Time API ha sido movido al paquete java.time and
(Joda time format).
▪ La mayor parte de la clases son Threadsafe and immutable.
▪ LocalTime (Horas)
▪ LocalDate (Fechas)
▪ LocalDateTime (fechas y horas)
▪ Duration, Period (Operaciones sobre duración y periodos de
tiempo para operar con las clases local)
29. Frameworks que usan nuevas
features (Spring 4 :) )
▪ Interfaces call back aceptan expresiones lambdas y
referencias de métodos.
▪ Jsr 310 types: soporte para nuevo java.time
▪ Anotaciones repetidas
30. Conclusiones
▪ Gran cambio en el lenguaje. Java no es un lenguaje
funcional, por ello no tiene la potencia de otros lenguajes
concebidos en ese paradigma.
▪ Java se ha limitado a copiar, no ha creado nada nuevo,
dotando al lenguaje de clones de librerías de Fechas,
Lambdas existentes en otros lenguajes.
▪ No programar todo funcional, únicamente en lo necesario. ---
> lo que denominamos el efecto generics de java 1.5.
▪ Como siempre el hecho de que existan nuevas
funcionalidades dentro del lenguaje requieren de un esfuerzo
por parte del programador de asimilar su uso → efecto
programador deprated: bucles clásicos, clases con
variables estáticas vs enums etc...
▪ Oposición de las entidades a su implantación en producción.
Esto funciona y no se cambia!!!! Este es el más
importante, de momento solo para consumo propio o
nuevos desarrollos :(