Revista para técnicos reparadores de equipos de audio, video, cómputo y otros de uso doméstico como hornos de microondas y línea blanca.
MAYOR POTENCIA-MENOR CONSUMODescripción completa
MAYOR POTENCIA-MENOR CONSUMO
bibk+lio
Examen 1 1000 programadores Corfo - Chile
origami
Salmo 122 - partitura
Descrição: Bitcoin para programadores
Tutorial Kotlin para ProgramadoresDescripción completa
Full description
origamiDescrição completa
origamiFull description
Description : (H)
Livro sobre computação gráfica.Descrição completa
Examen 1 1000 programadores Corfo - Chile
listagem de livros para aprendizagem de programaçãoDescrição completa
S D O I I T U A L R G C
6ª ENTREGA DEL COLECCIONABLE
N I D C
AÑO O XI. XI. 2. 2.ªª ÉPOC ÉPOCA A • Nº 122 • Precio: 6 € (Españ (España) a) (IVA inclu incluido) ido) • AÑ
UNA PUBLICACIÓN DE:
ROFESI ESIONA ONALES LES S. L . REVISTAS PROF
Y ADEMÁS… ACTUALIDAD Windows Longhorn: la evolución de .NET MIDDLEWARE XAML, un cambio radical en la programación de IGUs Eclipse Visual Editor REDES Los CMS Open Source y el API de Portlets Programa un filtro en tu aplicación web DISEÑO Borland y el ciclo de vida: la diferencia entre el éxito y el fracaso Construye aplicacion aplicaciones es multiplataforma con C++ y ACE CANAL PANDA Nuevos peligros para la seguridad corporativa 00122
Noticias, javaHispano, Preguntas y Respuestas
8
413042 303299
EDITORIAL Un mercado prometedor Número 122 - Marzo 2005 Edita: REVISTAS PROFESIONALES S.L. [email protected] C/ Valentin Beato 42, 3ª. 28037 - Madrid. http://www.revistasprofesionales.com http://digital.revistasprofesionales.com Editor Agustín Buelta •••••••••••••••••••••••••••••••••• Coordinación Técnica-Redac Técnica-Redacción ción Carlos Laparra •••••••••••••••••••••••••••••••••• Maquetación Raúl Clavijo •••••••••••••••••••••••••••••••••• Asesoría de Publicidad Felipe Ribagorda Tel.: 91 304 87 64 Barcelona C/ Rocafort, 241/243, 5º 1ª Mariano Sánchez Tel.: 93 322 12 38 •••••••••••••••••••••••••••••••••• Suscripciones Tel: 91 304 87 64
Pocas cosas reflejan tan bien el progreso de la tecnología como los teléfonos móviles. móviles . En muy pocos años, han pasado de ser simples teléfonos a auténticas plataformas de ocio. Curiosamente, continuamos llamando “teléfono móvil” a un dispositivo que, ciertamente, algún día lo fue, pero no cabe duda de que hoy ese término ha quedado obsoleto. Los fabricantes de estos “teléfonos” inundan el mercado con nuevos modelos, las operadoras de telecomunicaciones nos abruman con agresivas campañas de publicidad y, todo ello, acaba en un consumo desmesurado de estos servicios. La última tecnología t ecnología que se ha incorporado a los dispositivos dispositi vos móviles es la que puede transformar nuestro terminal en una auténtica consola de videojuegos. Ciertamente, este tipo de productos van destinados a los consumidores más jóvenes. Según se desprende de los estudios realizados por las compañías del sector, 3 de cada 5 ciudadanos europeos de entre 15 y 35 años adquirieron algún contenido o servicio para ser consumido desde su teléfono móvil en el año 2004. De este consumo, los juegos Java para móviles representan el 11%, frente al 29% que representan otro tipo de contenidos, como por ejemplo las imágenes. De hecho, estos datos han sido respaldados por un estudio hecho por la consultora Screen Digest, en el que se afirma que el 80% de los ingresos derivados de los juegos y sus descargas provienen de Japón y Corea. En este sentido, queda claro que América y Europa representan un mercado relativamente virgen, y por lo tanto con muchas posibilidades en el naciente sector de los juegos en teléfonos móviles. Por este motivo hemos creído oportuno mostrar al lector, con un curso completísimo, cómo desarrollar juegos de calidad comercial para una de las plataformas con más cuota de mercado: Nokia.
Fax: 91 327 13 03
••••••••••••••••••••••••••••••••••• Impresión Ideas de Impresión ••••••••••••••••••••••••••••••••••• Distribución Motorpress Ibérica
SUMARIO
ACTUALIDAD 10 Windows
Distribución Mexico DIMSA - Angel Bosch Bosch [email protected] Distribución, números atrasados y suscripciones Renacimiento, 180. Col. San Juan Tlihuaca Azcapotzalco. 02400 México D.F. Distribución Argentina Capital Federal: Distrimachisa Interior: York Agency, Agency, S. A. Tel. (005411) 43 31 50 51 •••••••••••••••••••••••••••••••••• La revista Sólo Programadores no tiene por qué estar de acuerdo con las opiniones escritas por sus colaboradores en los artículos firmados. El editor prohibe expresamente la reproducción total o parcial de los contenidos de la revista sin su autorización escrita.
Depósito legal: M-26827-1994 PRINTED IN SPAIN COPYRIGHT COPYRIG HT 30-02-20 30-02-2005 05 P.V.P. 6,00 Euros Precio en Canarias, Ceuta y Melilla: 6,15 Euros
Asociación Española de Editoriales de Publicaciones Periódicas
Longhorn: La evolución Longhorn: evolución de .NET (I)
DISPOSITIVOS MÓVILES 16 Juegos
de calidad comercial en J2ME (I)
MIDDLEWARE 24 XAML
(II) 36 Desarrollo visual de IGUs Java
REDES 42 Sistemas
de Gestión de Contenidos (y II) 48 Servlets Filters (I)
DISEÑO 54 La
diferencia entre el éxito y el fracaso 58 Diseño multiplataforma multiplataforma para aplicacione aplicaciones s C++ (I) Y además… 04 Noticias 06 javaHispano: javaHispano: NetBeans
4.0, db4objects, db4objects, APIs Java Java y más 08 Canal Panda: Los sistemas móviles, un peligro para la seguridad corporativa 32 Contenido del CD-ROM 64 Preguntas y respuestas
EDITORIAL Un mercado prometedor Número 122 - Marzo 2005 Edita: REVISTAS PROFESIONALES S.L. [email protected] C/ Valentin Beato 42, 3ª. 28037 - Madrid. http://www.revistasprofesionales.com http://digital.revistasprofesionales.com Editor Agustín Buelta •••••••••••••••••••••••••••••••••• Coordinación Técnica-Redac Técnica-Redacción ción Carlos Laparra •••••••••••••••••••••••••••••••••• Maquetación Raúl Clavijo •••••••••••••••••••••••••••••••••• Asesoría de Publicidad Felipe Ribagorda Tel.: 91 304 87 64 Barcelona C/ Rocafort, 241/243, 5º 1ª Mariano Sánchez Tel.: 93 322 12 38 •••••••••••••••••••••••••••••••••• Suscripciones Tel: 91 304 87 64
Pocas cosas reflejan tan bien el progreso de la tecnología como los teléfonos móviles. móviles . En muy pocos años, han pasado de ser simples teléfonos a auténticas plataformas de ocio. Curiosamente, continuamos llamando “teléfono móvil” a un dispositivo que, ciertamente, algún día lo fue, pero no cabe duda de que hoy ese término ha quedado obsoleto. Los fabricantes de estos “teléfonos” inundan el mercado con nuevos modelos, las operadoras de telecomunicaciones nos abruman con agresivas campañas de publicidad y, todo ello, acaba en un consumo desmesurado de estos servicios. La última tecnología t ecnología que se ha incorporado a los dispositivos dispositi vos móviles es la que puede transformar nuestro terminal en una auténtica consola de videojuegos. Ciertamente, este tipo de productos van destinados a los consumidores más jóvenes. Según se desprende de los estudios realizados por las compañías del sector, 3 de cada 5 ciudadanos europeos de entre 15 y 35 años adquirieron algún contenido o servicio para ser consumido desde su teléfono móvil en el año 2004. De este consumo, los juegos Java para móviles representan el 11%, frente al 29% que representan otro tipo de contenidos, como por ejemplo las imágenes. De hecho, estos datos han sido respaldados por un estudio hecho por la consultora Screen Digest, en el que se afirma que el 80% de los ingresos derivados de los juegos y sus descargas provienen de Japón y Corea. En este sentido, queda claro que América y Europa representan un mercado relativamente virgen, y por lo tanto con muchas posibilidades en el naciente sector de los juegos en teléfonos móviles. Por este motivo hemos creído oportuno mostrar al lector, con un curso completísimo, cómo desarrollar juegos de calidad comercial para una de las plataformas con más cuota de mercado: Nokia.
Fax: 91 327 13 03
••••••••••••••••••••••••••••••••••• Impresión Ideas de Impresión ••••••••••••••••••••••••••••••••••• Distribución Motorpress Ibérica
SUMARIO
ACTUALIDAD 10 Windows
Distribución Mexico DIMSA - Angel Bosch Bosch [email protected] Distribución, números atrasados y suscripciones Renacimiento, 180. Col. San Juan Tlihuaca Azcapotzalco. 02400 México D.F. Distribución Argentina Capital Federal: Distrimachisa Interior: York Agency, Agency, S. A. Tel. (005411) 43 31 50 51 •••••••••••••••••••••••••••••••••• La revista Sólo Programadores no tiene por qué estar de acuerdo con las opiniones escritas por sus colaboradores en los artículos firmados. El editor prohibe expresamente la reproducción total o parcial de los contenidos de la revista sin su autorización escrita.
Depósito legal: M-26827-1994 PRINTED IN SPAIN COPYRIGHT COPYRIG HT 30-02-20 30-02-2005 05 P.V.P. 6,00 Euros Precio en Canarias, Ceuta y Melilla: 6,15 Euros
Asociación Española de Editoriales de Publicaciones Periódicas
Longhorn: La evolución Longhorn: evolución de .NET (I)
DISPOSITIVOS MÓVILES 16 Juegos
de calidad comercial en J2ME (I)
MIDDLEWARE 24 XAML
(II) 36 Desarrollo visual de IGUs Java
REDES 42 Sistemas
de Gestión de Contenidos (y II) 48 Servlets Filters (I)
DISEÑO 54 La
diferencia entre el éxito y el fracaso 58 Diseño multiplataforma multiplataforma para aplicacione aplicaciones s C++ (I) Y además… 04 Noticias 06 javaHispano: javaHispano: NetBeans
4.0, db4objects, db4objects, APIs Java Java y más 08 Canal Panda: Los sistemas móviles, un peligro para la seguridad corporativa 32 Contenido del CD-ROM 64 Preguntas y respuestas
NOTICIAS
MICROSOFT
Microsoft entra en la lucha contra el software espía
Microsoft ha anunciado recientemente la adquisición de GIANT Company Software, el proveedor de algunos de los mejores productos diseñados para impedir la instalación de spyware en los equipos, y la empresa que ha desarrollado diversas e innovadoras soluciones para garantizar la seguridad en Internet. Pero… ¿Qué es el spyware? ¿Por qué luchar contra él? El creciente interés (por parte de usuarios maliciosos y de compañías de ética dudosa) en conocer los hábitos de navegación de los internautas ha propiciado la proliferación del spyware. Se denomina spyware (o programa espía) a las aplicaciones diseñadas para conseguir datos de los usuarios sin que éstos se percaten ni de su presencia, ni de las acciones que llevan a cabo. Suelen llegar a los ordenadores a través de programas freeware, shareware, o demos de cualquier tipo que aparentemente no tienen ninguna peligrosidad. Que una descarga contenga o no spyware no depende tanto de si el archivo a descargar es fiable o no, sino de dónde se descarga. De hecho, puede darse el caso de que aplicaciones conocidas y libres de toda sospecha hayan sido manipuladas para contener
un programa espía. Esta manera de ocultarse en el interior de programas no sospechosos posibilita que se instalen en el PC, al mismo tiempo que el usuario instala la aplicación que acaba de descargar. Un spyware oculto en un sistema puede permitir elaborar el perfil de un usuario mostrando, por ejemplo, sus preferencias en cuanto a tipo de páginas web que visita, tiempo que navega, su equipo de fútbol favorito, etc. Estos y otros datos permiten identificar a cada internauta, sobre todo con propósitos comerciales. Microsoft, para poner solución a esta problemática, utilizará la tecnología y propiedad intelectual que aporta GIANT para proporcionar a los usuarios del sistema operativo Microsoft Windows unas nuevas herramientas para proteger sus sistemas frente a las amenazas que representan el spyware y otro software malicioso. Microsoft va a poner a disposición de sus clientes en los próximos días la versión beta de una herramienta basada en el AntiSpyware de GIANT para eliminar, proteger y detectar spyware. Esta próxima versión beta analizará el PC del usuario para localizar cualquier spyware u otro software malicioso, y eliminarlos posteriormente. La solución será configurable para bloquear la instalación en el sistema de spyware conocido o cualquier otro software malicioso. Esta herramienta estará disponible para el sistema operativo Microsoft Windows 2000 y versiones posteriores.
BEA SYSTEMS
BEA habilita la descarga de WebLogic 9.0 BEA Systems desveló hace unas semanas la última versión de BEA WebLogic Server 9.0. Su nombre… “Diablo”. Mejorada con importantes características, Diablo es la piedra angular de la recién lanzada solución BEA WebLogic Platform 9.0, la última generación de componentes de software integrado que está diseñada para conectar sistemas dispares y hacer rodar las aplicaciones sobre las que están construidos los negocios de las grandes compañías. Lo que hace único a Diablo es su capaSUN MICROSYSTEMS
Bankinter innova con J2ME Java continúa en su proceso de consolidación como la plataforma número uno para servicios inalámbricos de datos. Según fuentes de Sun, ya existen unos 300 modelos distintos de teléfonos móviles con Java integrado, fabricados por firmas como LG, Motorola, Nokia, Samsung, Sharp, Siemens o Sony Ericsson. Sun calcula que el 60 por ciento de todos los teléfonos móviles que se comercializan a escala global ya llevan la tecnología Java integrada. Asimismo, más de 90 operadores de comunicaciones móviles (entre los que figuran Telefónica Móviles y Vodafone) han conseguido incrementar su ARPU (ingresos medios por usuario) gracias a la implantaSOLO PROGRAMADORES nº 122
4
cidad para ayudar a las compañías a desplegar rápidamente un alto volumen de aplicaciones bajo Arquitecturas Orientadas a Servicios (SOA) con el mínimo impacto en su negocio. En línea con la tradicional trayectoria de WebLogic, Diablo soporta los últimos estándares de la industria como J2EE 1.4 y los últimos estándares de servicios web, ayudando a los desarrolladores a crear de forma rápida aplicaciones interoperables y portátiles. Diablo está disponible para su descarga en la dirección http://www.bea.com/diablo. ción de la tecnología Java. Actualmente, existe una gran cantidad de aplicaciones móviles basadas en Java disponibles para su descarga, que suponen un mercado valorado en unos 3.000 millones de dólares. Esta cifra podría llegar a 15.000 millones de dólares en 2007-2008, según las previsiones de Sun Microsystems. Prueba del buen rendimiento de Java en los terminarles móviles es el innovador servicio ofrecido recientemente por Bankinter denominado Broker Bankinter y basado enteramente en la plataforma J2ME. El nuevo servicio Broker Bankinter, único y pionero en el mercado español, permite a los usuarios la utilización del teléfono móvil como canal para realizar operaciones bursátiles en tiempo real. En una primera fase, el servicio cubre el área de servicios de broker, que incluye la consulta de mercados de valores a escala nacional e internacional (índices, valoraciones, alertas, etc.) y la gestión de carteras con consultas y ejecución de órdenes de compraventa a través del teclado del teléfono móvil. Sun Microsystems también ha aportado a este innovador proyecto los servicios de consultoría, la dirección del proyecto y el desarrollo de todas las aplicaciones J2ME, aspecto, este último, que se ha realizado siguiendo los estándares de la tecnología Java y bajo un exhaustivo control de calidad por parte de Bankinter. http://digital.revistasprofesionales.com
NOTICIAS
IBM
IBM cede 500 patentes a la comunidad Open Source Los desarrolladores de software libre podrán acceder libremente a tecnología IBM gracias a la cesión de 500 patentes por parte de la Compañía. IBM cree que se trata de la mayor cesión de patentes de la historia y representa un giro en el modo en el que la empresa gestiona su propiedad intelectual. La cesión es válida para todo individuo, comunidad o empresa que trabaje en el desarrollo de software o que utilice software de código abierto de acuerdo con la definición actual o futura de la iniciativa Open Source. EMC
Dell, EMC, Intel y Oracle se unen para facilitar el Grid Computing Para aquellos que no se hayan introducido en el concepto de Grid Computing, diremos que para solucionar la “incapacidad” de un superordenador a la hora de resolver un problema de alto nivel de computación, surgió el concepto de Computación Distribuida o Grid Computing, que consiste en dividir el problema en varios fragmentos y hacer así la computación en varios ordenadores organizados organizados y conectados a una infraestructura de telecomunicaciones distribuida. En este sentido, Dell, EMC, Intel y Oracle se han unido para desarrollar conjuntamente el proyecto MegaGrid, una iniciativa para desarrollar un modelo estándar de diseño e implantación de una infraestructura Grid Computing. Las cuatro compañías combinan sus principales tecnologías y recursos técnicos para ofrecer a sus clientes una solución corporativa Grid Computing integrada y completa que
El objetivo de IBM es que esta cesión se convierta en la base de un conjunto de patentes comunes de todo el sector de las tecnologías de la información. Aunque la propiedad intelectual es uno de los pilares de la innovación, los avances tecnológicos dependen a menudo de la capacidad para colaborar y compartir el conocimiento. La nueva política de propiedad intelectual de IBM está dirigida tanto a proteger los derechos sobre la invención como a acelerar la expansión de una infraestructura global basada en software de código abierto. Pese a este tipo de iniciativas, IBM sigue siendo, y con diferencia, la compañía con más patentes registradas en la Oficina de Patentes y Marcas de Estados Unidos. Gracias a una inversión en I+D de 5.000 dólares, IBM consiguió en 2004 3.248 patentes. supere las SMP (varias máquinas multiprocesador funcionando con memoria compartida) tradicionales y a menor coste. La fase inicial del proyecto MegaGrid se centra en el diseño, prueba y documentación de las mejores prácticas efectivas de la industria, posteriormente se definen unas infraestructuras Grid Computing efectivas, teniendo en consideración criterios de coste y rendimiento. Cada patrocinador del proyecto MegaGrid invierte en recursos técnicos para desarrollar,, probar y validar las mejores prácticas de Grid Computing: desarrollar Dell aporta una infraestructura completa de servidores en red compuesta por servidores PowerEdge basados en procesadores Intel. EMC incorpora una infraestructura completa de almacenamiento en red. Intel contribuye con su experiencia en la gestión de procesadores y servidores Intel, con herramientas de optimización y otros recursos que facilitan la integración del diseño. Oracle proporciona su infraestructura de tecnología Oracle 10g y alberga el centro de desarrollo para el proyecto MegaGrid en su Global IT Data Center. La meta del proyecto MegaGrid es permitir a grandes organizaciones de cualquier segmento vertical de la industria obtener ventajas de las soluciones de Grid Computing, permitiendo que éstas puedan ofrecer servicios bajo demanda y, por lo tanto, mejorar así los niveles de servicio.
mas de sobremesa, sistemas operativos, software de gestión, entornos de almacenamiento para misión crítica y aplicaciones para informática en red. Sun y la Universidad Rey Juan Carlos entablan Sun también cederá una licencia con fines didácticos de su software de una alianza tecnológica escritorio Java Desktop System, que podrá ser utilizado tanto por parte El Rector de la Universidad Rey Juan de los estudiantes como por parte del Carlos, Pedro González Trevijano personal docente y de administració administración n Sánchez y el director general de Sun de la entidad educativa. Esta solución Microsystems Ibérica, Adolfo Hernández, incluye el entorno de escritorio comhan firmado un acuerdo tecnológico de pleto, la suite de productividad ofimácolaboración que permite que la tica StarOffice 7, un innovador entorUniversidad use gratuitamente los prono de ventanas, el popular navegador ductos software de Sun para fines Mozilla y un sistema operativo Linux docentes y entornos de investigación. integrado, además de aplicaciones de El software cedido por Sun Microsystems correo electrónico, agenda y mensaa la Universidad Rey Juan Carlos incluye jería instantánea. servidores web y de directorio, servidores Además, como socio tecnológico de de aplicaciones e integración, aplicaciones la universidad, Sun colaborará con la de correo electrónico, calendario y cola- El Rector de la Universidad Rey Juan Carlos, Pedro institución en otros aspectos relaboración, desarrollo de aplicaciones, González Trevijano Sánchez y el director general de cionados con la mejora de la calidad seguridad en red, aplicaciones para siste- Sun Microsystems Ibérica, Adolfo Hernández en un en los estudios de dicha universidad. SUN MICROSYSTEMS
momento de la firma del acuerdo.
http://digital.revistasprofesionales.com
5
SOLO PROGRAMADORES nº 122
JAVAHISPANO
Actualidad Java de la mano de javaHispano eBay abandona Passport Passport, creado por Microsoft, y Liberty Alliance, iniciativa fundada por Sun que cuenta con el respaldado de más de 150 empresas y está soportada por Java, son dos sistemas de identificación globales de la web que pretenden conseguir el “Single Singn On” (SSO); ésto es, que una vez identificado un usuario éste no tenga que volver a introducir un par usuario/clave al entrar en otro portal. eBay fue uno de los primeros adoptantes de la propuesta de Microsoft. Sin embargo los cambios introducidos por la empresa de Redmond en la arquitectura de Passport (probablemente un intento de solucionar los agujeros de seguridad descubiertos recientemente), junto con el abandono de las tecnologías de Microsoft para basar los servicios de eBay en la plataforma J2EE, han llevado al gigante de las subastas a abandonar esta solución. El sistema Passport era una forma opcional no mayoritaria de acceder a eBay, y esta decisión sólo afectará a los usuarios que se identificaban mediante este sistema. eBay no es el primer gran servicio de la red que abandona la propuesta de Microsoft: Monster.com, portal de recursos humanos, también se despidió de Passport a finales del año pasado. Esto, sin duda, hará ganar más peso a la solución competidora de Passport: Liberty Alliance.
La FSF aclara los términos de la licencia LGPL La Free Software Foundation ha aclarado (http://www.gnu.org/licenses/lgpl-java.html) varias dudas acerca del uso de librerías LGPL desde Java. Según la FSF cuando un código no libre se liga con una librería LGPL (y esto ocurre desde el momento que importe cualquiera de sus clases o interfaces) el desarrollo debe permitir que los usuarios hagan reingeniería inversa para depurar problemas derivados del cambio de la versión actual de la librería librería por versiones futuras o modificaciones modificaciones de ésta. El desarrollo propietario no tiene obligación de distribuir el código fuente, ni de dar documentación acerca de él, pero sí de permitir la reingeniería inversa. Habitualmente las licencias comerciales tienen cláusulas que impiden esta práctica, por lo que es posible que actualmente haya proyectos comerciales que violen la licencia LGPL sin saberlo.
NetBeans 4.0 Siguiendo el itinerario previsto ya está disponible la versión 4.0 del IDE NetBeans. Una de las novedades más importantes es que el modelo del proyecto está completamente basado en Apache Ant, pudiendo compilar el proyecto externamente sin necesidad de emplear previamente ninguna opción del tipo “exportar a Ant”. Ant”. El soporte a la refactorización, al JDK 1.5 y al desarrollo de aplicaciones J2ME MIDP 2.0 y CLDC 1.1 son otras novedades interesantes. También hay mejoras en el desarrollo de aplicaciones web, aunque será la versión 4.1 (planeada para abril de este año) la que aportará un mayor cambio cualitativo en este área, ya que incorporará soporte para EJBs, validación de formularios, configuración de servicios y componentes web, así como un asistente para el despliegue de la aplicación. Por último cabe destacar la integración de NetBeans con JFluid, una herramienta de profiling libre desarrollada dentro de proyecto NetBeans. JFluid permite monitorizar el heap y la actividad del Garbage Collector, el consumo de CPU de la aplicación en conjunto o de un determinado fragmento de código y monitorizar la actividad de los Threads.
SOLO PROGRAMADORES nº 122
6
http://digital.revistasprofesionales.com
JAVAHISPANO
javaHispano
db4objects disponible bajo licencia libre db4o (http://www.db4o.com/) es una base de datos orientada a dispositivos empotrados con requerimientos de tiempo real. db4o permite almacenar de un modo sencillo y eficiente objetos nativos Java y .NET; sus creadores aseguran que es la primera base de datos del mercado que permite almacenar objetos de ambas plataformas. Recientemente db4o ha pasado a distribuirse bajo una doble licencia, libre y comercial, prueba de la apuesta de la compañía por el Software Libre. A modo de curiosidad, los coches de alta gama de BMW o el tren español AVE emplean esta base de datos, lo cual es una excelente prueba de la validez de esta solución.
Repositorios on-line de APIs Java Recientemente han surgido dos iniciativas que pretenden agrupar en un mismo portal un con junto de APIs Java, creando de este modo un punto de acceso único a todas las APIs recopiladas, y ofreciendo un valor añadido, como herramientas de búsqueda, agregar notas a la documentación, proponer preguntas y respuestas, añadir código de ejemplo… El pionero fue JDocs (http://www.jdocs.com), una iniciativa de javalobby.org. En él se recopilan más de 130 APIs oficiales de diferentes proyectos, como las de los kits de desarrollo de Sun, commons-lang, commons-collections, Eclipse, Lucene, JGoodies… Un poco más tarde apareció JSourcery (http://www.jsourcery.com), que incluye por lo de ahora las APIs de todos los proyectos de Apache, el cliente de Bittorrent Azureus, y la del JDK 1.4.2. El valor añadido de JSourcery sobre JDocs es que al navegar por el API podemos acceder directamente a una versión HTML del código fuente de cada clase, método o constructor.
JLayer, accediendo a MP3 desde Java JLayer es una librería libre 100% Java que permite tanto convertir audio a MP3 como reproducir archivos que se encuentren en el segundo formato. La librería tiene dos versiones; por un lado JLayer, versión destinada a aplicaciones de escritorio de la cual está disponible una versión estable. JLayer ha sido testado con el JDK 5.0, y es muy eficiente. Por otro lado está JLayerME-CDC que, como podemos deducir de su nombre, está orientado al desarrollo de aplicaciones J2ME. Por ahora no hay una versión estable de JLayerME-CDC, aunque la versión actual ya es usable. La licencia es, en ambos casos, LGPL.
JCrawler 1.0
JCrawler es una herramienta para testar aplicaciones web que permite realizar test de estrés. La herramienta se configura indicando un conjunto de URLs de partida así como una carga a generar
sobre a aplicación web, medida en hits por segundo. JCrawler empieza a navegar, partiendo de las URLs base, dirigido por una serie de patrones de navegación típicos de los seres humanos. JCrawler mantiene una carga constante sobre la aplicación, y soporta redirects y cookies; esto, junto con el empleo de patrones de navegación basados en comportamientos humanos, hace los test altamente realistas. Su licencia es CPL, es decir, es libre, y ha sido incluido en el CD-ROM que acompaña a la revista.
Sobre el autor
Abraham Otero ([email protected]) es responsable de calidad y miembro de la junta de javaHispano. http://digital.revistasprofesionales.com
7
SOLO PROGRAMADORES nº 122
CANAL PANDA
Los sistemas móviles, un peligro para la seguridad corporativa FERNANDO DE LA CUADRA
Las ventajas que ofrece el uso de equipos móviles, como ordenadores portátiles o teléfonos de última generación son indiscutibles, sin embargo llevan consigo unos problemas de seguridad que pueden convertirlos en una amenaza para nuestra red corporativa. En los últimos años, el nivel de seguridad de las empresas ha mejorado mucho. Cada vez se vigila más la conexión a Internet, la existencia de herramientas de seguridad en las máquinas instaladas en la red, la formación de los usuarios, etc. Sin embargo, al mismo tiempo que se avanza en este sentido, nos encontramos que la tecnología también lo hace pero en una dirección que puede, sin duda, entrar en conflicto con las políticas de seguridad clásicas: la movilidad. Hoy en día se considera cada vez más la necesidad de que muchos de los empleados en las empresas dispongan de equipos informáticos móviles, desde ordenadores portátiles a teléfonos de última generación. Todos estos equipos están durante muchos días fuera del entorno “seguro” de la oficina, sin que la política de seguridad establecida en la compañía pueda ampararles ante posibles ataques. A un comercial desplazado durante un tiempo fuera de la oficina lo que más suele preocuparle es cómo recibir su correo electrónico en el ordenador conectado a Internet en la habitación del SOLO PROGRAMADORES nº 122
8
hotel. Acostumbrado al entorno de la oficina, los niveles de seguridad quedan, generalmente, en segundo plano. Las consecuencias de su despreocupación pueden ser graves, ya que la ausencia de un firewall en el portátil permite que los hackers puedan hacer del PC un terreno conquistado, y un antivirus sin actualizar puede ser la causa de que el ordenador se convierta en un zombi. Los problemas que pueden plantearse son muchos, ya que en este tipo de ordenadores la información almacenada suele ser estratégica: proyectos, ofertas comerciales, bases de datos de clientes, etc. Se trata de material de gran valor, que no debe caer en manos de la competencia ni en las de un hacker con pocos escrúpulos. A todo esto hay que añadir un elemento más que sin duda debería preocupar a los administradores de las redes corporativas: tarde o temprano ese ordenador volverá a conectarse a la red corporativa, con todo aquello que haya “recogido” de Internet en el tiempo que estuvo ausente. Las herramientas de hacking, los troyanos, el spyware... todo ello podrá ser volcado directamente a la red si no se toman las medidas oportunas. Sin duda existirán herramientas que eviten la propagación de este tipo de códigos en la empresa, pero hemos dejado una puerta abierta a una serie de elementos sin control. Otro problema que suele pasar desapercibido es la conexión de sistemas ajenos a la empresa. Cada vez más servicios se subcontratan dentro de las grandes corporaciones, haciendo que mucho personal externo se conecte a la red con sus ordenadores portátiles para desempeñar sus tareas como si de un empleado más se tratara. Estos ordenadores suelen tener instalados ya algunos sistemas de seguridad, desde antivirus a firewalls, pero... ¿son suficientemente seguros como para que cumplan las políticas de seguridad? Los administradores de red tienen bastantes problemas ya en su trabajo diario como para ir verificando uno a uno los ordenadores de cada uno de los subcontratados, situación que además puede resultar embarazosa ya que las norhttp://digital.revistasprofesionales.com
CANAL PANDA
Los sistemas móviles, un peligro para la seguridad corporativa
mas sobre la intimidad de los ordenadores de los trabajadores pueden ser muy distintas en cada compañía. Todo esto desemboca en la necesidad de un control específico sobre las conexiones de sistemas móviles a la red corporativa. Previo a la posibilidad de que un usuario rompa las políticas de seguridad, debe llevarse un control exhaustivo y automático de la situación de la seguridad de los ordenadores portátiles de personal externo, o de la empresa pero que hayan estado desplazados. Cuando un sistema se conecta a la red corporativa, hay que asegurarse de que el equipo es seguro, entendiendo como seguro que cumple el nivel de seguridad indicado por el administrador de la red. De esta forma, se impide la entrada de malware en la empresa a través de estas conexiones. En función del resultado del
chequeo realizado deberá permitirse o denegarse el acceso, o incluso establecer un nivel de seguridad en el equipo que se adapte a los requerimientos corporativos de seguridad. Sin embargo, en muchas ocasiones la conexión de equipos externos está ya prevista, por lo que se redirige hacia determinados segmentos de red o se establecen automáticamente permisos y restricciones, sin que llegue a producirse un conflicto de intereses entre políticas de seguridad de distintas empresas. Como vemos, la conexión de equipos externos a la red fija de una empresa no está exenta de problemas, y debe controlarse con mucho cuidado. Las herramientas de protección de estos equipos van a convertirse, en un espacio muy corto de tiempo, en un elemento básico a la hora de implementar la política de seguridad empresarial.
Es recomendable comprobar los niveles de seguridad de un equipo ajeno antes de conectarlo a nuestra red
Sobre el autor Fernando de la Cuadra ([email protected]) es editor técnico internacional de Panda Software (http://www.pandasoftware.com).
Seguridad informática para empresas y particulares Autores: Gonzalo Álvarez Marañón, Pedro Pablo
Pérez García Editorial: Mc Graw Hill Páginas: 440 Precio aproximado: 30 Euros ISBN: 84-481-4008-7 Con la colaboración de Panda Software Mientras que la práctica totalidad de libros sobre seguridad informática existentes en el mercado abordan el tema desde un lenguaje técnico, orientado principalmente a administradores de red o programadores, Seguridad informática para empresas y particulares está dirigido al profe-
sional liberal y la PYME. Por eso, haciendo uso de herramientas que vienen suministradas con el propio sistema operativo o que son en su mayoría gratuitas, con esta obra se puede aprender desde cuáles son las medidas de seguridad a implantar para cumplir con las exigencias http://digital.revistasprofesionales.com
legales de la LOPD y la LSSICE hasta cómo detectar una intrusión en el sistema, pasando por temas como el anonimato y la privacidad, la protección de redes y equipos o las auditorías y los análisis forenses. Aunque las publicaciones sobre seguridad son abundantes, el lector encontrará en Seguridad informática para empresas y particulares una obra de nivel intermedio pensada desde el primer momento para su aplicación en empresas medianas y pequeñas que no necesitan complejas arquitecturas de seguridad, pero que no por ello deben descuidarla. Esta obra, escrita en castellano, se adecua perfectamente al entorno de las PYME españolas, cuya realidad conocen los autores. Desde cómo protegerse del malware hasta qué hacer con el spam, todos los problemas cotidianos relacionados con el valor de la información son abordados en este libro cuyo objetivo es que, con muy poco esfuerzo, se pueda alcanzar un nivel de seguridad razonable. 9
SOLO PROGRAMADORES nº 122
ACTUALIDAD
Windows Longhorn: La evolución de .NET (I) MARINO POSADAS (MVP Visual Developer – Visual C#)
Seguro que el lector más curioso se estará preguntando qué novedades traerá consigo la nueva versión de Windows. En esta serie de artículos analizaremos las novedades al respecto, que no son pocas, desde el punto de vista del usuario pero también desde el punto de vista del desarrollador. Introducción El lector, probablemente, ya habrá escuchado rumores sobre una nueva versión del sistema operativo de Microsoft. En realidad, sobre toda una revolución en los sistemas operativos de la compañía de Redmond, que, por primera vez, aborda la construcción de algo tan complejo partiendo desde cero, y con la intención de que sea la continuación natural a sus esfuerzos por conseguir una plataforma administrada (cuyo código ejecutable es supervisado) y segura. Y todo esto, dentro de unos planes tan ambiciosos que, a mediados del año pasado y, con objeto de
El escritorio de Longhorn. SOLO PROGRAMADORES nº 122
10
garantizar su salida al mercado en tiempo y forma, provocaban el anuncio por parte Jim Alchin, Vicepresidente del Grupo de Plataformas de Microsoft, de que una parte del sistema (el subsistema llamado WinFS) no vería la luz en verano de 2006, fecha para la que está prevista la salida oficial, sino de forma parcial (ésto es, lo que afecta únicamente al equipo local) y que (en ese momento) se distribuirá como una beta opcionalmente instalable, que posiblemente estará lista en su versión final a comienzos de 2007. Hablaremos de todo esto, y de cómo se estructura y fundamenta el nuevo sistema (totalmente construido en .NET) y totalmente reescrito, cosa que no sucedía desde Windows 3.0. Y es que, cuando Microsoft abordó la construcción de la plataforma .NET, no se trataba exclusivamente de una nueva forma de construir aplicaciones Windows, sino del abandono del modelo COM/DCOM/COM+ en favor de un nuevo modelo, que debía conllevar, inevitablemente, cambios profundos en todos los sistemas operativos (y en el resto de aplicaciones) que se construyesen a partir de ese momento. Veamos algunos de los porqués de tales cambios.
El porqué de un cambio tan radical La pregunta crucial es: ¿Cuál fue el “leit motiv” que obligó a Microsoft a abandonar un trabajo mantenido desde finales de los 80 por algo totalmente nuevo? Quizá la respuesta se encuentre en la seguridad y (en buena medida) en las nuevas arquitecturas distribuidas (especialmente SOA: Services Oriented Architecture). Pero lo que ahora vemos, no es sino la consecuencia de unos cambios que comenzaron en 1996, cuando Bill Gates decidió dejar la gestión administrativa en manos de Steve Ballmer, y retomar sus orígenes, como arquitecto de software. En ese momento, comienza también la creación (que no el diseño, que había empezado ya) de lo que podía ser una nueva plataforma que compitiese con J2EE, aprendiendo lo bueno de ésta, mejorando rendimiento y productividad, e integrando lo que (ya en ese momento) se preveía como nuevo estándar universal: XML y los servicios web. Como una de las primeras decisiones, se aborda el “fichaje” de Anders Hejlsberg (véase el cuadro http://digital.revistasprofesionales.com
ACTUALIDAD
Windows Longhorn: La evolución de .NET (I)
Anders Hejlsberg Hejlsberg es Distinguished Engineer en Microsoft y pasó 13 años en Borland como Arquitecto Jefe de Plataformas, en los que dirigió (entre otros proyectos notables) la creación de Turbo Pascal y Delphi. En el campo de los lenguajes su último trabajo fue el diseño e implementación del lenguaje C# (junto a Scott Wiltamuth y Peter Golde). “Anders Hejlsberg”). Hejlsberg abandona Borland tras 13 fructíferos años (en los que crea Turbo Pascal y Delphi, entre otros productos estrella) con una promesa de libertad absoluta, la posibilidad de realizar todos los fichajes posteriores que fuese necesario, y la firme voluntad de crear una plataforma nueva que sustituyese a la ya vetusta COM (ActiveX, para los amigos). Pero, además, la nueva plataforma debía de ser estándar. Microsoft quería demostrar que buena parte de las críticas recibidas en el pasado por esta causa, se habían debido a razones comerciales, simplemente, y nunca a razones técnicas o de incapacidad de crear software que cumpliese con determinada normativa. Así, desde el inicio, se implica directamente en la creación del estándar XML. Para ello, incorpora a sus filas a una de las lumbreras mundiales en lenguajes de marcas, el francés Jean Paoli, quien junto a Tim Bray, representando a la línea Netscape-Sun-Oracle y Sperberg-McQueen de la Universidad de Chicago, en representación del mundo académico, conseguían a finales de 1999, la aprobación definitiva de lo que hoy es el nuevo paradigma de la transferencia de información: sustituir las marcas binarias utilizadas hasta el momento, por las marcas (<,>) de texto plano, de forma que todos los ordenadores hablen un mismo lenguaje entre sí, independientemente de la plataforma. De hecho, el sistema común de tipos (Common Type System) de .NET tiene mucho de inspiración en lo que (poco más adelante) se convertiría en el lenguaje de metadatos de XML: XML-Schemas. Con tan buenos fundamentos y algún otro fichaje no menos importante, (aunque quizá menos espectacular) que comentamos más adelante, continúa el diseño de la plataforma y (al tiempo) la creación de un nuevo lenguaje que aprovechará todo lo nuevo que ésta pudiera aportar, dentro de una sintaxis elegante, atractiva y poderosa. De hecho, durante el contencioso contra Sun Microsystems salió a colación un famoso e-mail de Hejlsberg, dirigido a Bill Gates, y otros arquitectos, en el que se comentaba: “ya tenemos casi perfilado el cuerpo de lo que va a ser el nuevo lenguaje. A falta de un nombre mejor, vamos a llamarlo J++”. Y previamente, añadía: “hemos conseguido un adecuado maridaje entre la simplicidad sintáctica de Java y la potencia de http://digital.revistasprofesionales.com
C++”. El lector puede ver este e-mail en http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2133983,00.html. Hasta ese punto, habían sido C/C++ y Java las fuentes de inspiración para la creación de lo que ahora conocemos como C# (por cierto, lo del ‘#’, es debido a que simboliza 4 signos ‘+’, como una continuación del trabajo de Bjarne Stroustrup en el 67. Además, según nos confesaba en una entrevista posterior (la entrevista se realizó en el Tech-Ed de 2001 en Barcelona, y se encuentra publicada en la sección de artículos de http://www.elavefenix.net), otros lenguajes teóricos sirvieron en ocasiones de fundamento, como es el caso de Haskell u Oberon).
Los delegados y la seguridad Pero, no nos desviemos de nuestro camino hacia Longhorn. Antes de poder crear algo tan ambicioso sobre lo que fundamentar incluso un nuevo sistema operativo, había problemas graves que resolver. Al menos, así lo veía Hejlsberg, quien, en la citada conversación veía el problema de la siguiente forma (resumo la parte que es fundamental aquí para la compresión): “El problema de los errores del sistema operativo ha sido una de las cuestiones críticas a dilucidar a la hora de la construcción de la nueva plataforma. Más del 90% es a causa de los drivers y lo único que podemos hacer con eso, es garantizar un esfuerzo por nuestra parte y las compañías productoras de hardware en ese sentido. Pero, aún así, existe casi un 10% que es debido a nuestro software. Los análisis que hicimos de las pantallas azules (las llamadas “Blue Screens of Death”) arrojaban unos resultados sorprendentes. Casi la totalidad se debe únicamente a dos problemas: punteros a función perdidos y problemas de casting (conversión de tipos de datos). Por eso se me ocurrió el concepto de delegado, que, no sólo garantiza la presencia de las funciones receptoras de una llamada, (evitando el problema de los punteros a función), sino que obliga a que cualquier destinatario de esa llamada a función tenga la misma signatura que el delegado (en tiempo de compilación), terminando definitivamente con los problemas de casting” . Esta ejecución administrada supone, por tanto, que los errores pueden ser siempre
interceptados. Además, el sistema de tipos es común a todos los lenguajes (CTS), y los ejecutables no dependen más que de sí mismos para la instalación y distribución, haciendo de la plataforma el marco ideal para el nuevo sistema. Por si esto fuera poco, en un mundo de arquitecturas distribuidas, el soporte nativo de XML y la facilidad de producción y consumo de servicios web, ofrecen un valor añadido que resulta crítico en el nuevo subsistema de comunicaciones que el sistema incluye (de nombre clave Indigo). Como ya sabe el lector, .NET apareció hace ya 3 años. En el camino, otros personajes conocidos del mundo del desarrollo han sentido el atractivo de esta nueva plataforma (y también de los beneficios económicos de la empresa que lo promociona), incorporándose a distintas áreas del desarrollo de .NET y Longhorn: Don Box (autor del estándar XML-Schemas), Stan Lippman (co-autor junto a Stroustrup del lenguaje C++), Peter Drayton (especialista en CLR), Yousef Khalidi (arquitecto principal de Solaris 9 y Cluster 3.0, de Sun Microsystems) y más recientemente, Blake Stone (arquitecto de JBuilder, de Borland), son algunos de los más significativos. Estas son (entonces) algunas de las principales causas y también de los principales protagonistas de la historia. Repasemos ahora la historia en sí.
Las bases arquitectónicas de Longhorn Con todo esto por delante, y una nueva versión de la plataforma .NET (ahora se encuentra en la versión 2.0), comenzó el diseño del nuevo sistema con unos supuestos muy ambiciosos. Para comenzar, se pretende que Longhorn sea instalable en tantos equipos como sea posible (aún usando un grupo funcional reducido). Para ello, se han firmado acuerdos de colaboración con los fabricantes de hardware, para intentar extender lo máximo posible la Lista de Compatibilidad de Hardware (HCL), y garantizar (al menos, así se ha dicho), que incluso un Pentium II con 16 MB de Ram pueda ser el equipo de destino. De hecho nuevos elementos de la interfaz de usuario como el denominado “Mi Hardware”, darán un acceso y posibilidad de configuración sin precedentes al hardware instalado en el equipo.
11
SOLO PROGRAMADORES nº 122
ACTUALIDAD
A todo este conjunto de subsistemas constituyentes de lo que será la nueva API de Longhorn, se le denomina WinFX, y permitirá la ejecución de aplicaciones por compatibilidad, tan atrás como hasta Win16. Y otra característica notable: tanto Avalon como Indigo, serán instalables “en retrospectiva”, esto es, se podrán implantar en sistemas Windows XP y Windows 2003. (de hecho, ya existe desde diciembre del año pasado una versión “preview” de WinFX disponible para pruebas de desarrolladores, y que utilizaremos para mostrar algunas características de funcionamiento en el próximo número).
El nuevo modelo de desarrollo de aplicaciones y WinFX
El objetivo de Longhorn no sólo es soportar el mayor hardware posible, sino también ofrecer opciones muy avanzadas de configuración del mismo.
En el otro lado de la balanza, el objetivo es que el sistema pueda aprovechar al máximo las altas prestaciones de los equipos actuales, y que esté preparado para aprovechar todo el hardware disponible, ofreciendo al usuario lo que se denomina una “nueva experiencia de usuario”, cuya riqueza de posibilidades estará condicionada por la potencia del procesador y de la tar jeta gráfica que poseamos. Así, si disponemos de una tarjera de 32MB y AGP4 podremos acceder a lo que ellos denominan AERO. Un sistema de dibujo de ventanas basado en DirectX con una impresionante gama de posibilidades. Si (además) llegamos o sobrepasamos los 64MB, tendremos acceso a AERO-GLASS, la experiencia más rica de usuario implantada hasta la fecha, con ventanas que se sitúan en el espacio y no en el plano (y que pueden girar y moverse libremente por él), diferentes grados de transparencias para facilitar la lectura, y muchas otras características, que ya hemos podido ver en las primeras alphas del producto, si bien en un estado muy embrionario. Todas estas novedades no son más que una parte de los cuatro nuevos subsistemas que conforman el núcleo central de Longhorn (véase la figura con los subsistemas de Longhorn): Avalon: subsistema gráfico. Basado en DirectX. Basados en él están las antes citadas experiencias de usuario: Aero y Aero-Glass. El lector puede profundizar sobre Avalon y sus nuevas posibilidades en la serie de artículos sobre XAML que se inició el mes anterior.
SOLO PROGRAMADORES nº 122
12
Indigo: subsistema de comunicaciones, basado en la arquitectura SOA (también llamada arquitectura orientada a servicios web). WinFS (Windows Future Storage): subsistema de almacenamiento. Palladium: subsistema de seguridad. Diseñado de acuerdo a la iniciativa Trustworthy Computing (Informática Fiable), a la que pertenecen en la actualidad, IBM, HP, Oracle, Sun, Microsoft, etc. Otros subsistemas asociados como las ayudas, la distribución instantánea de aplicaciones (one-touch deployment), y un gran paquete de mejoras e innovaciones.
Pero antes de que vayamos al código, vamos a describir, de cara al usuario avanzado, toda esa arquitectura y las implicaciones que va a suponer, de forma que dispongamos de una imagen más o menos plástica de tales cambios. Con los anteriores supuestos, el abordaje del sistema se basa en un cambio completo de paradigma, que los “evangelistas” de Microsoft han definido como “Programa una vez y distribuye como y cuando quieras”. Así, se trata de un modelo totalmente orientado a objetos, donde un objeto Application suministra toda la infraestructura de ejecución y cuya “metáfora de programación”, (por seguir su propia terminología) es similar a la de ASP.NET. Esto es, la interfaz de usuario de una aplicación (si es que dispone de tal cosa) se escribe en un lenguaje de marcas tipo XML, como el lector que está siguiendo la serie sobre XAML muy
Esquema de los nuevos subsistemas de Longhorn.
http://digital.revistasprofesionales.com
ACTUALIDAD
Windows Longhorn: La evolución de .NET (I)
bien sabe: en concreto es una versión propia del estándar XForms, llamada XAML, que sirve para describir elementos de IU en términos de elementos de marcado y que es compilada antes de su ejecución. La parte funcional del programa, se codifica en cualquiera de los lenguajes disponibles para la plataforma .NET (unos 30 en estos momentos, si bien Visual Studio .NET 2005 y la siguiente versión, de nombre clave Orcas, sólo incluirán de forma predeterminada C++, C#, Visual Basic .NET y J#). Se comprende ahora el porqué de la aparición del concepto de clases parciales en la próxima versión de Visual Studio 2005, como parte fundamental del nuevo modelo. Se trata de obtener de una única arquitectura programable, lo mejor de Windows y de la web. Existe pues, una clara separación entre presentación y funcionalidad, similar a la de ASP.NET (o incluso a la de los ficheros XML y las hojas de estilo extendidas (XSL), usadas para su interpretación visual). De hecho la interpretación gráfica de un fichero XAML es directamente una ventana, incluso si no existe código fuente asociado con él. De esta forma el aprovechamiento de las capacidades de DirectX en el dibujo y el pintado en VSYNC con doble buffer, permitirá a los marcos de las ventanas aparecer en parte sombreadas y en parte translúcidas, haciendo el texto más fácil de leer, y dispondremos, igualmente, de transparencias y animaciones que faciliten y potencien el uso del sistema. Y todo esto, con visualizaciones de una calidad más moderna y más alta que la utilizada hasta ahora (dependiendo de la potencia de la tarjeta gráfica). Si sólo disponemos de una tarjeta básica, (menor de 32MB de memoria), tendremos un sistema gráfico tipo Windows 2000. Estas novedades en la arquitectura, implican la construcción de tipos de aplicaciones totalmente nuevas, yendo desde las tradicionales, compiladas, a aquellas que se descargan por Internet y se ejecutan en el cliente sin dejar huella (una vez concluida su ejecución), u otras que se actualizan automáticamente, e incluso aplicaciones compiladas de tipo navegador que se descargan y ejecutan progresivamente.
Palladium y la seguridad ¿Y qué hay de la seguridad? Palladium es el nombre clave para un nuevo sistema de seguridad basado en gran parte en el propio hardware. Microsoft ha llegado a acuerdos con los principales fabricantes (Intel y AMD) para que http://digital.revistasprofesionales.com
La seguridad es uno de los aspectos que más debe cuidar un sistema operativo.
los nuevos chips lleven integradas características de seguridad que Longhorn pueda aprovechar de forma nativa. Son micros que incorporarán esas funcionalidades sin detrimento de la ejecución o el rendimiento y que darán origen a toda una nueva generación de software que aprovechará tales características, aunque los chips y el software básico que lo utiliza permitirá que algunas de esas novedades sean utilizadas por equipos antiguos. Palladium tiene como algunos de sus objetivos más destacados, la posibilidad de informar acerca de con quién se está tratando “on-line”, pudiendo limitar (de forma configurable) lo que llega de Internet y lo que ejecuta cada PC. La información se verificará antes de que se pueda acceder a ella. Se protegerán los datos mediante encriptación y el sistema podrá mantener la integridad de los documentos para que no puedan ser alterados sin el consentimiento del usuario. De igual forma, no se podrán ejecutar programas no autorizados, evitando que los virus afecten al funcionamiento. Respecto al spam, será evitado antes de que llegue a la bandeja de entrada. El correo no solicitado que se quiera recibir sólo será permitido si sigue una serie de credenciales que coincidan con nuestros parámetros de usuario previamente definidos. El sistema aplica un nuevo motor de inteligencia artificial actualmente terminado y en fase de pruebas en Microsoft Research. En el otro sentido, también se controlará lo que sale del PC usando agentes de software que garantizarán que los datos sólo alcanzan
al usuario adecuado. Además, usando la tecnología DRM (Administración de Derechos Digitales) Palladium evitará la distribución de música, películas, y otro tipo de propiedades intelectuales a través de Internet (ignoramos a la fecha, si esta característica se podrá desinstalar…) y las productoras de películas y la industria de la música podrán usar esta tecnología para permitir a sus clientes usar los derechos contra el copiado de CDs o películas, por ejemplo. Se asegura que Palladium podrá proteger el correo electrónico de tal forma que no podrá ser reenviado o copiado a otra gente sin permiso. También se podrán crear documentos de texto sólo accesibles en fechas determinadas u otras circunstancias a establecer.
Avalon y algunas consecuencias adicionales ¿Y qué otras consecuencias (meramente operativas, no de programación) nos vamos a encontrar? Pues, depende del subsistema que analicemos. Pero en cada uno de ellos un montón, según parece. Gracias a Avalon, dispondremos de las siguientes características: El menú inicio se podrá convertir en una barra lateral realizada en XML que ocupará la posición lateral de la pantalla. Se podrá personalizar al igual que la lista de programas del menú inicio. Se mejorarán “Mis Documentos”, “Mis imágenes” y “Mi música”, con despliegues de información mejorados que usarán las últimas innovaciones multimedia.
13
SOLO PROGRAMADORES nº 122
ACTUALIDAD
archivada físicamente. El cómo los usuarios y aplicaciones organizan esta información, también está separada de cómo se almacena en disco. Los datos pueden ser organizados usando una estructura conectada de carpetas, nombres de espacios para datos, propiedades, tablas o identificadores invariantes o relacionales. Para beneficiar a los desarrolladores, WinFS soporta servicios de datos unificados para todas las aplicaciones de usuario final. Algunos los más notables, son los Servicios Integrados de Datos, como la sincronización, notificación, el almacenamiento unificado y un modelo común de seguridad, así como su integración con otras tecnologías como redes punto a punto (P2P) y servicios de directorio.
Indigo y las comunicaciones Avalon mejora notablemente la interfaz gráfica. En esta figura podemos ver el nuevo aspecto de “Mis imágenes”.
“Mis Imágenes” incluirá nuevas opciones para crear un álbum de fotos, descargar vídeos de una cámara digital, o grabar un DVD. Tanto DVD-R/RW como DVD+R/RW estarán soportados. También se incluirá Windows Movie Maker 2, que será rehecho completamente en Longhorn e incluirá varias características nuevas. Esta nueva versión estará basada en Microsoft Producer, un añadido de PowerPoint 2003. Otra mejora será la del Soporte de Pantalla Inteligente. Una versión simplificada de éste ya fue incorporada en el Service Pack 1 de Windows XP. Esto, permitirá que dos usuarios puedan iniciar sesión en el mismo sistema, uno empleando la primera pantalla y el otro la secundaria. Se esperan asimismo mejoras de velocidad en este sistema.
WinFS y las implicaciones Aunque no es cierto que WinFS no vaya a estar presente en absoluto en la versión inicial de Longhorn, tal y como se ha comentado por ahí, sí que lo es que no lo va a estar en toda su extensión, tal y como se pensó en un principio, y que esa funcionalidad será suministrada en forma de beta instalable, hasta que aparezca completo en su versión final en 2007. Tal y como se había concebido, Windows Future Storage reúne lo mejor de dos entornos de trabajo con datos, los sistemas de ficheros
SOLO PROGRAMADORES nº 122
14
(buenos en streaming) y las bases de datos (buenas en indexación y búsquedas). WinFS mantiene una base de datos estructurada con las propiedades de los ficheros almacenados en el SO, y utiliza NTFS (que ahora es transaccional) para almacenar los ficheros. WinFS soporta un indexado eficiente del contenido del fichero, con lo cual se enriquece cualquier tipo de búsqueda que sería tremendamente difícil en otro sistema de archivos (pudiendo buscar incluso, otros objetos del sistema, como por ejemplo, contactos, o correos). En WinFS es sencillo buscar ficheros basados en su contenido y otros criterios como el nombre del archivo, titulo, autor o fecha de publicación. Aunque, en principio, WinFS se pensó que podría ser usado con máquinas que ejecuten versiones anteriores de Windows con tal que su sistema de archivos sea NTFS, este punto no está del todo claro al día de la fecha. Lo que sí es cierto, es que los ficheros almacenados en WinFS pueden ser accedidos usando las nuevas APIs de WinFS o bien el actual Win32 API. Como complemento, las actuales aplicaciones Win32, podrán acceder a los ficheros almacenados en WinFS con ninguna o con una muy pequeña modificación. Los ficheros pueden ser almacenados con WinFS o con NTFS, pero WinFS es mucho más eficiente que NTFS para organizar, buscar y compartir ficheros. WinFS es particularmente potente para almacenar datos que necesitan ser buscados o compartidos por usuarios y aplicaciones, y en WinFS, la información se estructura de forma distinta e independientemente de cómo esté
Por último concluimos esta primera revisión de Longhorn con unas pinceladas sobre el subsistema de comunicaciones, Indigo. Aunque iremos más en detalle y con algo de código fuente en el próximo número, hay que citar que Indigo pretende unificar todos los servicios del sistema operativo, permitiendo la interoperatividad con los actuales, y dotando al usuario de un API de acceso común. Así mismo, suministrará un sistema de mensajería de alto rendimiento, con independencia de los transportes y canales, y un modelo de servicios orientado al atributo (al tipo de información que se transporta). Por otra parte, sus contenedores podrán ser diversos, variando desde aplicaciones ASP.NET u otros servicios, hasta clásicos EXEs, componentes COM+, o incluso, los nuevos “containers” que definirá el modelo de aplicaciones de Longhorn. En suma, se trata de un nuevo diseño basado en el modelo de Arquitectura Orientada a Servicios (SOA), capaz de interactuar con casi todo lo existente, y que, al igual que sucederá con Avalon, podrá estar disponible también para las plataformas Windows 2003 y Windows XP Service Pack 2.
Conclusiones En fin, un montón de novedades, algunas de ellas en fase de depuración y otras bastante avanzadas que esperamos poder ver este verano cuando aparezca la primera beta oficial del producto. Hasta entonces, haremos una revisión de lo que supone Longhorn desde el punto de vista del desarrollador en el próximo número de Sólo Programadores , basándonos en las versiones “preview” disponibles, tanto del producto en sí, como del SDK de WinFX. http://digital.revistasprofesionales.com
DISPOSITIVOS MÓVILES
Juegos de calidad comercial en J2ME (I) ALBERTO GUTIÉRREZ MARTÍNEZ FRANCISCO JOSÉ GA RCÍA PEÑALVO (Profesor titular del departamento de Informática y Automática de la Universidad de Salamanca)
En los números anteriores de Sólo Programadores se presentaron las bases para el desarrollo de un videojuego con J2ME. Sin embargo, con esta serie de artículos queremos ir más allá. Nuestro objetivo será aprender el API de Nokia para poder desarrollar juegos de auténtica calidad comercial específicos para este tipo de terminales. Introducción
Con el API de Nokia ganaremos un 30% de pantalla que se desperdicia si sólo programamos con MIDP 1.0 SOLO PROGRAMADORES nº 122
16
En esta serie de cinco artículos vamos a conocer las limitaciones de la primera versión del perfil de programación de terminales móviles con Java, es decir, MIDP (Mobile Information Device Profile) versión 1.0, J2ME (Java 2 Micro Edition) y aprender a superarlas con APIs (Application Programming Interfaces) propietarias, con especial atención a la de Nokia. Conoceremos, además, los problemas de programar para un teléfono real, para lo que examinaremos en profundidad las características de varios terminales de Nokia. En los dos últimos artículos de la serie configuraremos un IDE gratuito para trabajar con J2ME y programaremos un “matamarcianos” clásico a pantalla completa con sonido digital. Con todo ello habremos aprendido las técnicas que usan los juegos de última generación para sacar el máximo partido a nuestros móviles. Como requisitos previos se supone que el lector tiene unos conocimientos básicos de J2ME y tiene instalado todo lo necesario para poder compilar un MIDlet (nombre que se le da a las aplicaciones desarrolladas con MIDP). Antes de empezar a desarrollar juegos Java de calidad comercial, es fundamental conocer dónde enmarcaremos dicha tecnología. Esta serie de artículos estará centrada a los terminales Nokia, y más concretamente a los de la Serie 60, plataforma que incluye teléfonos de altas
prestaciones y que se verá más adelante, aunque también se hará referencia en ocasiones a la Serie 40 de Nokia, plataforma que incluye teléfonos para el mercado de consumo. Se ha elegido la Serie 60 de Nokia por varios motivos, entre los que cabe destacar los siguientes: Cuota de mercado, ya que Nokia actualmente es el líder indiscutible del sector. Demanda, ya que los poseedores de este tipo de terminales son los mayores demandantes de juegos Java. Espectacularidad, ya que son los terminales que permiten unos juegos más espectaculares. Adaptación al Terminal objetivo, ya que los desarrolladores profesionales de juegos Java adaptan sus juegos a sus terminales objetivo para sacar el mayor partido de ellos. De modo que siempre habrá que acabar utilizando una API propietaria de un fabricante, que en este caso será la de Nokia, pero siguiendo procedimientos similares se podría usar la API de Siemens por ejemplo. Lo primero que debemos saber como programadores es sobre qué sistema operativo vamos a programar. El “Windows” en telefonía móvil se llama Symbian OS. Y decimos el “Windows”, no sólo porque sea un sistema operativo gráfico, sino porque está tan extendido en los teléfonos móviles, como Windows en los ordenadores personales. Actualmente la mayoría de los fabricantes de teléfonos móviles (Nokia, Sony-Ericsson, Siemens, Samsung y Panasonic, entre otros), instalan Symbian OS en sus terminales, aunque cambian la interfaz gráfica y parecen sistemas operativos distintos, por debajo todos ejecutan el mismo sistema operativo. Por poner un ejemplo, los Sony-Ericsson de gama alta, como el P-800, ejecutan Symbian pero por encima implementan una interfaz de usuario llamada UIQ. En el momento de la publicación de esta serie de artículos, Symbian OS va por su versión 8, que ya tienen teléfonos como el Nokia 6630. Actualmente existen dos tecnologías para desarrollar juegos para teléfonos móviles con sistema operativo Symbian, una es la que nos ocupa (J2ME) y otra es C++. Debemos tener muy claro que desde el momento en el que decidimos emplear tecnología Java para nuestras aplicaciones nos habremos http://digital.revistasprofesionales.com
Juegos de calidad comercial en J2ME (I)
DISPOSITIVOS MÓVILES
Comparación J2ME y Symbian OS atado no sólo a las ventajas sino también a las desventajas de usar código interpretado. Éstas son principalmente baja velocidad de ejecución y limitaciones funcionales. Para entender estas desventajas hay que saber distinguir entre código interpretado y código nativo, que aunque muchos de nuestros lectores ya conocerán las diferencias, vamos a hacer en pocas líneas un pequeño repaso a ello: El código nativo es el código que obtendríamos al compilar un programa en C++. Es el código máquina que puede ser ejecutado por el sistema operativo del teléfono móvil. El código interpretado es el código que obtendríamos al compilar un programa en Java. Ese código debe ser traducido a código máquina en el momento de su ejecución, por la Máquina Virtual Java. Esa traducción es la responsable de la baja velocidad de ejecución mencionada anteriormente. Cuando se habla de limitaciones funcionales se está haciendo referencia a que sólo se dispondrá de los recursos que la implementación de la máquina virtual Java nos permita utilizar. La máquina virtual Java, por tanto, nos aísla , en la llamada “sandbox”(caja de arena), de las peculiaridades del teléfono que se está programando. Razón por la cuál nuestro programa Java no podrá, por ejemplo, usar la conexión por infrarrojos del teléfono, a no ser que el fabricante nos proporcione una API a tal efecto. Por poner un ejemplo, la especificación MIDP 1.0 de J2ME no permite el uso de ningún tipo de sonido. No obstante los fabricantes de terminales con capacidad para reproducir sonidos polifónicos o MIDI, como Nokia o Sony-Ericsson, permiten descargar desde la web las APIs que, entre otras, nos proporcionan funciones para que nuestros programas puedan sacar el máximo partido de sus terminales. En el cuadro “Comparación J2ME y Symbian OS” se muestra una comparativa entre las dos tecnologías comentadas anteriormente.
J2ME
Symbian OS
Tamaño de aplicación permitido
Decenas de Kb
Varios MB
Estándar abierto
Sí
Sí
Deployment (Despliegue)
Grande
Más pequeño
Soporte de varios fabricantes
Sí
Sí
Instalación OTA
Sí
Sí, sin embargo las aplicaciones de Symbian OS son normalmente tan grandes que es imposible la distribución OTA
Ejecución de forma nativa
No
Sí
Lenguaje de programación
Java
C++
Comunicación con servidores remotos
Sí
Sí
Animación en 2D
Sí
Sí
Animación en 3D
Normalmente No. Sólo para los móviles de última generación que soportan la especificación JSR184. Una completa API 3D basada en Open GL es Open GL ES
Sí
Mostrar vídeos
Normalmente No. J2ME puede reproducir vídeos en teléfonos que soporten la Java Mobile Media API como el Nokia 3650 y posteriores o en teléfonos con MIDP 2.0
Sí, si lo permite el terminal
Audio MIDI
Normalmente No. Se necesita la API propietaria del fabricante o MIDP 2.0
Sí
Audio de alta calidad
Normalmente No. Se necesita la API propietaria del fabricante o MIDP 2.0
Sí
Acceso a SMS
Normalmente No. Acceso a los SMS desde J2ME es posible usando la Nokia SMS API (soportada Sí (Además MMS si lo soporta el en Nokia 3410) o la Wireless terminal) Messaging API (soportada por los Nokia 3650 y posteriores)
Limitaciones de la plataforma Cuando hablamos de limitaciones de la plataforma, nos referimos no sólo a las limitaciones que tienen los teléfonos móviles en comparación con los ordenadores de sobremesa, sino también a las de J2ME en comparación con J2SE (Java 2 Second Edition). En los siguientes apartados se enumeran dichas limitaciones. http://digital.revistasprofesionales.com
Acceso a puerto de Infrarrojos y Bl bluetooth
Normalmente No. Sólo para terminales con MIDP 2.0 ya que soportan la Bluetooth API
Siempre que lo tenga el terminal
Acceso a la agenda, calendario…
No
Sí
Marcar un teléfono
No
Sí
Complicaciones de desarrollo multiplataforma
Menos que Symbian
Sí
17
SOLO PROGRAMADORES nº 122
DISPOSITIVOS MÓVILES
Energía Es el principal problema de cualquier aparato electrónico y el causante, de forma directa o indirecta, del resto de limitaciones. Es éste un campo de continua investigación, ya que cada vez los aparatos electrónicos son más comple jos y demandan más recursos energéticos para funcionar. Aunque en la actualidad con la popularidad de las baterías de Litio los terminales móviles han experimentado un importante incremento de autonomía, debemos siempre tener en consideración a la hora de programar nuestros juegos las limitaciones energéticas. Por ejemplo, no deberemos abusar de la vibración pues acabaremos con la batería del teléfono en poco tiempo. Además, que el juego use vibración o sonido, deberían ser opciones configurables. Y es que el altavoz del teléfono es otro gran consumidor de energía. Pantalla Hay casi tantas variantes como modelos de teléfonos en el mercado. La principal diferencia es el número de colores que pueden representar. Desde monocromo hasta los 65.535 colores de los terminales más actuales. Hay que tener especial cuidado cuando desarrollemos juegos susceptibles de ser ejecutados en pantallas monocromas o de escala de grises, ya que si los gráficos no están especialmente adaptados, lo más probable es que sean tan confusos que no se pueda llegar a jugar con un mínimo de calidad. La resolución de la pantalla será otro factor importantísimo a tener en cuenta. Aunque en J2ME podemos utilizar controles para construir formularios que se verán correctamente en cualquier pantalla, cuando hacemos un juego al final siempre tendremos que usar la
Figura 1. Despliegue OTA.
clase “Canvas” (lienzo). Y el uso de ésta está fuertemente ligado a la resolución de la pantalla. Para que nuestro juego fuera lo más portable posible, lo ideal sería que todos los gráficos que se utilicen fueran escalables, de modo que se pudiera adaptar el juego a cualquier tamaño de pantalla. Esto sólo será posible en contadas ocasiones, así que tendremos que adaptar nuestro juego a cada resolución. Por lo tanto en este tipo de desarrollos será de vital importancia que nuestro código tenga una buena estructura que aísle todo lo posible la lógica del juego de las rutinas gráficas. Otro aspecto a tener muy en cuenta es la velocidad de refresco de la pantalla. Si estamos creando un juego de acción en el que, por ejemplo, usemos “scrolls” rápidos, deberemos probarlo sobre todos los terminales que tenemos como objetivo, pues habrá teléfonos que aún capaces de ejecutar nuestro programa sin problemas, la baja calidad de su pantalla a
Figura 2. Despliegue por puerto de comunicaciones.
SOLO PROGRAMADORES nº 122
18
color mostrará los gráficos en movimiento tan borrosos que serán impracticables. Teclado Un factor determinante para el éxito de un juego es su jugabilidad. Y ésta depende directamente de los controles que el dispositivo nos proporcione. En el momento de publicación de esta serie de artículos, el único móvil del mercado concebido para jugar es el Nokia N-Gage y su evolución el Nokia N-Gage QD. El resto de los móviles, en el mejor de los casos, no están preparados nada más que para movernos en las cuatro direcciones. Por si esto fuera poco, además los teclados no suelen tener una respuesta rápida, y lo que es aún peor, cada móvil tiene una disposición distinta de las teclas, que puede llegar a ser tan problemática que haga imposible el manejo del juego en determinados modelos. Especial atención en este aspecto merece el Nokia 3650, cuyo teclado se encuentra en disposición circular. Por lo tanto no sería mala idea permitir al usuario configurar los controles a su gusto. Por otra parte, en lo referente a las facilidades de J2ME para gestionar las pulsaciones de teclado, son un tanto escasas pero suficientes. Por ejemplo, para detectar la pulsación continuada de una tecla deberemos hacerlo a la antigua usanza, almacenando dicha tecla en una variable, tal y como se explicará más adelante, junto con la forma de detectar la pulsación simultánea de varias teclas. Tamaño A la hora de desplegar una aplicación MIDP, toda la lógica y los recursos de la aplicación quedan empaquetados en un fichero de http://digital.revistasprofesionales.com
Juegos de calidad comercial en J2ME (I)
tipo JAR (Java Archive). Por tanto, las limitaciones de tamaño se refieren al tamaño que ocupa el archivo .jar final del juego listo para distribuirse. Aunque el espacio de almacenamiento disponible en los móviles suele ser muy limitado, éste no será nuestro principal problema. La razón por la que no deberemos superar un tamaño límite, que puede estar entorno a los 150KB, está relacionada con el proceso de distribución (deployment) de los juegos para móviles. El modelo de negocio actual de la venta de aplicaciones para móviles consiste en que nosotros como desarrolladores llegamos a un acuerdo con la operadora, de modo que ella se encarga de hacer accesible nuestro juego a sus clientes y de la facturación. A cambio, la operadora se queda con un porcentaje por cada descarga del juego. A esta forma de distribución de las aplicaciones Java se la llama OTA (Over-The-Air provisioning, véase la figura 1). Por tanto, nuestro fichero deberá viajar por una red GSM (Global System for Mobile) o por una GPRS (General Packet Radio Service), redes que tienen una tasa de transferencia muy baja. Hasta que no se popularice el uso de redes UMTS (Universal Mobile Telecommunications System) nuestra aplicación deberá viajar por redes de banda estrecha, pero en cualquier caso el cliente que compre nuestro producto deberá acarrear con los gastos de la transmisión del fichero .jar hasta su móvil. Aunque los terminales más potentes podrían soportar juegos que ocuparan más de 1MB sin demasiados problemas, no habría ningún cliente que se descargara dicha cantidad de datos, por lo menos con los precios actuales. Además, las operadoras imponen un límite de tamaño máximo para OTA, que deberemos conocer de antemano a la hora de crear nuestro juego. Por poner un ejemplo práctico, la Serie 40 de Nokia impone un límite de 64KB para el fichero .jar, y de 5KB para el fichero JAD (Java Application Descriptor). Las aplicaciones J2ME se pueden instalar también usando USB (Universal Serial Bus), un puerto de infrarrojos o mediante bluetooth (véase la figura 2). Sin embargo, actualmente no existe ningún modelo de negocio que permita el aprovechamiento de estos modos de instalación, ya que el usuario necesitaría tener un ordenador. Aunque el http://digital.revistasprofesionales.com
DISPOSITIVOS MÓVILES
Figura 3. Despliegue mediante memory card.
problema fundamental es que estos métodos facilitarían la piratería de los programas. El modelo de negocio novedoso que ha puesto en marcha Nokia con la Nokia N-Gage consiste en distribuir los juegos en SD cards (vease la figura 3), equiparando el negocio al de las videoconsolas. Aunque la mayoría de los juegos en este soporte son nativos de Nokia, también los hay hechos en Java. Gracias a este soporte no habría la limitación de tamaño comentada anteriormente. Memoria de ejecución Aunque nuestro programa no ocupe mucho espacio en disco, puede ser capaz de acabar rápidamente con la memoria de ejecución del móvil. Si, por ejemplo, nos dedicamos a instanciar objetos indiscriminadamente sin liberarlos explícitamente, es más que probable que veamos el fatídico mensaje de “Memoria Insuficiente”, de forma que nuestro juego muera, pudiendo incluso en ocasiones llegar a matar hasta al propio sistema operativo del teléfono. Los procesadores que suelen ejecutar J2ME son tan poco potentes que no se pueden permitir el “lujo” de llevar una gestión minuciosa de los objetos en memoria que ya no se van a usar, como hace J2SE. Eso significa que el recolector de basura sólo sea llamado en contadas ocasiones, y debamos nosotros explícitamente invocar al método “System.gc()” de vez en cuando. Cada fabricante de terminales decide el tamaño de esta memoria de ejecución en
función de las prestaciones del móvil. Sin embargo, hay un mínimo de 64KB de memoria de ejecución que el estándar CLDC (Connection Limited Devide Configuration) obliga que tengan todos los terminales. Por ejemplo, la Serie 60 de Nokia tiene cerca de 4MB de memoria de ejecución. Los emuladores que usamos para probar nuestros juegos en tiempo de desarrollo nos mostrarán siempre en pantalla la cantidad de memoria usada en todo momento, dato éste que tendremos que vigilar para que nunca esté demasiado cerca del límite que tenga nuestro terminal objetivo. Sonido MIDP 1.0 no soporta el uso de sonido. Por tanto, a no ser que usemos una API específica del fabricante que permita reproducir sonidos polifónicos, nuestro juego será completamente mudo. Además, la mayoría de los modelos tienen unos altavoces de baja calidad, lo cual habrá que tener en cuenta, pues será inútil usar sonidos digitales de alta calidad. En este aspecto las cosas están cambiando y teléfonos como los Sony-Ericsson y los Samsung tienen un sonido estéreo de gran calidad. No así los Nokia, en los que actualmente no merecerá mucho la pena que nos esmeremos demasiado en el aspecto sonoro. Procesador Los procesadores de los teléfonos móviles son por lo general muy lentos y nuestros 19
SOLO PROGRAMADORES nº 122
DISPOSITIVOS MÓVILES
Comparación DP 1.x y DP 2.0 programas no deberían demandar demasiados recursos de ellos. Más aún si estamos desarrollando en Java, porque a parte de los recursos que demande el sistema operativo, que no son pocos, se estará ejecutando la máquina virtual Java, y encima de todo esto, se deberá ejecutar nuestro juego. Para complicar un poco más las cosas, los fabricantes de móviles no mencionan el tipo de procesador que utilizan sus modelos, ni mucho menos la frecuencia de éstos. Además, las diferencias de rendimiento entre distintos modelos son muy variables, como ejemplo, en la Serie 60 de Nokia, hay una diferencia notable de rendimiento entre el Nokia 7650 y el Nokia 3650, siendo éste último más rápido que el anterior. Por tanto, como siempre, deberemos probar nuestros juegos en los modelos objetivo, pues un juego que es capaz de “mover” un Nokia 3650 por ejemplo, en un Nokia 7650 puede ser impracticable. Ausencia de float y double Como se ha comentado en el apartado anterior, los procesadores de los teléfonos móviles son muy sencillos, tan sencillos que normalmente no tienen ni unidad de coma flotante. Es por esta razón que J2ME no dispone de los tipos de datos primitivos float y double. Sin ellos se dificulta, en principio, hacer cálculos trigonométricos, razón por la que han desaparecido métodos de la clase “Math” como “cos()” y “sin()”. En próximos artículos daremos una solución para este problema usando una clase de libre distribución llamada “MathFP”. Hilos sin método stop() Otro de los múltiples recortes de J2ME es la supresión de métodos en la clase “Thread”. En próximos artículos hablaremos del traba jo con hilos, e indicaremos cómo parar un hilo que no tiene método “stop()”. Red de comunicaciones de banda estrecha Como ya se ha mencionado anteriormente al hablar del tamaño final del juego, las redes GSM y GPRS son lentas, caras e inestables. Debemos tener en cuenta esto si pretendemos que nuestra aplicación envíe o reciba datos. El usuario de nuestro programa deberá estar siempre bien informado del uso que se haga de la red, pues el uso de este recurso le cuesta dinero. En la SOLO PROGRAMADORES nº 122
20
Developer Platform 1.0 for Series 60
Developer Platform 2.0 for Series 60
MIDP 1.0
MIDP 2.0
CLDC 1.0
CLDC 1.0
Wireless Messaging API (JSR-120) (excepto el Nokia 7650)
Wireless Messaging API (JSR-120)
Mobile Media API (JSR-135) (excepto el Nokia 7650)
Mobile Media API (JSR-135)
XHTML browsing
XHTML Browsing sobre TCP/IP
Mensajería MMS (Mensajes Multimedia)
Mensajes MMS con Synchronized Multimedia Integration Language (SMIL)
Sin posibilidad de programar bluetooth con J2ME
APIs for Bluetooth (JSR-82)
Symbian OS v6.1
Symbian OS v7.0
Ejemplo: Nokia 3650
Ejemplo: Nokia 6600
actualidad, las operadoras españolas acaban de empezar a comercializar UMTS aunque todavía existen muy pocos usuarios con terminales de tercera generación. Por tanto, con la red actual, para nuestro juego puede ser factible, por ejemplo, bajarse la lista de las 10 mejores puntuaciones alojada en un servidor, o quizá enviar o recibir un par de imágenes de baja resolución .
común la Serie 60 de Nokia es el tamaño de la pantalla (176x208 píxeles), una profundidad de color mínima de 4.096 colores y capacidad de conexión bluetooth. Otros aspectos como puede ser la capacidad de proceso, o de sonido, son similares pero en absoluto idénticos. Cada modelo que aparece en el mercado dentro de la Serie 60 es superior al anterior, y no nos deberemos guiar tanto del número de modelo como del orden de aparición en el mercado. Por ejemplo, el Nokia 3650 es superior al 7650. Como desarrolladores debemos conocer las características de la plataforma de desarrollo para la Serie 60, (Developer Platform for Series 60). Es importante distinguir entre las dos versiones principales, la 1.0 y la 2.0. Dentro de la versión 1.0 existen otras intermedias, por lo que normalmente nos referimos a ella como versión 1.x. En el cuadro “Comparación DP 1.x y DP 2.0” se muestran las principales características de las dos versiones. Para conocer las características técnicas de cualquier móvil de Nokia, incluidos los de la Serie 60, se pude visitar el enlace http://www.forum.nokia.com/main/1,6566,0 10_40,00.html. A continuación se muestran algunos modelos de la Serie 60 de Nokia por orden de aparición.
La Serie 60 de Nokia La Serie 60 de Nokia es una línea de productos guiada por las prestaciones en contraposición a otras de la misma Nokia guiadas por el precio y el tamaño del terminal, como por ejemplo la Serie 40. Conocer las características técnicas de los terminales objetivo es de vital importancia a la hora de desarrollar aplicaciones para móviles, ya que aunque la tecnología de programación es la misma, las plataformas son muy distintas entre sí. Incluso entre los distintos modelos de una misma serie se encuentran diferencias importantes en cuanto a recursos y disposición del teclado. Por tanto, antes de desarrollar una aplicación para un terminal móvil hay que conocer las capacidades de la plataforma objetivo, y luego ser consciente de que habrá que adaptar la aplicación y hacer las pruebas pertinentes con cada modelo de terminal donde se desee ejecutar. En el caso concreto que nos ocupa, lo único que tiene en
7650 Primer modelo de la Serie 60 (véase la figura 4). Modelo de alta gama y alto coste, http://digital.revistasprofesionales.com
Juegos de calidad comercial en J2ME (I)
Figura 4. Modelo 7650 de Nokia.
Figura 5. Modelo 3650 de Nokia.
orientado a ejecutivos. Es el único modelo de la Serie 60 que dispone de foto sensor (no programable en MIDP). Este modelo no se comercializó en USA. De serie no lleva software para grabación de vídeo pero Nokia lo proporciona gratuitamente en su web. No tiene lector de tarjetas MMC (MultiMediaCard). Tiene capacidad de sonido polifónico pero dispone de un altavoz de poca calidad. Lleva cámara incorporada. El tamaño máximo de aplicación Java es de 4MB y la memoria de ejecución máxima (heap size) es de 1,4MB. 3650 Terminal multimedia orientado a gente joven (véase la figura 5). Viene de serie con software para grabación de vídeo y para reproducción (Real ONE player). La disposición del teclado en círculo es de vital importancia a tener en cuenta a la hora de definir las teclas de control de nuestro juego. Tiene capacidad de sonido polifónico pero dispone de un altavoz de poca calidad. Incorpora lector de tarjetas MMC. Lleva cámara incorporada. El tamaño máximo de aplicación Java es de 4MB y la memoria de ejecución máxima (heap size) es de 1,4MB. N-Gage Es el primer móvil orientado al mercado del entretenimiento (véase la figura 6). Puede reproducir MP3 y es competencia directa de consolas de videojuegos portátiles como la Gameboy. Los compradores de este modelo serán los usuarios más dispuestos a adquirir nuestros juegos, por lo que ésta
Figura 10. KTootlBar.
http://digital.revistasprofesionales.com
Figura 6. Modelo N-Gage de Nokia.
Figura 7. Modelo 6600 de Nokia.
deberá ser nuestra plataforma objetivo. Numerosas compañías desarrolladoras de software de entretenimiento han portado ya los juegos más populares a esta plataforma. Títulos como Tomb Rider y Sonic the Hedgehog ya se encuentran en el mercado, con una calidad en cuanto a gráficos y sonido, muy similar a la de las antiguas consolas de 16 bits como la Megadrive de Sega. Los juegos se distribuyen en tarjetas MMC. Este modelo no incorpora cámara. El tamaño máximo de aplicación Java es de 4MB y la memoria de ejecución máxima (heap size) es de 2,8MB. 6600 Es el primer teléfono de la comentada anteriormente Developer Platform 2.0 for Series 60 (véase la figura 7). Lleva la versión 7 del sistema operativo Symbian que a simple vista no se diferencia mucho de la versión anterior. Su pantalla es de 65.535 colores. La mejora más necesaria que se echaba de menos en modelos anteriores ha sido en lo referente al sonido. Es también destacable la posibilidad de zoom de la cámara incorporada, sin haber variado la resolución ni la calidad de la misma respecto a modelos anteriores. Lo más importante de este teléfono para los programadores Java es que es el primer Nokia en soportar MIDP 2.0, hecho este que facilita bastante la programación de juegos. La versión para el mercado americano de este modelo se llama 6620. El tamaño máximo de aplicación Java es de 4MB y la memoria de ejecución máxima (heap size) es de 3MB.
DISPOSITIVOS MÓVILES
Figura 8. Modelo 3660 de Nokia.
Figura 9. Modelo 7610 de Nokia.
3660 Es prácticamente idéntico al modelo 3650 salvo que la disposición del teclado ha cambiado de la disposición circular a la típica de cualquier teléfono móvil (véase la figura 8). Además su pantalla es capaz de mostrar 65.535 colores. La versión americana de este modelo se llama 3620. El tamaño máximo de aplicación Java es de 4MB y la memoria de ejecución máxima (heap size) es de 1,4MB. 7610 Es el primer teléfono de Nokia en incorporar una cámara de 1 Megapíxel. Además es novedoso también su puerto USB PopPort que permite una rápida conectividad con un PC. Por todo lo demás, es similar al modelo 3660. El tamaño máximo de aplicación Java es de 4MB y la memoria de ejecución máxima (heap size) es de 8MB.
MIDlet para conocer las capacidades gráficas de nuestro móvil Si las pantallas de la mayoría de los móviles son pequeñas, al utilizar un “Canvas” la pantalla de nuestro juego todavía será más pequeña que la pantalla del móvil. Si se observan los juegos Java comerciales de calidad, como por ejemplo el “Prince of Persia” de Gameloft, veremos que se ejecutan a pantalla completa. ¿Cómo lo hacen? ¡No hay ninguna clase en MIDP 1.0 que sea capaz de conseguir esto! La solución la veremos en próximos artículos cuando hablemos de la clase “FullCanvas” de la API propietaria de Nokia. Como se puede deducir a estas alturas, cuando desarrollemos un juego deberemos adaptar los gráficos al terminal en el que queremos que funcione nuestra aplicación. Para ello deberemos conocer con exactitud las características de la pantalla de nuestro terminal. Esto no es otra cosa que “interrogar” a la clase “Canvas” sobre sus propiedades, aunque también tendremos que sacar algunas 21
SOLO PROGRAMADORES nº 122
DISPOSITIVOS MÓVILES
downloads.html) y posteriormente instalar el J2ME Wireless Toolkit 2.2 de SUN que puede obtenerse en http://java.sun.com/products/ j2mewtoolkit/download-2_2.html. Una vez instalado el software buscaremos la aplicación KToolBar (véase la figura 10). Pulsaremos sobre “New Project”. Le daremos el nombre que queramos al proyecto (sin espacios) y en el campo “MIDlet name” tendremos que poner “Principal”. Posteriormente aparecerá otro diálogo con la etiqueta “API Selection” activa. Deberemos aquí seleccionar como “Target Platform” MIDP 1.0, y al aceptar observaremos que volvemos al entorno de la KToolBar que ahora nos indica con un texto dónde deberemos poner los fuentes y los recursos del proyecto. Los ficheros fuentes en: [unidad de instalación]/WTK22/[Nombre Proyecto]/src/
Los ficheros de recursos en: Figura 11. Aplicación en ejecución sobre el emulador Serie 60 de Nokia.
propiedades de la clase “Display”. Esto es lo que haremos en el programa que se recoge en el listado 1 incluido en el CD-ROM. Este programa tiene como peculiaridad que hemos hecho el “truco” de Java, para poder usar la clase “Canvas” sin tener que instanciar una clase que herede de ella, ni crear otro .java. La clase “Canvas” es una clase abstracta y debemos implementar su método “paint()” al instanciarla. En esa misma sentencia, además estamos asignando el “Display” al “Canvas” que se ha creado. Por lo demás, el código es auto explicativo, y nos estamos limitando a sacar propiedades de ambas clases (“Canvas” y “Display”) por pantalla.
Compilación Los lectores de Sólo Programadores ya han practicado con las herramientas necesarias para el desarrollo con J2ME, sin embargo repetiremos aquí, una vez más, los pasos a seguir para ejecutar un proyecto J2ME en un emulador. Para desarrollar aplicaciones J2ME es necesario tener el J2SE SDK (http://java.sun.com/j2se/
[unidad de instalación]/WTK22/[Nombre Proyecto]/res/
Y los ficheros de bibliotecas en: [unidad de instalación]/WTK22/[Nombre Proyecto]/lib/
Una vez copiado el archivo “Principal.java” incluido en el CD-ROM y mostrado en el listado 1 al directorio de fuentes correspondiente, sólo tendremos que pulsar en “Build” para compilar y/o “Run” para ejecutar en un emulador, tal como muestra la figura 11.
Conclusiones Analicemos los resultados usando el emulador de Nokia de la Serie 60 (en próximos números veremos su instalación, mientras tanto el lector puede probar el ejemplo con los emuladores que el Wireless Toolkit trae por defecto), y comparándolo con un teléfono real, el Nokia 3650. Lo que debería verse es lo que aparece en la figura 11. De los datos que obtenemos nos fijamos primero en la resolución del “Canvas”. El programa nos dice que tenemos disponible para nuestro juego un área de 176x144 píxeles, cuando según dijimos anterior-
mente la Serie 60 de Nokia tiene un área de pantalla de 176x208 píxeles. Hemos perdido 64 píxeles en altura de nuestra pantalla, lo que supone más de un 30% de la pantalla. El teléfono admite double buffering. Esto significa que el propio teléfono maneja una memoria de vídeo donde hace los cambios oportunos antes de mostrarlos por pantalla en un evento de repintado. Esto a efectos prácticos significa que podremos recoger el objeto “Graphics”, que recibiremos del evento “Paint” del “Canvas”, y pintar sobre él, sabiendo que no vamos a tener el engorroso efecto de parpadeo de nuestros gráficos, que un juego sin double buffering tendría. Como vemos el objeto “Canvas” nos dirá si el teléfono sobre el que estamos ejecutando tiene una pantalla táctil, lo que abriría un gran abanico de posibilidades a la interacción con nuestros juegos. Aunque la clase “Canvas” en principio parece estar relacionada con gráficos, vemos que también lo está con el teclado. Esta propiedad nos dice que el terminal es capaz de detectar cuándo hemos dejado pulsado un botón, levantándose eventos a tal efecto como veremos más adelante. Las dos propiedades que hemos sacado pertenecen al objeto “Display”, y como observamos nos hablan de las posibilidades gráficas de la pantalla. Con la primera sabemos que la pantalla es en color y con la segunda sabemos cuántos colores es capaz de mostrar simultáneamente. Vamos a fijarnos en ésta última. Según las características de la Serie 60 de Nokia, el teléfono que más colores podía mostrar estaba en torno a los 65.000. En el emulador vemos que la pantalla muestra 16 millones de colores. Si ejecutamos la misma aplicación en un Nokia 3650, todas las propiedades salen idénticas, salvo ésta última, en la que aparece el valor real de 4.096 colores. Ésta es una muestra más de que nunca nos deberemos fiar de los emuladores... En el próximo número veremos en profundidad la API propietaria de Nokia para, entre otras cosas, aprovechar ese 30% de pantalla que como acabamos de comprobar se desperdicia si sólo programamos con MIDP 1.0.
Agradecimientos Los autores agradecen a la empresa Flag Solutions (http://www.flagsolutions.net) y al grupo AWEG (Adaptive Web Engineering Group) de la Universidad de Salamanca sus aportaciones y consejos para la elaboración de este artículo.
SOLO PROGRAMADORES nº 122
22
http://digital.revistasprofesionales.com
MIDDLEWARE
XAML (II) ERICH R. BÜHLER (MVP en .NET Framework)
XAML cambiará radicalmente la filosofía de desarrollo de las aplicaciones, por lo que a la interfaz de usuario se refiere. En esta segunda entrega analizaremos algunos aspectos centrados en la programación de interfaces bajo esta nueva tecnología. Introducción
XAML permite crear IGUs visualizables tanto en ventanas como en navegadores SOLO PROGRAMADORES nº 122
24
En el artículo anterior conocimos las ideas básicas de la estructura de XAML y vimos también que marcará un hito en la forma en la que se programarán las aplicaciones. El hecho de que cambie el motor gráfico implica nuevas posibilidades y abre el espectro a un nuevo conjunto de aplicaciones que serán vistas como una mezcla entre lo mejor del web y Windows, multimedia, y documentos. Le estoy anticipando que es un buen momento para que comience a aprender XAML si no quiere quedarse atrás. Esto es lo mismo que si hace 12 años (cuando algunas pantallas todavía solían ser de fósforo verde) le hubiese dicho que sería buena idea que considerase programar para Windows. Es que en realidad me he quedado muy corto en el artículo pasado sobre las bondades de la nueva camada de aplicaciones, pero afortunadamente aquí comenzaré a desvelar varias características que si bien mencioné brevemente ahora ya se está en condiciones de plasmar. Por supuesto que si no leyó la entrega anterior no es mala idea que se haga de alguna forma con ella, ya que tengo la intención al finalizar con esta serie de artículos abordando la mayor parte de las características de XAML y así lograr que esté en carrera para los próximos años.
Las 6 verdades absolutas sobre XAML Los siguientes 6 puntos ya los vimos en la entrega anterior, pero deseo refrescar su memoria sobre todo porque sé que un mes puede llegar a ser mucho tiempo para tener presente la totalidad de un artículo.
1.-XAML define una interfaz gráfica avanzada
para una ventana o página utilizando como medio un documento en formato XML. 2.-XAML es un lenguaje declarativo aunque se puede también interactuar con este mediante código (escritura de eventos para controles, creación dinámica de elementos, etc.). 3.-Cada elemento de XAML se corresponde con una clase del nuevo conjunto de clases que se le adicionará a .NET Framework 2.0. 4.-XAML cuenta con su propio conjunto de controles que no son de Windows Forms, aunque en casos extremos se pueden también insertar estos últimos. 5.-La apariencia de controles se establece mediante etiquetas o atributos, contándose con propiedades complejas y la posibilidad de interactuar desde un control hijo con su padre (por ejemplo, un botón que indique la posición dentro de su contenedor). 6.-Todo dentro de XAML (incluso los controles) pueden ser vectoriales, lo que da la ventaja de llegar a ser “resolución independiente”. A estas seis verdades hay que sumarle que es muy sencillo aplicarle una animación a un conjunto de controles de la interfaz gráfica, por ejemplo para que varíe a lo largo del tiempo su forma, tamaño, color, etc. Por supuesto que todo esto es en realidad un pequeño conjunto de las ventajas, he iremos viendo más a lo largo de las distintas entregas.
Resolución independiente Si conoce .NET Framework sabrá que es posible adecuar el tamaño de los controles de un contenedor (ventana, marco, etc.) de acuerdo al espacio disponible, aunque en realidad lo que hacía la infraestructura era reducir los anchos y altos de los elementos. Mediante las propiedades “Anchor” y “Dock” se definían medidas relativas al contenedor o borde y finalmente si el mismo cambiaba los controles disminuían su tamaño o se apretaban entre sí, lo que daba algunas ventajas si nuestro cliente no tenía la resolución de pantalla esperada. Ésto es lo mismo que si usted se muda a una casa más pequeña y desea conservar todos sus muebles, en realidad éstos tendrán el mismo tamaño pero por supuesto dentro de un espacio menor. http://digital.revistasprofesionales.com
MIDDLEWARE
XAML (II)
Vea ahora la figura 1, en ella se muestran 3 copias de la misma ventana la que he adecuado su tamaño manualmente estirando y/o contrayendo sus bordes. ¿Qué hay de fantástico en ello? Si presta atención notará que su contenido ha sido realmente adecuado de acuerdo al espacio disponible, esto es así porque todo es vectorial en XAML incluso los controles. ¡Ahora sus muebles cambian de tamaño de acuerdo al espacio disponible! Por supuesto que ello hace que la solución ofrecida en .NET Framework 1.1 pase a ser una broma de mal gusto comparada con la nueva potencia de auto-ajuste en XAML. Veremos más adelante lo sencillo que es lograr esta característica utilizando un tipo de contenedor especial llamado “ViewBox”. Pero antes vamos a analizar brevemente el modelo propuesto por Microsoft conociendo los nuevos tipos de aplicación.
Nuevos tipos de aplicación Para Microsoft es doble responsabilidad XAML por un lado por ser el padre de esta tecnología y por otro por ser la piedra fundamental de los nuevos tipos de aplicación. Hasta el momento en la programación clásica se podían distinguir 3 tipos diferentes de ellas: Aplicación web Aplicación de ventanas Aplicación de ventanas que interactúa con servicios web XML u otro servicio web El último punto puede no ser considerado un tipo específico de aplicación, pero he decidido incluirlo ya que interactúa con lo mejor de los dos mundos: web y Windows. El nuevo modelo propuesto por Microsoft incluye también 3 tipos llamados aplicaciones WinFX (véase la figura 2), aunque en realidad difieren de lo que se conoce actualmente. El primer tipo es el llamado “aplicaciones de páginas múltiples” y es conceptualmente similar a una aplicación web. Una aplicación de este tipo consistirá de una o más páginas XAML y cada una de ellas representará una interfaz gráfica dentro de la aplicación. Una vez que el usuario finalice con una página podrá pasar a la próxima y así sucesivamente. El código de programación (el que responde a los eventos) de cada una de ellas está en general contenido por un archivo externo, en forma similar a como se hace hoy en día en ASP.NET. El segundo tipo es el de “documentos”, aquí también se tienen múltiples páginas en las que el usuario puede navegar, pero sin embargo el http://digital.revistasprofesionales.com
Figura 1. XAML nos permite construir interfaces vectoriales, lo cual permitirá a nuestras ventanas adaptarse al tamaño necesario sin perder por ello el diseño original.
objetivo principal radica en mostrar información como podrían ser documentos o gráficos. Debido a ello están disponibles varias características para la gestión de la visualización como puede ser zoom y vistas de una o más páginas, firmas de documentos, etc. Éste es un importante capítulo para la nueva infraestructura ya que se ha hecho un esfuerzo muy grande y como veremos en próximas entregas se ha adicionado una nueva y completa infraestructura para la visualización de documentos. Prometo cubrir este punto en su totalidad en breve. Finalmente se tienen las “aplicaciones de ventana” donde se cuenta con una o más ventanas en un modelo similar al que ya conoce, aunque los controles factibles de ser incluidos son muchísimo más amplios que tan sólo el reducido número de los intrínsecos de Windows. Es importante destacar que la mayor parte de los elementos pueden ser utilizados en los tres modelos, lo que brinda una transparencia total entre ellos. Digo la mayor parte porque por supuesto que no es posible emplear los llamados controles de navegación cuando se usa el modelo de ventanas.
código a alguna de las páginas entonces se dice que se tiene una aplicación y allí la aproximación es diferente. En estos casos se deberá compilar el código para poder visualizar su resultado de forma funcional. Para ello se utiliza una herramienta llamada MSBUILD de la que hablaremos en próximas entregas. Otra cosa muy importante a entender es que las aplicaciones navegables o de documentos
Compilación de aplicaciones vs documentos Si se tienen documentos XAML “sueltos”, esto es sin código asociado a los mismos, entonces ellos serán factibles de ser visualizados simplemente haciendo doble clic; se abrirá entonces el visor predeterminado y mostrará su contenido, al igual que se hace hoy en día con una página HTML. Ahora bien, si se asocia
Figura 2. Ejemplo de los tres tipos de aplicaciones WinFX propuestos por el nuevo modelo de Microsoft.
25
SOLO PROGRAMADORES nº 122
MIDDLEWARE
LISTADO 1
pueden ser visualizadas tanto dentro de una ventana como dentro de un navegador. El cambio de un tipo a otro debe indicarse en tiempo de compilación, esto no implica en general más que modificar un parámetro de compilación, lo que hace muy fácil abstraerse del modelo. Como último decir que la creación de controles también puede ser realizada mediante código prescindiendo de los documentos XAML. Esto es así ya que como comenté anteriormente cada control es una clase de la infraestructura la cual puede ser gestionada de forma estándar como tantas otras.
Trabajando con contenedores Vamos a empezar viendo cómo trabajar con documentos “sueltos”, esto es, sin lógica asociada a ellos. Una vez que entendamos el funcionamiento comenzaremos a vincular todo esto con los diferentes tipos de aplicación. A modo de organizar los distintos tipos de control, he separado a los mismos dentro de 2 grupos lógicos, aunque esta división es totalmente ficticia y solamente tiene el fin de que pueda entender su funcionamiento y relación:
El contenedor ViewBox
1.-Controles contenedores 2.-Controles de interacción con el usuario
El primer grupo ofrece diferentes alternativas de paneles, es decir, aquellos que se encargarán de almacenar a los demás elementos. Podemos imaginarnos esto como un conjunto de distintos tipos de contenedores para los más diversos usos. La importancia de los controles contenedores radica en que luego sus integrantes podrán ganar sus características. Por ejemplo, existe un control llamado “ViewBox” que se encarga de que si cambia su tamaño se adecue su contenido. Como ve, éste es el tipo de panel que he utilizado para el ejemplo de la figura 1, el contenido del listado 1 es un resumen de su código. A su vez algunos controles de interacción con el usuario tienen que ser obligatoriamente almacenados por un contenedor específico, veremos ésto cuando tratemos al tipo “Gris”. Además se pueden anidar varios contenedores, por ejemplo que “ViewBox”
contenga un panel y que a su vez este panel contenga otros y así sucesivamente. El primer paso es entonces elegir uno de ellos de acuerdo a las características que éste ofrece, lo que lógicamente podrá repercutir en la conducta de sus miembros. Una vez hecho ésto pasaremos a hacer uso del segundo grupo, el que ofrece desde botones, hipervínculos, multimedia, etc. Pero antes de comenzar a escribir XAML quiero detenerme para comentarle las diferentes alternativas que necesitará tener instalado si quiere programar en XAML: 1.- Visor XAML de Xamlon y también conversor de Flash a este formato (http://www.xamlon.com). 2.- Visor XAML de Mobiform, que contiene el único editor gráfico en el momento (http://www.mobiform.com). 3.- Visor XAML de Microsoft contenido dentro del paquete SDK de WinFX (http://www.msdn.microsoft.com).
Los 7 tipos de contenedor Control
Canvas
Descripción
Espacio de nombres en .NET Framework 2.0
Define un área en el cual cada elemento contenido puede ser dibujado en una coordenada del eje vertical y horizontal relativo al mismo. Es lo más parecido al posicionamiento que utiliza System.Windows.Controls Visual Basic u otros lenguajes para situar los controles en sus formularios.
Define un área en el que los elementos contenidos se pueden organizar uno con respecto al DockPanel otro, tanto sea en forma vertical u horizontal, y se pueden especificar los tamaños de los con- System.Windows.Controls troles en porcentaje relativo al contenedor. FlowPanel Alinea y particiona el contenido (controles) en varias líneas para el caso que exceda la longi- System.Windows.Controls tud del espacio horizontal disponible en la línea. Gris
Establece una cuadrícula consistente de filas y columnas; cada elemento puede ser posicionado dentro de uno de los espacios formados. Es un panel menos pesado en recursos que “Table”, System.Windows.Controls pero también ofrece menos características.
Table
Muestra datos en forma tabular, como lo hace cualquier tabla.
Text
Gestiona una o más líneas de texto como de sólo lectura así como también todo lo referente a su formato. Es mucho más liviano en recursos, en comparación con “TextPanel”, pero ofrece menos funciona- System.Windows.Controls lidades.
System.Windows.Documents
Gestiona una o más líneas de texto como de sólo lectura así como también todo lo referente a su formato. Algunos controles deben ser obligatoriamente contenidos por este tipo de panel. TextPanel Se utiliza en general para darle formato a documentos, aunque no es excluyente. Soporta tam- System.Windows.Documents bién paginación del contenido. ViewBox
El contenido del mismo será escalado al tamaño del contenedor. Puede contener un sólo hijo directo, aunque ésto no es un problema ya que se puede insertar un panel y luego dentro de System.Windows.Documents éste otros.
SOLO PROGRAMADORES nº 122
26
http://digital.revistasprofesionales.com
Sólo Programadores en Formato Digital Con el respaldo de más de diez años de publicación mensual y sin interrupciones
Entra en http://digital.revistasprofesionales.com Suscripción anual a Sólo Programadores por sólo 27 euros y a Sólo Programadores y Mundo Linux por sólo 40 euros Regalo de un CD-ROM con el archivo de los 12 ejemplares de la temporada 2003-04
MIDDLEWARE
LISTADO 2
Formateando un texto con TextPanel
.NET framework .NET framework.NET framework
FontFamily=”Palatino Linotype”>
Si piensas en migrar tus aplicaciones de VB4, VB5, o VB6, deberías tener en cuenta que la nueva versión de Microsoft Visual Basic .NET cambia radicalmente la forma en que harás las cosas, y los productos que ya tienes implementados.Guía de migración y actualización aVisual Basic .NETErich BuhlerMcGraw-HillISBN 84-481-3271-8Todo lo que necesita conocerExplicado en forma sencilla18 capítulosCasi 1.000 páginas
Es importante destacar que la implementación WinFX del SDK de Microsoft es lógicamente la que ofrece el conjunto más amplio de características. Sin embargo al momento de escribir este artículo la misma requiere que esté suscrito a la MSDN. Por su parte Mobiform cuenta con un editor gráfico que hace posible diseñar las páginas XAML de forma muy sencilla; por supuesto que no es mala idea tener lo mejor de cada uno. En cuanto a los requisitos de sistema operativo son Windows XP, 2000 o 2003 (dependiendo del producto).
Tipos de contenedor Como vimos anteriormente los tipos de panel condicionarán el comportamiento y las futuras propiedades de su contenido. Existen 7 posibles contenedores y se explican brevemente en el cuadro “Los 7 tipos de contenedor”. No deseo aburrirlo ya que quiero que siga leyendo mi entrega de XAML, y debido a ello veremos en esta segunda parte del curso solamente algunos de los contenedores, y en próximas conoceremos más sobre el resto.
ado empleando varias de las características, mientras que la figura 3 exhibe su resultado.
a las propiedades “Left” y “Top” del panel principal para indicar su posicionamiento dentro del mismo. Véase el resultado en la figura 4.
Canvas... el modelo tradicional
DockPanel
El marco “Canvas” es uno de los más sencillos de utilizar ya que ofrece un modelo cartesiano, ésto es, que los elementos pueden ser posicionados en un valor fijo del eje vertical y horizontal respectivo al contenedor. El listado 3 emplea un “Canvas” principal y luego otros secundarios que almacenarán diferentes rectángulos de distintos colores. Por último se dibuja un botón directamente sobre el control principal, lo que nos servirá nuevamente para ver cómo un elemento secundario interactúa con la jerarquía. En este caso el botón hace referencia
“DockPanel” organiza los elementos contenidos en forma horizontal o vertical uno con respecto al otro. Cada control integrante puede establecer una propiedad llamada “Dock”, la que brinda cinco opciones: “Top” (arriba), “Bottom” (abajo), “Left” (izquierda), “Right” (Derecha), o “Fill” (rellenar). En tiempo de ejecución “DockPanel” examinará las propiedades de cada integrante y determinará su posición con respecto al miembro anterior, así como también si deberá o no cubrir todo el panel. A su vez el
TextPanel... el más sencillo Con “TextPanel” es sencillo darle formato a los textos y afortunadamente utiliza nomenclatura en muchos casos comparable con algunas etiquetas HTML. Ello hace que sea fácil comprender su funcionamiento. Básicamente es posible especificar desde diferentes tipos de letras a bloques, pasando por párrafos o listas de elementos, así como también jerarquía de títulos. El listado 2 muestra cómo exhibir un texto formateSOLO PROGRAMADORES nº 122
28
Figura 3. El código del listado 2 en ejecución.
http://digital.revistasprofesionales.com
MIDDLEWARE
XAML (II)
LISTADO 3
tamaño del control se puede especificar como porcentaje de “DockPanel”, lo que hará que si se cambia el tamaño del panel también se modifique el de sus integrantes. El listado 4 utiliza un panel principal y 2 paneles secundarios; estos últimos ocuparán cada uno el 50% del área. El primero definirá varios botones de tamaño y posición relativa, mientras que el segundo es un botón que cubrirá la totalidad del espacio. El resultado puede verse en la figura 5.
FlowPanel “FlowPanel” es utilizado para gestionar contenido que pueda en algún momento ocupar más de una línea y tenga que ser reorganizado dinámicamente. Básicamente este panel contiene propiedades para indicar el alineamiento y qué hacer si se sobrepasa la línea. A su vez el panel puede reacomodar sus miembros de forma que se utilice mejor el espacio. El listado 5 muestra cómo “FlowPanel” reorganiza automáticamente su contenido cuando el tamaño del panel es menor que el de la longitud de sus elementos (véase la figura 6).
ViewBox Hablamos ya brevemente de “ViewBox” al comienzo de este capítulo pero solamente nos basamos en su funcionamiento. Como habrá visto, este panel ajusta dinámicamente el contenido a su nuevo tamaño, pero a diferencia con otras aproximaciones, el mismo es realmente escalado en vez de limitarse solamente a disminuir los espacios o tamaño de los controles. Como podemos apreciar en el listado 6 se
Figura 4. El código del listado 3 en ejecución.
http://digital.revistasprofesionales.com
Combinación de Canvas
LISTADO 4
Organizando elementos con DockPanel
cuenta con propiedades de alto y ancho máximo, lo que lógicamente indicará que en caso de sobrepasarse la altura o ancho el contenido se fije utilizando esta información (véase de nuevo la figura 1). Debe tener en cuenta que “ViewBox” puede contener un sólo control secundario, por lo que en caso de que desee insertar más de
ellos tendrá que adicionar alguno de los paneles vistos anteriormente y luego ya sí dentro del mismo los elementos que desee.
Recursos y estilos En XAML es muy sencillo personalizar la apariencia de los controles y de la aplicación
Figura 5. El código del listado 4 en ejecución.
29
SOLO PROGRAMADORES nº 122
MIDDLEWARE
LISTADO 5
Reorganizando el contenido con FlowPanel
Figura 6. El código del listado 5 en ejecución.
mediante la utilización de estilos. Cuando digo personalizar la apariencia veremos que es mucho más flexible que tan sólo modificar los colores. Sin embargo, antes de explicar qué es un estilo debemos comprender qué son los recursos. Preste atención al listado 7. Este código define un nuevo recurso llamado “Micolor” que es un relleno de color Rojo y sólido. Este elemento pasa a ser parte de la colección de recursos del panel. Cada elemento en XAML puede contar una colección de estos. De esta forma es posible definir uno o más miembros en el control que usted desee, pero en general se establece en el elemento principal con el fin de que pueda ser utilizado por los controles de la jerarquía. Una vez que el recurso es creado pasará a estar disponible para los otros objetos, esto es, como suministro de valor para una o más propiedades. Siempre se debe hacer referencia al recurso utilizando llaves, y recordando que se diferencia entre mayúsculas y minúsculas. La siguiente línea establecerá como fondo del botón el relleno definido en el recurso del panel: