javaDB embebido en archivo jar ejecutable

Hace tiempo atrás revisando en que diferían JavaSE 5 y JavaSE 6, observe que el jsdk de la versión 6 incluía javaDB y me asombro el saber que Java traia consigo su propio gestor de base de datos, así que desde entonces tenia el gusanillo de trastear con el mencionado gestor y Java.

Para quien no lo sepa aun javaDB es el mismo apache Derby, un gestor de base de datos relacional «ligero» 100% Java (tiene un tamaño de 2MB).

He aquí mi primer encuentro con javaDB.

El entorno es Mac OS X snow leopard con la ultima versión de java (1.6.0_22) distribuida para este entorno de parte de Apple y como IDE Eclipse. Mi primera decepción fue el darme cuenta que la versión del jsdk distribuido por parte de Apple no trae consigo javaDB asi que procedí a descargarlo desde este enlace, por otro lado es agradable mencionar que el archivo a descargar es en formato .dmg, una vez ya relatada mi primera decepción (esperaba que mi jsdk fuera igual de completo que cualquier otro distribuido de parte de Oracle para los entornos Linux o Windows), procederé a explicarles como obtener un Jar  que traiga consigo javaDB y fuese un ejecutable a mi modo de verlo fácilmente distribuible.

Como mi idea principal consistía en probar javaDB, procedi a buscar un ejemplo en la red, lo bueno es que encontré uno casi perfecto, que cumplía casi a la perfección todo lo que quería, consiste en el ejemplo del libro de direcciones (AddressBook). Antes de continuar será necesario que descarguemos el código fuente del ejemplo y aquellos que hagan uso de un IDE importemos el código fuente en un proyecto (ver figura)

Una vez importado el código, podemos detallar que nuestro proyecto tendra una carpeta «lib» allí estará un jar de nombre derby.jar, que no es mas que nuestro javaDB en una versión vieja (si prestan atención el ejemplo data del 2006), si quisiéramos trabajar con una versión mas nueva pues sencillamente copiaríamos al proyecto el  derby.jar ubicado en la carpeta de instalación de javaDB,  además también podemos notar que el proyecto también contará con un build.xml (para quien no conozca Ant, ir al menu Windows->show view y seleccionar la vista de Ant, una vez se muestra la vista arrastrar el archivo build.xml a la vista). En la vista de Ant ejecutar la tarea «dist», la cual es la tarea por defecto. Una vez ejecutada la tarea procedemos a refrescar el proyecto (F5) y veremos que se nos ha creado una carpeta de nombre «dist» que contendrá a su vez una carpeta «lib» con la dependencia (que no es mas que nuestro derby.jar) y un fichero de nombre AddressBook.jar  que será un jar ejecutable. Si hacemos doble click sobre este fichero o sencillamente ejecutamos la tarea «run» de Ant, y podremos ver como se ejecuta nuestra aplicación y como podemos guardar, editar y eliminar registros, sencillamente fabuloso.

Pero ustedes se preguntarán ¿Si es tan fabuloso por qué no lo definí como perfecto? y la razón es la siguiente, si copiamos ese archivo ejecutable AddressBook.jar, lo pegamos por ejemplo en nuestro escrito y procedemos a ejecutarlo, se darán cuenta que no es del todo distribuible, ya que para que se ejecute perfectamente sería necesario haber copiado y pegado la carpeta «lib» con su respectivo derby.jar. A mi modo de ver las cosas no es muy elegante distribuir un «supuesto» jar ejecutable y a su vez hacerlo con una carpeta aparte con sus respectivas dependencias, incluso el embebido lo pondría en entre dicho porque nuestra aplicación no es autocontenida, es decir la aplicación por si sola no tiene todo lo que requiere (excluyendo la JVM de esos requerimientos). Así que me puse a investigar el tener todo en 1, es decir que fuese un único jar ejecutable.

