SlideShare una empresa de Scribd logo
Actualizando aplicaciones empresariales en Java desde Java
8 on premise hasta Java 11 en la nube
Víctor Orozco - @tuxtor
18 de agosto de 2020
Nabenik
1
Historias del mundo real
De Java 8 a Java 11
De mi data center a la nube - moderna -
Desdse Java 14 hasta el infinito
2
Historias del mundo real
Un sistema de geocerca
3
Un sistema de geocerca
• 2017
• 5 modulos
(War/Microservicios)
• 348 clases
• 17160 lineas de código
+ dependencias
• Original: Glassfish 4, Java EE
7, Java 8
• Actual: Payara 5, Jakarta EE 8,
MicroProfile 3.2
• Cliente Android y web
(Angular)
4
Un sistema de geocerca
5
Un sistema de geocerca
6
Un - sistemita - contable y empresarial
7
Un - sistemita - contable y empresarial
• 10 modulos (War, EJB,
EAR)
• 671 clases
• 39480 lineas de código
+ dependencias
• 2014
• Original: Wildfly 8, Java EE 7,
Java 7
• Actual: Wildfly 17, Jakarta EE
8, MicroProfile 3.0
• Cliente web (AngularJS)
8
Un - sistemita - contable y empresarial
9
Un - sistemita - contable y empresarial
10
Retos del mundo real
Mi ”mundo real”
• Venta/Geocerca (5 WAR) Payara Application Server
• ERP - 10 modulos (1 EAR, 9 EJB, 1 WAR), JBoss/Wildfly
• POS - JavaFX y Windows
El rompe cabezas
• Módulos en Java 9
• sun.misc.unsafe
• Corba y Java EE
• JavaFX
• IDE
• Licenciamiento
11
De Java 8 a Java 11
Algoritmo de actualización
Estrategia @tuxtor
1. Verificar y probar la compatibilidad del runtime/servidor/framework
2. Múltiples JVM en desarrollo con cambio fácil
3. Actualizar el compilador de Maven
4. Actualizar las bibliotecas
5. Incluir los módulos EE en los war/jar
6. Actualizar el IDE
7. Preparar el proyecto para módulos en el caso de JavaFX
8. Determinar previamente el Java que necesito
9. Ejecutar distintas versiones de Java en producción
12
Compatibilidad runtime
Compatibilidad con Java 11
• Tomcat
• Spring
• Micronaut
• Vert.x
• Jakarta EE (JBoss/Wildfly, OpenLiberty, Payara, WebLogic)
13
Varias JVMs
14
Bibliotecas
Generación dinámica de
Bytecode
• ByteBuddy
• ASM
• glib
• Spring
• Java EE
• Hibernate
• Mockito
15
Maven
• Maven 3.5.0
• Compiler 3.8.0
• surefire 2.22.0
• failsafe 2.22.0
• release version 11.0
16
Jakarta EE
17
Jakarta EE
18
Maven - Jakarta EE
JAF (javax.activation)
1 <dependency>
2 <groupId>jakarta.activation</groupId>
3 <artifactId>jakarta.activation-api</artifactId>
4 <version>1.2.2</version>
5 </dependency>
CORBA = RIP
19
Maven - Jakarta EE
JAXB (java.xml.bind)
1 <!-- API -->
2 <dependency>
3 <groupId>jakarta.xml.bind</groupId>
4 <artifactId>jakarta.xml.bind-api</artifactId>
5 <version>2.3.2</version>
6 </dependency>
7
8 <!-- Runtime -->
9 <dependency>
10 <groupId>org.glassfish.jaxb</groupId>
11 <artifactId>jaxb-runtime</artifactId>
12 <version>2.3.2</version>
13 </dependency>
20
Maven - Jakarta EE
JAX-WS (java.xml.ws)
1 <!-- API -->
2 <dependency>
3 <groupId>jakarta.xml.ws</groupId>
4 <artifactId>jakarta.xml.ws-api</artifactId>
5 <version>2.3.2</version>
6 </dependency>
7
8 <!-- Runtime -->
9 <dependency>
10 <groupId>com.sun.xml.ws</groupId>
11 <artifactId>jaxws-rt</artifactId>
12 <version>2.3.2</version>
13 </dependency>
21
Maven - Jakarta EE
Common Annotations (java.xml.ws.annotation)
1 <dependency>
2 <groupId>jakarta.annotation</groupId>
3 <artifactId>jakarta.annotation-api</artifactId>
4 <version>1.3.5</version>
5 </dependency>
22
IDEs
IDEs compatibles con Java 11
• Eclipse
• NetBeans
• IntelliJ IDEA
• Visual Studio Code
Algunos plug-ins problemáticos
1. Glassfish
2. WebLogic
3. Icefaces
23
JavaFX
JavaFX es un módulo independiente del JDK a partir de Java 11, compatible con
JPMS, casi todos usan la compilación de Gluon
24
¿Cual Java necesito?
Obligatorios por contrato
• Software comercial de Oracle (HotSpot)
• Software comercial de SAP (SAP VM)
• Software comercial de Red Hat (OpenJDK + RHEL)
• Software comercial de IBM (J9)
Algunos otros ”Javas”
• AdoptOpenJDK (soporte de IBM en J9)
• Correto
• Azul Zulu
• Java en Linux
25
Varias JVM en producción
Linux
• Docker
• RHEL
• Oracle Linux
• Debian
• Gentoo
Windows
• Docker / Containerd
• Variables de entorno en proyecto/runtime
• Lo importante es la salud
26
De mi data center a la nube - moderna
-
Desde mi data center
27
Desde mi data center
PaaS
• Clasico: Desplegar War
en servidores
autonomos
• Primer abordaje:
Desplegar contenedores
de forma manual
• Abordaje maduro:
Desplegar contenedores
y orquestar con
Rancher/Docker Swar-
m/Kubernetes/Mesos
28
Desde mi data center
29
Desdse Java 14 hasta el infinito
¿Que recibo con cada versión nueva de Java?
• Java - Lenguaje
• Java - Bibliotecas e APIs
• Java - Maquina Virtual de Java
30
Java - Las mejoras que resaltan
• Java 9
• Modulos
• JShell
• HTTP/2
• Factory methods
• Java 10
• Type Inference
• Class Data Sharing
• Time based release
• Java 11
• String methods
• File methods
• Direct .java execution
• Java 12
• Switch expressions
• Java 13
• Text blocks
• Java 14
• Pattern matching
• Records
• Helpfull NPE
31
JEP 110: HTTP/2 Client
1 HttpRequest request = HttpRequest.newBuilder()
2 .uri(new URI("https://swapi.co/api/starships/9"))
3 .GET()
4 .build();
5
6 HttpResponse<String> response = HttpClient.newHttpClient()
7 .send(request, BodyHandlers.ofString());
8
9 System.out.println(response.body());
32
JEP 286: Local-Variable Type Inference
1 public static void main(String args[]){
2 var localValue = 99;
3 System.out.println(++localValue);
4 //localValue = "Foo"
5 }
33
JEP 330: Launch Single-File Source-Code Programs
34
325: Switch Expressions (Preview)
Ahora
1 String langType = switch (args[0]) {
2 case "Java", "Scala", "Kotlin" -> "Static typed";
3 case "Groovy", "JavaScript" -> "Dynamic typed";
4 default -> {
5 System.out.println("This meant to be a processing
block");
6 yield "Probably LISP :)";
7 }
8 };
9 System.out.println(langType);
35
355: Text Blocks (Preview)
Antes
1 String html = "<html>n" +
2 " <body>n" +
3 " <p>Hello, world</p>n" +
4 " </body>n" +
5 "</html>n";
Ahora
1 String html = """
2 <html>
3 <body>
4 <p>Hello, world</p>
5 </body>
6 </html>
7 """; 36
JEP 359: Records (Preview)
Data carrier
1 record Person(String name, String email, int age) {}
Uso
1 Person foo = new Person("Marco", "example@mail.com",99);
2 System.out.println(foo);
3 //foo.name = "Polo";
37
Víctor Orozco
• vorozco@nabenik.com
• @tuxtor
• http://vorozco.com
• http://tuxtor.shekalug.org
This work is licensed under
Creative Commons Attribution-
NonCommercial-ShareAlike 3.0
Guatemala (CC BY-NC-SA 3.0 GT).
38

Más contenido relacionado

PDF
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
PDF
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
PDF
Tolerancia a fallas, service mesh y chassis
PDF
Introducción a Kotlin para desarrolladores Java
PDF
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
PDF
Introducción a GraalVM Native para aplicaciones JVM
PDF
Empaquetando aplicaciones Java con Docker y Kubernetes
PDF
Desarrollo moderno con DevOps y Cloud Native
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Tolerancia a fallas, service mesh y chassis
Introducción a Kotlin para desarrolladores Java
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Introducción a GraalVM Native para aplicaciones JVM
Empaquetando aplicaciones Java con Docker y Kubernetes
Desarrollo moderno con DevOps y Cloud Native

La actualidad más candente (19)

PDF
Configurar snmp en cisco
PDF
Explorando los objetos centrales de Kubernetes con Oracle Cloud
PDF
Gestión de proyectos con Maven
PDF
Java EE moderno, de monolitos a Payara Micro
PDF
Java EE, Microprofile y Payara Micro
PDF
Microservicios funcionales con Java 8, Java EE y Payara Micro
PDF
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
PDF
Introducción a JakartaEE 8
ODP
40 Novedades de JavaSE 9
PDF
Introducción a Kubernetes
PPTX
Meetup de kubernetes, conceptos básicos.
PDF
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
PDF
Java 9, 10, 11 ,12, 13 and more
PDF
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
PPTX
Overview atlas (1)
PDF
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
PDF
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
KEY
JRuby Al Rescate J2EE
PDF
Jenkins pipeline
Configurar snmp en cisco
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Gestión de proyectos con Maven
Java EE moderno, de monolitos a Payara Micro
Java EE, Microprofile y Payara Micro
Microservicios funcionales con Java 8, Java EE y Payara Micro
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Introducción a JakartaEE 8
40 Novedades de JavaSE 9
Introducción a Kubernetes
Meetup de kubernetes, conceptos básicos.
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Java 9, 10, 11 ,12, 13 and more
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
Overview atlas (1)
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
JRuby Al Rescate J2EE
Jenkins pipeline
Publicidad

Similar a Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta Java 11 en la nube (20)

PDF
202204-Modernizando aplicaciones legacy
PDF
Java EE 6
PDF
Java EE 6
PPTX
Modulo 1 java ee platform
PPTX
Charla
PDF
Definición De Java Y Just In Time
PPT
Introducción a Java y BEA (2008)
PDF
[ES] Introducción a las Aplicaciones Web con Java
PDF
Taller introducción Java EE 7 @UAPA
PDF
Ediciones de java
PDF
Trabajo de java
DOCX
TEMA Nº 1: INTRODUCCIÓN A J2EE
DOCX
TEMA Nº 1: INTRODUCCIÓN A J2EE
PDF
[ES] Introducción a Java EE 7
PDF
Introducción a java EE 7
PPT
Clase02 de sistemas
KEY
Java poliglota
PDF
[ES] Introducción a Java EE 7 & HTML 5
PDF
SERVLET BASICS
202204-Modernizando aplicaciones legacy
Java EE 6
Java EE 6
Modulo 1 java ee platform
Charla
Definición De Java Y Just In Time
Introducción a Java y BEA (2008)
[ES] Introducción a las Aplicaciones Web con Java
Taller introducción Java EE 7 @UAPA
Ediciones de java
Trabajo de java
TEMA Nº 1: INTRODUCCIÓN A J2EE
TEMA Nº 1: INTRODUCCIÓN A J2EE
[ES] Introducción a Java EE 7
Introducción a java EE 7
Clase02 de sistemas
Java poliglota
[ES] Introducción a Java EE 7 & HTML 5
SERVLET BASICS
Publicidad

Más de Víctor Leonel Orozco López (18)

PDF
Introducción al análisis de datos
PDF
From traditional to GitOps
PDF
De Java 8 a Java 17
PDF
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
PDF
Design Patterns para Microsserviços com MicroProfile
PDF
MicroProfile benefits for your monolithic applications
PDF
Consejos y el camino del desarrollador de software
PDF
De Java 8 ate Java 14
PDF
Programación con ECMA6 y TypeScript
PDF
De Java 8 a Java 11 y 14
PDF
MicroProfile benefits for monolitic applications
PDF
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
PDF
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
PDF
Eclipse MicroProfile para el desarrollador ocupado
PDF
Eclipse MicroProfile para o desenvolvedor ocupado
PDF
Eclipse MicroProfile metrics: Practical use cases
PDF
Microservicios con Jakarta EE y Eclipse MicroProfile
PDF
OWASP Top 10 101 en Java EE
Introducción al análisis de datos
From traditional to GitOps
De Java 8 a Java 17
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Design Patterns para Microsserviços com MicroProfile
MicroProfile benefits for your monolithic applications
Consejos y el camino del desarrollador de software
De Java 8 ate Java 14
Programación con ECMA6 y TypeScript
De Java 8 a Java 11 y 14
MicroProfile benefits for monolitic applications
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Eclipse MicroProfile para el desarrollador ocupado
Eclipse MicroProfile para o desenvolvedor ocupado
Eclipse MicroProfile metrics: Practical use cases
Microservicios con Jakarta EE y Eclipse MicroProfile
OWASP Top 10 101 en Java EE

Último (20)

PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PDF
Distribucion de frecuencia exel (1).pdf
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PPTX
El uso de las TIC en la vida cotidiana..
PPTX
ccna: redes de nat ipv4 stharlling cande
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PPTX
Mecanismos-de-Propagacion de ondas electromagneticas
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
PDF
Diapositiva proyecto de vida, materia catedra
PDF
Teoría de estadística descriptiva y aplicaciones .pdf
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PPT
Protocolos de seguridad y mecanismos encriptación
PPTX
Curso de generación de energía mediante sistemas solares
PDF
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
DOCX
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
PPTX
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
PPTX
Control de calidad en productos de frutas
PPTX
la-historia-de-la-medicina Edna Silva.pptx
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Distribucion de frecuencia exel (1).pdf
Historia Inteligencia Artificial Ana Romero.pptx
El uso de las TIC en la vida cotidiana..
ccna: redes de nat ipv4 stharlling cande
Documental Beyond the Code (Dossier Presentación - 2.0)
Mecanismos-de-Propagacion de ondas electromagneticas
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
Diapositiva proyecto de vida, materia catedra
Teoría de estadística descriptiva y aplicaciones .pdf
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
Protocolos de seguridad y mecanismos encriptación
Curso de generación de energía mediante sistemas solares
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
Control de calidad en productos de frutas
la-historia-de-la-medicina Edna Silva.pptx

Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta Java 11 en la nube

  • 1. Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta Java 11 en la nube Víctor Orozco - @tuxtor 18 de agosto de 2020 Nabenik 1
  • 2. Historias del mundo real De Java 8 a Java 11 De mi data center a la nube - moderna - Desdse Java 14 hasta el infinito 2
  • 4. Un sistema de geocerca 3
  • 5. Un sistema de geocerca • 2017 • 5 modulos (War/Microservicios) • 348 clases • 17160 lineas de código + dependencias • Original: Glassfish 4, Java EE 7, Java 8 • Actual: Payara 5, Jakarta EE 8, MicroProfile 3.2 • Cliente Android y web (Angular) 4
  • 6. Un sistema de geocerca 5
  • 7. Un sistema de geocerca 6
  • 8. Un - sistemita - contable y empresarial 7
  • 9. Un - sistemita - contable y empresarial • 10 modulos (War, EJB, EAR) • 671 clases • 39480 lineas de código + dependencias • 2014 • Original: Wildfly 8, Java EE 7, Java 7 • Actual: Wildfly 17, Jakarta EE 8, MicroProfile 3.0 • Cliente web (AngularJS) 8
  • 10. Un - sistemita - contable y empresarial 9
  • 11. Un - sistemita - contable y empresarial 10
  • 12. Retos del mundo real Mi ”mundo real” • Venta/Geocerca (5 WAR) Payara Application Server • ERP - 10 modulos (1 EAR, 9 EJB, 1 WAR), JBoss/Wildfly • POS - JavaFX y Windows El rompe cabezas • Módulos en Java 9 • sun.misc.unsafe • Corba y Java EE • JavaFX • IDE • Licenciamiento 11
  • 13. De Java 8 a Java 11
  • 14. Algoritmo de actualización Estrategia @tuxtor 1. Verificar y probar la compatibilidad del runtime/servidor/framework 2. Múltiples JVM en desarrollo con cambio fácil 3. Actualizar el compilador de Maven 4. Actualizar las bibliotecas 5. Incluir los módulos EE en los war/jar 6. Actualizar el IDE 7. Preparar el proyecto para módulos en el caso de JavaFX 8. Determinar previamente el Java que necesito 9. Ejecutar distintas versiones de Java en producción 12
  • 15. Compatibilidad runtime Compatibilidad con Java 11 • Tomcat • Spring • Micronaut • Vert.x • Jakarta EE (JBoss/Wildfly, OpenLiberty, Payara, WebLogic) 13
  • 17. Bibliotecas Generación dinámica de Bytecode • ByteBuddy • ASM • glib • Spring • Java EE • Hibernate • Mockito 15
  • 18. Maven • Maven 3.5.0 • Compiler 3.8.0 • surefire 2.22.0 • failsafe 2.22.0 • release version 11.0 16
  • 21. Maven - Jakarta EE JAF (javax.activation) 1 <dependency> 2 <groupId>jakarta.activation</groupId> 3 <artifactId>jakarta.activation-api</artifactId> 4 <version>1.2.2</version> 5 </dependency> CORBA = RIP 19
  • 22. Maven - Jakarta EE JAXB (java.xml.bind) 1 <!-- API --> 2 <dependency> 3 <groupId>jakarta.xml.bind</groupId> 4 <artifactId>jakarta.xml.bind-api</artifactId> 5 <version>2.3.2</version> 6 </dependency> 7 8 <!-- Runtime --> 9 <dependency> 10 <groupId>org.glassfish.jaxb</groupId> 11 <artifactId>jaxb-runtime</artifactId> 12 <version>2.3.2</version> 13 </dependency> 20
  • 23. Maven - Jakarta EE JAX-WS (java.xml.ws) 1 <!-- API --> 2 <dependency> 3 <groupId>jakarta.xml.ws</groupId> 4 <artifactId>jakarta.xml.ws-api</artifactId> 5 <version>2.3.2</version> 6 </dependency> 7 8 <!-- Runtime --> 9 <dependency> 10 <groupId>com.sun.xml.ws</groupId> 11 <artifactId>jaxws-rt</artifactId> 12 <version>2.3.2</version> 13 </dependency> 21
  • 24. Maven - Jakarta EE Common Annotations (java.xml.ws.annotation) 1 <dependency> 2 <groupId>jakarta.annotation</groupId> 3 <artifactId>jakarta.annotation-api</artifactId> 4 <version>1.3.5</version> 5 </dependency> 22
  • 25. IDEs IDEs compatibles con Java 11 • Eclipse • NetBeans • IntelliJ IDEA • Visual Studio Code Algunos plug-ins problemáticos 1. Glassfish 2. WebLogic 3. Icefaces 23
  • 26. JavaFX JavaFX es un módulo independiente del JDK a partir de Java 11, compatible con JPMS, casi todos usan la compilación de Gluon 24
  • 27. ¿Cual Java necesito? Obligatorios por contrato • Software comercial de Oracle (HotSpot) • Software comercial de SAP (SAP VM) • Software comercial de Red Hat (OpenJDK + RHEL) • Software comercial de IBM (J9) Algunos otros ”Javas” • AdoptOpenJDK (soporte de IBM en J9) • Correto • Azul Zulu • Java en Linux 25
  • 28. Varias JVM en producción Linux • Docker • RHEL • Oracle Linux • Debian • Gentoo Windows • Docker / Containerd • Variables de entorno en proyecto/runtime • Lo importante es la salud 26
  • 29. De mi data center a la nube - moderna -
  • 30. Desde mi data center 27
  • 31. Desde mi data center PaaS • Clasico: Desplegar War en servidores autonomos • Primer abordaje: Desplegar contenedores de forma manual • Abordaje maduro: Desplegar contenedores y orquestar con Rancher/Docker Swar- m/Kubernetes/Mesos 28
  • 32. Desde mi data center 29
  • 33. Desdse Java 14 hasta el infinito
  • 34. ¿Que recibo con cada versión nueva de Java? • Java - Lenguaje • Java - Bibliotecas e APIs • Java - Maquina Virtual de Java 30
  • 35. Java - Las mejoras que resaltan • Java 9 • Modulos • JShell • HTTP/2 • Factory methods • Java 10 • Type Inference • Class Data Sharing • Time based release • Java 11 • String methods • File methods • Direct .java execution • Java 12 • Switch expressions • Java 13 • Text blocks • Java 14 • Pattern matching • Records • Helpfull NPE 31
  • 36. JEP 110: HTTP/2 Client 1 HttpRequest request = HttpRequest.newBuilder() 2 .uri(new URI("https://swapi.co/api/starships/9")) 3 .GET() 4 .build(); 5 6 HttpResponse<String> response = HttpClient.newHttpClient() 7 .send(request, BodyHandlers.ofString()); 8 9 System.out.println(response.body()); 32
  • 37. JEP 286: Local-Variable Type Inference 1 public static void main(String args[]){ 2 var localValue = 99; 3 System.out.println(++localValue); 4 //localValue = "Foo" 5 } 33
  • 38. JEP 330: Launch Single-File Source-Code Programs 34
  • 39. 325: Switch Expressions (Preview) Ahora 1 String langType = switch (args[0]) { 2 case "Java", "Scala", "Kotlin" -> "Static typed"; 3 case "Groovy", "JavaScript" -> "Dynamic typed"; 4 default -> { 5 System.out.println("This meant to be a processing block"); 6 yield "Probably LISP :)"; 7 } 8 }; 9 System.out.println(langType); 35
  • 40. 355: Text Blocks (Preview) Antes 1 String html = "<html>n" + 2 " <body>n" + 3 " <p>Hello, world</p>n" + 4 " </body>n" + 5 "</html>n"; Ahora 1 String html = """ 2 <html> 3 <body> 4 <p>Hello, world</p> 5 </body> 6 </html> 7 """; 36
  • 41. JEP 359: Records (Preview) Data carrier 1 record Person(String name, String email, int age) {} Uso 1 Person foo = new Person("Marco", "example@mail.com",99); 2 System.out.println(foo); 3 //foo.name = "Polo"; 37
  • 42. Víctor Orozco • vorozco@nabenik.com • @tuxtor • http://vorozco.com • http://tuxtor.shekalug.org This work is licensed under Creative Commons Attribution- NonCommercial-ShareAlike 3.0 Guatemala (CC BY-NC-SA 3.0 GT). 38