miércoles, 6 de mayo de 2009

Ejemplos JSP y otos

despues de entrar en mas detalle en jsp, uno tiene
que poner en practica lo aprendido, es por lo cual que
nuestro querido IDE Netbeans trae una seccion de
ejemplos de la mayoria de las tecnologias que soporta.

estos ejemplos nos pueden ayudar a entender como
se hacen algo puntual, porque es imporsible saber
hacer todo.

martes, 5 de mayo de 2009

beans en jsp

los famosos java beans que se utilizan en j2se, tambien se pueden
utilizar en jsp, las principales caracteristicas es:

Esta marca sirve para instanciar un JavaBean si no existe, o
localizar una instancia ya existente, para su uso desde la
página.

• Los JavaBeans son objetos Java que cumplen ciertas
características en cuanto a su diseño.

• Se utilizan para reducir al máximo el código Java insertado
en una página JSP. En lugar de meterlo directamente en el
fichero JSP se mete en un objeto y éste se llama desde el
JSP.

• Permite separar la lógica de ejecución (en el JavaBean) de
la presentación (en el servlet generado)

Se encapsula el código Java en un objeto (JavaBean) y
se instancia y usa con el JSP.
-Si se usa un JavaBean en una página habrá que definir la
clase correspondiente, creando los métodos set y get para
los atributos definidos

• Dentro del servlet generado se puede llamar a métodos de
un JavaBean que se encarguen de realizar ciertas
operaciones y el servlet muestra el resultado de las mismas

• Ventaja del traslado de la lógica a un JavaBean
– Separación de interfaz de la implementación

Ejemplo
1.- Clase beans
public class LenguajeBean {

private String nombre;
private String lenguaje;
public LenguajeBean() {}

public void setNombre(String nombre) {

this.nombre=nombre;
}

public String getNombre(){

return nombre;
}

public void setLenguaje(String lenguaje){

this.lenguaje=lenguaje;
}

public String getLenguaje() {

return lenguaje;
}

public String getcomentariosLenguaje (){

if (lenguaje.equals("Java")){
return "El rey de los lenguaje Orientados a objetos";
}
else if (lenguaje.equals("C++")){
return "Demasiado complejo";

} else if (lenguaje.equals("Perl")){
return "OK si te gusta el códigoincomprensible";
}else {
return "Lo siento, no conozco ellenguaje " + lenguaje ;
}
}

}

2.- pagina html con un form y que solicita una pagina jsp.



3.- ejecutamos el jsp con el beans


y por ultimo unos link de interes sobre este tema:


http://java.sun.com/products/jsp/html/jspbasics.fm2.html
http://java.sun.com/javase/technologies/desktop/javabeans/docs/spec.html
http://www.elo.utfsm.cl/~elo326/Presentaciones/Ronda_1/Java_Beans.pdf
http://www.idg.es/iworld/articulo.asp?id=125940
http://nachxs.wordpress.com/2008/12/22/leer-un-bean-con-etiquetas-jsp-netbeans-65/

lunes, 4 de mayo de 2009

un JSP es realmente un Servlet

Introducción a JSP

• JSP es una especificación de Sun Microsystems

• Sirve para crear y gestionar páginas web dinámicas

• Permite mezclar en una página código HTML para generar
la parte estática, con contenido dinámico generado a partir
de marcas especiales <% .... %>

• El contenido dinámico se obtiene, en esencia, gracias a la
posibilidad de incrustar dentro de la página código Java de
diferentes formas

• Su objetivo final es separar la interfaz (presentación visual)
de la implementación (lógica de ejecución)


La página JSP se convierte en un servlet

• La conversión la realiza en la máquina servidora el motor o
contenedor JSP, la primera vez que se solicita la página
JSP

• Este servlet generado procesa cualquier petición para esa
página JSP

• Si se modifica el código de la página JSP, entonces se
regenera y recompila automáticamente el servlet y se
recarga la próxima vez que sea solicitada

un ejemplo de servlet muy bueno

