Jawin: Llamar metodos de una DLL con java

Jawin es una de las tantas librerias que se puede utilizar para poder trabajar los metodos de una DLL desde java. Lo mas comun era trabajar con JNI pero esto implicaba tener los fuentes de la DLL para poder realizar las modificaciones y volver a realizar la compilacion, algo tedioso en algunos casos.

Bueno una forma de utilizar esta libreria es creando una pequeña DLL en C con un metodo basico, por ejemplo el metodo “suma” que implica tener dos variables de entrada del tipo entero y retornar un valor entero. Para esto configuré NetBeans con el compilador gcc para poder desarrollar codigo en C/C++ siguiendo este manual, para luego crear un proyecto del tipo “C/C++ Dynamic Library”. Una vez creado este proyecto agrego un fuente al cual llamare “Suma.c” y dentro de este archivo creamos el metodo antes mencionado, quedando de la siguiente manera:

jawin_01

Como veran es algo simple y basico, ahora solo nos queda construir la DLL, para esto click derecho sobre el proyecto y elegimos “Build”, y listo ya tenemos generada nuestra DLL.

Ahora para poder utilizar el metodo de la DLL desde java, hacemos lo siguiente:

  • Primero agregamos la libreria jawin al proyecto (jawin.jar)
  • Luego segun nos indica la documentacion copiamos el archivo “jawin.dll” en el directorio “C:\windows\System32”.

Y listo ahora empezamos a escribir el codigo que llamaria al metodo, algo asi como esto:

jawin_02

Como podran ver el nombre de mi DLL es “LibSuma.dll”, tener en cuenta que el nombre de la dll lo da el nombre del proyecto(anteponiendose el sufijo “lib”, pero esto lo pueden variar en las propiedades del proyecto), y el metodo, en este caso “suma”; hago la invocacion dandole los parametros antes mencionados y en la variable “g” recepciono el resultado y listo. 

jawin_03

Cabe aclarar que yo puse solo el nombre de la libreria y no toda la ruta porque agregue la ruta de mi libreria a mi PATH. Otra forma seria colocar la libreria generada en “C:\Windows\System32”; o de lo contrario colocan toda la ruta de la libreria incluida el nombre.

Como veran para este caso es algo sencilo de trabajar y no tan tedioso, yo ahora estoy en un proyecto algo mas grande trabajando con esta libreria y la verdad me esta dando resultados.

Simular Split en J2ME

Hace poco me adentre a desarrollar pequeños aplicativos para moviles utilizando el J2ME(Java 2 Micro Edition) con Netbeans 6.1y la verdad no me resulto tan complicado como pensaba. Como sabran el J2ME ees una coleccion de apis de java que esta orientado especificamente a moviles, PDAs, impresoras, etc. podriamos decir que es una version “reducida” y optimizada de toda la gama de productos de java y como tal no todos los métodos  que normalmente encontrarmos en el J2SE o J2EE, iban ha estar presentes. Uno de estos métodos es el famoso “split” el cual esta dentro del paquete “java.util.*”, y que estoy acostumbrado a utilizar de forma frecuente, y bueno, decidi escribir este pequeño metodo para de alguna forma simular este método , el cual podria serlo de la siguiente manera:

Como veran estoy enviando como parametros la cadena completa y el patron de busqueda, de manera que los items los estaria almacenando en un vector, que luego seria mas facil leer. Esto una forma simple de trabajarlo, aunque quizas para los que conozcan java esto seria como un juego, pero bueno no todos conocen el lenguaje. Espero les sirva.

Tutorial Python II

Como sabran Python ha sido, es, y seguira siendo uno de los lenguajes de programación dinámicos mas importantes y usados en el mundo del desarrollo de software y que mejor manera de aprender este lenguaje con una buena guia. Revisando el blog Mundo Geek, me tope con un post en donde el autor Zootropo hace referencia a la actualización de su libro “Python para todos“. Sinceramente es un libro muy interesante sobre todo por el contenido, es simple, conciso y trata de abordar los aspectos necesarios como para poder empezar a programar con este excelente lenguaje, y porque no, para los que ya tenemos algun conocimiento tambien nos seria de gran ayuda; se los recomiendo.

  

