Un programa de chat escrito en Java: JIRC
Este es probablemente el primer programita "serio" que desarrollé siguiendo una filosofía de orientación a objetos y mi primer encuentro con los RFCs. Te cuento un poco sobre la historia de este software:
Desde hace tiempo quería desarrollar algunas aplicaciones que debian comunicarse entre si, y observé que una buena opción podría ser realizar la comunicación utilizando el Internet Relay Chat (IRC). Para ello necesitaría que mis programas pudieran conectarse a un servidor de IRC y pudieran mandar / recibir mensajes. Como no encontré por ningún sitio ninguna biblioteca que permitiera de manera evidente realizar este tipo de conexiones y comunicaciones decidí desarrollar yo mismo una que me ayudara a lograr mis objetivos. Hice una primera tentativa, pero conforme la biblioteca crecia, más problemas surgian. En general todos esos problemas aparecieron por una mala planificación inicial (soy informático, y lo primero que te dicen es que antes de escribir código planifiques lo que tienes que hacer... obviamente no hice y caso y así me fué).
Meses después decididí retomar el proyecto empezando desde cero. Y la cosa fué bien. Todo mucho más organizado y claro. Por fin completé una primera versión de programa que permite una comunicación básica.
Para la gente que tenga interés, pueden consultar el RFC 1459 que es donde se especifica realmente el estandard del IRC (y que puede ser útil leerse, porque se comprenden muchos conceptos que podían estar confusos incluso en usuarios expertos de IRC). Por supuesto no es necesario conocer este documento para manejar el JIRC, estaría bueno.
Y como ya está listo esto para empezar a ser probado por el gran público hago esta página, donde pondré todo lo necesario para que cualquiera pueda probar el programa.
Instrucciones de instalación
Debido a que estoy programando en Java, para poder ejecutar el programa necesitas tener el Entorno de Ejecución de Java instalado. ¿Que cualo?. Muy fácil. Al igual que los juegos necesitan los drivers DirectX, todo programa en Java necesita unos "drivers" especiales. Quizás tu máquina ya los tenga instalados, quizás no... Quizás la versión instalada sea antigua, quizás reciente. Si eres usuario de Wasura puedes ver si está instalado en el Panel de Control (si estuviera instalado habria un iconito que diría algo de Java). En todo caso, en la siguiente página oficial de Java puedes descargarlo o encontrar instrucciones al respecto. Después de instalarlo (no debería darte muchos problemas) ya podrás ejecutar cualquier programa basado en Java, incluido, por supuesto, nuestro fantastico JIRC. :-P
Por último solo tienes que bajarte el fichero ejecutable (que es el JIRC en sí), descomprimirlo usando winzip o algo similar en un directorio a tu antojo y hacer doble click sobre el fichero IRC Client v0.95.jar. Y si todo ha ido bien, el programa arrancará, y ya puedes ponerte a chatear.
Otras descargas relacionadas
También tienes disponible, por si lo quieres utilizar:
Lo que SI hace el JIRC
Esta nueva versión mejora bastante a su predecesora. Todavia no hemos llegado a la versión 1.0 porque existen ciertas cosas más o menos fundamentales que faltan (y ahora mismo pienso que nunca llegaremos). Sin embargo aqui te enumero las cosas que SI hace y que no se habian implementado en la versión anterior. Cualquier otra cosa seguramente aún no la he programado.
- Los topics funcionan siempre.
- Ventana de Conexión Mejorada.
- Existe una nueva ventana de opciones.
- Se han añadido múltiples botoncillos para facilitar el uso de ciertos comandos (JOIN, NICK, TOPIC, etc. etc).
- Se han arreglado ciertos temas de la conexión (sobretodo la desconexión se hace de manera más "limpia").
- Se pueden cambiar los modos del canal (y se muestran de manera correcta).
- Se pueden dar +v y +o a los usuarios.
- Se listan los usuarios y sus privilegios en los canales.
- Prevenimos dos joins seguidos al mismo canal.
- Los mensajes aparecen coloreados (y podemos cambiar los colores de los distintos tipos de mensajes).
- Se pueden hacer privados (yuju!).
- Tenemos una pantalla de presentación que es un lujo.
- Ya no aparecen todos los mensajes en la ventana de estado, solo los que nos convienen.
- Se han arreglado las barras de desplazamiento en las ventanas para que sean más comodas (se paralice el texto cuando no está abajo, etc.).
Lo que NO hace el JIRC
Esta es una pequeña lista de cosas que aún NO hace y que puede que eches en falta:
- No se controla el baneo de la gente del canal, asi como los kicks.
- Ni de coña funciona el DCC.
- Al hacer un "/LIST" no aparece una ventanita de canales, lo cual es bastante incómodo. Otra cosa más a hacer. (Sugerencia enviada por Guillebaires).
Bugs conocidos, de próxima resolución
- Por ahora no hay bugs :-)
Versiones anteriores
0.9b
Lo que SI hace el JIRC
Hay que tener en cuenta que esta es una versión muy muy temprana del programa, y como tal está muy limitado. Aqui te enumero las cosas que SI hace. Cualquier otra cosa seguramente aún no la he implementado.
- Permite conectarse y desconectarse de servidores de IRC.
- Tiene una ventana de estado donde en principio aparecen TODOS los mensajes que son enviados por el servidor de IRC.
- Responde a los PINGs automáticamente (transparente al usuario).
- Controla que te cambies de NICK (p. ej: "/NICK Pepillo").
- Controla que entres en canales (p. ej: "/JOIN #Florero").
- Controla que salgas de canales (p. ej: "/PART #Florero").
- Controla cambios de TOPICs en canales en los que estás (p.ej: "/TOPIC #Florero :Bienvenido al florero").
- Tiene una pantalla de "Acerca de..." muy maja donde puede aparecer tu nombre si colaboras testeando el programa.
- Permite mandar y recibir mensajes básicos (/PRIVMSG) a distintos canales.
- Permite mandar cualquier comando, aunque no esté directamente implementado, siempre y cuando lo envies con el formato que exige el RFC 1459 (p. ej: "/MODE #Florero +o Zerjillo".
- Lo que NO hace el JIRC:
Esta es na pequeña lista de cosas que aún NO hace y seguro que echas en falta:
- En los canales no se controla quien esta dentro y fuera (la famosa lista de nicks de la derecha). Esto será de lo primero que implemente.
- No hay mensajes privados por ahora.
- Ni de coña funciona el DCC.
- No se pueden cambiar los modos de usuario ni canal de manera "gráfica", aunque a base de comandos si es posible. Y por supuesto tampoco se conocen a "simple" vista dichos modos.
- Al hacer un "/LIST" no aparece una ventanita de canales, lo cual es bastante incómodo. Otra cosa más a hacer. (Sugerencia enviada por Guillebaires).
Bugs conocidos, de próxima resolución
- Pese a que se controlan los cambios de TOPIC, al entrar en un canal no se conoce el topic hasta que alguien lo cambia (que feo ¿no?).
- Al salir del programa no se manda un mensaje explicito de QUIT.
- Cuando se quiere mandar un comando habria que comprobar si existe uno o mas espacios antes de la "/". (Bug descubierto por Canijillo).
- Salen muchos mensajes que no deberían en la ventana de estado (esto yo ya lo sabía, pero obviamente hay que cambiarlo). (Bug by saphojuice).
- En ocasiones (probablemente en servidores de IRC Hispano) el programa no sabe bien cual es tu nick y se arma la picha un lio. (Bug by saphojuice).
- La barra de desplazamiento en los textos de canales y estado es un coñazo. (Bug by saphojuice).
- No se puede seleccionar texto en la ventana de estado. (Bug by saphojuice).
- Al desconectar con /QUIT no funcionan bien las cosas. (Bug by saphojuice).
- Parece que alguna vez se ha duplicado alguna ventana de canal. ?¿?¿? (Bug by saphojuice).
Descargas de la versión 0.9b
¡Muchas gracias por usar mi programa y / o ser mi beta tester!.