Google vence a Oracle en los tribunales

oracle_google

Todos sabéis que no suelo escribir sobre cosas que no tengan relación directa con la programación o el desarrollo de software, y aunque lo parezca este tampoco va a ser el caso, aunque esta entrada es a modo de noticia, mas adelante veréis su relación directa con el desarrollo.

Hoy me he levantado con una muy buena noticia, yo y seguro que también muchos otros Android Developers, y es que a parecer tras dos intensas semanas de juicio, Google y su magnifico producto Android (el cual ya os habréis dado cuenta que viene de la mano con este blog), han acabado por resultar inocentes antes las acusaciones de Oracle por haber utilizado “ilegalmente” 37 Apis de Java y reclamando a Google la friolera cantidad de 9.300 millones de dolares, dictando el jurado que Android no infringe ningún derecho de autor propiedad de la empresa Oracle.

Así que los que estamos a favor del desarrollo de software libre estamos hoy de enhorabuena, ya que es un pasito adelante que se ha dado en contra del lo que llamamos software privativo, esto no quiere decir que estemos, ni mucho menos cerca de un mundo en el que predomine el software libre.

¿En que nos hubiese afectado esto a los desarrolladores?

Pues bien, si no me equivoco o estoy mal informado, Google a causa del apretón de cuello por parte de Oracle llego a la conclusión de tener que usar Open JDK para las futuras versiones del sistema operativo. Lo que seguramente nos acabaría complicando, y bien, la vida por un lado a los desarrolladores, y también seguramente pondría patas arriba la lucha por la compatibilidad contra el mayor problema de Android, la fragmentación.

 

 

 

 

Servidor web hecho con NodeJS

nodejs_logo.jpg

Hoy os quiero compartir un servidor web que acabo de subir a mi cuenta de GitHub,  se trata de un Servidor web asíncrono, hecho con NodeJS y Javascript, con sistema de registro de log en un archivo de texto y configurado para servir paginas en formato HTML5.

El proyecto es fruto de un curso que he estado haciendo recientemente para acercarme un poco a lo de programar con Javascript del lado del servidor, solo tendríais que modificar los archivos html y/o añadir lo que queráis, esto ya a gusto del consumidor, ya que es una configuración fácilmente escalable, y con solo modificar algunas lineas de código haréis con esto lo que queráis.

Lo que puedo sacar de esto es que no puedo decir otra cosa de NodeJS más que…  “¡es una maravilla!”, además con la comodidad de estar programando en Javascript (aunque no soy un gran fanático del mismo, todo hay que decirlo, mas que nada por que es tan literalmente “liberal”,  que si te despistas un poco, el código y su organización, pueden acabar pareciéndose a una juerga universitaria o una comuna hippie).

A todas las ventajas mencionadas anteriormente, sumarle que por ejemplo para crear el backend de una app móvil (obviando el tema de Firebase o el antiguo Parse, que por cierto dejó de funcionar), es una maravilla no tener que estar aprendiendo Python o Ruby y su framework Ruby on rails por ejemplo, simplemente para hacer eso.

Tenéis el proyecto preparado en mi cuenta de GitHub aquí:

https://github.com/czazuaga/Servidor_Web_NodeJS

¿Conoces Json?

json

Hoy vamos a hablar de una de las herramientas de desarrollo mas sencillas de utilizar pero a la vez de mas utilidad que podemos encontrar a nuestra disposición, y esto es tanto que a día de hoy, el conocimiento de Json se ha convertido en un indispensable para cualquier desarrollador de hoy en día.

Bien, y que es esto de Json, pues imaginemos que para la comunicación de datos entre lenguajes de programación que no tienen nada que ver unas con otros, se ha inventado una especie de “servicio de mensajería” ligera, sencilla, rápida y eficaz. Y esto no se ha inventado con Json, antes esta Xml (y sigue estando), pero al llegar Json se ha puesto literalmente a la cabeza, debido a varios factores, como su simplicidad o por ejemplo el ahorro de escritura de código  y peso que supone, algo que se puede comprobar al comparar dos archivos (uno Xml y otro Json).

¿Que dice wikipedia?

JSON, acrónimo de JavaScript Object Notation, es un formato de texto ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript aunque hoy, debido a su amplia adopción como alternativa a XML, se considera un formato de lenguaje independiente.

¿Y como trabajamos con Json?

Pues dada la ocasión he preparado algunos ejemplos, en los que veremos su simple sintaxis y su implementación en HTML5, Javascript y también veremos como trabajar con Json cuando programamos para Android.

Implementación en HTML5 y Javascript:

La estructura de un objeto Json:

