SCJP 1.5 aprobado con un pírrico 70%, pero aprobado al fin

Probablemente los SCJPs entre el público piensen «pues vaya nota», «tampoco es para sacar pecho publicándola», etc. Y tienen razón. Para aprobar el SCJP es necesario sacar al menos un 59%, y con un 70% uno está más que aprobado. Con lo que una buena nota sería del 80% para arriba. Pero considerando mi situación actual:

  • con dos niños de menos de 3 años el mayor. Vamos, que no duermo mucho.
  • viviendo a 120 Km del lugar de trabajo (3 h. de desplazamientos diarios, para que luego digan que la juventud no queremos trabajar 🙂 )
  • con unos años ya, ¡que la costumbre de estudiar se pierde!
  • con el nuevo rol que desempeño en Isotrol de Service Manager, que me exige un 120% de dedicación.

estoy feliz de haber cumplido, como me exigía a mi mismo en éste post.

Y al final lo que cuenta es, al final, tenerlo o no. Y ya lo tengo. Algo más tarde de lo que comentaba en un post pasado, pero al final lo que bien acaba…

Para prepararlo, he seguido todo lo que comentaba en éste post, pero además he añadido los test de preparación de Enthuware, tests que recomiendo encarecidamente (no me llevo comisión) ya que imitan a la perfección el entorno que después te encuentras en el examen. Y el coste es de risa, comparado con lo que te ayudan a estudiar.

Durante la certificación he generado mucho, pero que mucho código fuente de ejemplo. No estaría mal subirlo por aquí cuando tenga un rato.

Y ahora, a preparar el SCBCD, Sun Certified Business Component Developer, el de los EJBs… y el Service Manager de ITIL… a la vez… y en Navidades… si es que…

j j j

Fecha para el SCJP

Ya comenté en entradas anteriores que quería sacarme el SCJP, y con qué armas estaba afrontando el lance. Pero el tiempo pasa, y no hay examen a la vista. Por eso, hoy me he comprometido con un compañero a presentarnos ambos el 1 de Septiembre. Con una fecha límite todo es más sencillo.

<

p align=»justify»>Ahora hay que mantener la machada.

j j j

Herramientas que estoy usando para conseguir el SCJP

Se podría pensar que para superar el SCJP, que a fin de cuentas no es más que un examen, bastaría con disponer de papel, lápiz, neuronas y cafeína en abundancia. Sin más misterios, lo más importante es estudiar, con todo lo que conlleva: entender, comprender, aprehender, memorizar, practicar…
Pero lo cierto es que estoy usando algunas otras herramientas, bien en la forma de libros, o de programas, que me están ayudando a conseguir alguno de los anteriores objetivos.

Libros

– en primer lugar me estoy leyendo los libros oficiales de Sun, correspondientes a los cursos SL-110: Fundamentals of the Java Programming Language, y SL-275 El lenguaje de programación Java. Estos libros, que en apariencia son muy sencillos y hasta inocentes, hacen hincapié en temas muy sensibles para la certificación. Por ejemplo, se deja caer que los Strings en Java son inmutables. Esta afirmación encierra mucho dolor si no se entiende, ya que el funcionamiento de los literales String y de la clase String es fundamental, tanto para programar con Java como para superar el SCJP.
– tras estos libros voy a pasar a leerme el libro de Kathy Sierra y Bert Bates, SCJP Sun Certified Programmer for Java 5 Study Guide. De momento lo he hojeado y tiene muy buena pinta, pero nada más.

– hoy he realizado la reserva de SCJP Sun Certified Programmer for Java 5 Practice Exams, para hacer exámenes por un tubo una vez acabemos con la teoría.

Un grupo de estudio

En Isotrol hay actualmente varias personas preparándose para obtener el SCJP. Pocas cosas motivan más a la hora de estudiar que hacerlo en grupo. Al compartir experiencias, uno pone el foco en algo que a los demás les ha pasado desapercibido, otro ha descubierto una web que merece la pena, un tercero dispone de unos apuntes o ejemplos geniales… La idea es disponer de una lista de correo, una página en la Wiki de Isotrol y tener reuniones periódicas para hablar de Java.

