Fetishcode…Thinking in objects

Thinking in objects

Entradas etiquetadas ‘Java

Java Decompiler

sin comentarios

Como su nombre indica un decompilador de clases java.

Sobre todo me parece muy interesante la forma de tratar los Jars. Ya que te los abre como si de un proyecto se tratara permitiendote navegar entre sus clases.

Otro aspecto a destacar es que no se instala, por lo menos en Windows. Y su rendimiento es muy bueno.

Java Decompiler esta disponible para Windows, Linux y Max. A continuación les dejo la pagina web del producto desde la cual podemos hacer sugerencias o reportar bugs.

http://java.decompiler.free.fr/

Escrito por fetishcode

Febrero 17, 2009 a 8:40 am

Escrito en Herramientas

Etiquetado con ,

Plug-in Eclipse para dar formato al código

con un comentario

The Checkstyle plug-in integrates the well-known source code analyzer Checkstyle into today’s leading IDE – Eclipse. Checkstyle is a development tool written by Oliver Burn to help you ensure that your Java code adheres to a set of coding standards.

Un aspecto interesante a la hora de trabajar en un proyecto es dotarlo de algunas medidas que le otorguen “calidad”, una muy sencilla puede ser definir el aspecto que debe tener el código internamente y los comentarios javadoc requeridos. Es un gesto simple pero que puede ser muy útil posteriormente dando al proyecto un aspecto más limpio y comprensible.

Existe un plug-in para Eclipse que nos permite definir unas normas de estilo mediante unas reglas y verifica que el proyecto las cumple mostrando una serie de warnings o errores según la gravedad definida. Se llama Checkstyle y podemos descargarlo aquí.

Para instalarlo podemos hacerlo de dos formas:

  • Descargamos el plug-in aquí, lo descomprimimos en local y copiamos los archivos incluidos en las carpetas features y plugins dentro de las carpetas del mismo nombre de nuestro directorio Eclipse.
  • O bien lo podemos instalar automáticamente: dentro de Eclipse vamos Help -> Software Updates -> Find and Install. Seleccionamos Search for new features to install -> Next. Escribimos una descripción por ejemplo “Checkstyle Plug-in” y copiamos la url de descarga: http://eclipse-cs.sourceforge.net/update

Reiniciamos el Eclipse.

Por defecto el plug-in viene con unas reglas de formato y de creación de javadoc definidas. Para ejecutarlas abrimos una clase java cualquiera y ejecutamos los shortcuts:

Ctrl + Shift + F, formatea la clase entera según lo definido en Windows -> Preferences -> Java -> Code -> Style -> Formatter

Alt + Shift + J, genera el javadoc, situarse encima del nombre del método o a nivel de método y presionar el shortcut.

De esta forma podemos pasar de tener el código:

public class ImagenUtils {

  public static int MAX_DIM=600;
  public static int MAX_DIM_THUMB=130;
  public static String DEFAULT_format="image/jpeg";

 public static void cropImage(String input, String output, int maxDim) throws Exception
 {
  try{
	ImageProducer p1 = Jimi.getImageProducer(input);
		ImageFilter f = new CropImageFilter(0, 0, maxDim, maxDim);
	ImageProducer p2 = new FilteredImageSource(p1, f);
	Jimi.putImage(p2, output);}
	catch (Throwable t)
	{t.printStackTrace();
	}
 }

a tener este otro:

public class ImagenUtils {

	public static int MAX_DIM = 600;

	public static int MAX_DIM_THUMB = 130;

	public static String DEFAULT_format = "image/jpeg";

	/**
	 * @param input
	 * @param output
	 * @param maxDim
	 * @throws Exception
	 */
	public static void cropImage(String input, String output, int maxDim)
			throws Exception {
		try {
			ImageProducer p1 = Jimi.getImageProducer(input);
			ImageFilter f = new CropImageFilter(0, 0, maxDim, maxDim);
			ImageProducer p2 = new FilteredImageSource(p1, f);
			Jimi.putImage(p2, output);
		} catch (Throwable t) {
			t.printStackTrace();
		}
	}

Para ayudarnos a personalizar nuestras reglas el plug-in contiene una extensa documentación que localizamos en la carpeta:

(directorio Eclipse)\plugins\com.atlassw.tools.eclipse.checkstyle_xx\doc

Escrito por suestar

Noviembre 14, 2008 a 6:55 pm

Escrito en Eclipse

Etiquetado con , ,

Donde implementar las reglas de negocio:ADF BC o Database

con 2 comentarios

BUSINESS RULES IN THE DATABASE OR MIDDLE TIER

El eterno dilema. Donde implementar las reglas de negocio, en la capa de aplicación o en la base de datos?
Les dejo un resumen de las razones que justifican la implementación en cada uno de los lados.

Algunas razones por las cuales es mas conveniente implementar las reglas de negocio en ADF BC:

  • Tener desarrolladores mas preparados en Java que en PL/SQL
  • La base de datos es atacada únicamente por ADF BC
  • Estar usando alguna base de datos que no tenga soporte de PL/SQL

Algunas razones por las cuales es mas conveniente implementar las reglas de negocio en base de datos:

  • Acceder a la base de datos desde distintas aplicaciones
  • Estar mejor formado en PL/SQL que en Java
  • Usar herramientas como Oracle Designer, Headstart and CDM

Mas información en: business rules in adfbc.pdf.

Escrito por fetishcode

Agosto 1, 2008 a 8:04 pm

Escrito en Desarrollo

Etiquetado con ,

Java Conversion Utils

sin comentarios

Java – comparing strings

Use == for primitive data types like int

If (mystring == null)

Use the equals() method to compare objects

Use .equals for strings : if (a.equals(“cat”))

Java – Converting int to string

String myString = Integer.toString(my int value) or String str = “” + i

Java – Converting String to int

int i = Integer.parseInt(str);

or int i = Integer.valueOf(str).intValue();

 

 

double to String:

String str = Double.toString(i);

 

 

long to String:

String str = Long.toString(l);

 

 

float to String:

String str = Float.toString(f);

 

 

String to double:

double d = Double.valueOf(str).doubleValue();

 

String to long:

long l = Long.valueOf(str).longValue(); or long l = Long.parseLong(str);

 

String to float:

float f = Float.valueOf(str).floatValue();

decimal to binary:

int i = 42;
String binstr = Integer.toBinaryString(i);

decimal to hexadecimal:

int i = 42; String hexstr = Integer.toString(i, 16);
or String hexstr = Integer.toHexString(i);
or (with leading zeroes and uppercase)
public class Hex { public static void main(String args[]){
int i = 42;
System.out.print (Integer.toHexString( 0×10000 | i).substring(1).toUpperCase());
 }
 }

 

hexadecimal to integer:

int i = Integer.valueOf(“B8DA3″, 16).intValue(); or int i = Integer.parseInt(“B8DA3″, 16);

ASCII code to String

int i = 64;String aChar = new Character((char)i).toString();

integer to ASCII code (byte)

char c = ‘A’;int i = (int) c; // i will have the value 65 decimal

integer to boolean

b = (i != 0);

 

boolean to integer

i = (b)?1:0;

Escrito por fetishcode

Junio 21, 2008 a 6:10 am

Escrito en Java

Etiquetado con ,

Paso de parámetros entre paginas jspx.

sin comentarios

Passing parameters between jspx pages

Cuando trabajamos en ADF Faces muchas veces tenemos la necesidad de pasarnos información entre páginas. Pero no queremos hacerlo mediante la url del tipo http://url?parametro=valorparametro.

Para ello podemos usar la map de sesión, donde iremos añadiendo los parámetros que queramos antes de efectuar la regla de navegación que nos lleva a la pagina destino, la cual queremos que reciba los parámetros.

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("param","valorparam");

Para recogerlo:

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("param");

Nota: esta no es la única forma de pasar parámetros entre paginas.

Escrito por fetishcode

Mayo 1, 2008 a 6:07 am

Escrito en ADF

Etiquetado con , ,

Logging ADF

con un comentario

How to use and configure ADF Logger

El sistema de trazas o logging que utiliza ADF se denomina Java Logging . Este sistema de trazas no requeire el uso de ninguna librería extra ya que viene incluida en el propio JDK, desde la version 1.4.

Para poder hacer uso de este sitema de trazas en nuestro proyecto bastara con registrar un logger en la clase:

private static Logger logger = Logger.getLogger("milog");
logger.info("info");
logger.fine("fine");

El fichero dec onfiguración del sistema de trazas se llama logging.properties y se encuentra en: /jdk/jre/lib/logging.propertiesTambién podemos indicar un fichero propio, en tiempo de diseño, idicándolo en JDEV_HOME/jdev/bin/jdev.conf mediante la siguiente linea:
AddVMOption -Djava.util.logging.config.file=path y nombre del fichero propertiesPor otro lado todos los loggers que ADF utiliza los tiene registrados y configurados en el fichero j2ee-logging.xml que lo encontramos…
Dentro del Jdeveloper en: /jdev/system/oracle.j2ee.10.1.3.xx.xx/embedded-oc4j/config
en el OAS:
/j2ee//config
Y en un OC4J en: /j2ee/home/configOtra opción, y quizá la mas extendida, es configurar nuestro proyecto para Jakarta-Log4j.

Mas información: ADF-Logging

Escrito por fetishcode

Enero 9, 2008 a 10:03 am

Escrito en ADF

Etiquetado con , , , ,

Extracción de ficheros desde JAR

sin comentarios

Creating the self-extracting jar file
Hace ya algún tiempo recibí, un correo consultandome sobre la extracción de ficheros desde un jar. Es decir, como extraer ficheros desde el jar que se esta ejecutando, en tiempo de ejecución.

Mas concretamente, el tema era el siguiente: Desplegar una aplicación en formato JAR, mediante JavaWebStart, y al ejecutar la aplicación extraer una serie de ficheros de configuración del propio jar y copiarlos en un lugar determinado.

Lo principal es como conseguir la URL de nuestro JAR y jugar con la clase ZipFile para extraer los archivos del mismo.

myClassName = this.getClass().getName() + ".class";
URL urlJar = this.getClass().getClassLoader().getSystemResource(myClassName);

Les dejo un articulo de javaworld donde se trata este tema con mas profundidad.

Escrito por fetishcode

Octubre 20, 2007 a 7:57 pm

Escrito en Java

Etiquetado con , , ,

Crear Thumbnails de imágenes en Java con JIMI

con 2 comentarios

How to create image thumbnails programmatically cropping a region of an image instead of scaling it. We explain how JIMI (Java Image Management Interface) can provide a easy solution.

Si lo que queremos es generar una imagen en miniatura a partir de otra imagen, dentro de una aplicación java, pero con un tamaño fijo, podemos hacerlo de una forma muy sencilla. Para ello necesitamos la librería JIMI (Java Image Management Interface), una api propia de Sun para leer, crear y manipular imágenes en múltiples formatos.

En nuestro caso estamos desarrollando en struts una galeria de imágenes al estilo de Flickr y necesitamos crear miniaturas de las imágenes con un HxW fijo, por ejemplo 100×100, sin modificar la imagen al escalarla. Por lo que si la imagen original es rectangular para evitar deformarla necesitamos recortar una parte de ésta con las medidas adecuadas, con JIMI es posible.

thumb_jimi

Primero, necesitamos incluir las clases de JIMI en nuestro proyecto, para ello primero descargamos la librería en la página oficial de Sun:

http://java.sun.com/products/jimi/

Después descomprimimos el zip en local, renombramos el archivo JimiProClasses.zip como jimi-1.0.jar y lo copiamos en el path /WEB-INF/lib de nuestro proyecto y lo añadimos al Build Path del proyecto desde Eclipse:

Project –> Properties –> Java Build Path –> pestaña Libraries –> Add JARs…

Una vez hecho este paso nuestra aplicación ya puede reconocer las clases de jimi, lo último que queda por hacer es incluir este pequeño código:

import java.awt.image.*;
import com.sun.jimi.core.Jimi;
(...)

ImageProducer p1=Jimi.getImageProducer("image.jpg");
ImageFilter f=new CropImageFilter(0,0,100,100);
ImageProducer p2=new FilteredImageSource(f, p1);
Jimi.putImage(p2, "image.jpg");

fuente

Escrito por suestar

Octubre 4, 2007 a 8:01 am

Escrito en Java

Etiquetado con ,

Instalar JDK en Ubuntu Feisty(7.04)

con 18 comentarios

How to install jdk in Ubuntu Feisty

La opción mas rápida y sencilla es hacerlo, como casi todo, desde los repositorios.

Pero muchas veces queremos una JDK concreta para nuestro trabajo o proyecto, por eso aqui explicaremos la manera de instalar el JDK que hayamos descargado de la web de Sun.

Una vez tengamos descargado el archivo,en nuestro caso jdk-6-linux-i586.bin

Le damos permiso de ejecucion y lo instalamos:

chmod +x jdk-6-linux-i586.bin
$ sudo ./jdk-6-linux-i586.bin

Una vez instalado el JDK.

Seteamos el nuevo Java como una de las “alternativas de java”:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/jdk1.6.0/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/jdk1.6.0/bin/javac" 1

Finalmente configuramos que java queremos tener por defecto. Y a programar!

sudo update-alternatives --config java

Mas información en la guía ubuntu

Escrito por fetishcode

Septiembre 30, 2007 a 9:23 am

Escrito en Ubuntu

Etiquetado con

Eclipse: proyectos con diferentes versiones de java y Tomcat

con 3 comentarios

How to change java jdk and Tomcat version in Eclipse

Si trabajamos con varios proyectos java en Eclipse, cada uno de ellos con una versión diferente de jdk o una versión diferente de Tomcat deberemos configurar a cada momento Eclipse con el consecuente lío. Podemos volvernos locos con este tema ya que hay varios sitios donde se debe cambiar:

Para cambiar el tomcat de 4.1 a 5.0 por ejemplo:

Vamos a Window –> Preferences –> Tomcat –> en Tomcat version seleccionamos la versión 5.0, y en Tomcat home seleccionamos el path

En la misma rama Tomcat (la abrimos) –> Advanced –> en Tomcat base seleccionamos la versión

Para cambiar la versión de java de 1.4 a 5.0 por ejemplo:

Vamos a Window –> Preferences –> Java –> Compiler –> Compiler compliance level y seleccionamos la 5.0

Escrito por suestar

Septiembre 20, 2007 a 11:41 am

Escrito en Eclipse

Etiquetado con ,