martes, 31 de marzo de 2015

Instalar Eclipse IDE para Java

Esta es una guía rápida para instalar eclipse IDE y comenzar a programar con Java

1.- Descargar e instalar Java JDK para 32 o 64 bit desde (Windows/Linux)

http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

se recomienda versión 1.6 o superior

2.- Descargar e instalar Eclipse IDE para J2EE 32 o 64 bit desde (Windows/Linux)

https://eclipse.org/downloads/

3.- Abrir Eclipse desde el icono en el escritorio o desde la carpeta de instalación de eclipse ($ECLIPSE_HOME/bin) el archivo eclipse.exe o eclipse.sh windows/linux

4.- Escribir tu primer test (busca una clase simple en internet como hola mundo)

si has tenido problemas en la instalación, revisa que la versión de java sea reconocida automáticamente por el instalador de eclipse, o configura las variables de entorno para java.

lunes, 30 de marzo de 2015

BPM


En esta articulo quiero entregar una definición general de lo que hemos escuchado a cerca de BPM (Bussiness Process Management). Para esto debemos entender que en la actualidad es necesario para las organizaciones la rápida adaptación al cambio como forma de supervivencia, literalmente la organización que no es capaz de adaptarse a su entorno pierde competitividad y al corto plazo perece.
Actualmente existe una tendencia clara hacia este modelo de gestión, BPM corresponde a una disciplina de gestión de procesos y como conjunto de herramientas tecnológicas que apoya el análisis y las operaciones.
El ciclo del modelo de gestión de procesos (BPM) comienza con el levantamiento y documentación de la situación actual (As-Is), luego un análisis mediante un método estratégico que permita identificar mejoras y optimizaciones al proceso, se continua con la simulación donde podemos jugar con los recursos para encontrar el punto óptimo de performance del proceso, y la parte final de este ciclo corresponde al monitoreo del proceso, donde están los denominados BAM (Bussness Activity Monitoring) y los Dashboard que nos permiten saber el comportamiento en linea del proceso para determinar el capacity planning de la operación real.
En la mayoría de los casos la identificación de mejoras pasa por la implementación de tecnología, en otros por la estandarización de actividades i/o formularios, documentos, etc. y la posterior medición del proceso, ambos nos entregan información a cerca de las instancias de procesos, la cual se analiza con herramientas de Process Minning (Minería de Procesos) que nos permiten identificar desvíos, cuellos de botella, reprocesos, etc.
Entonces BPM es una disciplina de gestión de procesos que involucra la mejora continua y la evolución de la organización hacia un modelo de administración gestionado de acuerdo a la visión estratégica de alto nivel de cada organización, apoyado y alienado por el área de TI para la automatización de actividades.
En este enfoque tenemos que la implementación de BPM en una organización contempla un espectro amplio hacia la cultura organizacional. Teniendo que desarrollar los siguientes puntos en busca de la excelencia operacional.
  1. SPM (Strategic Process Managment), como encontrar el foco de mejora
  2. Modeling (Business Process Modeling)
  3. AOPT (Analysis and Optimization)
  4. BPI (Business Process Implementation)
  5. Minning (Minería de Procesos) 




miércoles, 27 de agosto de 2014

Aumentar Memoria a Tomcat

Hola, muchas veces debemos asignar mayor recurso de memoria a tomcat, y esto lo podemos hacer configurando el archivo catalina.sh en linux o catalina.bat en windows, este se encuentra en el directorio bin de apache-tomcat, agregando la linea:

export JAVA_OPTS="-Xms1024m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=256m"

En otros casos.. cuando estamos desarrollando con eclipse, y tenemos ahí configurado nuestro tomcat con el plugin sysdeo, podemos agregar estas variables al parametro JVM settings que esta en :

Windows -> preferences -> >Tomcat -> JVM Settings

y ahí clikeamos add al campo Append to JVM Parameters, se abre una ventana de dialogo y podemos agregar las mismas opciones de jvm

-Xmx512m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m

con esto ya tendríamos mas memoria asignada de nuestra java virtual machine a tomcat

saludos

Ver procesos Java

Hola, en algunos casos tenemos mas de un proceso java corriendo en nuestros sistema linux, para ver que process ID corresponde a que proceso Java podemos ejecutar el siguiente comando por consola, y desde cualquier ruta de nuestro SO:

slack@zion:~/programas/redmine-2.5.1-1$ ps -fea | grep java

el resultado de este debiera ser similar a lo siguiente, siempre y cuando tengamos procesos java corriendo.