Tutorial: Leer archivo de propiedades en un proyecto Web en Netbeans

Hace poco realizando un pequeño trabajo con JSP y Base de datos (PostgreSQL), me vi en la necesidad de trabajar con archivos de propiedades, por la cantidad de parametros que iba a utilizar y que en un momento iban a cambiar, y para poder evitarme el estar compilando las clases o el proyecto en si, tome como una opcion trabajar con este tipo de archivos.

Bueno, esta es una forma de realizarlo, para lo cual a mi me resulto mucho mas sencillo, quizas haya otra forma de hacerlo.

Lo primero que haremos sera crear un paquete con el nombre “mipaquete.propiedades” dentro de un nuevo proyecto web, una vez realizado esto creamos el archivo de propiedades el cual llamaremos “parametros.properties”

y luego le asignamos los valores que necesitemos trabajar, de la siguiente forma:

#Parametros de conexion
IP = 192.168.1.10
DB = bd_demo
USER = demox
PASSWORD = demox

Una vez realizado esto, lo que haremos sera crear un paquete con el nombre “mipaquete.clases” y creamos una clase java “leeParametros.java”, el cual usaremos para leer el archivo de propiedades, para eso lo trabajaremos con la clase ResourceBundle, el cual esta dentro del paquete java.util, de la siguiente manera.

 

Como podran darse cuenta en la variable “ARCHIVO_CONFIGURACION”, hago referencia a “mipaquete.propiedades” con el nombre del archivo de propiedades “parametros” (sin extension .properties) y luego comienzo a leer la valores que asigne anteriormente.

Esta es la menra mas comoda y facil de poder trabajar mis archivos de propiedades, como dije anteriormente quizas haya otra forma de hacerlo. Espero les sea de utilidad.

Problema serio con Vista

Revisando algunas noticias por internet me tope con esta que de alguna forma trae abajo todo el trabajo realizado por Microsoft. Resulta que dos investigadores (IBM y VMWare) han descubierto un problema serio en la arquitectura de Windows Vista la cual permite que cualquier hacker “Maligno” permita tener un control total de este con solo cargar un pagina de internet y lo peor que esto no puede ser corregido con un “parche” o actualización que regularmente Microsoft provee, se tendria que reestructurar la arquitectura para poder corregir esto y viendo que para esto no habria tiempo, mi pregunta es, ¿Seria el fin de Vista?. Imaginense que este bug sea utilizado para generar exploits o algun tipo de virus. Que opinan Uds.

PD: En este blog hay una explicacion en español.

Configurando Xplanner

Hace poco trabajando en mi tesis, me vi en la necesidad de utilizar alguna herramienta para poder plasmar el uso de la metodologia que estoy utilizando, me refiero a la metodologia XP (Programacion Extrema). Estuve buscando por la red y me tope con xplanner, que segun lo indicado en su pagina, es una herramienta diseñada especificamente para trabajar con este tipo de metodologias, llevandote un control de todo tu proyecto ya sea con iteraciones, historias de usuarios, etc. Esta hecha en JSP y trabaja con Tomcat, MySQL o PostgreSQL.

Configurarla quizas sea algo tedioso para lo que no conocen este tema, pero hay un paquete en el cual ya viene configurado todo por defecto y tan solo con ejecutar un script se estaria levantando el servicio, lo unico que tendrias que hacer seria crear un variable de entorno con el nombre JAVA_HOME e indicarle la ruta de tu jdk, OJO que yo estuve probando con el jdk6 y aparentemente se tiene alguno problemillas, cosa que no pasa con el jdk 5 o jdk 1.4.Una vez ejecutado el servicio lo unico tendriamos que hacer es cargar nuestro navegador favorito (en mi caso Firefox :)) y colocar la siguiente direccion: http://localhost:7070/ y listo, tedriamos ya la interfaz de logueo, el usuario seria sysadmin y el password admin
Ahora para poder utilizar otros gestores de base de datos, tendriamos que adaptarlo, segun la necesidad, en los archivos de configuracion, cosa que mostrare en el proximo post.

xplanner

Tutorial: Creando Webservices con Netbeans 6.1 – PostgreSQL y Tomcat

