Java Standard Edition

Obtener la version del JDK utilizada en la compilación

Hoy fue uno de esos días en que tuve que lidiar con un proyecto legacy el cual está construido con Java 5, la sorpresa que tuve cuando comencé a compilar fue que varias bibliotecas (JAR) estaban compiladas con una version superior. Como necesitaba saber exactamente cuales eran las que necesitaba hacer Downgrade de versión y eran bastantes los JAR's escribí este script que después pensé que seria util para la comunidad.

Básicamente lo que hace es tomar cada archivo y lo descomprime en una carpeta X y obtiene el primer archivo *.class y se ejecuta el comando javap para obtener la version, como eso retorna algo similar a   version: 52 entonces quité lo que no es numero para asignarlo a la variable $v y utilizando arrays asociativos es que se mapea el valor para obtener la versión.

TO_DO:
Mejoraría bastante el performance si se descomprimiera solo el primer archivo *.class que encuentre.

#!/bin/bash
 
LIB_HOME=/path/to/lib/*.jar
 
version['45.3']=1.1
version['46']=1.2
version['47']=1.3
version['48']=1.4
version['49']=5
version['50']=6
version['51']=7
version['52']=8
 
for JAR_FILE in $LIB_HOME
do

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.

Desarrollo de libreria para consultas DDL y DML

Tengo un tiempo desarrollando una libreria para facilitar el acceso y manipulacion de bases de datos, se que ya existen muchas soluciones pero creo que la mayoria estan enfocadas para grandes proyectos y son bastante complejas por eso lo empeze como un proyecto personal pero creo que esta en un buen punto para compartirlo con la comunidad. Por el momento solo tiene soporte para mysql y h2 aunque todavia hace falta hacer pruebas y documentar bastante, si alguien esta interesado puede contribuir con el desarrollo.
https://github.com/luischavez/database/tree/dev

Database database = Database.use("mysql");
database.create("users", table -> {
    table.integer("id").incremented();
    table.string("username", 32);
 
    table.primary("id");
});
 
if (database.exists("users")) {
    database.insert("users", "username", "luischavez");
    Row user = database.query("users").first();
    database.drop("users");
}

Imprimir año en formato calendario (ejercicio)

Ya es viernes! así que algo entretenido.

Siguiendo el espíritu de esta pregunta:
http://www.javamexico.org/blogs/jsrivero22/crear_un_calendario

El ejercicio es imprimir el calendario del año así:

                             2015

      January               February               March
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3   1  2  3  4  5  6  7   1  2  3  4  5  6  7
 4  5  6  7  8  9 10   8  9 10 11 12 13 14   8  9 10 11 12 13 14
11 12 13 14 15 16 17  15 16 17 18 19 20 21  15 16 17 18 19 20 21
18 19 20 21 22 23 24  22 23 24 25 26 27 28  22 23 24 25 26 27 28
25 26 27 28 29 30 31                        29 30 31
                                            
       April                  May                   June
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
          1  2  3  4                  1  2      1  2  3  4  5  6
 5  6  7  8  9 10 11   3  4  5  6  7  8  9   7  8  9 10 11 12 13
12 13 14 15 16 17 18  10 11 12 13 14 15 16  14 15 16 17 18 19 20
19 20 21 22 23 24 25  17 18 19 20 21 22 23  21 22 23 24 25 26 27
26 27 28 29 30        24 25 26 27 28 29 30  28 29 30

crear un calendario.!!

lo que quiero es q me pueda mostrar los nombres de la semana dias y mes osea algo asi: ---> Lunes 4 de Febrero pero el problema que tengo es que no me muestra los dias de manera seguida..!!!

package meses;

public class mese {

        public static void main(String[] args) {
       
                String[] dias = {"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"};
                       
                                                       
                        for (int E=1; E<=31; ){
                                for (int i = 0; i < dias.length;i++) {
                                        if (E<=31){
                                                System.out.println(dias[i]+" "+E+" enero");
                                        }
                                        else{
                                                break;
                                        }                                                                      
                                        E++;
                                }              
                        }
                       
                        for (int f=1; f<=28;){
                                for (int i = 0 ; i < dias.length;i++) {
                                        if (f<=28){
                                                System.out.println(dias[i]+" "+f+" febrero");
                                        }
                                        else{
                                                break;
                                        }                                                                      
                                        f++;
                                }              
                        }
                       
                        for (int m=1; m<=31;){
                                for (int i = 0; i < dias.length;i++) {
                                        if (m<=31){
                                                System.out.println(dias[i]+" "+m+" marzo");
                                        }
                                        else{
                                                break;
                                        }                                                                      
                                        m++;
                                }              
                        }
                       
                        for (int a=1; a<=30;){
                                for (int i = 3; i < dias.length;i++) {

Argumentos Variadicos (Varargs)

Desde Java 5 se incorporo la posibilidad de tener argumentos variádicos (varargs) en métodos y constructores, dichos argumentos permiten al desarrollador ahorrarse la sobrecarga de métodos o constructores que contienen de 0 a N argumentos del mismo tipo.

Antes de Java 5, había de dos sopas, se tenía que sobrecargar el método, con la límitante para el desarrollador de saber la cantidad máxima y mínima del número de argumentos:

public class VarargsExample {

        public static void main(String[] args) {

                Greeting greet = new Greeting();
                greet.greetings("Hugo", "Paco", "Luis");
                greet.greetings("Hugo", "Paco");
                greet.greetings("Hugo");

        }

}

class Greeting {

        public void greetings(String name1) {
                System.out.println("Hi " + name1);
        }

        public void greetings(String name1, String name2) {
                System.out.println("Hi " + name1 + ", " + name2);
        }

        public void greetings(String name1, String name2, String name3) {
                System.out.println("Hi " + name1 + ", " + name2 + ", " + name3);
        }
}

Y la segunda sopa sería tener definidos los elementos dentro de un arreglo:

public class VarargsExample {

Operaciones con tiempo (ejercicio)

TL;DR

Escribir un programa en la línea de comandos que reciba: ultima hora de entrada en formato hh:mm AM/PM (o 24hrs) y un total de horas trabajadas en la semana como número de punto flotante (1 hr y media se escribiría 1.50 ).

La salida debe de ser:

1) Cuántas horas se llevan trabajadas hasta el momento de la ejecución del programa sin importar el formato (eg. has trabajado 23.5 hrs o has trabajado 23h30m )
2) A que hora se habrá llegado al siguiente multiplicador de 8. ( eg puedes salir a las 5:58 pm )

Ejemplo de ejecución:

~ $ date
Thu Apr 16 17:50:26 CDT 2015
~ $ t 01:33pm 25.58
Tiempo transcurrido: 29h51m47.999725341s
Salida a las: 19:58

Version larga.

Una forma útil de aprender nuevas cosas es hacer aplicaciones pequeñas de utilería. En mi trabajo tengo reloj checador que me dice cuánto he trabajado pero no dice cuándo habré trabajado N hrs.

Ejemplo, si entro a las 9 am salgo de comer de 12 a 1 y ya son las 4 de la tarde el reloj de ve así:

regular 09:00am
regular 12:00pm     3hrs

comida 12:00pm
comida 01:00pm 

regular 01:00pm
regular 

Lectura y escritura de Metadatos XLSX, DOCX y PPTX

Hola buen día Srs.

Me puede apoyar lo que pasa es que necesito poder leer y escribir los metadatos de los archivos de office 2007 en especial los docx y xlsx, ya puedo leer los doc pero ahora tengo la necesidad de leer la version 2007.

Gracias por su apoyo.

Saludos

PDF como String en WebService

Hola a todos!!!

Espero me puedan ayudar, tengo un cliente en java que consume un WebService realizado en PHP, que genera una factura electrónica, regresandome el XML y PDF correspondientes en forma de String, pero de ahí no se como convertir ese String para generar los archivos.

dejar un proceso o varios procesos vivos del administrador de tareas de la pc

hola amigos

tengo una duda de como dejar un proceso o varios procesos vivos del administrador de tareas de la pc y que los demás sean auto eliminados

e utilizado la funcion "taskkill" pero el inconveniente es de que con esta funcion se tiene que eliminar proceso por proceso.

saludos

Distribuir contenido