El problema esta en que un jar (asumamos AddressBook.jar) al ejecutarse, por defecto no puede cargar las clases contenidas en otro jar  (asumamos derby.jar) que este dentro del primero, es decir aunque agregásemos nuestra carpeta «lib» con el derby.jar dentro de AddressBook.jar no podríamos ejecutar la aplicación ubicada en nuestro escritorio (o en cualquier otro lugar donde lo hayamos pegado), aquí les dejo un enlace del tutorial donde se menciona. ¿Que alternativa tendríamos?  una de ellas seria usar Java Web Start para la instalación y otra hacer nosotros mismos nuestro propio ClassLoader a medida, esta opción me tentó, incluso quede con el gusanillo de investigar al respecto, pero buscando por la red encontré una buena herramienta, además de no ser la única en su clase y en el one-jar, el cual consiste en un proyecto para crear un único jar ejecutable y traiga consigo (dentro) todas sus dependencias (jars).

Existen varias opciones para crear el ejecutable, mediante tarea Maven, tarea Ant e incluso por linea de comandos, he optado por la última, la cual es muy sencilla y detallo a continuación los pasos:

  1. Descargar el archivo one-jar-boot-0.97.jar
  2. Crear un directorio «root» que contenga a su vez 2 directorios mas llamados «main» y «lib».
  3. Copiar el archivo AddressBook.jar (nuestro jar ejecutable obtenido mediante Ant) dentro de la carpeta «root/main» y copiar el derby.jar en el directorio «root/lib».
  4. Descomprimir el archivo one-jar-boot-0.97.jar en el directorio «root» y eliminar la carpeta «src» donde están ubicados los fuentes del archivo recien descomprimido.
  5. Editar el archivo boot-manifest.mf y añadir una nueva linea. One-Jar-Main-Class:   com.sun.demo.addressbook.AddressFrame
  6. En linea de comandos ubicarnos en el directorio «root». >cd root
  7. En  linea de comandos >jar cvfm ../ejecutable.jar boot-manifest.mf . (no omitir el ultimo punto «.»)

Finalmente hemos obtenido nuestro ejecutable.jar, es decir una aplicación de escritorio que tiene embebido un gestor de base de datos ligero, plena y elegantemente distribuible.

Espero les sea de utilidad y cualquier duda y/o sugerencia será bien recibida.

Material de estudio para la Oracle Certified Professional Java Programmer

Esta certificación antiguamente antes de la adquisición de SUN de parte de Oracle era llamada Sun Certified Java Programmer (SCJP), ahora el motivo de este post es compartir con ustedes el material con el cual considero es justo y suficiente para aprobar el examen de Oracle Certified Professional Java Programmer.

Comenzare con par de libros (listados abajo) cuya autora la considero de las mejores, ya que no solo se basa es presentarnos muy buenos ejemplos sino que a su vez explota los canales visuales y emocionales para el aprendizaje. Ella es Kathy Sierra. Además ella tambien ha creado una de las comunidades mas importante llamada javaranch, donde podras encontrar un inmenso foro que trata no solo de dudas acerca de certificaciones sino de programación en general, entre otras cosas, podras alli hallar enlaces a mas material recomendado por los foristas, asi como fe de erratas de los libros, libros review etc… muchas de las preguntas que ya te has hecho te asuguro que estan alli con sus respectivas respuestas.

Por otro lado si posees cuenta twitter (y si no, no dudes en crearte una rapidamente) no pierdas tiempo y conviertete en seguidor de la cuenta de Whizlabs, que diaramente nos ofreceran una pregunta tipo examen con su respectiva respuesta.

Por ultimo nunca pero nunca dejes de acudir a la Java API y de revisar el tutorial java. Con esto y un poco de esfuerzo de tu parte estoy seguro que lograras certificarte asi que te deseo Mucho exito!!!

Aquellos que ya se han certificado que nos recomendarias.

Certificaciones

Comienzo esta nueva categoría dedicada a las certificaciones, por unas simples razones, adentrarlos en el mundo de las certificaciones y segundo y mas importante, darles mi punto de visto de lo verdaderamente importante de presentar certificaciones (java, xml, .net, etc…).