En mi busqueda de informacion sobre los servlet encontre este
muy buen ejemplo, y no es el mitico hola mundo jajaajaj, porque
supuestamente despues un cliente no quiere un hola mundo,
en este ejemplo podemos ver un mantenedor interesante con
conexion a base de dato, solamente que esta realizado con
Datadriver que corresponde a la conexion mas simple y que
en realidad no se implementa mucho en j2ee. pero para empezar
esta muy bueno.

el codigo http://flanagan.ugr.es/docencia/2005-2006/2/servlets/ejemplos/Persona.java

la direccion de este ejemplo es:
http://flanagan.ugr.es/docencia/2005-2006/2/servlets/ejemplos.html

y como extra unas direcciones para aprender o repasar los conceptos
de un servlet

http://dis.um.es/~jbermudez/dad/
http://www.scribd.com/doc/7090030/Servlet-Completo
http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets2.html#75087
http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/Java/Java2.pdf
http://www.proactiva-calidad.com/java/servlets/index.html

El primer paso para aprender J2EE

El primer paso para empezar con j2ee es aprender como es su
arquitectura, la figura siguiente es una de varias que tienes que
comprender bien, antes de empezar con los servlet, jsp, ejb y
miles de cosas que se pueden aprender en esta plataforma.


Como este tema es muy extenso solamente dare unos link para buscar
informacion sobre este tema:

http://java.sun.com/javaee/5/docs/tutorial/doc/index.html
http://www.proactiva-calidad.com/java/arquitectura/index.html

viernes, 1 de mayo de 2009

una aplicación J2ME, Bluetooth y J2SE

En la siguiente figura tenemos la primera aproximación
de nuestra aplicacion


En el dispositivo movil tenemos que respetar la siguiente arquitectura

ya que j2se no tiene librerias para bluetooth tenemos que ocupara bluecove


lo positivo de esta libreria es que se basa mucho en jsr-82 bluetooth de j2me, lo cual
se programa practicamente igual que j2me, solamente que en j2se. Para el
funcionamiento correcto de bluecove tenemos que instalar en el sistema operativo
(yo lo programe bajo xp, pero se puede realizar tambien en linux) una pila
bluetooth que realiza la conexion entre el hardware bluetooth y j2se.

Toda la informacion la podemos encontrar en http://code.google.com/p/bluecove/

Como el centro de la aplicación, se basa en el JSR-82 a continuación se
describirán los principales métodos utilizados

· getLocalDevice: Este método que pertenece a la clase LocalDevice y
proporciona la capacidad de generar un objeto que entrega la
identificación del dispositivo Bluetooth.

· DiscoveryAgent: Esta es una interfaz que provee métodos para
descubrir dispositivos y servicios.

· DiscoveryListener: Esta clase proporciona el método
deviceDiscovered() que se utiliza cada vez que se encuentra un
dispositivo en un proceso de búsqueda.

· ServiceRecord: Es una clase que proporciona métodos para registrar
el dispositivo y los servicios encontrados. En base a una instancia de
él, se establecen las conexiones con el servidor


ademas para entrar en mas detalle sobre la tecnologia bluetooth
podemos acceder a su pagina oficial http://spanish.bluetooth.com/Bluetooth/Default.htm

sobre la especificacion de jsr-82 la podemos encontrar en
http://jcp.org/en/jsr/detail?id=82

como observacion final podemos decir que se tiene que tener en
cuenta que es fundamental que el celular tenga el paquete
jsr-82, sobre el bluetooth yo lo implemente con un pedrive usb y
sin ningun problema y por ultimo para implementar una aplicacion de
esta caracteristicas hay que leer su resto y tomarse un tiempo, ya que
se tiene que entrar al dominio de nuevos temas, como es j2me y la libreria
de bluetooth.

bueno espero que esto sea un punto de partida para quienes quieran
desarrollar una aplicacion similar.

lunes, 20 de abril de 2009

JavaCup 2009

Oracle comprará Sun y entra en mercado del hardware

La compañía estadounidense de software Oracle tiene previsto
entrar en el mercado del hardware informático con la compra
de Sun Microsystems por más de 7.000 millones de dólares
(unos 5.360 millones de euros), después del fracaso de las
negociaciones del fabricante de servidores informáticos con IBM


