Tag : Java

Primera lección

Primera lección
para novatos de
Java

Anti Patrones Java – Manejo de XML

Una mala práctica en el manejo de documentos XML es no hacer uso de parsers o analizadores. El siguiente código muestra un escenario común:

int inicio = xml.indexOf("<nombre>");
int fin = xml.indexOf("</nombre>");
String nombre = xml.substring(inicio, fin);

El método anterior que en apariencia funciona, tiene los siguientes inconvenientes:

  • Puede haber mas de un nodo «name» en el documento.
  • El contenido de «name» puede no estar hecho de caracteres de datos solamente.
  • Puede haber caracteres escapados en los datos.
  • Si los datos contenidos en el nodo son CDATA puede no devolver el resultado esperado.
  • El documento XML puede tener namespaces.

En general un documento XML es mucho mas complejo que es un String de java, por el tipo de operaciones que están implícitas en la lectura. Para leer de forma correcta el contenido de un documento XML existen analizadores como Xerces que ademas son muy ligeros. El equivalente en JDOM es el siguiente:

SAXBuilder builder = new SAXBuilder(false);
Document doc = doc = builder.build(new StringReader(xml));
String nombre = doc.getRootElement().getChild("nombre").getText();

Otra mala práctica en el manejo de XML que es muy común es en la construcción del documento, haciendo algo como esto:

String nombre = ...
String atributo = ...
String xml = "<root>"
            +"<nombre atr=\""+ atributo +"\">"
            + nombre
            +"</nombre>"
            +"</root>";

Cuando lo correcto es hacer más bien lo siguiente:

Element root = new Element("root");
root.setAttribute("atr", atributo);
root.setText(nombre);
Document doc = new Documet();
doc.setRootElement(root);
XmlOutputter out = new XmlOutputter(Format.getPrettyFormat());
String xml = out.outputString(root);

Olvidándonos de escapar caracteres y con la sentencia

XmlOutputter out = new XmlOutputter(Format.getPrettyFormat())

Le damos el formato visual adecuado a nuestro documento.  También podremos agregar namespaces a nuestros nodos sin ningún problema. JDom es sin duda una magnifica opción para manejar documentos XML.

JDom es sin duda una magnifica opción para manejar documentos XML.


Java y Chuck Norris

Unos cuantos hechos acerca de Chuck Norris, que quizá te convenga saber para tu examen de certificación SCJP.

  • Chuck Norris puede crear clases que son ambas cosas: abstract y final.
  • Chuck Norris no despliega aplicaciones, las mete a patadas en el servidor.
  • Chuck Norris puede usar cualquier clase en java.util.* para matarte y sin leer los javadocs
  • Chuck Norris puede golpear tan duro a tu aplicación web que la convierte en una aplicación swing con iconos en forma de cráneos humanos. 
  • Chuck Norris contó el mismo para llegar al valor Float.POSITIVE_INFINITY y demostrar que es correcto, dos veces. 
  • synchronized no protege de Chuck Norris, si él lo necesita lo toma. 
  • Chuck Norris no usa javac, el escribe sus aplicaciones directamente en código binario. 
  • El código java de Chuck Norris nunca necesita optimizarse. 
  • Su código es tan rápido que rompe la velocidad de la luz y durante las pruebas mata a 37 personas en los laboratorios de Sun. 
  • El código de Chuck Norris nunca tiene un error. ¡Nunca
  • Cuando alguien intenta usar un método deprecated de Chuck Norris, reciben automáticamente una patada voladora en tiempo de compilación. 
  • El paquete java.lang, originalmente contenía la clase Chuck Norris, pero fue retirada luego de una revisión de diseño y una patada voladora propinada a Bill Joy, el diseñador a cargo. 
  • Chuck Norris no escribe código. El simplemente se sienta frente al monitor y lo mira hasta que obtiene lo que quiere. 
  • El código corre mejor cuando Chuck Norris lo mira. 
  • Si tú obtienes una ChuckNorrisException probablemente morirás. 
  • Los objetos de Chuck Norris puede lanzar patadas voladoras a cualquier objeto privado de otro paquete. 
  • Los niveles de visibilidad son public, default, protected, private y “protectedbyChuckNorris”, ¡No intentes acceder a campos con el último modificador! 
  • Chuck Norris puede dividir por cero. 
  • El Garbage Collector solo pasa sobre el código de Chuck Norris cuando hay cuerpos que recolectar. 
  • Chuck Norris implementa “Indestructible”. Todas las demás criaturas implementan “Killable” 
  • Chuck Norris puede hacer herencia múltiple en java. 
  • El código de Chuck Norris usa generics desde la versión 1.3 de java
  • Cuando se ejecuta una clase de Chuck Norris, el CPU la corre al doble de velocidad. 
  • Chuck Norris y Java
  • El código de Chuck Norris no puede ser decompilado, no te molestes en tratar.
🙂