Mostrando entradas con la etiqueta java. Mostrar todas las entradas
Mostrando entradas con la etiqueta java. Mostrar todas las entradas

USAR JAVA Y JAVASCRIPT COMO SCRIPTING

Posted: jueves, 4 de junio de 2015 by Skuarch in Etiquetas: , , , , ,
0


Para poder usar java y javascript en un archivo .sh solo tienes que seguir estos sencillos pasos

crear un archivo con la extencion .sh

poner en la primeria linea el path donde se encuentra el ejecutable de nashorn

#!/usr/lib/jvm/jdk1.8.0_45/bin/jjs -fv

obviamente esta ruta puede cambiar pero no olvides essto "-fv"

ahora puedes usar java y javascript como scripting y este es un ejemplo completo


#!/usr/lib/jvm/jdk1.8.0_45/bin/jjs -fv
var Runnable = Java.type('java.lang.Runnable');
var Printer = Java.extend(Runnable, {
    run: function() {
        print('printed from a separate thread');      
    }
});
var Thread = Java.type('java.lang.Thread');
new Thread(new Printer()).start();
new Thread(function() {
    print('printed from another thread');
}).start();


Como te puedes dar cuenta aqui se esta usando los hilos de java dentro de javascript.
Para hacer esto asegurate que tienes la version 8 de java instalado.


espero te sirva y si no pues largate !!!

HERRAMIENTAS UTILIES PARA JAVA

Posted: miércoles, 16 de julio de 2014 by Skuarch in Etiquetas: , , , , ,
0


Siempre es bueno usar herramientas para checar la calidad de nuestro codigo, algunas de estas herramientas deben de ser impresindibles para todo desarrollador java

Eclipse Memory Analize
Este es un plug in de eclipse que nos ayuda a saber que puntos de nuetro programa pueden estar causando leaks, se nececita que configures la JVM para que trabaje correctamente

Proguard
El proposito general de proguard es ofuscar el codigo, como ya sabes decompilar el codigo en java es muy facil asi es que nunca esta de mas usar algun ofiscador, tambien tienen algunas otras cosas para mejorar el codigo


Dependometer

Analisis estatico o fisco de dependencias con dependometer, esta genial herramienta valida dependencias contra arquitecturas logicas estructurando esl sistema entro de clases, paquetes, subsistemas entre otras cosas.


DoctorJ

Es una aplication que analiza el codigo de java y la documentacion buscando errores comunes que javadoc no hace

MEJORAR EL PERFORMANCE DE JAVA

Posted: viernes, 11 de julio de 2014 by Skuarch in Etiquetas: , , ,
0


Siempres es bueno no gastar todos los recursos del procesador para poder correr mas aplicaciones, en este post voy a poner algunas de las mejores practicas para que tu codigo no influya tomando mas recursos de los que necesita, a claro que esta fue tomado de la guia de Glassfish oficial

Evitar serializacion y deserializacion

Serializacion y deszerializacion de objectos is proceso intensivo para el CPU y puede crear retrasos en tu aplicacion, Usa transient para reducir el monto de datos serializados

StringBuilder para concatenar Strings

Para mejorar el performance al menos al usar concatenacion de Strings, usa
StringBuilder.append();

Asignar null a las variables ya no se nececita

Esta practica ya no se nececita para ayudar al garbage collector identificando partes de memoria que pueden ser limpiadas

Declara metodos con final solo si es necesario

Modernos compiladores y otros procesos internos pueden hacer en linea  la optimizacion incluso si los metodos de java no son declarados como final

Solo usa final si tu estas absolutamente seguro de que el metodo no debe de ser sobreescrito.

Declara constantes como static y final

 El compilador dinamico puede hacer algunas optimizaciones facilmente cuando tu declaras constantes como static final

Evita Finalizers

Agregar finalizers al codigo hace que el garbage collector esa caro e impredecible, la maquina virtual no garantiza el tiempo que correran los finalizers; Finalizers no siempre son ejecutados antes de que el programa termine, evita usarlos para no crear una aplicacion impredecible.

Declarar los argumentos de un metodo como finales

