lunes, 29 de junio de 2009

NetBeans 6.7 está disponible!

Lo más esperado.. NetBeans 6.7 ya está aquí!

.. y está en 15 idiomas... entre ellos.. en Español!!

Si quieres conocer todo lo nuevo de NetBeans 6.7, o eres nuevo en NetBeans, te recomiendo que veas este vídeo:

Y saludo y felicitación a los que hicieron posible el lanzamiento de NetBeans 6.7, y a los traductores héroes hispanos que realizaron la localización a nuestro idioma.

Un editor de XML Schema gratuito... NetBeans

Cuando queremos editar un archivo XML podemos usar un editor de texto plano (aunque llega a ser confuso cuando crece mucho).

Sabemos que los XML permite cualquier estructura de datos, pero tampoco hay que abusar de ello. Es necesario que tenga un orden: cuales son los tags, cuantos, cuales y en qué orden se establecen los valores, qué atributos debe tener, etc.

Para ello se puede usar DTD, o un , XML Schema.

Usar un XML Schema tiene la gran ventaja es que es otro XML más, y que tiene más manera de restringir un XML que usando un DTD.

Para hacer un XML Schema se debería de usar un super editor de XML. El más conocido es el XML Spy. Lo he usado bastante, hasta cuando me decía que debería pagar por la versión.... además no corría en Linux.

Jugando por ahí con NetBeans encontré que también tiene su propio editor de Schemas. Y de eso lo trataré en este post.


Paso 0: Instalación del editor de XML Schemas.
Para comenzar, debemos instalar el componente, si es que no hemos instalado la opción de SOA.
Paso 1: Creando un .XSD
Nuestro .xsd resultante será el que se menciona en W3 Schools.org: XML Schema Example. Veremos que es muy sencillo.

Como nuestro NetBeans no trabaja si no es con un proyecto, crearemos uno en blanco de cualquier tipo: Desktop Application o Web Application.

Luego, crearemos un nuevo archivo (Ctrl+N), y seleccionamos de la categoría XML, el tipo de archivo "XML Schema"


.. y llamaremos a nuestro archivo "shiporder":

Al terminar, veremos que nos aparece un editor visual de XML.

En los botones superiores, podemos alternar de la vista de Esquema a Diseño (Design)

.. o a la misma fuente XML.

Regresamos al modo "Schema".

Paso 2: Definiendo los tipos simples que deberá tener el XML

Ahora, según el ejemplo descrito en el W3 Schools, el XML debe ser así:

<?xml version="1.0" encoding="ISO-8859-1"?>

<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson>
<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address>
<city>4000 Stavanger</city>
<country>Norway</country>
</shipto>
<item>
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</quantity>
<price>9.90</price>
</item>
</shiporder>

Se puede ver a simple vista que se utilizan tres tipos de elementos simples:
  • cadena
  • entero positivo
  • decimal
Y que el ID de la orden, es una cadena que solo debe permitir 6 digitos.

Pues bien, ahora definiremos cuatro tipos de datos para nuestro esquema. Hacemos clic derecho sobre la categoría "Simple types" y seleccionamos "Add simple type..."

.. escribiremos el nombre "stringType" que será basado en el tipo "string".

... clic en OK. Repetiremos lo mismo para los siguientes tipos:
  • intType (positiveInteger)
  • decType (decimal)
  • orderIdType (string)

Paso 3: Definiendo los tipos complejos.
Los tipos complejos para el XML son para los siguientes elementos (tags):
  • shipto (name, address, city, country)
  • item (title, note, quality, price)
  • shiporder (orderperson, shipto, item)
Así que comenzaremos a crear el primer tipo complejo: shiptoType.

Clic derecho sobre "Complex types" y seleccionamos "Add Complex type..."
El nombre del tipo complejo será shiptoType, y contendrá una secuencia.

... clic en OK.

Ahora, debemos agregar la secuencia que compone ese tipo complejo. El primer subelemento es "name" de tipo "stringType". Para ello, debemos seleccionar el elemento "sequence" de "shiptoType", hacemos clic derecho, y seleccionamos "Add > Element..."


el nombre es "name" y usamos un tipo existente (el que acabamos de crear): Use existing type >Simple types > stringType
Repetiremos la acción por los otros tres subelementos más:
  • address (stringType)
  • city (stringType)
  • country (stringType)


