Android desde cero

Anímate a realizar con el Android Studio tu primera aplicaión móvil

Abre el eclipse y escribe el mas simple "Hola Mundo!"con Spring MVC

Sigue 8 simples pasos para obtener al proyecto mas simple de Spring MVC con Eclipse y Maven.

Como subr una app al Google Play

Te mostramos en tres post, como subir una app en Android al Google Play

domingo, 20 de septiembre de 2015

Proyecto myApiRest en GitHub con Eclipse

Vamos a subir un proyecto simple a GitHub con una API Rest muy básica, que tenga un interceptor y Spring MVC

Utilizamos
La versión inicial del myApiRest.war para los que quieran seguir el post, se encuentra en la siguiente dirección de dropbox:


La evolución del myApiRest.war la realizaremos en GitHub

Comencemos:

Tomamos el war de myApiRest.war y lo importamos en el eclipse, como un nuevo proyecto maven:


Además ejecutamos, run > maven install que nos trae las dependencias y complica el proyecto.






Observemos el pom.xml que contiene el plugin de Tomcat, con lo cual, vamos a ejecutar el war y realizar algunas invocaciones:


  org.apache.tomcat.maven
  tomcat7-maven-plugin
  2.2



Para probar el proyecto, agregamos una nueva configuración al eclipse, equivalente a:

mvm tomcat7:run



Lo cual nos permitirá consumir algunas URL del WAR, después de ejecutar el tomcat7:run que configuramos






Podemos hacer lo mismo para utilizar Jetty en vez del Tomcat.


  org.eclipse.jetty
  jetty-maven-plugin
  9.3.7.v20160115

  
    10
    
      /myApiRest
    
    
      8080
    
  



Ok, con jetty levantado, también podemos invocar  a las url anteriores.

En esta primera versión, tenemos el ejemplo funcionando, con spring MVC, un interceptor, y además está swagger incorporado al proyecto.

Probando el WAR

Invocamos a uno de los controladores de spring

http://localhost:8080/myApiRest/javaBookManager/

Observamos en el log, que el controlador responde, además que el interceptor también lo captura.

El error que muestra es recién en la respuesta, porque intentamos retornar una respuesta JSON y nos falta incluir a jackson al proyecto



Las dependencias a agregar al pom.xml son las siguientes:
    
        com.fasterxml.jackson.core
        jackson-core
        2.2.3
    
    
        com.fasterxml.jackson.core
        jackson-databind
        2.2.3
    
    
        com.fasterxml.jackson.core
        jackson-annotations
        2.2.3
    

Y vemos el resultado, donde se recupera el JSON, a su vez, en el log podemos ver al interceptor trabajando:




Clases Java - Controller y @ResponseBody

Si bien el ejercicio completo está en GitHub en:


Vamos a mencionar un par de componentes Java: Observemos el  @ResponseBody para convertir las respuestas a JSON

   

package com.javaen.web;

import java.util.Collection;

import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;

import com.javaen.business.BookManagerService;
import com.javaen.domain.JavaBook;


/**
 * @author [Pablo Ezequiel]
 *
 * REST API Book Manager
 * 
 *  - getAll
 *  - {id}
 *  - update (string, book)
 *  - add() 
 * 
 *   http://localhost:8080/myApiRest/javaBookManager/
 *   http://localhost:8080/myApiRest/javaBookManager/001
 *
 *   http://localhost:8080/myApiRest/swagger-ui/index.html
 */

@Controller
@RequestMapping("/javaBookManager")
public class BookManagerController {
 
 static final Logger LOG = LoggerFactory.getLogger(BookManagerController.class);

 @Autowired BookManagerService bookManagerService;
 
 @RequestMapping(value="/{id}",method=RequestMethod.GET)
 public  @ResponseBody JavaBook get(@PathVariable String id) {
  
  LOG.debug("BookManagerController::get("+id+")");
  
  JavaBook book = bookManagerService.get(id);
  
  LOG.debug("Book("+id+"): " + book);
  
  return book;
 }
 