Si estos no son modificados en el metodo, en general declara todas las variables final si no van a ser modificadas

Synchronize solo cuando sea necesario

Manten los bloques de sincronizacion lo mas corto posible y si es posible evita la sincronizacion.

CONCEPTOS BASICOS DE JAVA

Posted: sábado, 1 de febrero de 2014 by Skuarch in Etiquetas: ,
0


Esta es una pequeña guia para sobre los conceptos basicos de java

Interfaces
una interfaz es similar a una clase abstracta, esta se declara usando la palabra reservada interface y consiste en que solo contenga metodos abstractos y variables finales.

Constructores
Estos son usados para inicializar un objeto, cuando un objeto es construido el constructor es ejecutado, un constructor por default es uno que no tiene argumentos

Metodos
los metodos siempre estan dentro de una clase y la visibilidad del metodo es controlada por los modificadores de acesso

Signature del metodo
the signature of method consiste en
nombre del metodo
numero de argumentos
tipo de argumentos
orden de los argumentos

Static
metodo que puede invocarse sin crear un objeto

Modificadores de acesso
public: todo el mundo puede verlo
private: solo los miebros de la clase pueden verlo
protected: los miembros de la clase y las clases que la heredan pueden verlo
ninguno: solo lo pueden ver los miembros del paquete

LEER DATOS CRUDOS EN UN SERVLET

Posted: martes, 28 de enero de 2014 by Skuarch in Etiquetas: , , , ,
0


En ocaciones los datos que llegan a un servlet no estan dentro de una variable, los datos estan con el cuerpo de peticion, para poder obtener ese tipo de dato es necesario abrir un input y convertirlos a string, en el siguiente codigo muestro como hacer esto en un servlet

Primero checar si el contentLength tiene algo

int contentLenght = request.getContentLength();

Con la clase ServletInputStream se leeran los datos

ServletInputStream sis = request.getInputStream();

Ahora solo queda consumir los datos

byte[] buffer = new byte[contentLenght];
int len = sis.readLine(buffer, 0, buffer.length);
String data = new String(buffer, 0, len);

Nunca esta de mas hacer una verification del contentLenght que sea mayor a 0 al inicio de tu codigo.

Finalmente cierra todos los inputs para que no existan problemas despues.



JAVA ASINCRONO

Posted: martes, 24 de diciembre de 2013 by Skuarch in Etiquetas: , , , , ,
0


En ocaciones es necesario realizar ciertas tareas en hilos, pero los hilos son void entonces como puedes hacer que una tarea regrese algo y que corra en un hilo, voy a explicar como hacer esto con las clases de java Callable y Future en el codigo se puede entender mejor


import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
public class TestCallable {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        final StringBuilder stringBuilder = new StringBuilder();
     
        ExecutorService executorService = Executors.newFixedThreadPool(1);
     
        FutureTask future = new FutureTask(new Callable() {
         
            @Override
            public String call() throws InterruptedException {
                Thread.sleep(1000);
                System.out.println("inside of call");
                stringBuilder.append("something");
                return "hello";
            }
         
        });
        executorService.execute(future);
        executorService.shutdown();
        System.out.println("continue");      
    }
}
cuando corrar este programa te podras dar cuenta que aparece primero el texto continue y despues aparece inside of call, esto es por que se realizo un trozo de codigo asincrono

INSTALAR MAVEN EN LINUX

Posted: miércoles, 27 de noviembre de 2013 by Skuarch in Etiquetas: , , , ,
0


Instalar maven en linux es muy sencillo solo tienes que exportar algunas variables al PATH de linux, asegurate tener instalado java anteriormente.

1.- Descargar maven de la pagina oficial
2.- Descomprimir y ponerlo donde gustes yo lo puse en /usr/local/
3.- Abrir el archivo .bashrc que se encuentra en /home/usuario/
4.- Agregarle al final las siguientes lineas
M2_HOME=/usr/local/apache-maven-x.x.x
M2=$M2_HOME/bin
MAVEN_OPTS="-Xms256m -Xmx512m"
PATH=$M2:$PATH
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45 (cambia esta ruta)
export M2_HOME
export M2
export MAVEN_OPTS
export JAVA_HOME
por ultimo crear un enlace a mvn