Ahora, crearemos un nuevo tipo complejo, llamado itemType, y tendrá los siguientes subelementos:
  • title (stringType)
  • note (stringType)
  • quantity (intType)
  • price (decType)
Pero el elemento "note" es opcional. Para ello, seleccionamos clic derecho sobre ese elemento y seleccionamos "properties", y en el atributo "Min occurrs" escribimos "0"
... clic en Close.

Ahora, el tipo más complejo de todos: shiporderType. Estará compuesto de:
  • orderperson (stringType)
  • shipto (shiptoType)
  • item (itemType)
Además, debe contar con un atributo obligatorio llamado "orderid" que es de tipo "orderIdType"

Repetiremos la misma secuencia, solo que para el elemento shipto, debemos seleccionar la categoría "ComplexType > shiptoType"

.. de similar manera para item (itemType)
Ahora, este item debe permitir de uno a más elementos. Por omisión siempre permitirá unicamente un solo tag. Para esto, hacemos clic derecho sobre este elemento item recien creado, y seleccionamos "properties". Luego, cambiamos el atributo "max occurs" con el valor "unbounded".

.. clic en Close.

Ahora, debemos crear el atributo para shiporderType.Hacemos clic derecho sobre "shiporderType" y seleccionamos "Add > Attribute..."


... escribimos el nombre del atributo "orderid" de tipo "Simple Type > orderIdType"

Y este atributo, es obligatorio, por ello hacemos clic derecho sobre el atributo recién creado, seleccionamos "properties", y cambiamos el valor de "use" a "required".


.. clic en Close.

Paso 4: Creando el elemento principal
ya creados los tipos simples y complejos, debemos crear el elemento raiz de todo el XML: shiporder de tipo shiporderType.

Hacemos clic derecho sobre la categoría "Elements" y seleccionamos "Add Element"

... el nombre del elemento es "shiporder" de tipo complejo "shiporderType"



A esta altura, ya todo es tan automático y rápido que no necesita explicación.

Y listo. Podemos ver en el modo "Design" cómo ha quedado nuestro esquema.
Y si deseas, puedes ver el XML resultante.
<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xml.netbeans.org/schema/shiporder"
xmlns:tns="http://xml.netbeans.org/schema/shiporder"
elementFormDefault="qualified">
<xsd:simpleType name="intType">
<xsd:restriction base="xsd:positiveInteger"/>
</xsd:simpleType>
<xsd:simpleType name="stringType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="decType">
<xsd:restriction base="xsd:decimal"/>
</xsd:simpleType>
<xsd:simpleType name="orderIdType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:complexType name="shiptoType">
<xsd:sequence>
<xsd:element name="name" type="tns:stringType"></xsd:element>
<xsd:element name="address" type="tns:stringType"></xsd:element>
<xsd:element name="city" type="tns:stringType"></xsd:element>
<xsd:element name="country" type="tns:stringType"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="itemType">
<xsd:sequence>
<xsd:element name="title" type="tns:stringType"></xsd:element>
<xsd:element name="note" type="tns:stringType" minOccurs="0"></xsd:element>
<xsd:element name="quantity" type="tns:intType"></xsd:element>
<xsd:element name="price" type="tns:decType"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="shiporderType">
<xsd:sequence>
<xsd:element name="orderperson" type="tns:stringType"></xsd:element>
<xsd:element name="shipto" type="tns:shiptoType"></xsd:element>
<xsd:element name="item" type="tns:itemType" maxOccurs="unbounded"></xsd:element>
</xsd:sequence>
<xsd:attribute name="orderid" type="tns:orderIdType" use="required"/>
</xsd:complexType>
<xsd:element name="shiporder" type="tns:shiporderType"></xsd:element>
</xsd:schema>



Muy parecido al explicado en W3 Schools... y más práctico.

Paso 5: Crear un XML usando este XSD.
Crearemos un nuevo XML, pero en el tercer paso de la creación desde NetBeans, seleccionamos que use un Schema.

En el paso siguiente, hacemos clic en "browse"...

...para seleccionar el xsd que acabamos de crear.

Luego, seleccionamos cual es el esquema principal para nuestro XML (el unico) y podemos editar el prefijo (prefix) que usaremos para referirnos a ese esquema. Yo le puse "so" (ship order)