http://www.swissinfo.ch/spa/suiza_y_el_mundo/internacional/Oracle_comprara_Sun_y_entra_en_mercado_del_hardware.html?siteSect=143&sid=10593799&cKey=1240243106000&ty=ti

martes, 24 de febrero de 2009

Reproducir un MP3

La reproducion de un archivo mp3 es sumamenete facil y
lo vamos a realizar con un jar ajeno del estandar oficial
de sun , supuestamente con The Java Media Framework
API (JMF) se puede lograr la reproduccion de un mp3 y
otras acciones de multimedia, pero de esta forma
es mas facil creo jejejeje y solamente vamos a
reproducir un mp3.

Primero tenemos que descargar y montar el jar en
en nuestro proyecto( como siempre en nuestro
netbeans), la direccion para descargar es :

http://www.javazoom.net/jlgui/sources.html

en la carpeta lib se encuentran todos los
jar necesarios.

Si no sabes agregar un jar a tu proyecto no te
preocupes, porque en articulos anteriores tengo
ejemplo de eso.

Segundo es generar nuestro codigo, que corresponde
al siguiente.

---> estos son dos variables de clase

private BasicPlayer basicPlayer;

String direccion ="C:\\Documents and Settings\\Administrador
\\Escritorio\\keane.mp3";


--> en el contructor tenemos que llamr el metodo
reproductor()

public void Reproductor() {

basicPlayer = new BasicPlayer();
loadFile(direccion);

}


public void loadFile(String direccion){

try {

basicPlayer.open(new File(direccion));


} catch (BasicPlayerException ex) {
Logger.getLogger(ventana.class.getName()).log(Level.SEVERE, null, ex);
}

}

y por ultimo el evento del boton para empezar a escuchar
nuestro mp3