estructura_objetoEjemplos desarrollados con Sublime Text 3.

Como podéis ver, hay una simple estructura HTML5, que contiene un contenedor “div”y un script Javascript con una referencia al div “contenedor”. Bien pues ese “var objeto”  que veis es la declaración del objeto Json, tan sencillo como eso, y en el codigo html que metemos en la etiqueta del contenedor un poco mas abajo, estamos realizando la llamada a las parejas {“clave”:”valor”} que tenemos dentro de nuestro objeto Json.

Salida del ejemplo anterior:

estructura_objeto_out

Trabajo con números:

numeros_json

Ejemplo mas simple y sencillo aún, esta vez vemos como trabajar con tipos de dato numéricos. En este caso se puede observar que el objeto Json, solo tiene un atributo.

Salida en el navegador:

numeros_json_out.PNG

Strings en Json:

strings_json

Este ejemplo a mi parecer no necesita de mucha explicación.

Salida de la ejecución del código en el navegador:

strings_json_out

Trabajo con arrays en Json:

array_json.PNG

Se puede observar que aquí ya se complica un poco la cosa, pero nada del otro mundo, quizás la estructura de declaración del array en Json sea algo distinta a lo que acostumbramos a ver en diferentes lenguajes de programación (obviando que Json no es uno de ellos). Cabe decir que los objetos son completamente flexibles en cuanto a términos de anidación se refiere, con lo que podríamos por ejemplo meter varios objetos dentro de otros, aunque útil en muchos casos, también podría tender a romper esa “sencillez” de legibilidad que Json de forma natural nos proporciona.

Salida del navegador:

array_json_out

Desde luego estos ejemplos son a modo didáctico,  y esta no es la forma habitual de trabajar con Json en un entorno profesional, todo ha sido a modo local, en el día a día se trabajaría con archivos “.json” albergados en un servidor,  e importaríamos desde una Url en nuestro código Javascript dentro de nuestro html o trabajaríamos con Jquery o Ajax para parsear los datos de los archivos Json, ya que estos son, digamos”codificados” y enviados a través de la red hasta su destino en forma de simples cadenas de texto, de unos cuantos caracteres, y luego una vez recibidos son decodificados, así que os invito a investigar y profundizar en como trabajar con Json de este modo. Aunque en el siguiente ejemplo, en Android veremos como hacer esto, aunque de modo local, si que veremos el proceso de codificado y decodificado de los objetos Json.

Implementación en Android:

Preparando la interfaz gráfica.

Xml

Creamos con Xml una sencilla interfaz de usuario, la cual consta únicamente de un TextView con un Id para identificarlo desde nuestra clase Java.

Creando la clase java y los imports de la misma:

imports

Creamos nuestra activity e importamos las clases JSONException y JSONObject de la cual nos serviremos para crear, trabajar y parsear nuestros objetos Json de forma nativa dentro de Android.

onCreate

en el método onCreate identificamos nuestro TextView y creamos una instancia de la clase JSONObject, ya solo queda meter los atributos dentro esta instancia la cual será nuestro objeto Json,  hay que hacer esto dentro de una estructura “try-catch” ya que podria lanzar una excepción.

codificar

A continuación he creado un método “codificar” que devuelve un String a partir de nuestro objeto Json. Y es justamente lo que mencionaba en los ejemplos de Javascript, ahora nuestro objeto esta contenido dentro de una cadena de caracteres.

decodificar

Ahora podemos ver como he creado un método “decodificar” que hace justo lo que su nombre describe, recibe un String que contiene un objeto Json codificado y devuelve otro String, pero esta vez ya decodificado.

La ejecución del código daría esta salida:

android_out

Como podéis ver es bastante simple el uso de Json, pero aún más es útil, a día de hoy Json ya esta integrado de forma nativa en prácticamente todos los lenguajes  de programación, los cuales, al igual que hemos visto en android, incluyen sus propias clases para trabajar con él. Además muchos sistemas modernos como por ejemplo el backend Firebase o la base de datos no relacional MongoDB también se basan en Json para trabajar, por lo tanto podemos estar seguros de que es una apuesta garantizada el estudiarlo.

Con esto despido el articulo de hoy, espero que os haya sido de utilidad y que os haya gustado.

 

 

 

 

Libro Patrones de diseño en Java

10675646_835459986485488_1379608178837703410_n.png

Recomendación del Libro Patrones de diseño en Java

Pues hoy os quería traer una recomendación de una joya de libro que llevo leyendo algún tiempo, y sí, he dicho tiempo, ya que este libro no es un libro para leerse y aprenderlo o memorizarlo, posiblemente alguna que otra cosa, pero no todo desde luego.