Programas

Por supuesto. Además del JDK y el vi, algo más vendría bién.

En primer lugar, para tomar apuntes, FreeMind es ideal. Una vez se acostumbra uno de nuevo a hacer esquemas, no puedes pasar sin él. Algunos ejemplos de los mapas, exportados a swf están en: apuntes SCJP
Por otro lado, el entorno Eclipse, para mi el único entorno para programar en Java (aunque NetBeans tampoco está mal)

Aunque no exactamente un programa (a fin de cuentas es un servicio), los Blocks de Notas de Google me ayudan a no olvidar enlaces interesantes para posterior lectura. Aquí tienes un enlace a mi block de notas de SCJP, oficialmente declarado zona de desastre.

Moodle. Además de ser una plataforma de e-learning, Moodle permite generar exámenes con preguntas aleatorias. Perfecto para ir apuntando cosas y luego repasarlas de forma divertida. Pronto dispondré de un Moodle operativo en freniche.com, con preguntas del SCJP. Por supuesto, será libre de usar, como el resto de la web.

Mi iPaq HW6915

Esta es mi gran baza para aprovechar el tiempo en el tren, en la espera de los desayunos, en cualquier sitio. Su capacidad de leer el correo, documentos en formato HTML / PDF / DOC y poder navegar por Internet le hacen el compañero ideal para estudiar arañando minutos al día.

j j j

Preparando el SCJP

Pues eso, que anuncio oficialmente 🙂 que estoy metido de lleno para prepararme el examen de Sun Certified Java Programmer, v5.0.

Después de varios años manejando Java y de un montón de cursos impartidos, tanto del Lenguaje Java como de J2EE (Servlets, JSP) y productos como Struts o Hibernate, creo que es hora de sentarme a estudiar de nuevo, consolidar los conocimientos, hacerme con un par de certificados y avanzar hacia nuevas tierras, probablemente Spring.

Realmente tengo la obligación de hacerme con el SCJP y con el SCBCD. Me explico. Desde Septiembre del año pasado (2007) estuve haciendo un curso a distancia (que acabó el pasado 14 de Diciembre) y que, si lo aprobaba, me permitia disponer de los vouchers para hacer ambos exámenes. Y ahora que tengo "pagados" los exámenes, esto hay que aprovecharlo.

Como tengo que estudiar voy a aprovechar para ir recopilando lo que encuentre y me parezca interesante para certificarse. Una cosa más que empiezo y probablemente no termine, pero igual a alguien le sirve. Todo irá tomando forma en la sección de Java de la web, concretamente en el apartado SCJP.

Espero aprobar. En este examen me juego mi reputación 🙂

j j j

Cómo preparar las certificaciones Java (y probablemente el resto)

Estoy preparándome la certificación OCP Java SE 8. No preguntes por qué. Quizás porque soy adicto a coleccionarlas, tras tener el SCJP 1.5, 1.6, SCWCD 1.5 y SCBCD 1.3 y llevaba años sin presentarme a ninguna. O porque las que tengo ya son antiguas y quería tener una actualizada. O porque quería aprender Java 8 con cierta profundidad, ver todo lo nuevo que tiene que ofrecer (que es mucho, aunque quizás llega tarde) y compararlo con lo que he aprendido en otros lenguajes (Swift, te estoy mirando).

Además, he tenido la oportunidad de preparar a varios grupos para obtener esta certificación… que yo ahora mismo no tengo. Fraudismo at its best. Aunque en este caso no tengo tanto síndrome del impostor por una razón: puede que no tenga (aún) la certificación Java 8, y mis conocimientos de Java son muy mejorables, pero me autotitulo como el mayor experto mundial en aprobar estos exámenes. Y eso es gracias a mi sistema, el Sistema Freniche para aprobar las Certificaciones Java AKA sentido común.