No a todo el mundo le interesa el tema de obtener certificaciones por un sin fin de razones de las cuales no voy a hablar, pero en cambio yo si estoy de acuerdo y les detallare mis razones a continuación:

  1. En un mundo tan competitivo como el de ahora, el tener una certificación puede verse a nivel profesional como una acreditación de un organismo (en tal caso de importancia) que avalaría a nivel físico lo que dice tu curriculum (que en dado caso debería decirlo) y quizás esa acreditación puede ser la que en un momento dado, como por ejemplo, un proceso de selección puede hacer que la balanza se vaya de tu lado y seas uno de los seleccionados.
  2. Si eres autodidacta y no te importa mucho la presión que puede ejercer en ti realizar una prueba de este tipo, esta puede ser una forma de aliciente para  mantenerte actualizado en cuanto a nuevas tecnologías, tendencias, etc…
  3. LA MAS IMPORTANTE, lo mucho que se aprende en el camino a obtener la certificación, es aquí donde yo creo que esta la verdadera magia de las certificaciones, ya que apruebes o no, te quedara algo intangible pero de mucho valor que son los conocimientos.

Ya se puede ver en portales de empleo, como muchas ofertas laborales incluyen como requisitos deseados o restrictivos, el poseer una certificación en especial. Incluso las empresas desde hace un tiempo para mejorar a su vez su competitividad y calidad, ofrecen cursos de formación e incluso los voucher de certificación para sus empleados y no es algo descabellado ya que si un empleado mejora su calidad o técnica, esto a su vez repercute en la empresa ya que él directa o indirectamente la esta representando de cara al cliente.

A continuación les recomiendo algunas certificaciones que a mi me llaman la atención:

Además de estas podría recomendarle cualquiera del idioma ingles, como por ejemplo TOEFL, ya que algunas universidades tanto americanas como británicas acostumbran a usarla como requisito de ingreso en el caso de que el ingles no sea tu lengua materna.

CONCLUSIÓN: Las certificaciones no son solo para poner a prueba tus conocimientos, sino que la meta fundamental es aprender, además que podrían a nivel laboral brindarte beneficios como pueden ser una mejora en tu técnica o estilo de programación, mejora salarial, ayudarte a conseguir tu primer o un mejor trabajo, y si en dado caso tu empresa no puede (o quiere) subsidiarte el examen, pues te invito que incluso te lo pagues tu mismo, incluso hay épocas del año donde ofrecen descuentos cuando los voucher están a unos 6 meses de caducar y sencillamente piensa que estas invirtiendo a futuro, así que si estas interesado no lo dudes y empieza a estudiar!!!!.

¿Añadirías a esta lista alguna otra certificación? Por ejemplo alguna de microsoft, estas no las he detallado debido a que mi carrera la he orientado hacia Java y no .NET.

12 aplicaciones que te recomiendo si acabas de adquirir un iphone

