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.
martes, 31 de marzo de 2015
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.
- SPM (Strategic Process Managment), como encontrar el foco de mejora
- Modeling (Business Process Modeling)
- AOPT (Analysis and Optimization)
- BPI (Business Process Implementation)
- 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
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
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/
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:
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 !!
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 !!
Suscribirse a:
Entradas (Atom)