El Sistema Freniche para aprobar las Certificaciones Java

Es un sistema muy probado, tanto personalmente como con montones de alumnos que he preparado para distintas certificaciones. Se basa en 9 pasos:

  1. Buscar un buen libro, que cubra todo el temario de la certificación. En este caso, he escogido el oficial de Oracle

  2. Leer el libro, saboreando cada capítulo. Aunque el objetivo último es aprobar el examen, hay mucho que podemos aprender aunque tengamos muchos años de experiencia con Java. Especialmente si tenemos muchos años de experiencia con Java trabajando siempre en proyectos similares, porque habrá montones de cosas que no hemos probado o visto por falta de tiempo.

  3. Escribe código. Mucho código. Haz pequeños ejemplos. Búscate las vueltas. Piensa retorcidamente. Prueba cosas extrañas (ver anexo Cosas Extrañas al final)

  4. Crea tus propios apuntes. O extiende los míos

  5. Escribe más código. Cuando te surjan dudas, vuelve a leer esa parte del libro. Y vuelve a escribir código probando todo.

  6. Cuando termines el libro, haz las preguntas de repaso de cada tema. Descubrirás que aún no has memorizado o te has fijado en partes. Goto 2

  7. Busca un simulador de exámenes. En mi caso siempre uso Enthuware porque me ha ido bien (no porque me paguen por hacerles publicidad, aunque ya podrían 🙂 )

  8. Haz exámenes de prueba. Falla. Vuelve a leer. Escribe código. Haz exámenes.

  9. Cuando en los exámenes del simulador estés llegando al 80% de aciertos, preséntate. Pasarás con nota.

¿Cuánto tiempo me va a llevar esto?

Pues depende. Leer el libro e ir probando pueden ser unas 30 h. Y luego hay que hacer los exámenes de prueba. Lo ideal es ponerse una fecha tope y en un par de meses power through it. Quitártelo de en medio, vamos.

Aunque recibir un excelente curso de formación, patrocinado por tu empresa e impartido por un profesional de prestigio siempre puede ayudarte bastante y

(interrumpimos este _shameless plug_ para continuar con lo que has venido a leer aquí)

Cómo presentarte al examen

Yo tengo mi ritual, pero lo ideal es que cada uno ejecute el suyo, porque lo normal es que estés nervioso/a ese día. Lo que yo hago es:

  • levantarme bastante temprano
  • comprobar que llevo algún documento, como el DNI en España que me identifique. Si no, no puedo hacer el exámen.
  • llegar con más de 1h de adelanto a los alrededores de donde tenga el Centro Prometric para presentarme.
  • desayunar o tomar café. Aunque el examen sea a las 13:00h en Sevilla en Agosto. Café. Para estar tranquilo.
  • llevar el libro de preparación de la certificación conmigo en la mochila, aunque no lo voy a leer mientras tomo café ni me van a dejar tenerlo conmigo durante el examen. Lo uso de talismán y porque no soy el más listo. Pero tengo que sentir que está cerca por si me ataca el pánico y alguna duda concreta en el último momento.
  • cargar con el portátil que no me van a dejar usar por las mismas razones que el punto anterior: porque no soy demasiado astuto.
  • llevar agua. Y caramelos. Para darte un premio según avance el exámen y beber para mantenerse hidratado.
  • ir al cuarto de baño justo antes de entrar, porque voy a estar bebiendo más agua que un caracol en el desierto durante la prueba.

¿Pero esto de las certificaciones sirve para algo?