Acabas de comprarte un iphone (3G, 3GS o 4) o te lo han regalado y estas entusiasmado y no aguantas las ganas de poder trastear con el e instalar una de las tantas aplicaciones que te han comentado tus colegas, entonces te preguntas ¿De todo ese mar de aplicaciones por cual empezar? Bueno de ser este el caso, estas de suerte, te voy a recomendar unas cuantas aplicaciones con las cuales ya puedes empezar a sacarle provecho a tu nuevo móvil y utilizarlo en tu día día, incluso en cosas que no te has imaginado o por el contrario, te darán pie a darle nuevas utilidades. He aquí la lista:

  1. WhatsApp Messenger: Una extraordinaria aplicación de mensajería que esta presente en varias plataformas (Blackberry, iOS, Android). Cansado de gastar dinero enviando SMS’s, esta es tu solución; sirve incluso para intercambiar mensajes con personas en otros países y lo único que necesitaras es tener conexión a Internet, además es gratuita!!!. En ocasiones de promoción, es gratuita, pero por lo general de pago (0.79€)
  2. Twitter: Cliente twitter, facil de usar, descargala y en segundos ya podrás  enviar tus tweets, marcar tus favoritos, etc… Es gratuita.
  3. Facebook: Te gusta estar online en tu perfil facebook, esta aplicación es para ti, te permite, publicar mensajes en tu muro y el de tus amig@s, enviar mensajes, chat, publicar fotos, etc… Es gratuita.
  4. IM+, eBuddy: Te gusta chatear y estar online. Con cualquiera de estas dos aplicaciones puedes concentrar en todos tus chat (messenger) en uno solo, facebook, msn, yahoo, gtalk. Existen para ambas una versión gratuita y otra de pago. Además no son las únicas, existen mas (gratis y de pago).
  5. IMDB: Ahora puedes ver desde cualquier lugar la valoración, criticas, actores, etc… de todas las películas. La mas importante Base de Datos de películas por internet también en tu iphone. Te gusta alquilar películas o ir al cine, no dejes de descargarla. Es gratuita.
  6. Skype: Quien no ha oído hablar de skype?, sea o no tu caso descargala y empieza a hablar con tus amig@s en cualquier lugar del mundo, muy sencilla. Además de skype existen versiones similares con videoconferencia, entre ellas están Tango, Viper.
  7. Shazam: De seguro al menos una vez en la vida te habrá pasado que escuchas una canción que te fascina y no has logrado escuchar quien la canta o el nombre de la canción, si tienes tu iphone a mano, esto no te pasara más, solo pulsa tag y te dirá album, nombre de la canción, video en youtube e incluso un link a itunes para que no pierdas tiempo y la descargues.
  8. iBook, kindle: Aficionado a la lectura, con iBook podrás leer los pdf o ebooks que quieras tan solo agregandolos a tu biblioteca, podrás añadirle notas, resaltar y marcar paginas. Además esta kindle la aplicación de uno de los grandes distribuidores de libros (entre otros) del mundo Amazon, tendrás a la mano una gran variedad de libros en formato electrónico, donde además de compartir las características de iBook, podrás disfrutar de los libros que adquieras en cualquier otro dispositivo, sea un ipad, un pc o un Mac, dale un vistazo te la recomiendo. Ambas son gratis.
  9. Google Mobile App: El grande de las búsquedas no podía quedarse fuera, has búsquedas por voz, fotos, traduce, etc… Es gratis.
  10. Angry birds, Cut the rope, Lux touch: Tres fantasticos juegos que te darán mucha diversión. No te arrepentirás, se uno mas de los miles que nos hemos enganchado. (Versiones gratuitas y de pago).
  11. Nike+GPS, RunKeeper: Si te gusta salir a correr, andar en bici, entrenar,  llevar tus registros e incluso visualizar el ritmo a lo largo del trayecto, descargalas ya!!! valen la pena (Nike+GPS es de pago y RunKeeper viene en versión gratuita y de pago).
  12. Evernote: Toma nota de lo que quieras, cuando y desde donde quieras, esta herramienta posee clientes para Mac OS, Windows, iOS, etc.. anota lo que quieras, mantén todo sincronizado en la nube, descargala y si puedes ve al sitio web de la aplicación y ve el video inicial de ayuda, inmediatamente empezaras a verle mucha utilidad, no se te volverá a olvidar nada de la lista de compras. Es gratis.

Estas son mis 12 aplicaciones que te recomiendo, pero he agregado una mas por si acaso llegas a tener la oportunidad de verla en la App Store.

  • VLC Media Player: Podrás visualizar los videos que esten en un formato que no sea soportado en Quicktime. (Era gratis, retirada de la App store, si la aceptan de nuevo no dudes en descargarla).

Bueno chic@s espero que disfruten de su nuevo juguete y le saquen el máximo provecho, quizás no tod@s coincidamos en cuanto a gustos de las aplicaciones pero he intentado abarcar de todo un poco (juegos, deporte, productividad, estudio, etc..). Tu que ya has empezado a jugar con tu iphone que otras aplicaciones nos recomendarías?