 @RequestMapping(method=RequestMethod.GET)
 public  @ResponseBody  Collection select() {
  LOG.debug("BookManagerController::getAll()");
  
  Collection books =  bookManagerService.getAll();
  
  LOG.debug("BookManagerController select(): " + books);
  
  return books;
 }

 @RequestMapping(value="/{id}",method=RequestMethod.PUT)
 @ResponseStatus(HttpStatus.NO_CONTENT)
 public void update(@PathVariable String id, @RequestBody JavaBook book) {
  
  LOG.debug("BookManagerController::update("+id+","+book+")");
  
  book.setId(id);
  bookManagerService.update(id, book);
 }

 
 @RequestMapping(method=RequestMethod.POST)
 @ResponseStatus(HttpStatus.CREATED)
 public void add(@RequestBody JavaBook book, HttpServletResponse response) {
  
  LOG.debug("BookManagerController::add("+book+")");
  
  bookManagerService.add(book);
 } 
 
}



Con esto damos finalizado el ejercicio de un proyecto con Spring MVC para una hacer una API REST

Se deja el siguiente TAG en GitHub para el que le interese recuperar el estado de esta versión:

https://github.com/PabloEzequiel/Java/releases/tag/v1.0.1


En un próximo post, el objetivo será que swagger levante la info de la API Rest para documentarla.


Un poco de Feedback


  • ¿Pudieron hacer funcionar el ejemplo?



miércoles, 16 de septiembre de 2015

GitHub con GitHub Desktop

GitHub Desktop es una aplicación oficial de GitHub. La podemos descargar de https://desktop.github.com/

¿Cuál es la motivación para utilizar el Cliente Desktop de GitHub cuando el Android Studio y otros IDE tienen incluido su integración con GitHub?

Seguramente esto que voy a comentar se solucione de una forma muy sencilla, la cual aún no conozco, y es lo que me llevó a instalar y utilizar la versión de GitHub Desktop. En mi repositorio de GitHub me gustaría subir varios proyectos de distintas tecnologías que estoy explorando... Android, Java, iOS, etc. Y me gustaría que los distintos ejercicios no estén en la raíz de GitHub sino dentro de sus carpetas "Android", "Java", "iOS"... etc. Lamento si suena obvio para muchos, pero no encontré la forma desde distintos IDE´s "pegarle" adentro del árbol que arma git, en vez de solamente la raiz... Estoy seguro que la solución es muy obvia, pero aún no la encontré, asi que por esta razón recurro a la versión Desktop de GitHub, que seguramente también tendrá muchos otros beneficios que gracias a este problema, vamos a poder aprender.

Sigamos:

Veamos como la configuramos con nuestra cuenta de GitHub:

Después de descargar la aplicación:
 Cargamos los datos de la cuenta:



 Y en este caso, como no elegimos ninguno de nuestros repositorios locales aparece vacío:
Ahora, creamos con GitHub Desktop un nuevo repositorio para poner a los proyectos de Android que queremos compartir en GitHub:


Inicialmente esa carpeta está vacía, por lo cual, desde el Android Studio crearemos un nuevo proyecto que esté alojado en esa carpeta:






Luego, creamos un nuevo proyecto de Android con todo "Default" excepto que elegimos en "Proyject Location" el nuevo repositorio que creamos para compartir con GitHub: 

Observamos que ese directorio no está vacío:



Y, lo mejor, y lo que estábamos esperando lograr, que el GitHub 


Y a continuación procedemos a realizar el commit, o el publish:





Y de esta manera nos queda claro que podemos seguir sumando proyectos dentro de "Android" y que no quedarán en la Raiz

El repositorio de GitHub es:

https://github.com/PabloEzequiel/Android

Hasta la próxima



jueves, 3 de septiembre de 2015

Como importar un proyecto de GitHub al Eclipse

Importar los proyectos de GitHub al Eclipse resulta muy sencillo, y existen muchas alternativas.

