Bienvenido a Java Mexico

Java México es una comunidad de desarrolladores mexicanos en el lenguaje Java.

Este sitio es colaborativo, automáticamente al registrarte obtienes un Blog para compartir tus conocimientos o información acerca del lenguaje. Antes de publicar en tu blog o los foros por favor lee los lineamientos de publicación.

Para dudas y problemas con respecto al lenguaje Java puedes visitar los Foros de Discusión.

También puedes responder nuestra encuesta para saber en que estado vives!

Hola a todos...

Hola a todos,
Soy Armel Peña, Colombiano y programador 100% con una experiencia de mas 25 años; He decidido unirme a esta comunidad por tres razones: 1. iniciativa propia 3. recibir ayudas 3. y por que quiero también aportar un poco de mis conocimientos y experiencias como programador a aquellos que como en algún momento, tenemos dudas en las experiencias, que como programador Dios nos ha dado.

Fuí programador, por muchos años de lenguajes de programación como Fortran, Cobor, Visual Basic, Fox Prow, C, Clipper, Flipper y "Access" entre otros; Pero el mundo evoluciona y el conocimiento propio debe hacer lo mismo. Tomé la decisión de programar en Java, después de investigar, consultar, probar, investigar, investigar y sigo investigando; Pero la decisión ya está tomada; Estoy programando en Java 100% desde hace dos años: 1 año lo dedique a investigar, estudiar y profesionalizarme en el lenguaje; Actualmente estoy terminando una carrera técnica como Programador Profesional de Dispositivos Móviles y estoy desarrollando una Aplicación Cliente / Servidor, la cual llevo un año en desarrollo.

Tengo dudas como todos, pero también interesantes experiencias y hallazgos con el lenguaje que en la medida estaré compartiendo con la comunidad.

Armel Peña Rangel

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.

SG Virtual Conference 8va edición

Únete al mayor congreso en línea para desarrolladores de software. #sgvirtual.

 ¡Aparta tu lugar en SG Virtual Conference 8va edición!

Sé parte del evento que acerca a la comunidad de software de habla hispana con las tendencias, herramientas y mejores prácticas, en cualquier parte del mundo sin costo alguno.
 
Participa en más de 20 conferencias virtuales gratuitas durante todo un día y conéctate con miles de colegas internacionales. ¡Consulta la agenda completa!

¿Qué es SG Virtual?

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 {

Sitio Personal en Vaadin Java

Hola a Todos los javeros de esta comunidad.

Estoy muy interesado en aprender el Framework Vaadin de Java, me la he pasado buscando información en la red de sitios personales pero no he encontrado nada de ejemplos. La mayoria son aplicaciones mas no sitios de contenido hechos con este framework.

Mi pregunta es ... ¿ Es apropiado realizar un sitio web de contenidos como un CMS con Vaadin ? Actualmente me estoy embebiendo con la documentación oficial de vaadin, quiero dominarlo, pero si voy a tener un sitio personal me gustaría trabajarlo en java y no en CMS PHP como Drupal, Wordpress o Joomla, que en un dos por tres ya tenemos un sitio de contenidos pero cuando surgen los problemas, hay tanto que indagar para solucionarlos.

Saludos ...

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 

Distribuir contenido