slack     4652  4650 11 09:40 ?        00:06:29 /usr/bin/java -Dosgi.requiredJavaVersion=1.6 -XX:MaxPermSize=256m -Xms512m -Xmx1024m -jar /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar -os linux -ws gtk -arch x86_64 -showsplash /home/slack/programas/eclipse_kepler//plugins/org.eclipse.platform_4.3.2.v20140221-1700/splash.bmp -launcher /home/slack/programas/eclipse_kepler/eclipse -name Eclipse --launcher.library /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212/eclipse_1508.so -startup /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar --launcher.appendVmargs -exitdata 140003 -product org.eclipse.epp.package.jee.product -vm /usr/bin/java -vmargs -Dosgi.requiredJavaVersion=1.6 -XX:MaxPermSize=256m -Xms512m -Xmx1024m -jar /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
slack    10308     1 58 10:22 ?        00:09:44 /home/slack/programas/java/jdk1.6.0_05/jre/bin/java -Dcatalina.home=/home/slack/programas/apache-tomcat-5.5.33 -classpath /home/slack/programas/java/jdk1.6.0_05/lib/tools.jar:/home/slack/programas/apache-tomcat-5.5.33/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap start
slack    11663  3189  0 10:38 pts/0    00:00:00 grep --color=auto java


Bueno, aunque parezca difícil de leer, podemos identificar claramente aquí los procesos java corriendo en nuestro sistema,  donde :

primero va el usuario que esta ejecutando el proceso, aqui es : slack

luego de este parametro se indica el process id, PID, donde aqui para el primer proceso es : 4652

y seguidamente va la hora desde que corre el proceso, aqui para mi primer proceso de la lista es : 09:40

y posteriormente va el comando que se esta ejecutando, aqui es : /usr/bin/java -Dosgi.requiredJavaVersion=1.6 -XX:MaxPermSize=256m -Xms512m -Xmx1024m -jar /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar -os linux -ws gtk -arch x86_64 -showsplash /home/slack/programas/eclipse_kepler//plugins/org.eclipse.platform_4.3.2.v20140221-1700/splash.bmp -launcher /home/slack/programas/eclipse_kepler/eclipse -name Eclipse --launcher.library /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212/eclipse_1508.so -startup /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar --launcher.appendVmargs -exitdata 140003 -product org.eclipse.epp.package.jee.product -vm /usr/bin/java -vmargs -Dosgi.requiredJavaVersion=1.6 -XX:MaxPermSize=256m -Xms512m -Xmx1024m -jar /home/slack/programas/eclipse_kepler//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

Este corresponde al ide Eclipse, el segundo proceso que podemos identificar de la misma forma corresponde a Tomcat y el tercer proceso es el comando ps -fea | grep java

Entonces cuando queramos matar alguno de estos procesos java, identificamos su PID y ejecutamos por consola:

slack@zion:~/programas/redmine-2.5.1-1$ kill -9 4652

entonces aqui acabamos de matar el proceso Eclipse, y aunque no era el que quería matar resulto bien, si ejecutamos nuevamente el ps -fea , ahora vemos que solo tenemos el proceso tomcat corriendo

slack@zion:~/programas/redmine-2.5.1-1$ ps -fea | grep java

slack    10308     1 75 10:22 ?        00:20:45 /home/slack/programas/java/jdk1.6.0_05/jre/bin/java -Dcatalina.home=/home/slack/programas/apache-tomcat-5.5.33 -classpath /home/slack/programas/java/jdk1.6.0_05/lib/tools.jar:/home/slack/programas/apache-tomcat-5.5.33/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap start
slack    12179  3189  0 10:49 pts/0    00:00:00 grep --color=auto java


ahora matamos tomcat :

slack@zion:~/programas/redmine-2.5.1-1$ kill -9 10308

y volvemos a ejecutar :

slack@zion:~/programas/redmine-2.5.1-1$ ps -fea | grep java

y solo tenemos como resultado :

slack    12263  3189  0 10:52 pts/0    00:00:00 grep --color=auto java

eso es,

saludos

lunes, 12 de mayo de 2014

Argo UML

Siempre decían que del 100 % del tiempo para el desarrollo de un software, debía ser el 70 % del tiempo destinado a modelamiento y el 30% del tiempo restante en construcción, sin embargo sabemos que en la liberación de los módulos de las aplicaciones estos porcentajes se dan vuelta y terminamos con un 30% del tiempo en modelamiento y el 70% en construcción.