Otra vez por aqui retomando el hilo en la publicacion de pequeños articulos en el blog y mostrando alguna s  cosillas que fui aprendiendo en el transcurso de estos dias, decidi publicar una pequeña guia para la creacion y uso de webservices utilizando como herramienta de desarrollo Netbeans 6.1, como gestor de base de datos PostgreSQL y como Servidor de aplicaciones Tomcat. Para esto asumimos que ya tenemos instalado y configurado una base de datos con el nombre “bdwebservice” y una tabla llamada clientes el cual tendra como atributos el codigo y nombres, solo por motivos de didacticos.

Bueno, lo primero que tendriamos que generar seria el proyecto web, en este caso como se indica en la figura.

CrearProyecto

Una vez generado el proyecto y con el entorno listo para desarrollar, lo siguiente seria generar nuestro primer webservice, ojo que para eso necesitamos primero tener un paquete creado, para este caso cree un paquete con el nombre “mipaquete”, una vez hecho esto solo hacemos click derecho sobre el proyecto, elegimos “new” y luego “webservice”

CrearWebService

Llenamos todos lo requerimientos, elejimos el paquete y listo, nos quedaria de la siguiente forma.

CrearWebService_1

Como veran tenemos una interfaz el cual nos ayudara a crear los metodos segun sea la necesidad de cada uno, tando de forma grafica o si prefieres codificando. Generamos una operacion llamada “nombreCliente” para eso damos click en “Add Operation” y llenamos los requerimientos segun lo que necesitamos. Vemos que tenemos un parametro de salida que es el tipo “String” y un parametro de entrada que tambien es del tipo “String”.

CrearWebService_2

Una vez realizado este proceso, ya tendriamos nuestro webservice creado con una operacion (la que poco a poco se pueden ir agregando mas). Ahora solo nos quedaria ir dando forma a esto agregando codigo a nuestra operacion.

Como siguiente paso seria agregar codigo a nuestra operacion, como la operacion nos devolvera el nombre del cliente necesitariamos realizar una conexion a nuestra base de datos, para eso agregue una clase de conexion la que luego instanciare desde mi operacion, quedando algo como esto

CrearWebService_3

Una vez que terminamos de definir nuestro webservice con el codigo que necesitemos, lo que haremos ahora sera hacer un deploy al webservice, esto que implica?, esto se utiliza para generar ya el componente en nuestro de servidor de aplicaciones para poder utilizarlo desde otro aplicativo cliente. Para esto le damos click derecho a nuestro webservice y elejimos la opcion “undeploy and deploy” y con esto hecharemos andar nuestro servidor con el webservice ya “instalado” y listo para usarse.

Ahora creamos un nuevo proyecto web o desktop desde el cual usaremos nuestro webservice. Para mi caso probare con una aplicacion de consola, esto no implica que uds. haran lo mismo, tal vez lo podrian probar desde una aplicacion web.

Bueno, creamos el proyecto “Java Application” y luego agregamos una conexion cliente al webservice, dando click derecho al proyecto y elegimos “new” –> “Web Service Client”, de la siguiente forma

CrearWebService_4

Una vez realizado esto llenamos los requerimientos, elejimos la opcion WDSL URL y copiamos lo siguiente: “http://localhost:8084/ws_nombre/primerWebservice?wdsl” segun como se muestra y de esta manera estariamos generando la referencia al webservice.

CrearWebService_5

Lo que nos queda ahora seria llamarlo desde nuestro codigo, en este caso lo llamaremos desde el Main, para eso nos ubicamos alli y damos click derecho y nos ubicamos en la parte ultima del menu y tendremos lo siguiente:

Seleccionamos la opcion “Call Web Service Operation” y nos aparecera una ventana con la referencia al webservice creado y simplemente le damos OK y se nos generara el codigo para la llamada a este.

CrearWebService_7

Una vez hecho esto solo quedaria adecuarlo a lo que queremos y ejecutarlo.

CrearWebService_8

OJO que para que corra el aplicativo necesitamos agregar referencias a una librerias como se indica en la figura

CrearWebService_9

Y listo esto seria todo lo que tendriamos que hacer para poder trabajar de una manera simple con webservices. Alguna sugerencia o comentario seran bienvenidas.