blog de jpaul

Java 9 estaría llegando en septiembre de 2016

Java 9 estaría llegando el 22 de Septiembre de 2016, de acuerdo al calendario propuesto para Java 9, publicado hace algunos días por Mark Reinhold, arquitecto en jefe de la plataforma Java en Oracle.


* Imagen de http://modomatic.smugmug.com/Selected-Work-of-Moriza/Life-Underground/i-...

Dos características resaltan en esta nueva versión: la modularización de la plataforma Java y la introducción de un sistema de módulos.

De acuerdo con Reinhold (1), entre los objetivos del Proyecto Jigsaw (JSR 376) está diseñar:

Un sistema de módulos estándar para la plataforma Java facilitará la construcción, mantenimiento y distribución de aplicaciones de gran tamaño, por fin permitiendo a los desarrolladores escapar del “Infierno JAR” del frágil y propenso a errores mecanismo llamado class-path.

Diferencia entre dos fechas (Java 8)

 

¿Recuerdas un evento importante pero no recuerdas qué edad tenías? ¿Quieres saber cuánto tiempo ha transcurrido entre dos fechas? ¿No quieres lidiar con java.util.Calendar?

En ese caso, tal vez quieras usar Date and Time API (Java 8). Ejemplo:

import static java.time.temporal.ChronoUnit.*;

import java.time.chrono.ChronoLocalDate;
import java.time.chrono.ChronoPeriod;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        ChronoLocalDate from = ChronoLocalDate.from(formatter.parse("01/01/2000"));
        ChronoLocalDate to = ChronoLocalDate.from(formatter.parse("01/01/2015"));
        ChronoPeriod period = ChronoPeriod.between(from, to);
        System.out.printf("%d años, %d meses y %d días", period.get(YEARS), period.get(MONTHS), period.get(DAYS));
    }
}

Ver demo en línea.

¡Por si sirve de algo!

Ejemplo bastante simple de RMI

 

He aquí un ejemplo bastante simple de RMI (Servidor y Cliente).

Primeramente escribimos la interfaz remota con los métodos requeridos. Por ejemplo, un método para saludar:

package com.company.app;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface TestRemote extends Remote {

    String sayHello(String name) throws RemoteException;

}

A continuación, implementamos esta interfaz en una clase. Para mayor simplicidad, he utilizado una clase anónima. Y ya que estamos en esto, escribimos también el programa Servidor, el cual registrará la instancia generada a partir de la clase anónima:

Quitar acentos y caracteres especiales

¿Alguna vez has visto una nota de este tipo?

Los acentos y caracteres especiales fueron omitidos para su correcta lectura en cualquier medio electronico.

Los acentos han sido removidos intencionalmente, para que este mensaje pueda ser leido por todos los programas de correo.

El siguiente fragmento de código sustituye las vocales con acento por vocales sin acento y la ñ por n (mayúsculas o minúsculas):

private static final String ORIGINAL
        = "ÁáÉéÍíÓóÚúÑñÜü";
private static final String REPLACEMENT
        = "AaEeIiOoUuNnUu";

public static String stripAccents(String str) {
    if (str == null) {
        return null;
    }
    char[] array = str.toCharArray();
    for (int index = 0; index < array.length; index++) {
        int pos = ORIGINAL.indexOf(array[index]);
        if (pos > -1) {
            array[index] = REPLACEMENT.charAt(pos);
        }
    }
    return new String(array);
}

Por ejemplo:

Canción del programador

Y como esta es una época de alegría y de fiestas, he aquí una que otra canción del programador:

Ejemplo básico con Spring MVC (XML-less)

 

Spring puede configurarse a través de archivos XML y/o con código Java. — El siguiente aporte es un ejemplo básico de uso de Spring MVC sin utilizar la configuración basada en XML (también el web.xml es omitido) y como tema del ejemplo se trata de un ABC de Snippets.

 

 

Para poder trabajar sin el descriptor de despliegue (el archivo web.xml), se requiere que el servidor de aplicaciones implemente la especificación de Servlet 3.0+ (p.ej.: Tomcat 7/8, Glassfish 3/4, JBoss AS 7).

Algunos clases de este proyecto utilizan características de Java 8, que pueden modificarse fácilmente para soportar Java 6/7. Para el manejo de las dependencias se utilizó Maven 3.x

Estructura

  1. C:.
  2. |   pom.xml
  3. |
  4. \---src
  5.     \---main
  6.         +---java
  7.         |   \---org
  8.         |       \---javamexico
  9.         |           \---snippet

Cómo usar los "templates" de eclipse - Guía básica

 

Seguramente habrás notado que cuando escribes una palabra mágica (por ejemplo main, como en la siguiente imagen) y luego presiones Ctrl + Espacio, te aparece algo como lo siguiente:

 

 

Y si seleccionas la primera opción, el código del lado derecho de la ventana emergente se insertará en tu editor. Dentro de eclipse, a esto se conoce como templates.

Los siguientes dos ejemplos te pueden dar una idea de cómo agregar tus propios templates.


 

Template para Singleton

El template para el insertar el main se encuentra dentro de las Window > Preferences > Java > Editor > Templates

Los templates son fragmentos de código de tu lenguaje favorito con unas variables especiales que eclipse reemplaza en el momento de la inserción. El template que utilizaremos para el patrón de diseño singleton es el siguiente:

/**
 * La referencia de la instancia del singleton. No es construida hasta que se carga la clase.
 */

Ejemplo básico Jersey 1.18 (JAX-RS 1.1) + Tomcat 7.0.55 (con envío/recepción de XML/JSON)

Jersey 1.18 es una implementación de la API JAX-RS 1.1, la cual permite la creación de servicios tipo REST en Java de una manera "estándar". El ejemplo requiere las siguientes librerías:

  • jackson-core-asl-1.9.13.jar
  • jersey-bundle-1.18.1.jar

No se requiere el archivo web.xml.

Estructura

El proyecto tiene la siguiente estructura (siguiendo la estructura de un proyecto típico de eclipse):

C:.
|
|
+---src
|   +---domain
|   |       Message.java
|   |
|   \---rest
|           Hello.java
|           MyApplication.java
|           Pojo.java
|
\---WebContent
    \---WEB-INF
        \---lib
                jackson-core-asl-1.9.13.jar
                jersey-bundle-1.18.1.jar

MyApplication.java

Ejemplo básico Quartz 2.2.1 + Tomcat 7.0.54 (con edición de expresión cron)

Quartz es una utilería que permite calendarizar tareas, o en otras palabras, ejecutar una tarea cada cierto tiempo. Funciona sobre Java SE o Java EE. El siguiente ejemplo requiere de las siguientes librerías:

  • quartz-2.2.1.jar
  • slf4j-api-1.7.7.jar
  • slf4j-simple-1.7.7.jar

No se requiere el archivo web.xml. Utiliza @WebListener y @WebServlet.

Estructura

El proyecto tiene la siguiente estructura (siguiendo la estructura de un proyecto típico de eclipse):

C:.
|
|
+---src
|   +---jobs
|   |       SimpleJob.java
|   |
|   +---listeners
|   |       QuartzListener.java
|   |
|   \---servlets
|           EditTriggerServlet.java
|
\---WebContent
    \---WEB-INF
        \---lib
                quartz-2.2.1.jar
                slf4j-api-1.7.7.jar
                slf4j-simple-1.7.7.jar

QuartzListener.java

Distribuir contenido