sudo ln -s /usr/local/apache-maven-x.x.x/bin/mvn /usr/bin/mvn

La ruta del java la tienes que modificar, ahora solo cierra tu terminal, abre otra y ya podras usar maven

mvn --version

HABILITAR ACCESO REMOTA GLASSFISH

Posted: lunes, 25 de noviembre de 2013 by Skuarch in Etiquetas: ,
0


Para poder accesar remotamente a glassfish usa estos dos comandos

asadmin change-admin-password --domain_name [DOMAIN_NAME]

asadmin enable-secure-admin --port [PORT_NAME]

ENCAPSULACION EN JAVA

Posted: jueves, 21 de noviembre de 2013 by Skuarch in Etiquetas: ,
0



La encapsulacion en java trata de mostrar las cosas relevantes y ocultar las cosas irrelevantes, esto hace que la complejidad disminuya, escondiendo los detalles de implemetacion permite hacer cambios sin afectar otras partes del programa.

El principal proposito de la encapsulacion de datos es reducir la complejidad al desarrollar software, a continuacion muestro un pequeño ejemplo que como hacer una encapsulacion en java

public class Employee{

 public String name;
 private int age;

...

public int getAge(){
}

private void setAge(int age){
 this.age = age;
}

}

El modificador de acceso de name se cambio a public y el modificador de acceso del metodo setAge se cambio a privado. Esto significa que cualquier usuario de la clase puede accesar al campo name pero solo puede leer age, la encapsulacion se aplica cuando decidimos que es lo que deberia y que es lo que no deberia ser expuesta de la clase.

INSTALAR JAVA EN UBUNTU

Posted: martes, 2 de abril de 2013 by Skuarch in Etiquetas: , ,
0




Con estos simples pasos se instala java sin que tengas que agregar algun repositorio.

1.- Descargar el tar.gz de la pagina de oracle
2.- Yo lo voy a descomprimir en /usr/lib/jvm/ (tienes que crear la carpeta de jvm) o lo puedes descomprimir donde quieras
3.- ejecuta el siguiente comando update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0_17/bin/java" 1
4.- cambia el comando a la ruta que tengas y el jdk que descargaste
5.- fin

RECORRER UN JAVA BEAN

Posted: martes, 26 de junio de 2012 by Skuarch in Etiquetas: , , ,
1


En ocaciones se requiere de recorrer un bean dinamicamente, en esta entrada explico como se hace usando unas clases de java

java.beans.BeanInfo
Con esta clase podemos manipular el comportamiento del bean, esta clase define métodos que devuelven descriptores para cada propiedad, método o evento que se quiere exponer.

java.beans.Introspector
Esta clase descubre los metodos del bean usando reflexion

Ejemplo

public class Test {

