Java

Apuntes de Java: Manejo de Excepciones

El manejo de excepciones es una de la características que mas robusto hace al lenguaje de programación java. Claro, que esto viene de su papá C++ y creo que actualmente también lo implementan lenguajes como Visual Basic.

Bueno, últimamente ando programando en java, c y c++, simultáneamente. Así que a veces se me cruzan los cables con ambos lenguajes. Lo que voy a postear ahora son errores que -creo yo- son comunes a la hora del manejo de excepciones, ya que cuando andaba programando, se me fueron esas nociones de las excepciones.

En realidad, tengo solo dos apuntes que hacer.

La primera: Tener cuidado con el NullPointerException y de como estas están programadas en la API del J2SE.

  • Como sabemos, la excepción NullPointerException es “tirada” cuando un objeto apunta a nulo (si queremos verlo desde el punto de vista de punteros de C).
  • Ahora, veamos un ejemplo de como funciona esto en el siguiente método.

Lee el resto del articulo »

Jugando con mi auto R/C

Desde chibolo siempre me han gustado los autos a control remoto, sin embargo, nunca tuve uno. En la navidad pasada, se me dio por comprarme uno simple en radioshack y me salió un poco mas de 50 soles con baterías y todo.

Estuvimos jugando con el carrito toda la noche buena yo y mi primo de 12 años xD. Al día siguiente, ya me había aburrido un poco, así que se me dio por desarmar el control remoto para ver el circuito =P. Y pues –como no se mucho de electrónica- entendí solo el 10% del circuito, lo cual fue suficiente para poder darme cuenta que el auto se movía con la presión de 2 pares de interruptores.

P1050290

Lee el resto del articulo »

Controlar puerto paralelo y puerto serie desde java

Controlar el puerto paralelo es bastante sencillo con algunas funciones que ya tienen predefinidos algunos compiladores de C++. Por ejemplo, turbo c++ trae outport() e inport() para acceder a diversas direcciones de puerto.

Lo que hice esta vez, fue simplemente linkear dichas funciones a java mediante el JNI (Java Native Interface). A continuación les adjuntaré el jar con la pequeña biblioteca que hice y también algunos ejemplos simples probados con un led, cualquier consulta ponerla aquí abajito =D.

Olvidaba algo importante para cuando el proyecto tenga mas de 1 clase y/o paquetes (sino no es necesario), que para que corran los programas sin ningún inconveniente se debe poner el método: Port.loadLibrary() en la primera línea del main de su programa (incluso pueden agregarlo en “agregar biblioteca” de netbeans) y claro poner los dlls visibles para los .class de su programa puedan encontrarlos. El dll que creé fue el Port.dll que esta en el jar y el otro es clbr18.dll que es propio del compilador que use que fue OpenWatcom. Claro todo esta en la carpeta “Examples” del rar que pondré aquí abajo =D.

NOTA: Otra opcion es poner los dlls Port.dll y clbr18.dll dentro de la carpeta bin de su JDK, que en mi caso es el siguiente: C:\Archivos de programa\Java\jdk1.6.0_16\bin. Aparte tambien hay muchas mas opciones para setear el java.library.path, solo estoy nombrando las -que a mi parecer- son mas comodas.

Libreria JAR + DLLs (para agregar a proyectos de Netbeans)

Libreria Jar+ Source Code + Ejemplos

Solo ejemplos

Encontrar la ruta del JDK

Encontrar la ruta del JDK es bastante simple. Solo tienen que ir al explorador de windows, archivos de programa, java, … mentira! es una broma xD. Bueno en el código también es bastante simple, solo que cuando lo empaquetas en un jar, en lugar de mostrarte la ruta del JDK te muestra la del JRE, lo cual yo no quería en el tiempo que hice esto, ya que necesita algunas herramientas del kit de desarrollo, como el compilador (javac).

Para solucionar este problema hice un pequeño método para que busque la ruta del jdk. Claro que no lo voy a hacer una búsqueda por todo el disco duro, sino que me basaré en el System.getProperty(“java.home”) y luego buscaré las diferentes versiones y actualizaciones, ya que por decir en mi pc tengo la siguiente version: jdk1.6.0_16 y bueno no es algo muy complicado, pero para mi me fue muy útil :D .

Aquí esta el código:

Lee el resto del articulo »

Creando un simple navegador Web Con Java