Una de las mas comunes es hacer un download zip del repositorio. Para luego importarlo en el eclipse.

Otra opción cómoda cuando hablamos de proyectos Java es utilizar el Eclipse, sobre todo si ya disponemos del plugin del Eclipse eGit. 

El plugin de Eclipse eGit se puede descargar desde la página oficial, o bien agregar al eclipse a través de Help > Eclipse Marketplatce. Aunque lo más probable es que la distribución de eclipse que estén utilizando ya venga con un plugin de Git incorporado.



Descargando de GitHub un Proyecto Java con Eclipse

Utilizaremos como ejemplo el repositorio:



Luego desde el Eclipse: File > Import > Git  > Project From Git


Presionamos Next y luego Clone URL:








Pegamos la URL

https://github.com/PabloEzequiel/Javaen.blogspot.com.git


y luego master:


y elegimos el directorio donde se bajar el proyecto, que en nuestro caso es:

C:\javaen\desa\Javaen01


Presionamos Next:


Presionamos Next:


Y finalmente tenemos nuestro proyecto Java



Como pudimos ver, en GitHub es muy sencilla tanto la subida de proyectos como bajar nuestros los proyectos que nos interesa









GitHub



Un Poco de Feedback

  • ¿Pudieron seguir los paso?
  • ¿Que proyectos están compartiendo en GitHub?

Url Abreviada

  • Si te resulto interesante, puedes compartirlo




martes, 1 de septiembre de 2015

Como subir un proyecto a GitHub con Eclipse

El proceso para subir un proyecto Java con el eclipse a GitHub es sencillo, y nos permitirá además de compartir nuestro código, tenerlo disponible en la nube para posteriormente poder descargarlo a cualquier lugar.

En este sencillo tutorial, utilizamos

  • Eclipse Mars
  • Plugin de Eclipse eGit
  • Nuestra cuenta de GitHub

El plugin de Eclipse eGit se puede descargar desde la página oficial, o bien agregar al eclipse a través de Help > Eclipse Marketplatce. Aunque lo más probable es que la distribución de eclipse que estén utilizando ya venga con un plugin de Git incorporado.


Necesitamos también una cuenta en GitHub a continuación compartimos la de Javaen.blogspot.com donde hemos creado un nuevo repositorio para le ejemplo:



Comencemos creando con el Eclipse un proyecto Java Nuevo...







... con la típica clase de "Hola Mundo": 



Y lo conectamos primero a un repositorio local de Git, a diferencia de la conexión a GitHub que es un repositorio remoto.

El plugin del eclipse se encargará de crear este repositorio local de Git

Elegimos Team > Share Project dentro del eclipse:



Y hacemos Team > Commit



Agregando una descripción por el cambio:



Luego, hacemos el push para subir los cambios al directorio remoto de GitHub

Elegimos: Team > Remote > Push



Y en la URL indicamos el de nuestro repositorio de GitHub

En nuestro caso es: https://github.com/PabloEzequiel/Javaen.blogspot.com.git

Y también debemos ingresar nuestro usuario y password de nuestra cuenta de GitHub

El plugin luego se encarga de completar el resto de los campos.


Observemos las selecciones a continuación:


Y presionando Finish, el proyecto se sube a GitHub


Esta acción la podemos verificar en la siguiente imagen donde están los fuentes publicados:




 Estos son todos los pasos, y en el próximo post veremos el camino inverso: como bajar un proyecto de GitHub el cual es mucho mas sencillo.





Links Externos

Quizás te interese saber como puedes subir un proyecto a GitHub con el potente editor Sublime Text 3 y el plugin SublimeGit:

GitHub

Un Poco de Feedback


  • ¿Pudieron completar el ejercicio?
  • ¿Tuvieron alguna dificultad?
  • ¿Ya están utilizando GitHub?
  • ¿Que otros IDE además del Eclipse utilizan?

Url Abreviada


Si te gustó o te pareció útil, puedes compartirlo en tus redes sociales