    public test() {

        MyBean mybean = new MyBean();
        mybean.setAlgo("prueba");
     
        Method m = null;

        try {

            BeanInfo beanInfo = Introspector.getBeanInfo(mybean.getClass());

            for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {

                m = pd.getReadMethod();
                System.out.println("property: " + pd.getName() + " value: " + m.invoke(mybean, null));               

            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    } // end test
} // end class

Como te puedes dar cuenta la variable "m" se obtiene de pd (PropertyDescriptor) y es un metodo que despues invocamos con invoke, se le pasan como argumentos el bean y los argumentos propios del metodo en caso de que tuviera

PROGRAMACION MULTICORE EN JAVA

Posted: martes, 6 de diciembre de 2011 by Skuarch in Etiquetas: , , , ,
0


Si alguna vez te preguntaste si java (JVM) por si sola corre en varios nucleos a la vez, pues la respuesta es que si , pero en tu programa se debe de habilitar esto, y como diablos habilito esto ???, pues se tiene que crear ciertas funcionalidades en el codigo para usar multicore, lo primero que tenemos que hacer es saber cuantos nucleos tiene nuestro procesador

int processors = Runtime.getRuntime().availableProcessors();


Con esa simple linea de codigo sabes cuantos procesadores tenemos disponibles ahora nececitamos crear nuestro procesos independientes, la forma mas comun es esta.
ExecutorService executor = Executors.newFixedThreadPool(processors);

ExecutorService es una interface que hereda de Executor, como se puede apreciar se crea un pool de Threads y como parametros le mandamos el numero de procesadores que tiene el cliente donde se ejecutara. Ahora solo falta lanzar nuestros procesos
executor.execute(new Runnable(){
public void run(){
//aqui se hace algo ...
}
});

La mejor forma de iniciar un proceso es creando un hilo, hasta el final debemos de dar de baja el executor con la siguiente instruccion
executor.shutdown();

Esto te puede servir como introduccion para el manejo de diferentes procesos en java solo ten cuidado en no dejar Threads vivos asi como tambien la concurrencia.

BUENAS PRACTICAS AL CREAR UNA CLASE EN JAVA

Posted: domingo, 7 de agosto de 2011 by Skuarch in Etiquetas: , ,
0



Muchas ocaciones cuando creamos una clase no nos tomamos el tiempo para pensar como debemos de crear esta nueva clase, aqui muestro algunos tips que se deben de considerar para crear una clase.

Los Nombres

Lo primero en tenerse en cuenta es la del nombre de la clase y el nombre de los metodos, a mi me gusta no tener nombre muy largos ni tampoco usar nombres abreviados.

Dependencias

Hay que tenerse en cuenta de la nueva clase de que otras clases va a depender, una clase entre menos depende de otras clases es mejor por que la podemos hacer portatil, aun que la dependecia es buena en ocaciones las clases deben de depender de otras.

Loggers

Uso de Logger para tener un registro de los eventos y excepciones que puedan ocurrir en la clase.

Javadoc

Tener buenos comentarios y el javadoc actualizado

Paquetes

No exagerar el numero de paquetes anidados, abria que pensar en mas de 3 paquetes anidados

Identificar codigo repetido

Si tu clase tiene mucho codigo repetido seria bueno pensar hacerle un metodo, asi hacemos mas facil de mantener un metodo que varios trozos de codigos repetidos.

Complejidad

No agregar complejidad innecesaria, la clase solo debe de hacer lo que debe de hacer, el codigo que tenga la clase debe de ser sencillo de entender y de mantener.

Utilizar clases auxiliares

Este tipo de clases son sencillas y por lo regular deben de tener metodos para cerrar o limpiar algun recurso de manera segura, tambien pueden hacer cosas sencillas como regresarte la hora actual con el formato que tu decees

Usar encapsulamiento

Declarar metodos y variables privadas, si se nececita que otra clase acceda a una variable de tu clase se deben de crear los metodos get y set. Se debe de contemplar hacer un metodo privado cuando ese metodo puede causar algun comportamiento raro en tu clase o que solo la clase debe de utilizar.

Utilizar patrones de diseño

Seguramente algun patron de diseño te ayudara a crear mejor tus clases y tus programas.

Control de erorres

Esto podria ser el tema de otro post pero tratere de decir los mas importante, es bueno usar un Logger y usar try-catch o poner un throws y nunca saltarse las excepciones

Uso adecuado de constructores

Los constructores deben de inicializar las variables y no poner codigo de mas dentro de ellos y tampoco es bueno llamar metodos dentro del constructor, aun que esto a veces es inevitable

Uso de clase abstracta o interface

Crear una interface o clase abstracta para definir los metodos y poder crear mas objectos que sigan ese patron.

GENERACION DE CODIGO EN JAVA, LOMBOK

Posted: viernes, 22 de julio de 2011 by Skuarch in Etiquetas: , , ,
0




En ocaciones crear los accesors (getters y setters) es un poco aburrido, en otras ocaciones se nos olvida cerrar ciertas cosas que consumen recursos, pero como podemos hacer esto de una forma sencilla, una opcion es usar lombok esta libreria es muy util para hacer cosas como las que mencionaba anteriormente aqui pongo algunos ejemplos

Crear getters y setters (@Getter @Setter)

import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
 
public class GetterSetterExample {
@Getter @Setter private int age = 10;
@Setter(AccessLevel.PROTECTED) private String name;
 
@Override public String toString() {
return String.format("%s (age: %d)", name, age);
}
}


Como se puede apreciar ya no es necesario crear los metodos, con las anotaciones automaticamente se crean y con niveles de restriccion.

Automatic Close (@Cleaup)
import lombok.Cleanup;
import java.io.*;
public class CleanupExample {
   public static void main(String[] args) throws IOException {
     @Cleanup InputStream in = new FileInputStream(args[0]);
     @Cleanup OutputStream out = new FileOutputStream(args[1]);
     byte[] b = new byte[10000];
     while (true) {
       int r = in.read(b);
       if (r == -1) break;
       out.write(b, 0, r);
     }
   }
 }


Este es muy util, tu puedes seguir desarrollando normalmente tu codigo pero este tipo de anotacion previene que se te olvide cerrar algun recurso, recomiendo que tu lo cierres y esto solo se use cuando exista alguna excepcion que no se maneje.

Estas son las que yo utilizo mas pero puede ver mas ejemplos en su pagina

IMPRIMIR STACK TRACE

Posted: miércoles, 9 de febrero de 2011 by Skuarch in Etiquetas: , , , ,
0



Para poder hacer esto puedes seguir este codigo


public String stack2string(Exception e) {
StringWriter sw = null;
PrintWriter pw = null;
try {
sw = new StringWriter();
pw = new PrintWriter(sw);
e.printStackTrace(pw);
return "\r\n" + sw.toString() + "\r\n";
}
catch(Exception e2) {
e.printStackTrace();
}
}

COMPENDIO DE APIS

Posted: jueves, 3 de junio de 2010 by Skuarch in Etiquetas: , , , ,
0

El objetivo de este post es juntar todas las apis, bibliotecas, frameworks, plug ins y herramientas para que las podamos consultar en un futuro, espero que me puedan ayudar para que la lista crezca. GRACIAS !!

Loggers


log4j http://logging.apache.org/log4j/1.2/ [libreria]
SLF4J http://www.slf4j.org/ [libreria]
commons-logging http://commons.apache.org/logging/ [libreria]
logback http://logback.qos.ch/ [libreria]
Craftsman Spy http://zer0.free.fr/craftsman/spy.php [libreria] logger para jdbc
Houston http://ajax.sourceforge.net/houston/ [libreria]
jLo http://jlo.jzonic.org/ [framework]
jMyra http://www.jmyra.com/ [libreria]
JTraceDump http://jtracedump.sourceforge.net/ [libreria] provides a facility to keep a history of application processing steps in memory and dump it in case of an error. It is not a replacement, but an addition to trace- or debug-loggin
just4log http://just4log.sourceforge.net/ [libreria] Just4Log is a library to enhance dynamically the performance of various logging systems inside a java application
Limpid Log http://www.acelet.com/limpidlog/index.html [libreria] you can register a class of interest and the system will log all important information about the class
Logging Toolkit for Java http://www.alphaworks.ibm.com/tech/loggingtoolkit4j [libreria]
monolog http://monolog.ow2.org/ [libreria]
ObjectGuy http://www.theobjectguy.com/javalog/ [framework]
protomatter http://protomatter.sourceforge.net/ [libreria] includes a logging library that supports logging to the standard syslog UNIX daemon
simple-log https://simple-log.dev.java.net/ [libreria] is a small and simple logging library and requires you to do almost nothing (other than actually logging) to get log output happening.

Chat


jml http://sourceforge.net/apps/trac/java-jml [libreria]
jymsg http://sourceforge.net/apps/trac/java-jml [libreria]

Graficas


jfreeChart http://www.jfree.org/jfreechart/ [libreria]
ChartDirector http://www.advsofteng.com/ [libreria]
jChart http://jcharts.sourceforge.net/ http://www.jchart.com/ [libreria]

XML


jDom http://www.jdom.org/ [libreria]
Sax http://www.saxproject.org/ [libreria]
Castor http://www.castor.org/ [framework]
XMLBeans http://xmlbeans.apache.org/ [libreria]
XStream http://xstream.codehaus.org/ [libreria]
xerces http://xerces.apache.org/xerces-j/ [libreria]
xPath http://www.ibm.com/developerworks/library/x-javaxpathapi.html [libreria]

Redes


RockSaw http://www.savarese.org/software/rocksaw/ [libreria]
commons net http://commons.apache.org/net/ [libreria]
jsch http://www.jcraft.com/jsch/ [libreria]
jpcap http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/ [libreria]
jrtp https://jrtp.dev.java.net/ [libreria]
jperf http://sourceforge.net/projects/jperf/ [libreria]
JCIFS http://jcifs.samba.org/ [libreria]
j8583 http://j8583.sourceforge.net/ [libreria]
mina http://mina.apache.org/ [libreria]

Testing


jUnit http://www.junit.org/ [libreria]
jUnitEE http://www.junitee.org/ [libreria]
testNG http://testng.org/doc/index.html [framework]
jMeter http://projects.apache.org/projects/jakarta_jmeter.html [libreria]

Herramientas


find bugs http://findbugs.sourceforge.net/ [herramienta]
PMD http://pmd.sourceforge.net/ [libreria]
EasyPMD http://gianlucacosta.altervista.org/software/easypmd2/index.php [pluging netbeans]
hudson http://hudson-ci.org/ [herramienta]
Subclipse http://subclipse.tigris.org/ [plug ing para eclipse]
SVN http://subversion.tigris.org/ [herramienta] para el control de versiones
TraceTool http://tracetool.sourceforge.net/ [herramienta] is a logging library and viewer application for different programming environments, including Java.
Drools http://www.jboss.org/drools [herramienta]

WEB


struts http://struts.apache.org/ [framework]
Cobra http://lobobrowser.org/cobra.jsp [libreria]
Play http://www.playframework.org/ [framework]
Spring http://www.springsource.org/ [framework]
Tapestry http://tapestry.apache.org/ [framework]
WebWork http://www.opensymphony.com/webwork/ [framework]
JMesa http://code.google.com/p/jmesa/ [libreria]
Display tag http://www.displaytag.org/1.2/ [libreria]
facelets http://java.net/projects/facelets/ [framework]
myFaces http://projects.apache.org/projects/myfaces.html [framework]
Apache Wicket http://projects.apache.org/projects/wicket.html [framework]
Google web Toolkit http://code.google.com/intl/es-ES/webtoolkit/ [framework]
Smart Gwt http://code.google.com/p/smartgwt/ [framework]
Ext Gwt http://www.sencha.com/products/gwt/ [framework]
JBoss Seam http://seamframework.org/ [framework]
Vaadin http://vaadin.com/home [framework]
Wicket http://wicket.apache.org/ [framework]
icefaces http://www.icefaces.org/main/home/ [framework]
richfaces http://www.jboss.org/richfaces [framework]
primeFaces http://www.primefaces.org/ [framework]
Cocoon http://cocoon.apache.org/ [framework]
Turbine http://java-source.net/open-source/web-frameworks [framework]
Makumba http://www.makumba.org/ [framework]
Stripes http://www.stripesframework.org/display/stripes/Home [framework]
JPublish http://www.josso.org/confluence/display/JOSSO1/JOSSO [framework]
Streak http://strecks.sourceforge.net/ [framework-extension]
AribaWeb http://aribaweb.org/ [framework]
Avil http://njet.org/ [framework]
WebOnSwing http://webonswing.sourceforge.net/xoops.htm [framework]
ThinWire http://www.thinwire.com/ [framework]
Pustefix http://pustefix-framework.org/ [framework]
Vroom http://sourceforge.net/projects/vroom/ [framework]
Induction http://www.inductionframework.org/ [framework]
Chrysalis http://chrysalis.sourceforge.net/ [framework]
Jzeno http://jzeno.org/joomla/ [framework]
Sombrero http://www.sombrerosoft.de/ [framework]
JVx http://www.sibvisions.com/jvx [framework]
Maverick http://mav.sourceforge.net/ [framework]
Sofia http://www.salmonllc.com/sofia [framework]
jaffa http://jaffa.sourceforge.net/ [framework]

Web Services


Axis2 http://projects.apache.org/projects/axis2.html [libreria]
xFire http://xfire.codehaus.org/ [framework]

Criptografia


not-yet-commons-ssl http://juliusdavies.ca/commons-ssl/ [libreria]
BouncyCastle http://www.bouncycastle.org/java.html [libreria]
OpenSSL http://sourceforge.net/projects/openssl-java/ [libreria]

Object-Relational Mapping


hibernate http://www.hibernate.org/ [framework]
OpenJPA http://openjpa.apache.org/ [framework]
JDO http://db.apache.org/jdo/index.html [framework]
eclipselink http://www.eclipse.org/eclipselink/ [framework]
iBatis http://ibatis.apache.org/ [framework]
myBatis http://code.google.com/p/mybatis/ [framework]
Siena http://www.sienaproject.com/index.html [libreria]
Cayenne http://cayenne.apache.org/ [libreria]

JDBC


Connector/J http://www.mysql.com/downloads/connector/j/ [libreria]
sqljdbc http://msdn.microsoft.com/es-es/library/ms378749(v=SQL.90).aspx [libreria]
jtds http://jtds.sourceforge.net/ [libreria]

Pool de conexiones


commons-dbcp http://commons.apache.org/dbcp/ [libreria]
boneCP http://jolbox.com/ [libreria]
c3p0 http://sourceforge.net/projects/c3p0/ [libreria]

Otros


jAlarms http://sourceforge.net/projects/jalarms/ [libreria]
java.util http://www.ifs.tuwien.ac.at/ifs/lehre/eprog/javadoc/jdk/docs/api/java/util/package-summary.html [paquete]
JBPM http://www.jboss.org/jbpm [herramienta]
spy memcached client http://code.google.com/p/spymemcached/ [herramienta]
eric's console http://cs.roosevelt.edu/eric/console.html [libreria]
apache tika http://projects.apache.org/projects/tika.html [libreria]
JYaml http://jyaml.sourceforge.net/ [libreria] serializacion
JRebel http://www.zeroturnaround.com/jrebel/ [libreria] is a plugin for the Java Virtual Machine that enables on-the-fly reloading of changes made to Java class files
JCS http://jakarta.apache.org/jcs/ [libreria] JCS is a distributed caching system written in java. It is intended to speed up applications by providing a means to manage cached data of various dynamic natures.
archiva http://archiva.apache.org/ [libreria]
velocity http://velocity.apache.org/engine/index.html [libreria]
EJB http://download.oracle.com/javaee/6/tutorial/doc/ [framework]
openEJB http://velocity.apache.org/engine/index.html [framework]
apache lucene http://lucene.apache.org/java/docs/index.html [herramienta]

Informes y Documentos de Oficina


JasperReport http://jasperforge.org/projects/jasperreports [libreria]
iReport http://jasperforge.org/projects/ireport [libreria]
POI http://poi.apache.org/ [libreria]
iText http://itextpdf.com/ [libreria]
Pentaho reports http://reporting.pentaho.com/ [libreria]
apache PDFBox http://pdfbox.apache.org/ [libreria]

Compilación


Maven http://maven.apache.org/ [framework]
Ant http://ant.apache.org/ [libreria]
Gradle http://gradle.org/index.php [libreria]
Ivy http://ant.apache.org/ivy/index.html [libreria]

Interoperabilidad


Thrift http://thrift.apache.org/ [framework]

Administracion de Contenidos


Alfresco http://wiki.alfresco.com/wiki/Main_Page [herramienta]
Lenya http://projects.apache.org/projects/lenya.html [herramienta]
KENAI http://kenai.com/ [herramienta]
Riot http://www.riotfamily.org/index.html [herramienta]
Magnolia http://www.magnolia-cms.com [herramienta]

Interfaz Grafica de Usuario


Swing Application Framework https://appframework.dev.java.net/ [framework]
java Foundation Classes http://java.sun.com/products/jfc/download.html [libreria]
Better Swing Application Framework http://kenai.com/projects/bsaf/pages/Home [framework]
GUTS - Guice Utilities & Tools Set http://kenai.com/projects/guts/pages/Home [libreria]

Extenciones de la plataforma


Jython http://www.jython.org/ [lenguaje]
Scala http://www.scala-lang.org/ [lenguaje]
Groovy http://groovy.codehaus.org/ [lenguaje]
AspectJ http://www.eclipse.org/aspectj/ [lenguaje]
Clojure http://clojure.org/ [lenguaje]
ColdFusion http://www.adobe.com/products/coldfusion/ [lenguaje]
Gosu http://gosu-lang.org/ [lenguaje]
JRuby http://jruby.org/ [lenguaje]
Rhino http://www.mozilla.org/rhino/ [lenguaje]

UNA CLASE JAVA CON DOS METODOS RUN

Posted: jueves, 22 de abril de 2010 by Skuarch in Etiquetas: , ,
0



Para poder tener dos metodos run en una misma clase es necesario heredar de thread o implementar runnable el ejemplo de como quedaria la clase seria el siguiente

public class ClaseConMultiplesHilos implements Runnable {

/* constructor */
ClaseConMultiplesHilos(){}

//primer metodo run
public void run(){}

   //segundo metodo run
   Thread hilo2 = new Thread() {
    public void run() { }
   };

   hilo2.start();
   //puede haber mas hilos...

}


En realidad un metodo run esta dentro de otra funcion, pero la cosa esta si sirve.

si no te sirve esto puedes irte y no regresar !!!!

MONITOREO DE GLASSFISH 2.1 DESDE JCONSOLE

Posted: martes, 13 de abril de 2010 by Skuarch in Etiquetas: , , , , ,
2



Para poder monitorear el servidor de aplicaciones con jconsole tenemos que seguir esto

abrir jconsole
proceso remoto pegar esto

service:jmx:rmi:///jndi/rmi://localhost:8686/jmxrmi


poner el usuario y password de glassfish

listo !!!!!

si no sabes que es jconsole pues buscale por otro lado por que este post no tiene ese fin

INSTALAR JAVA EN UBUNTU

Posted: sábado, 6 de febrero de 2010 by Skuarch in Etiquetas: , ,
0

Para poder instalar java en ubuntu desde apt-get se usa este sencillo comando

sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-bin sun-java6-fonts

en ubuntu 10.04 se requiere agregar este repositorio

sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"

solo aceptas la licencia y listo !!!!

si quieres instalarlo utilizando un .rpm busca otro tutorial

USO DE TIMER Y TIMERTASK

Posted: domingo, 31 de agosto de 2008 by Skuarch in Etiquetas: , , , ,
2



Para poder crear una tarea que se repita cada cierto periodo en java, se puede utilizar la clase Timer un ejemplo de este puede ser un reloj que cada segundo muestra la hora, pero para realizar un ejemplo sencillo, solo se va a imprimir un numero cada segundo, con esto cada quien puede realizar sus propias adecuaciones al codigo.


import java.util.Timer;
import java.util.TimerTask;

/**
*
* @author skuarch
*/
public class PruebaTimer {

    public static void main(String[] args) {

        // Clase en la que está el código a ejecutar
        TimerTask timerTask = new TimerTask() {

            int numero = 0;

            public void run() {
                System.out.println(numero++);
            }
        };

        // se crea un objeto del tipo timer
        Timer timer = new Timer();

        // se indica la tarea a ejecutar,
        //el retardo y cada cuando se tiene que repetir
        timer.scheduleAtFixedRate(timerTask, 0, 1000);
    }//fin main
}//fin class


El ejemplo es muy sencillo, cabe mencionar que en la clase TimerTask contiene un metodo que se llama run(), esto es parecido a los Thread, lo que contiene el metodo run es lo que se va a ejecutar cada cierto periodo.

Despues se crea un objeto de tipo Timer, que en este caso se llama "timer", y este accede a la propiedad scheduleAtFixedRate que se le tiene que pasar como parametros la tarea que se va a realizar el retardo, y el periodo, esta funcion tambien pude ser llamada cada determinada fecha, en la api de java puedes encontrar mas informacion sobre como programar tareas con fechas.