Pues esto es un debate interesante, que puedes tener con quien quieras menos conmigo poque que en mi caso lo tengo bastante claro:

  • las certificaciones no demuestran que sepas más Java que nadie
  • demuestran que eres capaz de fijarte un objetivo, que te va a requerir un esfuerzo extra y cierto sacrificio y pasarlo
  • demuestran que tienes una base en el lenguaje Java
  • preparar esta certificación me ha supuesto toda una sorpresa, porque la he encontrado 100% útil: multihilo con Thread Pools y el paquete java.util.concurrent, programación funcional con Lambdas, map, reduce, streams, parallel streams, problemas de concurrencia y multihilo, acceso a BDs con JDBC (que hasta ahora era lo único que usaba en Android), uso de ficheros, excepciones, Opcionales,…
  • demuestran que eres capaz de estar 2 horas y media seguidas trabajando enfocado en una sola tarea, sin usar Internet ni mirar Twitter. Y eso es una rara cualidad hoy día, en los entornos multi-interrupción de que disfrutamos trabajando.

Esto último es probablente lo más difícil. Ser capaz de nuevo de estar haciendo una tarea durante 2 horas y media sin moverte de la silla. Esto se entrena con los exámenes del simulador. Y es duro, porque tú eres tu mayor enemigo.

Anexo: Cosas extrañas

Cosas que puedes hacer con Java, como escribir bucles así

Predicate<Integer> end = e -> e < 10; int i = 0; 
for (int j = 1; end.test(i) ; i++, j++, System.out.println("i " + i)) ;

// imprime i 1, i 2, i 3...

Usar bloques de código de instancia (NO usar en código real)

class Cat {
    String name;

    {
        System.out.println("I'm a Cat!");
        name = "Meow!";
    }

    Cat() {
        name = "Garfield";
    }
}

Programar «código encriptado» 😀

class _ {
    String _ = "Hello";
}

// más adelante...

_ _ = new _();
System.out.println(_._);   // imprime "Hello"

_ $ = _;
System.out.println($._);   // imprime "Hello"

Y otras muchas barbaridades que podría añadir…

j j j

Cómo crear un entorno de desarrollo Android portable

Logo de Android

Logo de Android

Algún día me tenía que pasar. Después de ver tanto backend Java en cursos de todos los colores y de coleccionar certificaciones Java, después de desarrollar para iOS y webOS, alguna vez me tenía que poner en serio con Android. De hecho, siempre me han preguntado que por qué no era esta mi plataforma de desarrollo móvil «de cabecera». Quizás porque estaba saturado de Java. O porque, como comentaba en We.Developers, Java es un lenguaje que no me genera excesivas alegrías (sobre todo cuando lees la mayoría del código que hay por ahí, que es bastante feo, fruto del desconocimiento del lenguaje).

El caso es que estoy actualmente desarrollando una App para Android (de la que daré más datos cuando se suba a Google Play) y me ha surgido la oportunidad de impartir un curso a los programadores de RTVA. Como en todo curso, me gusta instalar el entorno de desarrollo. Y si vas a desarrollar para Android, sabes que tienes que instalarte:

  • un JDK para poder compilar todo el código Java que escribimos como parte de nuestras Apps Android
  • un JRE, necesario para ejecutar Eclipse
  • Eclipse, como IDE para escribir nuestros programas
  • el SDK de Android, que pone a nuestra disposición las bibliotecas necesarias para crear los programas Android, así como el Emulador, herramientas e imágenes para ejecutar ese emulador.
  • el plug-in ADT para Eclipse, que nos permite gestionar el SDK cómodamente desde Eclipse

Este curso se imparte en dos semanas, dejando varios días por medio. Y el tiempo que se tarda en descargar las distintas partes del SDK de Android y el plugin ADT (ambos hay que descargarlos para instalarlos) no es despreciable cuando lo intentamos hacer con 10 portátiles todos conectados a la misma Wifi. Además de la limitación inherente a compartir la conexión HTTP, el medio físico (el canal de radio usado por el punto de acceso WiFi) es el mismo para todos los portátiles. Luego hay colisiones. Y cuantos más portátiles, peor para todos.