try {
basicPlayer.play();

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


---> asi me quedo el reproductor de mp3



tenemos las otras opciones como basicPlayer.stop() , basicPlayer.pause(),
etc.

como siempre un link oficial para entrar mas endelle sobre el tema.


http://java.sun.com/javase/technologies/desktop/media/jmf/index.jsp

viernes, 20 de febrero de 2009

JNLP de Java Web Start

Sencillamente, Java Web Start es un mecanismo para la ejecución
de los programas a través de un servidor Web.
. Normalmente se
inicia mediante el navegador, estos programas se han desplegado
para el cliente y ejecutados fuera del ámbito del navegador.

Una vez desplegado, los programas no necesitan ser descargados
de nuevo, y pueden descargar las actualizaciones automáticamente
en el arranque sin necesidad de que el usuario pueda ir a través de
todo el proceso de instalación de nuevo
.

En nuestro querido netbeans 6.5 tenemos que acceder a las
propiedades de nuestro proyecto y en Web Start habilitamos
esta propiedad.


al generar el jar de la aplicacion nos aparecera los siguientes archivos en
la carpeta dist de la carpeta del proyecto

Al ejecutar el archivo launch nos aparece lo siguiente

y se nos abrira acontinuacion nuestra aplicacion.

Esto es una introduccion al tema, para mayor informacion aqui estan unos
link interesantes sobre el tema.

http://java.sun.com/javase/technologies/desktop/javawebstart/index.jsp

http://java.sun.com/developer/technicalArticles/Programming/jnlp/

http://java.sun.com/javase/technologies/desktop/javawebstart/docs/readme.html

http://java.sun.com/javase/technologies/desktop/javawebstart/demos.html


y por ultimo un video , que siempre es entretenido

jueves, 29 de enero de 2009

Swing Application Framework JSR-259

Para ayudar en el armado de una aplicación, se ha escrito la JSR-259
llamada Swing Application Framework. Este Framework se lanzó en
el 2006, y hasta ahora es una implementación prototipo de un
conjunto de clases java.

Nos proporciona un manejo mas simple de:

  • Ciclo de vida de una aplicación, como comienzo y parada de la GUI
  • Soporte para el manejo y carga de recursos, como strings, mensajes formateados, imágenes, colores, fonts, y otros tipos.
  • Soporte para definición, manejo y enlace de Actions, incluyendo las asincrónicas.
  • Persistencia del estado de la GUI, automático y selectivo, para que vuelva a aparecer en la próxima ejecución en el mismo estado

Bueno para que sea esto mas entretenido vamos a mostrar un ejemplo
de este framework.

1. este ejemplo es un mantenedor simple de una tabla de una base de
datos, como siempre con nuestro querido netbeans y postgres.

2. tenemos que tener una conexion en netbeans de la base de datos
(en un articulo de este exelente blogg jajaja, tenemos un ejemplo como
realizarlo).

3. creamos el proyecto de tipo framework jsr-259



4. especificamos que vamos a utilizar una base de datos.


5. seleccionamos la base de dato y la tabla correspondiente a nuestro mantenedor.



6. despues siguiente y en la siguente ventana finalizar, despues de todo este
proceso nos queda el proyecto asi.

7. y para finalizar ejecutamos nuestro proyecto.





Como simpre este es un punto de partida para entrar a este tema y como
siempre acontinuacion soy unos link para que puedan interiorisarse mas
del tema.

http://java.sun.com/developer/technicalArticles/javase/swingappfr/

http://jcp.org/en/jsr/detail?id=296

https://appframework.dev.java.net/intro/index.html

http://weblogs.java.net/blog/hansmuller/archive/ts-3399-final.pdf

http://weblogs.java.net/blog/hansmuller/archive/ts-3492-final.pdf

miércoles, 28 de enero de 2009

Patron de diseño DAO

Los patrones de diseño (design patterns) son la base para la búsqueda
de soluciones a problemas comunes en el desarrollo de software y otros
ámbitos referentes al diseño de interacción o interfaces.

En este pequeño articulo quiero hablar de el patron de diseño DAO( Data
Access Objetc)
que esta relacionado con la persistencia de nuestra
aplicacion.

El problema que viene a resolver este patrón es el de contar con diversas
fuentes de datos ( base de datos, archivos, servicios externos, etc ). De tal
forma que se encapsula la forma de acceder a la fuente de datos. Este patrón
surge históricamente de la necesidad de gestionar una diversidad de fuentes
de datos, aunque su uso se extiende al problema de ancapsular no sólo la fuente
de datos, sino además ocultar la forma de acceder a los datos. Se trata de
que el software cliente se centre en los datos que necesita y se olvide de cómo
se realiza el acceso a los datos o de cual es la fuente de almacenamiento


La ventaja de usar objetos de acceso a datos es que cualquier objeto de
negocio (aquel que contiene detalles específicos de operación o aplicación)
no requiere conocimiento directo del destino final de la información que
manipula
.

Este ejemplo es muy bueno, imaginemos que nuestra aplicación va de
maravilla, cuando de pronto, se acerca nuestro querido jefe y nos comenta
que por X, Y y Z razones se va a cambiar el motor de la base de datos a
PostgreSQL. OOOOO que probleman, pero nosotros como habiamos leido
este blog y aplicamos el patron de diseño DAO le decimos al jefe no hay
problema para eso soy ingeniero y no un artesano, entonces aprovechamos
inmediatamente y le pedimos un aumento de sueldo jajajaajja.

Por lo que cuando la capa de lógica de negocio necesite interactuar con la base
de datos, va a hacerlo a través de la API que le ofrece DAO. Generalmente esta
API consiste en métodos CRUD (Create, Read, Update y Delete)
.

En una aplicación, hay tantos DAOs como modelos. Es decir, en una base de
datos relacional, por cada tabla, habría un DAO.


Los DTO (Data Transfer Object) o también denominados VO (Value Object).
Son utilizados por DAO para transportar los datos desde la base de datos
hacia la capa de lógica de negocio y viceversa
.

Bueno como siempre sus link, para entrar mas en detalle a este y
mas patrones de diseño.

http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

http://java.sun.com/blueprints/corej2eepatterns/index.html

http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html

http://www.programacion.com/java/tutorial/patrones2/8/




martes, 16 de diciembre de 2008

javax.swing.Timer , para cosas sencillas y con tiempo

generalmente es mejor ocupar hilos para manejar tiempos , pero
para cosas bien sencillas no seria malo ocupar este Timer , como
por ejemplo en animaciones muy sencillas , un mensaje recordatorio,
bueno etc


1.- importar java.awt.event.*;

2.- el formato es asi para crear una instancia

javax.swing.Timer yourTimer =
new javax.swing.Timer(int milliseconds, ActionListener doIt);

3.- la implementacion puede es asi:

javax.swing.Timer t = new javax.swing.Timer(1000, new ActionListener() {

public void actionPerformed(ActionEvent e) {

Accion
}
});

4.- este posee un Start y un Stop , que tenemos que ocupar para hacer correr nuestro
Timer

     

lunes, 1 de diciembre de 2008

crear un PDF en java

El siguiente ejemplo consiste en pasar un texto a un archivo pdf.


Para lograr esto o manipular de otra forma un pdf tenemos que bajar
el siguiente JAR iText-2.1.4 y añadirlo a nuestro proyecto
(sobre el proyecto : propiedades ->biblioteca -> añadir JAR )

http://www.lowagie.com/iText/download.html


para realizar esto vamos a utilizar el siguiente codigo

Document document = new Document();

try {

PdfWriter.getInstance(document, new FileOutputStream("ejemplo.pdf"));

document.open();

document.add(new Paragraph(jTextArea1.getText()));

} catch (DocumentException de) {
System.err.println(de.getMessage());
} catch (IOException ioe) {
System.err.println(ioe.getMessage());
}

document.close();

el archivo pdf se crea en nuestro proyecto



ademas con esta biblioteca iText podemos manipular un RTF o un
HTML

http://www.lowagie.com/iText/


http://www.adobepress.com/articles/printerfriendly.asp?p=420686

http://itextdocs.lowagie.com/tutorial/general/index.php#step1



jueves, 27 de noviembre de 2008

Ingresa a la red social de sun (osum.sun)


Open Source University Meetup

Esta es una red social para apoyar la comunicacion e intercambio de
informacion de las tecnologias de sun ( java , solari , etc) . en pocas
palabras es un tipo facebook pero relacionado a sun , te puedes unir a
grupos , publicar en blog , etc .

http://osum.sun.com/


lunes, 24 de noviembre de 2008

manejo de ventanas como JFrame y JDialog

sobre este tema podemos hablar por mucho rato , pero comentare los puntos

que encuentro importante (se supone de un conocimiento basico del tema).


primero vamos decir que como siempre vamos a trabajar con netbeans

cuando creamos un JFrame en netbeans este crea automaticamente un

main para el. este lo podriamos utilizar para dejarlo como principal y

no tener que crear la clase main con el famoso


ventana v=new ventana();

v.setvisible(true);


seleccionar el main de jframe



con los primeros ejercicios de JFrame no nos preocupamos de mucho

de manejos de ventanas , pero cuando nos toca hacer algo real salta esta

preocupacion y problema.


hay muchas formas de enfrentar este tema al momento de programar ,

uno de ellos es ocupar JInternalFrame dentro de un jframe , pero este

tiene que estar dentro de un JDesktopPane (es una subclase de JLaveredPane

al que se le ha añadido el API para manejar el solapamiento de múltiples

frames internos.) .


yo utilizo JFrame y Jdialong para programar ventanas , por mi parte

lo encuentro super facil y no es complicado .


para empezar tenemos que tener algunos detalles claros :


- tiene que existir un solo jframe (padre) y los demas ventanas seran jdialog.


- en una ocasion yo sobre carge demaciado un jframe y me dio error de

memoria , entonces como recomendacion es que los jdialog y jframe son

para mostrar la carcasa de nuestro programa y para lo demas tenemos las

famosas clases.


- un jframe muestra un boton en la barra de tarea de windows y los jdialog no.


- Un JDialog puede ser modal, un JFrame no.


modal ???? : Un JDialog puede ser modal, pasándole un true en el

constructor en el sitio adecuado o haciéndolo modal con el método

setModal(). Si hacemos un JDialog modal, todas las demás ventanas

se deshabilitarán hasta que el usuario de nuestro programa cierre el

JDialog.


- Todas las ventanas secundarias deben ser JDialog y todos los JDialog

deberían tener padre.


para abrir un JDialog desde un JFrame


NewJDialog n=new NewJDialog(this,true);
n.setVisible(true);


centrar nuestra ventana en la pantalla :

en el contructor setLocationRelativeTo(null);


bueno esto es una pincelada de JFrame y JDialong y sobre este tema existe

mucho por aprender

viernes, 7 de noviembre de 2008

documentacion de nuestro codigo con javadoc

la idea de javadoc es proporcionar de forma facil una forma de
documentar nuestro codigo , lo simpatico esque nos crea nuestra
documentacion de la misma forma de la api de java

Como siempre trabajaremos con nuestro querido netbeans

1.- tenemos que bajar el plugins



despues de instarlo podemos ver la configuracion en tools->options





2.- es super simple utilizarlo , antes de los metodos
escribimos /** y enter y solo nos genera un trozo de comentario , el cual
llenamos con la descripcion que deseamos.

Palabra reservada Versión Descripción
@author 1.0 El autor del método, clase.
@deprecated 1.0 El método ha sido reemplazado por otro.
@exception 1.0 La excepción que puede generar.
@param 1.0 Después viene el parámetro, esto se hace para


documentar todos los parámetros que requiere el método.
@return 1.0 El valor que regresa
@see 1.0 Una referencia a otra clase o método de utilidad
@since 1.1 La versión desde que se incluye.
@throws 1.2 Es un sinónimo para @exception.
@version 1.0 La versión del método, clase.


tenemos tambien el un visor para ir creado los comentarios y este se
encuentra en Source->analyze javadoc


3.- y por ultimo para generar uno javadoc tenemos que ir sobre nuestro proyecto
y con las opciones del boto derecho de mouse seleccionamos generate javadoc.

Asi nos muestra la documentacion

mayor informacion
http://books.google.com/books?id=cw56y1WQp0IC&pg=PA173&lpg=PA173&dq=javadoc+comments+netbeans&source=web&ots=clEPUIIcsL&sig=rlJqknJ4BQpQTjKybabomziPS5c&hl=en&sa=X&oi=book_result&resnum=9&ct=result#PPA176,M1
fin

certificacion Netbeans


para nadie es nuevo lo de la certificacion y principalmente en
java que tenemos un variedad tremenda.
Creo que podemos estar toda la vida
certificandonos , pero encontre novedoso la certificacion de
Netbeans por ser un IDE y tambien por ser gratuita y para ser mas
precisos aqui esta el link de la certificacion

http://www.sun.com/training/certification/netbeans.html



miércoles, 5 de noviembre de 2008

problemas de precision de float y double

veamos los siguientes ejemplos :

1) para un float

for(float i = 0f; i<1; i += 0.1f){
System.out.println(""+ i );
}
salida :
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001

2) para double

double dividendo = 1812.6;

double resultado = 0;

resultado = dividendo / 100;

System.out.println("resulatado :"+resultado);

salida: 18.125999999999998


para solucionar esta imprecision de la variables primitivas de coma
flotante tenemos que implementar la clase BigDecimal.

http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigDecimal.html

otra forma menos formal es redondiar el valor decimal con
el metodo math.round()

este error no es propio de java , sino de la mayoria de los lenguajes
de programacion .

en este link explica porque sucede esto

http://developers.sun.com/solaris/articles/fp_errors.html

y como estamos hablando de decimales seria bueno mencionar
mencionar la forma de dar formato a una decimal.

import java.text.DecimalFormat;

DecimalFormat formateador = new DecimalFormat("####.####");

// Esto sale en pantalla con cuatro decimales, es decir, 3,4324
System.out.println (formateador.format (3.43242383));