SlideShare a Scribd company logo
De Java 8 a Java 14
Víctor Orozco - @tuxtor
30 de enero de 2020
Academik
1
¿Java ya no es gratis/libre?
De Java 8 a Java 14
Java 9
Java 10
Java 11
Java 12
Java 13
Java 14
Mundo real
2
¿Java ya no es gratis/libre?
¿Que es Java?
• Lenguaje de programación
• Maquina virtual
• Bibliotecas/API
Todas conforman la plataforma Java
3
¿Que es Java?
• Lenguaje de programación
• Maquina virtual
• Bibliotecas/API
Todas conforman la plataforma Java (TM)
3
¿Como se hace Java?
• JCP - Java Community Process
• JSR - Java Specification Request
• JEP - Java Enhancement Proposal
• JCK - Java Compatibility Kit
4
¿Como se hace Java? - Java Specification Request
5
¿Como se hace Java? - Java Enhancement Proposal
6
¿Como se hace Java? - Java Compatibility Kit
7
¿Como se hace Java? - Java Builds
8
¿Java ya no es gratis/libre?
Java es gratis y libre.
Algunas empresas cobran por soporte en su ”versión”de Java.
9
De Java 8 a Java 14
¿Una nueva versión de Java?
• Java - Lenguaje de programación
• Java - La plataforma (Bibliotecas y APIs)
• Java - La máquina virtual
10
Java - Mejoras importantes
• Java 9
• Modulos
• JShell
• HTTP/2
• Factory methods
• Java 10
• Inferencia de tipos
• Class Data Sharing
• Time based release
• Java 11
• String methods
• File methods
• Ejecución directa de
.java
• Java 12
• Switch expressions
• Java 13
• Text blocks
• Java 14
• Pattern matching
• Records
• Helpfull NPE 11
Java 9
JEP 222: jshell: The Java Shell (Read-Eval-Print Loop)
12
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());
13
JEP 269: Convenience Factory Methods for Collections
Antes
1 Set<String> set = new HashSet<>();
2 set.add("a");
3 set.add("b");
4 set.add("c");
5 set = Collections.unmodifiableSet(set);
”Pro”
1 Set<String> set = Collections.unmodifiableSet(new HashSet<>(
Arrays.asList("a", "b", "c")));
Ahora
1 Set<String> set = Set.of("a", "b", "c");
14
JEP 213: Milling Project Coin - Private methods in interfaces
Antes
1 public interface Vehicle{
2 public void move();
3 }
Ahora
1 public interface Vehicle {
2 public default void makeNoise ( ) {
3 System . out . p r i n t l n ("Making noise!") ;
4 createNoise ( ) ;
5 }
6
7 private void createNoise ( ) {
8 System . out . p r i n t l n ("Run run") ;
9 }
10 }
15
JEP 213: Milling Project Coin - Try-with-resources
Antes
1 BufferedReader reader = new BufferedReader(new FileReader("
langs.txt"));
2
3 try(BufferedReader innerReader = reader){
4 System.out.println(reader.readLine());
5 }
Ahora
1 BufferedReader reader = new BufferedReader(new FileReader("
langs.txt"));
2
3 try(reader){
4 System.out.println(reader.readLine());
5 } 16
Java 10
Java 10
286: Local-Variable Type Inference
296: Consolidate the JDK Forest into a Single Repository
304: Garbage-Collector Interface
307: Parallel Full GC for G1
310: Application Class-Data Sharing
312: Thread-Local Handshakes
313: Remove the Native-Header Generation Tool (javah)
314: Additional Unicode Language-Tag Extensions
316: Heap Allocation on Alternative Memory Devices
317: Experimental Java-Based JIT Compiler
319: Root Certificates
322: Time-Based Release Versioning
17
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 }
18
JEP 310: Application Class-Data Sharing
1java −XX : ArchiveClassesAtExit=app−cs . jsa −j a r payara−micro −5.192. j a r
2java −XX : SharedArchiveFile=app−cs . jsa −j a r fpjava . j a r
19
JEP 310: Application Class-Data Sharing
20
JEP 310: Application Class-Data Sharing
21
JEP 322: Time-Based Release Versioning
22
JEP 322: Time-Based Release Versioning
23
Java 11
Java 11
181: Nest-Based Access Control
309: Dynamic Class-File Constants
315: Improve Aarch64 Intrinsics
318: Epsilon: A No-Op Garbage Collector
320: Remove the Java EE and CORBA Modules
321: HTTP Client (Standard)
323: Local-Variable Syntax for Lambda
Parameters
324: Key Agreement with Curve25519 and
Curve448
327: Unicode 10
328: Flight Recorder
329: ChaCha20 and Poly1305 Cryptographic
Algorithms
330: Launch Single-File Source-Code Programs
331: Low-Overhead Heap Profiling
332: Transport Layer Security (TLS) 1.3
333: ZGC: A Scalable Low-Latency Garbage
Collector (Experimental)
335: Deprecate the Nashorn JavaScript Engine
336: Deprecate the Pack200 Tools and API
24
JEP 323: Local-Variable Syntax for Lambda Parameters
Antes
1 BiPredicate<String,String> demoPredicate =
2 (String a, String b) -> a.equals(b);
3 BiPredicate<String,String> demoPredicate =
4 (a, b) -> a.equals(b);
Ahora
1 BiPredicate<String,String> demoPredicate =
2 (var a, var b) -> a.equals(b);
Posibilidades
1 (@Nonnull var x, @Nullable var y) -> x.process(y)
25
JEP 330: Launch Single-File Source-Code Programs
26
Java 12
Java 12
189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
230: Microbenchmark Suite
325: Switch Expressions (Preview)
334: JVM Constants API
340: One AArch64 Port, Not Two
341: Default CDS Archives
344: Abortable Mixed Collections for G1
346: Promptly Return Unused Committed Memory from G1
27
325: Switch Expressions (Preview)
Antes
1 String langType = "";
2 switch (args[0]) {
3 case "Java":
4 case "Scala":
5 case "Kotlin":
6 langType = "Static typed";
7 break;
8 case "Groovy":
9 case "JavaScript":
10 langType = "Dynamic typed";
11 break;
12 }
13 System.out.println(langType);
28
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);
29
Java 13
Java 13
350: Dynamic CDS Archives
351: ZGC: Uncommit Unused Memory
353: Reimplement the Legacy Socket API
354: Switch Expressions (Preview)
355: Text Blocks (Preview)
30
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 """; 31
Java 14
Java 14
305: Pattern Matching for instanceof (Preview)
343: Packaging Tool (Incubator)
345: NUMA-Aware Memory Allocation for G1
349: JFR Event Streaming
352: Non-Volatile Mapped Byte Buffers
358: Helpful NullPointerExceptions
359: Records (Preview)
361: Switch Expressions (Standard)
362: Deprecate the Solaris and SPARC Ports
363: Remove the Concurrent Mark Sweep (CMS)
Garbage Collector
364: ZGC on macOS
365: ZGC on Windows
366: Deprecate the ParallelScavenge + SerialOld
GC Combination
367: Remove the Pack200 Tools and API
368: Text Blocks (Second Preview)
370: Foreign-Memory Access API (Incubator)
32
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";
33
305: Pattern Matching for instanceof (Preview)
Antes
1 if(o instanceof Person){
2 Person p = (Person)o;
3 System.out.println("Hello " + p.name());
4 }else{
5 System.out.println("Unknown object");
6 }
Ahora
1 if(o instanceof Person p){
2 System.out.println("Hello " + p.name());
3 }else{
4 System.out.println("Unknown object");
5 }
34
Mundo real
Mundo real
Mi mundo real
• ERP - 10 modulos (1 EAR, 9 EJB, 1 WAR), JBoss/Wildfly
• Venta/Geocerca (5 WAR) Payara Application Server
• POS - JavaFX y Windows D:
Los dolores de cabeza
• Modulos
• sun.misc.unsafe
• Corba y Java EE
• JavaFX
• IDE
• Licencia
35
Mundo real
Los dolores de cabeza
• Modulos
• sun.misc.unsafe
• Corba y Java EE
• JavaFX
• IDE
• Licencia
Estrategia
1. Verificar la compatibilidad del runtime/servidor/framework compatible
2. Multiples JVM con cambio fácil en desarrollo
3. Actualizar el compilador en Maven
4. Actualizar bibliotecas
5. Incluir los modulos corba y Java EE en el war
6. Actualizar el IDE
7. Prepara el proyecto para enlazar el modulo de JavaFX
8. Verificar que Java necesito
9. Multiples JVM en producción
36
Compatibilidad runtime
Compatible con Java 11
• Tomcat
• Spring
• Micronaut
• Vert.x
• JakartaEE (JBoss/Wildfly, OpenLiberty, Payara)
37
Multiples JVMs
38
Bibliotecas
Manipulación de bytecode
• ByteBuddy
• ASM
• glib
• Spring
• Java EE
• Hibernate
• Mockito
39
Maven
• Maven 3.5.0
• Compiler 3.8.0
• surefire 2.22.0
• failsafe 2.22.0
• release version 11.0
40
Maven - JavaEE
JAF (java.activation)
1 <dependency>
2 <groupId>com.sun.activation</groupId>
3 <artifactId>javax.activation</artifactId>
4 <version>1.2.0</version>
5 </dependency>
CORBA = RIP
41
Maven - JavaEE
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>
42
Maven - JavaEE
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>
43
Maven - JavaEE
Common Annotations (java.xml.ws.annotation)
1 <dependency>
2 <groupId>javax.annotation</groupId>
3 <artifactId>javax.annotation-api</artifactId>
4 <version>1.3.1</version>
5 </dependency>
44
IDEs
Compatibles con Java 11
• Eclipse
• NetBeans
• IntelliJ IDEA
Algunos plugins problematicos
1. Glassfish
2. WebLogic
3. Icefaces
45
JavaFX
JavaFX ahora es un modulo OpenSource y la forma recomendada”para
empaquetar la aplicación es JPMS, la forma más facil es la compilación de Gluon
46
¿Que 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)
Otras opciones
• AdoptOpenJDK (Opción a soporte de IBM en J9)
• Correto
• Azul Zulu
• Java de su distro
47
Multiples JVMs en producción
Linux
• Docker
• RHEL
• Debian
• Gentoo
Windows
• Docker
• Variables de entorno por proyecto/runtime
• Lo importante es la salud
48
Academik
49
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).
50
51

More Related Content

What's hot

OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14Ivan Krylov
 
자바 성능 강의
자바 성능 강의자바 성능 강의
자바 성능 강의
Terry Cho
 
Se lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
Se lancer dans l'aventure microservices avec Spring Cloud - Julien RoySe lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
Se lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
ekino
 
Jolokia - JMX on Capsaicin (Devoxx 2011)
Jolokia - JMX on Capsaicin (Devoxx 2011)Jolokia - JMX on Capsaicin (Devoxx 2011)
Jolokia - JMX on Capsaicin (Devoxx 2011)
roland.huss
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with server
Eugene Yokota
 
QConSP 2018 - Java Module System
QConSP 2018 - Java Module SystemQConSP 2018 - Java Module System
QConSP 2018 - Java Module System
Leonardo Zanivan
 
Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법
Minchul Jung
 
GlassFish v2.1
GlassFish v2.1GlassFish v2.1
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Vert.x - Tehran JUG meeting Aug-2014 - Saeed ZarinfamVert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Saeed Zarinfam
 
Power tools in Java
Power tools in JavaPower tools in Java
Power tools in Java
DPC Consulting Ltd
 
Apache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip HanikApache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip Hanik
Edgar Espina
 
vert.x 3.1 - be reactive on the JVM but not only in Java
vert.x 3.1 - be reactive on the JVM but not only in Javavert.x 3.1 - be reactive on the JVM but not only in Java
vert.x 3.1 - be reactive on the JVM but not only in Java
Clément Escoffier
 
Microservices with Micronaut
Microservices with MicronautMicroservices with Micronaut
Microservices with Micronaut
QAware GmbH
 
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Eugene Yokota
 
Thread dump troubleshooting
Thread dump troubleshootingThread dump troubleshooting
Thread dump troubleshootingJerry Chan
 
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkit
Sages
 
Python + GDB = Javaデバッガ
Python + GDB = JavaデバッガPython + GDB = Javaデバッガ
Python + GDB = Javaデバッガ
Kenji Kazumura
 
.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0
All Things Open
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
IT Event
 

What's hot (19)

OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14
 
자바 성능 강의
자바 성능 강의자바 성능 강의
자바 성능 강의
 
Se lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
Se lancer dans l'aventure microservices avec Spring Cloud - Julien RoySe lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
Se lancer dans l'aventure microservices avec Spring Cloud - Julien Roy
 
Jolokia - JMX on Capsaicin (Devoxx 2011)
Jolokia - JMX on Capsaicin (Devoxx 2011)Jolokia - JMX on Capsaicin (Devoxx 2011)
Jolokia - JMX on Capsaicin (Devoxx 2011)
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with server
 
QConSP 2018 - Java Module System
QConSP 2018 - Java Module SystemQConSP 2018 - Java Module System
QConSP 2018 - Java Module System
 
Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법
 
GlassFish v2.1
GlassFish v2.1GlassFish v2.1
GlassFish v2.1
 
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Vert.x - Tehran JUG meeting Aug-2014 - Saeed ZarinfamVert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
 
Power tools in Java
Power tools in JavaPower tools in Java
Power tools in Java
 
Apache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip HanikApache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip Hanik
 
vert.x 3.1 - be reactive on the JVM but not only in Java
vert.x 3.1 - be reactive on the JVM but not only in Javavert.x 3.1 - be reactive on the JVM but not only in Java
vert.x 3.1 - be reactive on the JVM but not only in Java
 
Microservices with Micronaut
Microservices with MicronautMicroservices with Micronaut
Microservices with Micronaut
 
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)
 
Thread dump troubleshooting
Thread dump troubleshootingThread dump troubleshooting
Thread dump troubleshooting
 
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkit
 
Python + GDB = Javaデバッガ
Python + GDB = JavaデバッガPython + GDB = Javaデバッガ
Python + GDB = Javaデバッガ
 
.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
 

Similar to De Java 8 a Java 11 y 14

What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
Ivan Krylov
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from Oredev
Mattias Karlsson
 
DevNexus 2020: Discover Modern Java
DevNexus 2020: Discover Modern JavaDevNexus 2020: Discover Modern Java
DevNexus 2020: Discover Modern Java
Henri Tremblay
 
Java 9 new features
Java 9 new featuresJava 9 new features
Java 9 new features
Masudul Haque
 
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion MiddlewareAMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
Getting value from IoT, Integration and Data Analytics
 
JCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of JavaJCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of Java
Joseph Kuo
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8
Marc Tritschler
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8
marctritschler
 
HotSpotコトハジメ
HotSpotコトハジメHotSpotコトハジメ
HotSpotコトハジメ
Yasumasa Suenaga
 
Real World Java 9
Real World Java 9Real World Java 9
Real World Java 9
Trisha Gee
 
Real World Java 9
Real World Java 9Real World Java 9
Real World Java 9
J On The Beach
 
Java 40 versions_sgp
Java 40 versions_sgpJava 40 versions_sgp
Java 40 versions_sgp
michaelisvy
 
Real World Java 9 - JetBrains Webinar
Real World Java 9 - JetBrains WebinarReal World Java 9 - JetBrains Webinar
Real World Java 9 - JetBrains Webinar
Trisha Gee
 
Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)
Felix Geisendörfer
 
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ..."Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
Vadym Kazulkin
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Ritter
catherinewall
 
Java basics mind map
Java basics mind mapJava basics mind map
Java basics mind map
Navinda Dissanayake
 
Making The Move To Java 17 (JConf 2022)
Making The Move To Java 17 (JConf 2022)Making The Move To Java 17 (JConf 2022)
Making The Move To Java 17 (JConf 2022)
Alex Motley
 
PostgreSQL and PL/Java
PostgreSQL and PL/JavaPostgreSQL and PL/Java
PostgreSQL and PL/Java
Peter Eisentraut
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machine
Chun-Yu Wang
 

Similar to De Java 8 a Java 11 y 14 (20)

What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from Oredev
 
DevNexus 2020: Discover Modern Java
DevNexus 2020: Discover Modern JavaDevNexus 2020: Discover Modern Java
DevNexus 2020: Discover Modern Java
 
Java 9 new features
Java 9 new featuresJava 9 new features
Java 9 new features
 
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion MiddlewareAMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
AMIS Oracle OpenWorld 2013 Review Part 3 - Fusion Middleware
 
JCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of JavaJCConf 2018 - Retrospect and Prospect of Java
JCConf 2018 - Retrospect and Prospect of Java
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8
 
HotSpotコトハジメ
HotSpotコトハジメHotSpotコトハジメ
HotSpotコトハジメ
 
Real World Java 9
Real World Java 9Real World Java 9
Real World Java 9
 
Real World Java 9
Real World Java 9Real World Java 9
Real World Java 9
 
Java 40 versions_sgp
Java 40 versions_sgpJava 40 versions_sgp
Java 40 versions_sgp
 
Real World Java 9 - JetBrains Webinar
Real World Java 9 - JetBrains WebinarReal World Java 9 - JetBrains Webinar
Real World Java 9 - JetBrains Webinar
 
Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)
 
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ..."Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Ritter
 
Java basics mind map
Java basics mind mapJava basics mind map
Java basics mind map
 
Making The Move To Java 17 (JConf 2022)
Making The Move To Java 17 (JConf 2022)Making The Move To Java 17 (JConf 2022)
Making The Move To Java 17 (JConf 2022)
 
PostgreSQL and PL/Java
PostgreSQL and PL/JavaPostgreSQL and PL/Java
PostgreSQL and PL/Java
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machine
 

More from Víctor Leonel Orozco López

Introducción al análisis de datos
Introducción al análisis de datosIntroducción al análisis de datos
Introducción al análisis de datos
Víctor Leonel Orozco López
 
From traditional to GitOps
From traditional to GitOpsFrom traditional to GitOps
From traditional to GitOps
Víctor Leonel Orozco López
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Víctor Leonel Orozco López
 
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosDesde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Víctor Leonel Orozco López
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Víctor Leonel Orozco López
 
Tolerancia a fallas, service mesh y chassis
Tolerancia a fallas, service mesh y chassisTolerancia a fallas, service mesh y chassis
Tolerancia a fallas, service mesh y chassis
Víctor Leonel Orozco López
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Víctor Leonel Orozco López
 
Introducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMIntroducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVM
Víctor Leonel Orozco López
 
Desarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud NativeDesarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud Native
Víctor Leonel Orozco López
 
Gestión de proyectos con Maven
Gestión de proyectos con MavenGestión de proyectos con Maven
Gestión de proyectos con Maven
Víctor Leonel Orozco López
 
MicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applicationsMicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applications
Víctor Leonel Orozco López
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Víctor Leonel Orozco López
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Víctor Leonel Orozco López
 
Consejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de softwareConsejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de software
Víctor Leonel Orozco López
 
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Víctor Leonel Orozco López
 
Introducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores JavaIntroducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores Java
Víctor Leonel Orozco López
 
Programación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScriptProgramación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScript
Víctor Leonel Orozco López
 
Empaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y KubernetesEmpaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y Kubernetes
Víctor Leonel Orozco López
 
MicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applicationsMicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applications
Víctor Leonel Orozco López
 
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguajeKotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Víctor Leonel Orozco López
 

More from Víctor Leonel Orozco López (20)

Introducción al análisis de datos
Introducción al análisis de datosIntroducción al análisis de datos
Introducción al análisis de datos
 
From traditional to GitOps
From traditional to GitOpsFrom traditional to GitOps
From traditional to GitOps
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
 
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 añosDesde la TV, hasta la nube, el ecosistema de Java en 26 años
Desde la TV, hasta la nube, el ecosistema de Java en 26 años
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
 
Tolerancia a fallas, service mesh y chassis
Tolerancia a fallas, service mesh y chassisTolerancia a fallas, service mesh y chassis
Tolerancia a fallas, service mesh y chassis
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle Cloud
 
Introducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMIntroducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVM
 
Desarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud NativeDesarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud Native
 
Gestión de proyectos con Maven
Gestión de proyectos con MavenGestión de proyectos con Maven
Gestión de proyectos con Maven
 
MicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applicationsMicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applications
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
 
Consejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de softwareConsejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de software
 
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
 
Introducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores JavaIntroducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores Java
 
Programación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScriptProgramación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScript
 
Empaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y KubernetesEmpaquetando aplicaciones Java con Docker y Kubernetes
Empaquetando aplicaciones Java con Docker y Kubernetes
 
MicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applicationsMicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applications
 
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguajeKotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
 

Recently uploaded

Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
UiPathCommunity
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 

Recently uploaded (20)

Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 

De Java 8 a Java 11 y 14

  • 1. De Java 8 a Java 14 Víctor Orozco - @tuxtor 30 de enero de 2020 Academik 1
  • 2. ¿Java ya no es gratis/libre? De Java 8 a Java 14 Java 9 Java 10 Java 11 Java 12 Java 13 Java 14 Mundo real 2
  • 3. ¿Java ya no es gratis/libre?
  • 4. ¿Que es Java? • Lenguaje de programación • Maquina virtual • Bibliotecas/API Todas conforman la plataforma Java 3
  • 5. ¿Que es Java? • Lenguaje de programación • Maquina virtual • Bibliotecas/API Todas conforman la plataforma Java (TM) 3
  • 6. ¿Como se hace Java? • JCP - Java Community Process • JSR - Java Specification Request • JEP - Java Enhancement Proposal • JCK - Java Compatibility Kit 4
  • 7. ¿Como se hace Java? - Java Specification Request 5
  • 8. ¿Como se hace Java? - Java Enhancement Proposal 6
  • 9. ¿Como se hace Java? - Java Compatibility Kit 7
  • 10. ¿Como se hace Java? - Java Builds 8
  • 11. ¿Java ya no es gratis/libre? Java es gratis y libre. Algunas empresas cobran por soporte en su ”versión”de Java. 9
  • 12. De Java 8 a Java 14
  • 13. ¿Una nueva versión de Java? • Java - Lenguaje de programación • Java - La plataforma (Bibliotecas y APIs) • Java - La máquina virtual 10
  • 14. Java - Mejoras importantes • Java 9 • Modulos • JShell • HTTP/2 • Factory methods • Java 10 • Inferencia de tipos • Class Data Sharing • Time based release • Java 11 • String methods • File methods • Ejecución directa de .java • Java 12 • Switch expressions • Java 13 • Text blocks • Java 14 • Pattern matching • Records • Helpfull NPE 11
  • 16. JEP 222: jshell: The Java Shell (Read-Eval-Print Loop) 12
  • 17. 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()); 13
  • 18. JEP 269: Convenience Factory Methods for Collections Antes 1 Set<String> set = new HashSet<>(); 2 set.add("a"); 3 set.add("b"); 4 set.add("c"); 5 set = Collections.unmodifiableSet(set); ”Pro” 1 Set<String> set = Collections.unmodifiableSet(new HashSet<>( Arrays.asList("a", "b", "c"))); Ahora 1 Set<String> set = Set.of("a", "b", "c"); 14
  • 19. JEP 213: Milling Project Coin - Private methods in interfaces Antes 1 public interface Vehicle{ 2 public void move(); 3 } Ahora 1 public interface Vehicle { 2 public default void makeNoise ( ) { 3 System . out . p r i n t l n ("Making noise!") ; 4 createNoise ( ) ; 5 } 6 7 private void createNoise ( ) { 8 System . out . p r i n t l n ("Run run") ; 9 } 10 } 15
  • 20. JEP 213: Milling Project Coin - Try-with-resources Antes 1 BufferedReader reader = new BufferedReader(new FileReader(" langs.txt")); 2 3 try(BufferedReader innerReader = reader){ 4 System.out.println(reader.readLine()); 5 } Ahora 1 BufferedReader reader = new BufferedReader(new FileReader(" langs.txt")); 2 3 try(reader){ 4 System.out.println(reader.readLine()); 5 } 16
  • 22. Java 10 286: Local-Variable Type Inference 296: Consolidate the JDK Forest into a Single Repository 304: Garbage-Collector Interface 307: Parallel Full GC for G1 310: Application Class-Data Sharing 312: Thread-Local Handshakes 313: Remove the Native-Header Generation Tool (javah) 314: Additional Unicode Language-Tag Extensions 316: Heap Allocation on Alternative Memory Devices 317: Experimental Java-Based JIT Compiler 319: Root Certificates 322: Time-Based Release Versioning 17
  • 23. 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 } 18
  • 24. JEP 310: Application Class-Data Sharing 1java −XX : ArchiveClassesAtExit=app−cs . jsa −j a r payara−micro −5.192. j a r 2java −XX : SharedArchiveFile=app−cs . jsa −j a r fpjava . j a r 19
  • 25. JEP 310: Application Class-Data Sharing 20
  • 26. JEP 310: Application Class-Data Sharing 21
  • 27. JEP 322: Time-Based Release Versioning 22
  • 28. JEP 322: Time-Based Release Versioning 23
  • 30. Java 11 181: Nest-Based Access Control 309: Dynamic Class-File Constants 315: Improve Aarch64 Intrinsics 318: Epsilon: A No-Op Garbage Collector 320: Remove the Java EE and CORBA Modules 321: HTTP Client (Standard) 323: Local-Variable Syntax for Lambda Parameters 324: Key Agreement with Curve25519 and Curve448 327: Unicode 10 328: Flight Recorder 329: ChaCha20 and Poly1305 Cryptographic Algorithms 330: Launch Single-File Source-Code Programs 331: Low-Overhead Heap Profiling 332: Transport Layer Security (TLS) 1.3 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental) 335: Deprecate the Nashorn JavaScript Engine 336: Deprecate the Pack200 Tools and API 24
  • 31. JEP 323: Local-Variable Syntax for Lambda Parameters Antes 1 BiPredicate<String,String> demoPredicate = 2 (String a, String b) -> a.equals(b); 3 BiPredicate<String,String> demoPredicate = 4 (a, b) -> a.equals(b); Ahora 1 BiPredicate<String,String> demoPredicate = 2 (var a, var b) -> a.equals(b); Posibilidades 1 (@Nonnull var x, @Nullable var y) -> x.process(y) 25
  • 32. JEP 330: Launch Single-File Source-Code Programs 26
  • 34. Java 12 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) 230: Microbenchmark Suite 325: Switch Expressions (Preview) 334: JVM Constants API 340: One AArch64 Port, Not Two 341: Default CDS Archives 344: Abortable Mixed Collections for G1 346: Promptly Return Unused Committed Memory from G1 27
  • 35. 325: Switch Expressions (Preview) Antes 1 String langType = ""; 2 switch (args[0]) { 3 case "Java": 4 case "Scala": 5 case "Kotlin": 6 langType = "Static typed"; 7 break; 8 case "Groovy": 9 case "JavaScript": 10 langType = "Dynamic typed"; 11 break; 12 } 13 System.out.println(langType); 28
  • 36. 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); 29
  • 38. Java 13 350: Dynamic CDS Archives 351: ZGC: Uncommit Unused Memory 353: Reimplement the Legacy Socket API 354: Switch Expressions (Preview) 355: Text Blocks (Preview) 30
  • 39. 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 """; 31
  • 41. Java 14 305: Pattern Matching for instanceof (Preview) 343: Packaging Tool (Incubator) 345: NUMA-Aware Memory Allocation for G1 349: JFR Event Streaming 352: Non-Volatile Mapped Byte Buffers 358: Helpful NullPointerExceptions 359: Records (Preview) 361: Switch Expressions (Standard) 362: Deprecate the Solaris and SPARC Ports 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector 364: ZGC on macOS 365: ZGC on Windows 366: Deprecate the ParallelScavenge + SerialOld GC Combination 367: Remove the Pack200 Tools and API 368: Text Blocks (Second Preview) 370: Foreign-Memory Access API (Incubator) 32
  • 42. 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"; 33
  • 43. 305: Pattern Matching for instanceof (Preview) Antes 1 if(o instanceof Person){ 2 Person p = (Person)o; 3 System.out.println("Hello " + p.name()); 4 }else{ 5 System.out.println("Unknown object"); 6 } Ahora 1 if(o instanceof Person p){ 2 System.out.println("Hello " + p.name()); 3 }else{ 4 System.out.println("Unknown object"); 5 } 34
  • 45. Mundo real Mi mundo real • ERP - 10 modulos (1 EAR, 9 EJB, 1 WAR), JBoss/Wildfly • Venta/Geocerca (5 WAR) Payara Application Server • POS - JavaFX y Windows D: Los dolores de cabeza • Modulos • sun.misc.unsafe • Corba y Java EE • JavaFX • IDE • Licencia 35
  • 46. Mundo real Los dolores de cabeza • Modulos • sun.misc.unsafe • Corba y Java EE • JavaFX • IDE • Licencia Estrategia 1. Verificar la compatibilidad del runtime/servidor/framework compatible 2. Multiples JVM con cambio fácil en desarrollo 3. Actualizar el compilador en Maven 4. Actualizar bibliotecas 5. Incluir los modulos corba y Java EE en el war 6. Actualizar el IDE 7. Prepara el proyecto para enlazar el modulo de JavaFX 8. Verificar que Java necesito 9. Multiples JVM en producción 36
  • 47. Compatibilidad runtime Compatible con Java 11 • Tomcat • Spring • Micronaut • Vert.x • JakartaEE (JBoss/Wildfly, OpenLiberty, Payara) 37
  • 49. Bibliotecas Manipulación de bytecode • ByteBuddy • ASM • glib • Spring • Java EE • Hibernate • Mockito 39
  • 50. Maven • Maven 3.5.0 • Compiler 3.8.0 • surefire 2.22.0 • failsafe 2.22.0 • release version 11.0 40
  • 51. Maven - JavaEE JAF (java.activation) 1 <dependency> 2 <groupId>com.sun.activation</groupId> 3 <artifactId>javax.activation</artifactId> 4 <version>1.2.0</version> 5 </dependency> CORBA = RIP 41
  • 52. Maven - JavaEE 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> 42
  • 53. Maven - JavaEE 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> 43
  • 54. Maven - JavaEE Common Annotations (java.xml.ws.annotation) 1 <dependency> 2 <groupId>javax.annotation</groupId> 3 <artifactId>javax.annotation-api</artifactId> 4 <version>1.3.1</version> 5 </dependency> 44
  • 55. IDEs Compatibles con Java 11 • Eclipse • NetBeans • IntelliJ IDEA Algunos plugins problematicos 1. Glassfish 2. WebLogic 3. Icefaces 45
  • 56. JavaFX JavaFX ahora es un modulo OpenSource y la forma recomendada”para empaquetar la aplicación es JPMS, la forma más facil es la compilación de Gluon 46
  • 57. ¿Que 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) Otras opciones • AdoptOpenJDK (Opción a soporte de IBM en J9) • Correto • Azul Zulu • Java de su distro 47
  • 58. Multiples JVMs en producción Linux • Docker • RHEL • Debian • Gentoo Windows • Docker • Variables de entorno por proyecto/runtime • Lo importante es la salud 48
  • 60. 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). 50
  • 61. 51