En una primera opción, llevaba el JDK, Eclipse y el paquete de instalación del SDK en un pendrive, para irlo instalando todo. Pero de estas dos últimas descargas no me podía librar… ¿o si? Y mi miedo es volver la segunda semana y encontrarme los portátiles formateados…

Cómo crear un entorno de desarrollo Android Portable

En este caso, me centro en cómo crear el entorno portable para Windows 32 bits, que corre en XP y Windows 7. Al final comento las diferencias con Mac.

  • Lo primero es bajar todo lo que necesitamos a una carpeta:
  • Java JDK para Windows es un ejecutable, y escogeremos, de la versión 6, el saber que nos interese: 32 bits (i586) o 64 (x64).
  • De Eclipse nos interesa la última versión de la distribución Eclipse IDE for Java developers. No la versión para Java EE, ya que no vamos a usar servets ni nada de eso. A fecha de escritura de este post, la última versión es la Indigo.
  • La última versión del SDK de Android. Nos bajamos la versión en ZIP, no la instalable.
  • Una vez que tenemos todo esto bajado, debemos instalar el JDK en la máquina. Realmente queremos las carpetas que van dentro, pero al no disponer de un ZIP no tenemos más remedio que instalar. Lo dejará en C:\Archivos de Programa\Java
  • Una vez termine la instalación del JDK, nos crearemos una carpeta en el escritorio que podemos llamar Android-Portable, o como más nos guste.
  • Debemos descomprimir dentro de esta carpeta el ZIP de Eclipse.
  • Ahora, copiaremos la carpeta JRE que está en C:\Archivos de Programa\Java\Jre6\ dentro de la carpeta de Eclipse, justo donde está Elipse.exe. Así, al arrancar Eclipse usará ese JRE que le hemos instalado «tan a mano»
  • Igualmente descomprimiremos el SDK de Android dentro de Android-Portable.
  • Como necesitaremos el JDK para compilar, vamos a copiarnos en Android-portable la carpeta C:\Archivos de programa\Java\jdk1.6.0_31
  • Ahora debemos tener dentro de Android-Portable: una carpeta con Eclipse, otra con el JDK y el SDK de Android.
  • Ya podemos arrancar Eclipse. Necesitamos instalar el plugin ADT, para lo cual iremos a Help > Install Software e instalaremos ADT indicando como repositorio https://dl-ssl.google.com/android/eclipse/
  • Tras reiniciar Eclipse, nos pedirá que instalemos un SDK de Android, o que le indiquemos dónde tenemos uno instalado. Le indicamos que dentro de Android-Portable tenemos uno. Nos muestra el Android SDK Manager para descargar las imágenes de los emuladores para las versiones de Android que nos interesen, así como los SDKs propiamente dichos. Yo me los bajaría todos.
Eclipse nos pide un SDK de Android (click para agrandar)

Eclipse nos pide un SDK de Android (click para agrandar)

  • ¡Listo! Ahora podemos copiar la carpeta Android-Portable y todo lo que necesitamos lo llevamos dentro. Para arrancar Eclipse bastará con entrar en su carpeta y hacer doble click en Eclipse.exe. Si quieres, siempre te puedes crear un acceso directo, pero que sepas que al mover la carpeta tendrás que volver a crearlo.

<

div class=»mceTemp mceIEcenter»>

<

dl id=»attachment_1707″ class=»wp-caption aligncenter» style=»width: 470px;»>

Así debe quedar la carpeta Android-Portable

Así debe quedar la carpeta Android-Portable

Esta carpeta ya la podemos poner en un pendrive, comprimirla, copiarla de un equipo a otro, etc. Funcionará con los distintos Windows.

Si tienes un Mac el proceso es el mismo, salvo que:

  • no tienes que instalarte Java, ya que el JDK viene instalado con OS X (es una instalación opcional del S.O.). No puedes «bajarlo» de la página de Oracle.
  • debes bajar el Eclipse de Mac
  • debes bajar el SDK de Android de Mac

Ahora, a ver alguien compra las Apps que hagamos 🙂