Se trata de un libro largo y pesado de leer si vas a “iterarlo”, pero no se trata de eso, simplemente se trata de repasarlo un poco e intentar de entender los conceptos de algunos de los útiles patrones de diseño de software que contiene. Y una vez hecho esto, tiene un indice dividido en las tres categorías de patrones de diseño que ya vimos anteriormente, lo que es muy útil, ya que viéndonos en la situación de necesitar uno de ellos para afrontar el diseño de la arquitectura de un nuevo software, un nuevo modulo o incluso al aplicar refactoring, solo tendremos que buscar en la categoría que mas nos convenga en ese caso.

Dicho lo anterior no nos queda mas remedio que darnos cuenta de que estamos ante una poderosa herramienta con la que lidiar con nuestros problemas sel día a día como desarrolladores de software.

Crear e importar librerías propias en Android Studio

Como_crear_e_importar_librerias_en_Android_First_Frame.png

Como creare e importar nuestras propias librerías en Android

Del mismo modo que vimos como hacer esto en Java 8, hoy veremos como también podemos crear ,exportar, e importar nuestras propias librerías (o de terceros) en Android Studio, en el camino nos daremos de narices con Gradle, asi que trastearemos un poco con él y sincronizaremos nuestro proyecto para poder trabajar con nuestras librerias.

Si te gusta lo que estamos haciendo hoy, mantente atento, ya que estoy preparando un curso intensivo sobre Gradle para desarrollo en Android, incluyendo su sintaxis en el lenguaje Groovy , actualizado a 2016 y en español (que si habéis buscado no hay prácticamente ninguno..). Lo encontrareis gratis, como siempre, y sera publicado aquí y en mi canal de Youtube.

 

De momento.. :

 

Como crear e importar librerías en Java 8

Como_crear_e_importar_librerias_en_java_First_Frame.png

Aprovecha las ventajas

Gracias al paradigma de programación de lenguajes  Java, la OOP o programación orientada a objetos, tenemos un montón de posibilidades y herramientas a nuestro alcance, tales como la herencia, encapsulación, polimorfismo etc. Y podemos aprovechar todas la mencionadas antes en conjunto,  para crear librerías propias que nos abrirán la puerta a la autentica reutilización de código.

Reutilización de código

Una de las cosas yo siempre intento perseguir como programador  en el día a día, y transmitir a través del blog, pero sobre todo en los tutoriales y ejemplos prácticos que voy grabando en vídeo, es la reutilización de código, por que se traduce en limpieza, menos costes en cuanto a tiempo de desarrollo, (lo que se traduce en dinero al fin y al cabo). Pero el verdadero ahorro no vendrá en el desarrollo en el que se creen las librerías, si no en los próximos desarrollos.

Caso práctico

Supongamos por ejemplo que estamos desarrollando aplicaciones como freelancer, y nos suelen encargar trabajos que al final nos damos cuenta que tienen en común ciertos algoritmos, y partes a nivel de código muy parecidas entre sí. Pues una vez resuelto un problema, seria estúpido no volver a repetir la formula y crearla de nuevo.

Pues bien, si lo hacemos bien, incrustando estas soluciones en una librería propia, de ahí en adelante (en un nuevo software) posiblemente no tardes mas de 5 minutos y no ocuparas mas que unas cuantas lineas de código en resolver el mismo problema, el cual te llevó unas 6 horas resolver y acabo con una estructura, digamos un tanto a bajo nivel.

¿Y como hacemos esto en Java?

Hoy veremos como podemos crear nuestras propias librerías de clases en Java 8 y como importar librerías distribuidas en .Jar, ya sean creadas por nosotros mismos o de terceros.

Integrar Github con Android Studio

Git+Android.png

Hoy vamos a estar viendo como integrar Git y la plataforma Github con el Ide Android Studio,  y asi lograr trabajar en perfecta armonía con estas dos herramientas de desarrollo mientras programamos para Android y sin salir de nuestro Ide.

Crearemos repositorios, commits, push, y clonaremos otros ya creados, desde el servidor a nuestro lugar de trabajo y además conseguiremos hacer todo ello cómodamente, sin escribir una sola linea de comando, y encima sin tener que salir de nuestro entorno de desarrollo en ningún momento.

Tal vez el vídeo de hoy sea algo largo, pero creedme si os digo que si habitualmente trabajáis con el sistema de control de versiones Git (si no, es muy buen momento para empezar a hacerlo), desarrolláis para android, y no los tenéis integrados entre sí,  este vídeo os va a resultar muy pero que muy útil, y os ahorrará un montón de tiempo y trabajo instantáneamente, pero sobre todo lo hará a la larga.