.. y para finalizar, el NetBeans nos propone crear tags en blanco usando basándose en el esquema:

.. y listo:



Un esquema de XML creado con puros clics.

jueves, 25 de junio de 2009

Repositorio de ejemplos de Patrones Java EE y Buenas prácticas

Aquí podrás encontrar un conjunto de ejemplos y buenas prácticas de Java EE 5 y 6.

http://kenai.com/projects/javaee-patterns/

Todos los ejemplos fueron probados en Glassfish V2 / V3 y algunos en OpenEJB y JBoss 5.

Puedes utilizar NetBeans 6.7 para acceder a los proyectos y opinar en los foros.

lunes, 22 de junio de 2009

Combinación de teclas y autocompletar en NetBeans

Aquí podeís ver un PDF con todas las combinaciones de teclas que son usados desde la versión 6.5 del NetBeans IDE.


http://www.netbeans.org/files/documents/4/2355/shortcuts-6.5.pdf

Además contiene atajos que permite escribir más rapido en el IDE.
Por ejemplo ¿sabias que si escribes en el editor las letras psvm e inmediatamente presionas la tecla TAB crea el método public static void main(){} con todo y parámetros?.

Es un documento bien útil.

DocWeb

DocWeb es una herramienta de Java que permite documentar, comentar y traducir el JavaDOC del API de Java.

Es tan simple como un wiki

http://doc.java.sun.com/DocWeb/

Así que si quieres ayudar en documentar, opinar, proporcionar códigos de ejemplo, o traducir el API de Java, visita esta web.

Estadisticas en el uso de NetBeans

Quizás hayas visto la opción en "Opciones" de NetBeans, que dice algo así:

...y te habrás preguntado  "¿también yo debería ver esas estadísticas?"

Pues la respuesta es SÍ. y si quieres saber cómo es usado el NetBeans, visita aquí:

http://statistics.netbeans.org/

En la margen derecha están todos los tipos de reportes que recopilan de acuerdo al uso de NetBeans.

El reporte que más me ha gustado y es interesante es este:

"¿Quienes usan la ayuda contextual?"

Creo que nadie usa la ayuda, ya que somos "informáticos" y por tanto "no necesitamos ayuda alguna".

¿Tú alguna vez la has usado?
... y si la has usado ¿qué tema has consultado? y ¿te fué útil?

jueves, 18 de junio de 2009

Más allá que una simple traducción del IDE

El trabajo de los equipos de l10n de NetBeans no solo son vistos y utilizados en el mismo IDE, que de por sí, ya tiene un gran mérito. Sino que también son utilizados en otros proyectos donde se utiliza NetBeans como plataforma.

Este es el caso de iReport 3.5.2, que incluye las traducciones en diversos idiomas.


Algunas pantallas en español:



En alemán:



Y en otro idioma que ya no sé qué es:

martes, 16 de junio de 2009

JavaScript 1.7 y NetBeans 6.7

Estaba revisando las característica de NetBeans 6.7 y he visto que ahora permite el autocompletar para ECMA for Script (o conocido como E4X).
El E4X consiste en una extensión a los lenguajes soportados por ECMAScript para que puedan manejar XML
JavaScript es parte de ECMAScript. Así que podríamos declarar variables javascript así:

var ventas=<ventas>
<producto tipo="teclado" precio="10" cantidad="3"/>
<producto tipo="monitor" precio="20" cantidad="2"/>
<producto tipo="raton" precio="30" cantidad="1"/>
</ventas>;
Y desde NetBeans, podemos acceder a sus nodos como si fuera un objeto más en javascript:


wow!! Se ve todo bonito!!... pero esto funciona en Firefox, Safari y Chrome... y no está incluido por nada en la versión de nuestros amigos de las ventanitas coloridas.

http://en.wikipedia.org/wiki/JavaScript#Versions

Así que, tendremos que seguir usando el formato json que, de hecho, no tiene nada de malo.

NetBeans 6.7 RC 3

Esta versión tiene más revisiones que las anteriores.

ya salió la RC 3 de NetBeans 6.7

http://www.netbeans.org/community/releases/67/index.html

... e incluye la traducción al español.



