Archive

Archive for the ‘Java’ Category

Escapar un String al pegarlo directamente en Eclipse

eclipse-java-juno

En muchas ocasiones tenemos que introducir en nuestro código Strings de bastantes largos y varias líneas. En determinados lenguajes, como PHP, no supone mucho problema, pero en Java implica:

  • Escapar determinados caracteres, como las ” y las \
  • Añadir las comillas y el + por cada línea
  • Añadir los \n si queremos conservar los saltos de línea

Esto, si bien es fácil, es un trabajo muy tedioso, en especial si estamos pegando HTML. ¿Solución? Activar la opción Escape text when pasting into a string literal, la cual está en Windows -> Preferences -> Java -> Editor -> Typing

Ahora simplemente creamos algo así:


String html = "";

Ahora, al pegar el código entre las ” ” quedará perfectamente escapado.

Dart y Android

dart-logo-wordmark-1200w

El Google IO se acerca y comienzan los rumores sobre usar Dart como lenguaje de programación nativo para Android, en especial con el anuncio de Swift,  como pueden ser estos artículos (uno y dos). Si bien es cierto que las ventajas de este lenguaje sobre el “anticuado Java” son bastantes, hay varios aspectos por el que no creo que se adopte:

El primero de ellos es ART, la máquina virtual Java  para Android que se presento hace unos meses. ¿Para qué hacer una máquina virtual para un lenguaje si después vas a sustituirlo por otro?

Dart lanza una versión cada 6 semanas, lo cual haría que las últimas novedades no estuviesen disponibles hasta la siguiente versión de Android.

Fragmentación: Ni que decir tiene que si aún hay que darle soporte a Android 2.3, esperar hasta…  ¿Android 4.5?  para que nuestra aplicación en Dart funcione me parece totalmente inviable.

Librerías de Java: Para el poco tiempo que tiene Dart la cantidad de librerías disponible es bastante grande, aunque la gran mayoría destinadas a la web. La única “posibilidad” es algún tipo de conexión entre Java y Dart, al igual que ocurre entre Javascript y Dart, aunque esta última es más “fácil” al ser los dos lenguajes no fuertemente tipados, pues recordamos que en Dart el tipado es opcional, y aún así la comunicación entre ambos lenguajes es lenta y compleja.

 Android Studio: Otro aspecto, muy parecido a ART, es el nuevo IDE desarrollado por Google para Android y el lenguaje Java. Si bien IntelliJ,  o mejor dicho, WebStorm, soporta Dart, no tiene ni punto de comparación con el soporte ofrecido para el lenguaje desarrollado por Sun.

¿Habría alguna posibilidad?

Siempre hay alguna, no voy a poner la mano en el fuego asegurando que no van a lanzar Dart para Android, es más, se ha conseguido compilar la máquina virtual en el Android x86 y funcionar, pero lo dudo. La única manera “viable” que ahora veo sería usando Dart2Java. Usando la misma filosofía que en la web. Programas en Dart y después crear una aplicación Java compatible con los actuales dispositivos. Pero la verdad, no lo termino de ver, y eso que yo sería uno de los que más disfrutaría con esta posibilidad. 

 

Categorías:Android, Java Etiquetas: ,

Selenium, JSF, Composite Components y los IDs dinámicos

selenium

 

Una de las herramienta para hacer testing en web más utilizada es Selenium IDE, una serie de herramientas y librerías para hacer tests usando el navegador para rellenar formularios, comprobar textos…

Para “guiarse”, Selenium usa distintos atributos de los elementos HTML para localizarlos, como los IDs, sin embargo, en JSF estos pueden cambiar si no se definen todos los IDs de los padres de un elemento, generando cosas como: id=”j_45:j_21:username”, y estos números son generados dinámicamente, por lo que podrían cambiar entre un test y otro, obligándonos a comprobar cada ID nuevo cada vez que probamos el test (una locura).

Si bien usando prependId=”false” evitamos que el form añada su ID al del input, esto no es posible en los Composite Components.

Una solución puede ser darle un ID a cada composite, y quedaría todo fijo, en muchos casos es una tarea bastante engorrosa para simplemente unos tests.

¿Solución? Selectores CSS Leer más…

ProGuard: Optimiza, reduce y ofusca el código de tus aplicaciones Android

proguard

Cuando creamos aplicaciones para dispositivos móviles debemos tener en cuenta la limitaciones de estos. si bien en la gama alta apenas existe, hay que considerar también los móviles de gama baja. Leer más…

Creando una imagen a partir de un componente gráfico en Java

ContactMain

En ciertas ocasiones queremos crear una imagen a partir de un componente gráfico de Java, por ejemplo una tabla o algún componente especial, como una librería para representar grafos como fue mi caso, más exactamente JUNG.

El sistema es válido para todos aquellos componentes que dispongan de un método paint (Graphics g)

// "componente" es el elemento gráfico que desaemos guardar
//Creamos una Imagen con el tamaño del componente
BufferedImage imagen = new BufferedImage(componente.getWidth(), componente.getHeight(), BufferedImage.TYPE_INT_ARGB);
//Hacemos que el componente se pinte en el Graphics de la imagen
componente.paint(imagen.getGraphics());
//Guardamos la imagen y listo
ImageIO.write(imagen, "png", new File("fichero.png"));

Simple, ¿no?

Categorías:Java, Programación Etiquetas: , , , ,

ListView y ArrayAdapter en Android

Bueno, como habréis notado, he pasado un poco de los videotutoriales pues son muy costosos de hacer y aburridos de ver, así que vuelvo a los tutoriales normales. En este caso, como usar los ListView y por qué. Leer más…

Sábados Androides: Detectar Eventos (I)

Ya tenéis un nuevo Sábado Androide, aunque estamos a domingo, puesto que ayer estuve de viaje con la Asociación Oberón.

En esta ocasión os hablaré de como usar los OnClickListener, OnLongClickListener y OnTouchListener.

El vídeo podéis encontrarlo aquí como siempre:

Y en mi Minus podéis encontrar el fichero con todo el código fuente.

Categorías:Android, Java, Programación