image Estos últimos días sin post’s me puse emocional y como quien no quiere la cosa me empecé a quejar de todo y casi todos XD …pero bueno… ayer en un día perfecto de clima y de ánimos me puse a retomar algo de la programación, y charlando con Clayder nos dimos cuenta que tenemos mucho material como para postearlo aquí, así que pues ahora empezaremos con algo tan simple y que se ve tan complejo como lo es crear un navegador web con java, cabe recordar que Java está bien posicionado entre la gente porque tiene una inmensidad de usos entre los que destaca el uso web, y algunos de sus controles en Swing se adaptan perfectamente a los requerimientos que se establezcan en el programa… es así, que en este caso usaremos la librería JavaNet y el control TextPane para hacer un simple y sencillo navegador java… Pero ya fuera de floro vamos con los procedimientos

Lee el resto del articulo »

JTwitter, Librería de Twitter para Java

twitterplusjava Hasta hace algún tiempo estuve experimentando una librería en una aplicación java que salió como un proyecto improvisado, pero como que no me convencía… era muy alrevesada y muy complicada (por el hecho de que te confundías fácilmente de nombres de clases, métodos y tipos) pero yo seguía dándole ahí, hasta que llegue a un estado del que ya no pude salir… y bueno… esa librería de la que les hablo se llama Twitter4J y la aplicación que hice, la bauticé Twill.

Quería hacerla a lo grande, pero creo que al final me ahogué en la sopa del código, era demasiado extensa, demasiadas funciones, demasiadas formas de verla, demasiado JavaDoc (Para la categoría de proyecto chico) y algunos métodos se superponían a otros entre otras cosas, aunque con esto no quiero decir que sea mala, sino que, era demasiado para mi proyecto que sólo hacía lo básico para un cliente Twitter (Mi aplicación) hecho por una sola persona.

Últimamente en mis navegadas a la nube, encontré otra herramienta mucho más flexible, y no tan extensa como la anterior, de la que creo que podría ser útil a aquellos que estén interesados en la API de twitter para cualquier fin, porque aparte, sólo encontré información directamente del fabricante (si buscas en Google encontrarás información de un cliente Twitter Para celulares, con el mismo nombre) y estuve deduciendo el Código en una versión mejorada de mi aplicación… Tiene funciones básicas e intermedias, el JavaDoc es sencillo y no hay tantas funciones que, dicho sea de paso, están demasiado bien nombradas… En este post voy a enseñar como implementar tal librería a cualquier aplicación vía NetBeans y a enseñarles algunos ejemplos de como pueden interactuar con su librería, pero pues, la posibilidad está abierta a extenderte y sacar tu propio cliente XD… Que creo.. también existe una versión para C++ y .NET (No las he probado…)

Lee el resto del articulo »

Manejo de motores pap bipolares: EM-257, EM-258

El manejo de motores paso a paso unipolares es bastante sencillo, sin embargo para mi que no ando metido mucho con el hardware, me costo un poco de trabajo entender esto. Como explique en un post anterior, solo hay q darle 4 pasos, y si se quiere invertir el giro, solo se tiene que invertir el orden de los pasos.

Los motores pap bipolares poseen 4 terminales y cada uno de ellos va conectado a una salida del C.I. L293B, como mostraré en la siguiente imagen que la copié de x-robotics, la única diferencia para el EM-257 es que el terminal B, va al OUT3 y el terminal C al OUT2:

Estos motores los voy a controlar mediante el puerto paralelo, el cual controla que salidas deben activarse para que el motor gire de forma horaria y anti-horaria, según se requieran. Como se menciono anteriormente un motor paso a paso posee ciertas combinaciones o pasos que determinaran el movimiento del motor, en nuestro caso, al usarse un motor paso a paso bipolar de 4 terminales, éste posee 4 pasos, los cuales se describirán a continuación:

Lee el resto del articulo »

Threads: wait() y notify()

Como ya todos sabemos los hilos se usan para poder dividir las tareas que va a realizar nuestra aplicación. Si le asignamos un hilo a cada tarea, vamos a poder ser capaces de manejarlos a nuestro antojo, a diferencia de que si lo agrupáramos en métodos o clases, ya que la clase Thread y la interfaz Runnable de java nos permite controlar aun mas a fondo cada tarea. Por ejemplo, si tengo una tarea dentro de mi programa, que en cierto momento necesita parar por un rato y esperar a q termine otra tarea para que siga; o simplemente quiero darle prioridades a las tareas o tal ves ejecutarlas todas al mismo tiempo. Pues para todo esto -y otras cosas que aun no me entero =P- están los hilos.

Duke_Thread

Poner un ejemplo de un programa que use hilos es bastante sencillo, así que ahora –y para no olvidarme- me centraré en los métodos wait() y notify() de la clase Object. Según lo que estuve leyendo, entendí que los métodos wait() y notify() son la contraparte de los métodos suspend() y resume() de la clase Thread, los cuales están deprecados por estas razones.

Lee el resto del articulo »

Queriendo hacer un brazo robótico (I)

Para demostrar lo que voy aprendiendo en mis cursos, a mí me gusta expresarlo en los proyectos. No soy de esas personas que se esmeren por sacar un 20 en un examen –aunque debería- ya que siento que un examen es como en el momento de patear penales, uno puede meter el gol como no, pero eso no significa que eres el mejor o el peor jugador, o en este caso, estudiante.

Esto trajo sus recompensas, sobre todo el ciclo pasado; ya que dos proyectos que anduve haciendo en vacaciones me salvaron la vida de dos cursos. Últimamente había dejado estos proyectos debido a razones ya expresadas en un post anterior. Sin embargo, hoy me dieron ganas de seguir y pues me puse manos a la obra y decidí ir posteando a ver cómo me va, esto también me servirá a no dejar el proyecto a medias, ya que tendré este post recordándome lo que aun me falta por hacer.

En fin, la meta es hacer un brazo robótico. La base del funcionamiento de este proyecto son los motores. Para este caso estoy siendo mas o menos un chatarrero, ya que me puse a desarmar impresoras y algunas lectoras de CD para sacarles sus motores, en este caso los motores que saqué son motores PAP (Paso a Paso). Se llaman motores PAP porque su funcionamiento esta dado por pasos, un paso vendría a ser una secuencia de 1’s y 0’s que se le da a los terminales del motor para que este funcione, estos pasos deben ir con cierto retardo a modo de pulso de reloj, por lo que si no se está usando la PC, he visto que también es válido usar el integrado TIMER 555.

Para mi caso usé la PC, más específicamente, el puerto paralelo de la PC. Desde ahí controlo el giro horario y anti horario del motor PAP, el cual estado dado por 4 pasos:

Paso 1 = 0101 = 5
Paso 2 = 1001 = 9
Paso 3 = 1001 = 10
Paso 4 = 0110 = 6

Los cuales son enviados en forma de bits desde el registro de datos del puerto paralelo (378H, en las pc’s compatibles). Para esto y para ahorrarme la fatiga, use C++ y Java, enlazándolos mediante el JNI y su biblioteca. En esta ocasión, les mostrare como estoy probando el motor de una lectora de cd’s que compre en takorita por 5 lukas xD. El motor que verán moviéndose lo usare para una parte del codo, ya que es pequeño, para el resto del robot usare motores de impresora como el siguiente:

Ahora, como ya dije, pondré el video del funcionamiento del motor de una lectora de CD’s. Ah! me olvidaba, para todo esto se tiene que usar el integrado L293B, que es un puente H, mejor dicho es un puente H de transistores o visto de otra forma, 4 compuertas de 3 estados. Bueno, aquí les dejo el video.

Y aqui otro video de cuando le puse cartones para ver como se movia xD…

Algunas herramientas para tener en cuenta al distribuir tu aplicación java

Desde que yo empecé a programar en java (en mi época de cole), me di cuenta que eso del doble clic no estaba hecho para java –al menos no para esa época. Además, yo venía de tener un paso fugaz por visual BASIC 6.0, en el cual solo llegue a hacer aplicaciones recontra simples y más que nada de copiar el código de un librito que me compré. Bueno, a lo que me refería con el doble clic es que para ejecutar los programas java, uno tenía que irse al CMD (y no lo hacía por deporte u_U) y ejecutar el compilador y luego el interprete de java, los cuales anteriormente había q setear respectivamente modificando el archivo autoexec.bat (que creo que solo vino hasta Windows 98)

Luego llego mi época de universidad, en la cual felizmente ya disponía de internet en casa, lo cual me permitía encontrar mucha información. En fin, aquí sigue mas blah, blah, blah y esas cosas, pero antes de ir con el desarrollo del tema tengo que resaltar que en esa época el examen para JSCP (Java Sun Certified Programmer) costaba US$ 100.00, el cual ahora cuesta US$ 300.00 T_T.

En esa época me, yo ya me había dado cuenta que los ejecutables de java eran los jar, pero había gente que no lo sabía y que creía que para cada programa le correspondía un instalador y un ejecutable (exe). La verdad lo que quería hacer era un msn falso, en el cual se pudieran quedar grabadas las contraseñas de los que entraran a mi pc y pues bueno, no lo iba a hacer diciéndoles que ejecuten el jar =P. A esto encontré el primer programa que me ayudaría con esto, su nombre es Launch4j.