Muchas gracias a nuestros traductores:
  • avbravo (Arístides Villareal) [responsable, jefe, maestro, amo y líder del equipo de traducción]
  • leito (Leonardo de Seta)
  • gianu (Sergio Rafael Gianazza)
  • mperezma (Mario Perez Madueño)
  • gilberto.flores (Gilberto Flores)
  • rjorellana (Roger Orellana), y
  • jfung (José Fung)
Falta poco para que salga la versión oficial de NetBeans 6.7

domingo, 14 de junio de 2009

Bugzilla desde NetBeans 6.7

Por fin NetBeans tiene comunicación con un Issue tracker.

Hasta el momento han mencionado cómo conectarse con Kenai, un repositorio de proyectos como Google Code o SourceForge. Pero hay quienes manejamos problemas unicamente con el Bugzilla.

En este post comentaré cómo conectarse a un servidor Bugzilla desde NetBeans 6.7 (aunque para este post, lo estoy haciendo con una versión de desarrollo del IDE).

Paso 0
Tener el NetBeans 6.7. En las versiones anteriores no existe la configuración de Issue Trackers, ni con plugins.

Paso 1
Abrir el panel de Servicios (Ctrl+5), y en el nodo "Issue trackers", darle clic derecho y seleccionar (la única opción que existe) "Create Issue tracker..."


Paso 2
Ahora, en la ventana que se nos muestra, debemos escribir los datos del servidor Bugzilla que queremos acceder. Yo usaré como ejemplo, el bugzilla de Gnome.

Hacer clic en el botón "Validate" para comprobar si los datos escritos y listo. Clic en el botón "OK", y ya podemos acceder al bugzilla, ya sea para consultar incidentes:


... o para reportar un nuevo incidente

viernes, 12 de junio de 2009

Encuesta "El mejor IDE"

Lancé una encuesta para saber la opinión de los visitantes de mi blog. Quería saber - según ustedes - es el mejor IDE:




Quizás "ganó" netBeans porque justamente mi blog habla de Netbeans, y quizás llegaste a este blog buscando algo Netbeans y por ende... usas netbeans.

Así que quizás por eso explica el arrollador "triunfo" del NB en mi encuesta.

Me gusta NetBeans, ya que su capacidad de despliegue de aplicaciones ya sea para desktop como para servidor, son simples e inmediatas. Mientras que con Eclipse.. uhmmm... creo que por eso hay mucha gente que copia los .jar de los drivers en la carpeta "ext" del JRE del sistema operativo. Y que aún usan la variable de entorno CLASS_PATH.

No haré comparaciones entre ambos IDEs, ya hay bastante de ello en la web.

Lo único que no me gusta de NetBeans, es que - a pesar que dicen que los cambios de entre subversiones es mínimo y no compromete la compatibilidad del API del IDE - los plugins de una subversión no corren en otra subversión "ligeramente" superior.

Por ejemplo, el plugin para ICEFaces de la 6.5 no funciona en la 6.7. ¿Debería ser así?

En fin.. es mi opinión. ¿Puedes contarnos cuál es tu opinión de lo que te gusta o no de este IDE? y y si lo usas pero no te gusta en absoluto ¿por qué lo usas?

Glassfish: " Error al cargar los descriptores de implementación para el módulo..."

El escenario es el siguiente:
Tienes un módulo EJB que consume un WebService, ya sea desde otro proyecto local o desde un WSDL externo al proyecto. Y tienes una aplicación web que utiliza el módulo EJB. Cuando despliegas el EJB, no hay problemas, pero cuando despliegas el módulo web, no sale nada y lanza un error:

 wsdl file META-INF/wsdl/client/......wsdl does not exist for service-ref...

Dirás (como yo dije) "pero si compila!!!".. y pensarás "y si consumo el WS dentro del modulo web?". y te negarás porque eso rompería el esquema que pensabas...

bueno... alguien también le pasó y también encontró la solución.

Nada más hay que revisar el código que crea NetBeans en el EJB cuando consume un WebService:

@WebServiceRef(wsdlLocation = "META-INF/wsdl/client/ProductsList/localhost_8084/ProductsListService/ProductsList.wsdl")
private ProductsListService service;

El EJB lo consume normalemente, porque el WSDL está dentro del mismo proyecto EJB. Cuando es llamado desde el módulo Web, el EJB buscará el wsdl desde donde fue llamado, y como el módulo web no tiene ese archivo, manda el error que mencioné.

