viernes, 30 de junio de 2017

Consejos: connection Pool en Java: es q vale realmente la pena el rollo?

Hoy voy a escribir un pequeno articulo sobre el "Connection Pool" - el tema q siempre veo en los forums. Normalmente el código crea una nueva conexión cada vez que ejecutamos un SQL -> no es optimal para la performance. Entonces porque no intentamos a re-utilizar una conexión, si existe ya?
El problema es q no es tan fácil y la realización depende del vendedor de la BD: Oracle tiene su manera de gestionarlo, WebSphere - la suya, Tomcat - la suya etc.

Es q vale realmente la pena el rollo?

Yo consejería 2 posibilidades. Para pequeños proyectos y para probar algo rapidito - no nos enrollamos y hacemos a la manera fácil:

- con BasicDataSource:

BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
ds.setUsername("scott");
ds.setPassword("tiger");
ds.setUrl(URL);
ds.getConnection();

o con DriverManager:


Class.forName(DRIVER);
java.sql.Connection con = DriverManager.getConnection(URL, USERNAME, PASSWORD);



miércoles, 21 de junio de 2017

Tutorial: servicio REST con Kotlin y Spring Boot para "dummies"

Hoy haremos un pequeño servicio REST "Greeter" muy simple, así que al final de este tutorial cada uno de vosotros puede saltar de alegría "yo se hacer servicios REST!".
El codigo esta en el GitHub:
https://github.com/cyberglad/kotlindemo

Este servicio simplemente nos va decir "Hola, <tu nombre>". Al inicio no necesitamos mas. Pero solo al inicio. No vas a poner en tu currículum un servicio "Hola mundo!", entonces enseguida lo vamos a hacer mas inteligente y redirigir las respuestas según que parametro le pasas.

Kotlin - un lenguaje de la familla Java, pero mas "pragmático", breve y conciso y se parece un poco a Groovy. Que por supuesto también utiliza la JVM.
IntelliJ IDEA - hace poco que descubierto esta IDE y estoy encantado, especialmente me encanta la integration con Kotlin (normal, visto que las 2 cosas pertenecen a la misma sociedad - JetBrains). Os recomiendo mucho: tiene muy buen "texto predictivo" (por fin he encontrado uno que tiene sentido) casi como MS Visual Studio y mucho mejor que Eclipse. También el entorno es muy claro, los "pom.xml" de Maven por fin se ven bien estructurados.
Spring Boot - pa alegrarnos la vida y no enrollarnos con el Tomcat.
Spring Initializer (https://start.spring.io): para tener lista la estructura del proyecto Maven con el pom.xml

Kotlin + IntelliJ + Spring Boot = crea un entorno rápido y eficaz sin perder el tiempo en chorradas tipo "como crear mi proyecto Maven y importar todas las bibliotecas necesarias".

jueves, 8 de junio de 2017

50 sombras de Play

Hoy vamos a hablar sobre el Play, el famoso framework Java para el frontend que se ha hecho muy popular hace pocos años y que ha prometido de hacernos maravillas por los fácil y eficaz que era. Por que se hecho tan famoso? Porque combinaba la facilidad de Ruby on Rails con la eficacidad de Java ( por fin podemos desarrollar en Java sin tener que compilar/re-deployar/linkear/etc cada vez que cambiamos una letra en el código!).

Originalmente escrito en Scala, hoyendía Play tiene también las bibliotecas Java y utiliza tambien el concepto MVC (utilizado en otros frameworks, como p.e. Struts).

Ventajas:

Los ventajas de Play:
  •          No Redeploy! Cambios en el código no hace falta re-deployar
  •          Ligero: no hace falta ni DAO, ni XML
  •          Fácil para empezar, tutoriales son de maravilla
  •          Proyectos tienen una estructura muy lógica
  •          Routing es muy simple: no hace falta ni registrar ni configurar nada (controller/method)

viernes, 2 de junio de 2017

Anatomía de la máquina virtual Java (JVM)

En muchas entrevistas que se hacen, cuando se buscan los programadores Java en nivel “senior”, se espera que ellos sepan un poco cómo JVM funciona. Sin entrar en muchos detalles, pero en general. La mayoría de gente empieza por el famoso recolector de basura (Garbage Collector). Asombrosamente muy poca gente sepa que es lo que realmente está pasando dentro la JVM cuando su código viene ejecutado. Aquí intentamos a presentar una pequeña excursión en la anatomía de la JVM.
Vamos a cubrir los temas siguientes (dibujados en el diagrama de arriba):
- Código binario (byte code) en la JVM y sus especificaciones
- Java Runtime y para que sirve
- Como la JVM carga las clases
Como la JVM verifica las clases
Como la JVM ejecuta las clases (JIT)
- Sincronización de los hilos de ejecución (Multi-Thread)
- Recolección de la basura (Garbage Collection)
- Monitoring
- Realizaciones de la JVM (HotSpot, IBM J9, etc)