Launch4j es una herramienta lo que hace es coger tu archivo jar con las XYZ librerías más que tengas y los convierte a un .exe para Windows, claro que las librerías no las empacara en el mismo exe, por lo que si usas bastantes librerías y archivos adicionales pues debes guardarlo en una carpeta para luego dársela al usuario final. Ahora como decía, si tienes bastantes archivos que empaquetar, pues solo te queda la opción de hacer un instalador. En java hay bastantes de estos; sin embargo, para Windows yo use el Inno Setup, el cual te ayuda con este dilema. Finalmente ya tienes tu aplicación lista para repartirla a esos usuarios espesos que no saben ejecutar un jar mediante línea de comandos =P.

No explico cómo funcionan estas herramientas, ya que son bastante fáciles de usar, solo es cosa de usar tu intuición informática, sino vean estos screenshots.

Launch4j

Inno Setup

Apuesto a que no tendrán complicaciones para usarlos =D.

Hasta el próximo post, que espero sea muy pronto u_U.

Conectar aplicación Java a una BD

java-logo

En mis últimas vacaciones estuve experimentando mucho con Java y sus múltiples facetas (o al menos las que debería conocer ya) a las que se aplica en la informática, desde las simples aplicaciones por Consola, los GUI’s y las aplicaciones Web con Servlets y JSP’s. Sin embargo llegue un punto que me me costó aprenderlo bien por la semántica de su uso, y es la interacción que tiene Java con las bases de Datos, mediante el Paquete Java.SQL pero al final comprendí que es muy fácil y muy útil, sobre todo si quieres que tu aplicación (sea Web o Desktop) maneje inmensas cantidades de datos que no se soportan en un fichero de texto, o que simplemente quieres que sean mejor administrados por un manejador de BD (cualquiera), pero bueno, eso ya se tendría que ver en la planificación del proyecto.

Ahora (saliendo del floro) enseñaré como es que una aplicación Java En Desktop puede conectarse a una Base de Datos Que Tengo en MySQL (para mí, el mejor manejador de BD por su simplicidad) en una simple aplicación con NetBeans donde sólo usaré una base de datos con una Tabla y 5 Datos de ejemplo que sólo se pueden mostrar (si te quieres expandir, puedes hacer que los modifique o elimine, pero prácticamente es el mismo proceso).

Lee el resto del articulo »

Calculadora básica en Java

Quiero compartir un básico proyecto en Java, que en mis vacaciones usé de instrumento de docencia para enseñarle a algunos amigos lo que sé de Java… y bueno, consiste en un JFrame que hace de calculadora usando sólo los eventos ActionPerformed de los botones, y el resto es sólo decorado usando NetBeans, espero que les sirva a los que se les hace complicada la teoría básica de este lenguaje de programación…

image 
En el RAR está contenido el proyecto en Netbeans (disculpen el estilo estructurado con que está el código) y el archivo JAR autoejecutable!… luego veré si expando eso para hacerla científica XD

DESCARGA AQUÍ

S.O.S: Ayuda Informática

Dentro de la universidad en la que estudio actualmente (Universidad Nacional de Trujillo), yo soy un alumno promedio (an average student) y pues como antes estudié en la UPAO (Universidad Privada Antenor Orrego) -donde me metieron Java hasta por las orejas- domino un poco más ese lenguaje de programación. Bueno, lo que sucede es que la vez pasada me pidieron ayuda para un proyecto de un curso que llevamos en la UNT. Para mi ayudar es algo placentero pues me hace sentir importante, así que por mi gustoso, PERO, esa personita que me pidió la ayuda lo hizo de una forma tan pero tan “…” que un poco mas y me obligaba a ayudarle y ni un “por favor” escuché. Esto me llego altamente, así que le dije que no podía hacerlo. O sea ¿qué tan difícil puede ser pronunciar la palabra “por favor“?

linterna

Por otro lado, antes de eso, ya me habían pedido ayuda, pero esa persona me lo pidió de una manera tan dulce, que no podía negarme. Me dijo por favor y prometió invitarme un lomito saltado (plato típico peruano), bueno yo no soy de comer en la calle, pero la intención es la que cuenta, por lo que con mucho gusto la ayude :D .

Quizás este post no tiene nada que ver con los anteriores que solo publicaba sobre código, algoritmos y otras cosas. Sin embargo, esta personita me saco de mis casillas, a tal punto que me dieron ganas de escribir este post.

Además, nunca esta demás un “por favor”, no?