Es por esto que debemos en la experiencia ir mejorando nuestros métodos y formas del uso del tiempo para el modelamiento del software. y también adquirir algún grado de expertis en alguna herramienta de modelamiento que nos ayude a modelar mas y programar menos.

He probado algunas como poseidon, argo, rational, plugin de netbeans y eclipse, y otras, pero ya llevo buen tiempo usando ArgoUML, y me parece una de las mejores, aunque últimamente tigris no la ha actualizado cumple con los estándares y especificaciones para UML.

Con Argo tu puedes crear un proyecto, crear los packages y los diagramas, que luego generaran las clases Java para llevarlas a tu proyecto eclipse.
Si trabajas con patron MVC, Struts, Spring, u otro modelo de 3 capas te sera util ordenar tu proyecto en packages de implementacion, organizando los manager y los impl tal como spring o struts lo requieren.

Una técnica que utilizo habitualmente cuando tengo que analizar un modelo de negocio u otra implementación, es comenzar diseñando los casos de uso en un package usecase desde el nivel 0 al nivel requerido para el detalle de las funcionalidades.

Argo contiene todos los elementos para los diagramas de casos de uso, diagramas de despliegue, diagramas de clases, diagramas de colaboracion, de secuencia, etc..

Luego con las opciones puedes exportar tu modelamiento a codigo fuente Java para levantarlo desde eclipse.






http://argouml.tigris.org/




lunes, 11 de noviembre de 2013

Workflow PetriNet

Técnicamente se entiende que un Workflow corresponde a un conjunto de actividades o tareas que se ejecutan en un contexto de negocio, y que pueden interactuar con otros sistemas.

Para diseñar un Workflow, un proceso de negocio o un flujo de tareas en una organización, nos podemos ayudar de alguna herramienta de diseño de procesos, un diseñador bpmn o power point, dependiento el alcance o detalle que queremos agregar al proceso sera necesario optar con alguna especificacion para el diseño de Workflow.

Las redes de Petri son una herramienta establecida para el modeling y procesos de análisis. Por una parte, las redes de Petri se pueden utilizar como un lenguaje de diseño para la especificación de los flujos de trabajo complejos/ Workflows. Por otro lado, las redes de Petri proporciona técnicas de análisis de gran alcance que puede ser utilizado para verificar la corrección de procedimientos de flujo de trabajo (Workflow).

http://www.yasper.org/

Yasper aporta simulación manual y automática de un flujo de proceso, en el que el usuario selecciona pasos de ejecución haciendo clic en el modelo, y la simulación automática, que aleatoriza la elección de pasos y produce un informe agregado con estadísticas relevantes.

Los modelos Yasper apoyan directamente las ampliaciones de las redes de Petri, y pueden emular varias otras técnicas, tales como máquinas de estado, diagramas de flujo, diagramas UML, de actividad y EPC (event process chain).

http://www.yasper.org/

Notación:





Ejemplo:



jueves, 17 de octubre de 2013

Enviar email con java

Buenas, un amigo cuyo nombre no quiero decir me pidio esto, ojala funcione, ya que hay otras formas y otros parametros que se pueden utilizar dependiendo el servidor de correo y sus configuraciones

import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


/**
 * Ejemplo de envio de correo simple con JavaMail
 *
 * @author slack
 *
  */
public class EnviarMail
{
    /**
     * main de prueba
     * @param args Se ignoran.
     */
    public static void main(String[] args)
    {
        try
        {
            // Propiedades de la conexión
            Properties props = new Properties();
            props.setProperty("mail.smtp.host", "smtp.gmail.com");
            props.setProperty("mail.smtp.starttls.enable", "true");
            props.setProperty("mail.smtp.port", "25");
            props.setProperty("mail.smtp.user", "lcorneteros@gmail.com");
            props.setProperty("mail.smtp.auth", "true");

            // Preparamos la sesion
            Session session = Session.getDefaultInstance(props);

            // Construimos el mensaje
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress("yo@yo.com"));
            message.addRecipient(
                Message.RecipientType.TO,
                new InternetAddress("linSlackware@gmail.com"));
            message.setSubject("Hola");
            message.setText("eeelllla la q envia email con java ");

            // Lo enviamos.
            Transport t = session.getTransport("smtp");
            t.connect("lconajeros@gmail.com", "clave");
            t.sendMessage(message, message.getAllRecipients());

            // Cierre.
            t.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}


Saludos !!