Solución:
La más pesada: poner el EJB y el web dentro de un Enterprise Application.

La más técnica: Copiar el archivo .wsdl dentro de la carpeta del web, y cambiar la referencia (wsdlLocation) a esa nueva ubicación.

La más práctica:
En el EJB que consume el WebService, cambiar el valor de wsdlLocation y colocar el URL del WSDL público.

@WebServiceRef(wsdlLocation = "http://localhost:8084/ProductsListService/ProductsList.wsdl")
private ProductsListService service;

Obviamente, el URL debe ser el del WSDL real que estas consumiendo. Yo usé este para poder ilustrar el ejemplo.

La más elegante: Usar algún ESB, pero eso será tema de otro post.

lunes, 8 de junio de 2009

NetBeans 6.7 RC2

Nadie detiene a NetBeans 6.7. Ahora está en el RC 2

(.. y tampoco nadie detiene a los traductores al español de NB)

http://download.netbeans.org/netbeans/6.7/rc2/

viernes, 5 de junio de 2009

iReport para NetBeans

El 3 de este mes  iReport ha lanzado la versión actualizada (3.5.2) del Plugin para NetBeans 6.x.

http://sourceforge.net/project/showfiles.php?group_id=64348

El .zip tiene cuatro plugins:
  • iReport-nb.- El pluing para NetBeans
  • jasperreports-components-plugin-nb-3.5.2.nbm.- Los componentes para NetBeans
  • jasperreports-extensions-plugin-nb-3.5.2.nbm.- Extensiones
  • jasperserver-plugin-nb-3.5.2.nbm.- El plugin para JasperServer. Muy interesante este último


Al instalar los plugins, incluye un interesante "asistente" para crear paso por paso un reporte en iReport.


Investigaré sobre el último plugin (JasperServer plugin), ya que me dejaron una misión en mi centro de trabajo referente a reportes.. y quiero proponer el Jasper como la herramienta necesario.


Bueno, pronto publicaré como va mi investigación.

miércoles, 3 de junio de 2009

JavaOne

Un miembro de JavaHispano.org - Daniel Bonilla - está participando del JavaOne.

Aquí dejó un comentario respecto al futuro de Java (java SE 7 y Java EE 6), incluyendo un comentario sobre la compra de Sun por parte de Oracle

Léanlo aquí

martes, 2 de junio de 2009

NetBeans en la bandeja del sistema (System Tray)

Encontré un plugin en la ventana "plugins" del NetBeans, llamado "System tray".

Lo instalé, y me olvidé que lo habia hecho... hasta que minimicé todas las ventanas, y ví que apareció esto en mi bandeja del sistema

Bueno, ahí lo tienen.. el NetBeans en el "System tray".

Pueden ver sus opciones en la ficha "System tray" de "Misceláneas" de las opciones de NetBeans.

lunes, 1 de junio de 2009

Java 6 update 14 disponible

Ya está disponible la actualización 14 de Java 6

http://java.sun.com/javase/downloads/

Ahora ya permite instalarse en
  • Windows 2008 Server SP2
  • Windows Vista SP2
Cuenta con la nueva versión de Java DB: 10.4.2.1

Y más mejoras. La lista completa de estas se encuentran aquí: http://java.sun.com/javase/6/webnotes/6u14.html

NetBeans 6.7 RC1

La versión 6.7 de NetBeans está cerca de ver la luz. Está previsto para Junio de 2009.

Sin embargo, ya salió la versión RC 1 (Release Candidate 1)
Pruébenlo, está muy bueno.
Las características más llamativas son:
  • Módulos activados bajo demanda: Es decir, la primera vez, NB carga los módulos básicos pero los demás de desarrollo (como por ejemplo, la programación en web, el editor, los servidores de base de datos, etc) están desactivados. Solo se activan automáticamente cuando deseamos usar ese servicio. 
  • Soporte de Maven
  • Programación en PHP mejorada: Permite PHPUnit, además de autocompletado de sentencias SQL dentro del código PHP.
  • Struts en versión 1.3.8 (Hace tiempo se quedó en la 1.2, creo que se olvidaron de que  existía.. o esperaban a que desapareciera. )
Y muchas características más.

http://download.netbeans.org/netbeans/6.7/rc/

Ah!, ya incluye partes traducidas al español.

Happy NetBeanings!