miércoles, 28 de mayo de 2014

Nos hemos mudado

Esta será la última entrada al blog, nos hemos mudado, la nueva dirección es http://www.asociacionaepi.es/blog-aepi/

Agradecer a todos aquellos que nos hayan leído alguna vez desde que creamos este blog, esperamos que los artículos os hayan ayudado en algo o por lo menos que os hayan resultado interesantes.

Muchas gracias!!
 

viernes, 9 de mayo de 2014

Como usar Maven en una aplicación Web

En nuestro articulo de hoy crearemos una aplicación Web simple con Apache Maven, la cual puede ser gestionada por IDEs tales como Eclipse o Netbeans.

Requisitos

  • Java JDK 6 o superior
  • Apache Maven 2 o superior
  • Eclipse versión JEE
Pasos a seguir:
  1. Abrimos la consola de Msdos o Limix y creamos un proyecto con Maven utilizando el arquetipo adecuadomaven-archetype-webapp
    mvn archetype:generate -DgroupId=com.sobrejava.ejemplo.web -DartifactId=ejemplo-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
    
    Ahora tenemos una estructura similar a la siguiente
  2. Ahora agregamos las dependencias necesarias para una aplicación Web, en este ejemplo utilizaremos java-web-6, la cual nos brinda lo necesario para poder iniciarnos en el desarrollo de ServletsJSP, etc. Para ello editamos el archivo pom.xml de la siguiente manera
    Código del archivo pom.xml
    <project xmlns="http://maven.apache.org/POM/4.0.0" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.sobrejava.ejemplo.web</groupId>
      <artifactId>ejemplo-web</artifactId>
      <packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>ejemplo-web Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <!-- agregamos el API para JEE6 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
      </dependencies>
      <build>
        <finalName>ejemplo-web</finalName>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.6</source>
              <target>1.6</target>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    
  3. Editamos el archivo src/main/webapp/web.xml con el descriptor 3.0
    Código del archivo web.xml
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
              version="3.0">
    
        <display-name>Ejemplo-Web</display-name>
    
    </web-app> 
    
    Algunos IDEs como Eclipse utilizan el descriptor para definir la versión Web de la aplicación.
  4. Finalmente para descargar las dependencias (si es necesario) y asegurarnos que todo esté bien, para ello vamos al directorio de la aplicación y usamos mvn compile

Editar Aplicación con Eclipse IDE

  1. En Eclipse (JEE versión), Seleccionamos un Workspace adecuado y vamos a Menú File -> Import -> Maven Projects -> Existing Maven Project...
  2. En la pantalla de Import Maven Projects seleccionamos el directorio donde se encuentra el proyecto ejemplo-web y seleccionamos Finish
  3. Finalmente tenemos el proyecto configurado con Eclipse WTP .
Espero que este artículo os pueda servir de ayuda en vuestra vida profesional y estad atentos a nuestros próximos artículos, gracias!!!!


jueves, 24 de abril de 2014

Julia, un lenguaje de programación ¿con lo mejor de todos los mundos?

Según la Wikipedia, Julia es un lenguaje de programación dinámico, de alto nivel y alto rendimiento para cálculos científicos y técnicos con una sintaxis similar a la de otros entornos de computación similares. Dispone de un compilador avanzado, mecanismos para la ejecución en paralelo y una extensa biblioteca de funciones matemáticas. La biblioteca, desarrollada fundamentalmente en Julia, también contiene código desarrollado en C o Fortran.
El lenguaje fue creado por Stefan Karpinski, estudiante graduado de la Universidad de California, que estaba involucrado en una herramienta simulación de redes que requería el uso de varios lenguajes de programación diferentes. Curiosamente, ninguno de los lenguajes usados podía hacer toda la tarea, todo el proceso. Por ello, Karpinski, junto con su compañero de universidad Viral Shah y Jeff Bezanson del MIT, decidieron resolverlo diseñando un nuevo lenguaje que fuera compatible con prácticamente cualquier tarea. La meta de Karpinski y su equipo es construir un lenguaje único que haga todo bien.
En este lenguaje, bautizado como Julia, las bibliotecas están escritas en Julia y se integra lo mejor del código de C y Fortran en los siguientes rubros: álgebra lineal, generación de números al azar, procesamiento de señales y procesamiento de strings (cadenas de caracteres). Además, la comunidad de desarrolladores de Julia ha contribuido con una serie de paquetes externos en muy poco tiempo. IJulia es una colaboración de IPython y las comunidades de Julia, lo cual le da un navegador con una interfaz gráfica basada en Julia,
Los programas de Julias se organizan definiendo funciones y sobrecargando las mismas para diferentes combinaciones de tipos de argumentos, los cuales pueden ser definidos por el usuario.
Un resumen de las características de Julias son:
Posibilidad de definir el comportamiento de una función con una combinación de tipos de argumentos
Sistema dinámico de tipos: tipos para documentar, optimizar y ejecutar rutinas. Buen desempeño, el cual se aproxima (estadísticamente) a lenguajes como C manejador de paquetes interconstruido. Macros como en LISP y otras metafacilidades de programación. Se pueden llamar funciones de Python vía llamadas a PyCall
Llamada a funciones de C directamente. No se necesita nada más. Capacidades poderosas de Shell para manejar otros procesos. Diseñado para computación distribuida y en paralelo.
Tipos definidos por el usuario que son rápidos y compactos como si fuesen interconstruidos.
Generación automática de código especializado, eficiente, de acuerdo al tipo de argumentos que de pasan
Conversiones elegante y extensibles así como promoción de tipos numéricos y otros tipos
Soporte para Unicode
Licencia MIT : libre y de código abierto
La cuestión es si esta idea tendrá éxito. Los programadores tienden a irse a lenguajes más que probados, amén de tener un soporte generalizado. Desde luego que en esta selva de lenguajes de programación, hay para todos, pero falta ver si Julia puede madurar y convencer a los programadores de sus bondades.



miércoles, 9 de abril de 2014

Los diferentes modelos de negocio de una API y sus desarrolladores

Quizás aún no se haya llegado al punto de madurez suficiente para considerar las APIs monetizables como una fuente más de ingresos. Muchas empresas ofrecen acceso a sus APIs públicas sin apenas restricciones y sin ningún coste a los desarrolladores, sólo se fijan limitaciones por número de peticiones de uso, usuarios, tokens, etc…
Aunque actualmente es mínimo, existen distintos modelos de negocio en el ecosistema de las APIs entre desarrolladores y empresas que presentan un panorama bastante interesante.
  • API abierta/pública. En este nivel las empresas ofrecen, por regla general, una API abierta con métodos limitados en comparación a los que se usan internamente. Los desarrolladores pueden crear cualquier aplicación usando este API cumpliendo los acuerdos de licencia y uso. No se espera una fuente de ingresos, sino que sirva para captar tráfico a través de las aplicaciones y webs creadas entorno al API.
  • Asociados (Associate). Cierto desarrolladores que han demostrado un uso más avanzado del API tienen acceso a funcionalidades extras. El contacto entre los desarrolladores que usan el API y la empresa es más directo y reciben un soporte personalizado. Además de seguir un proceso de aprobación, la empresa puede promocionar las aplicaciones creadas en torno al API. Incluso, certificarlas de alguna forma con una marca que demuestre a los usuarios que siguen unas pautas de calidad.
  • Partners. En este caso, hablamos de desarrolladores que están usando el API de una forma exitosa en la que obtienen beneficios por su cuenta y aportar valor a la empresa. Las necesidades de uso del API son elevadas por lo que requieren de cuotas especiales, lo que implica el pago por uso y la reserva de recursos que provee el API para garantizar su estabilidad. La relación entre la empresa y el desarrollador es más cercana a la de socios estratégicos.
  • Incubadoras de aplicaciones. En este caso, las empresas proveedoras del API ofrecen recursos adicionales a los desarrolladores, además de un cierto mentoring a cambio de la participación en el futuro negocio. Es una apuesta, en muchos casos, a largo plazo y en mercados en los que se juega a experimentar en busca de nuevas oportunidades.
Sin duda, nos espera un vibrante futuro entorno al uso de APIs por los desarrolladores, en el que ya no sólo se jueguen con ellas sino que puedan construirse negocios estables, las startups de la próxima generación.

Si quieres estar al día de nuestras novedades visita nuestra Web www.asociacionaepi.es y siguenos en las redes sociales

miércoles, 2 de abril de 2014

Mozilla nos trae su nuevo lenguaje de programación llamado Rust



Rust es un nuevo lenguaje de programación multiparadigmático que está siendo desarrollado por Mozilla. Según se puede leer en su sitio oficial, el objetivo de este nuevo lenguaje es diseñar e implementar un lenguaje de sistemas seguro, concurrente, práctico y estático.

El desarrollo del lenguaje, fue empezado en 2006 por Graydon Hoare, y en 2009, la fundación Mozilla, se involucró en el proyecto. Además de Hoare, hay otros desarrolladores detrás como son el miembro del comité Ecma, Dave Herman, y el CTO de Mozilla y creador de JavaScript, Brendan Eich.

Por ahora se conoce poco sobre el código, pero se puede ver algo de sintaxis en la FAQ de Rust. Os pongo un trozo de código.


iter pairs() -> tup(int,int) {
let int i = 0;
let int j = 0;
while (i <10) {
put tup(i, j);
i += 1;
j += i;
}
}
fn main() {
let int i = 10;
let int j = 0;
for each (tup(int,int) p in pairs()) {
log p._0;
log p._1;
check (p._0 + 10 == i);
i += 1;
j = p._1;
}
check(j == 45);
}

Las características que nos aportará este nuevo lenguaje, han sido resumidas por los desarrolladores de Mozilla.

Orientado a seguridad

Memoria de seguridad, para evitar bugs que sirvan como brechas de seguridad. Gestión automática de guardado.
Control de las modificaciones. Inmutables por defecto. El estado de mutabilidad no se comparte entre tareas.
Ejecución dinámica de seguridad: errores, registros, etc.
Capacidad para definir invariantes complejas

Orientado a la concurrencia

Control de la memoria explícita. Control de localización y de etiquetas.
Tareas de peso muy ligero. Facilidad para convertir miles en millones.
Stack iterators
Compilación nativa y estática. Emite archivos ELF / PE / Mach-o
Una interfaz simple y directa para C.

Orientado a la práctica

Multiparadigmático, totalmente funcional, concurrente, OO
Funciones de primera clase con vínculos
Multiplataforma. Desarrollado para Windows, Linux, OSX
Cadenas UTF8
Funciona con cadenas nativas existentes. GDB, Balgrind, Shark, etc
Permite romper normas en la práctica, si es explícito dónde y cómo

Como se ha comentado, es un proyecto aún en desarrollo, por lo que no podemos ofrecer mucha más información, solo esperar a que por parte de Mozilla vayan sacando más información al respecto.

miércoles, 26 de marzo de 2014

Hackaton solidario el dia 26 de abril en la Universidad Autonoma de Madrid

En nuestro artículo de hoy no voy a hablaros sobre lenguajes de programación o algún otro tecnicismo, hoy vengo a a hablaros sobre el hackaton solidario que celebraremos el día 26 de abril en la Universidad Autónoma de Madrid con el objetivo de construir la plataforma de emergencias del futuro y salvar vidas.

¿En que consiste?
La plataforma Emertech es un proyecto solidario que se está llevando en colaboración con AEPI Telefónica, UAM, Cruz Roja y Zerintia en el que se pretende salvar miles de vidas con la ayuda de las herramientas tecnológicas más avanzadas como Drones de reconocimiento, Google Glass y otros dispositivos Wearable. La plataforma de desarrollará de forma libre, de manera que pueda ser utilizada por cualquier entidad.
En el Hackaton que se celebrará el 26 de Abril de 2014, se llevará el desarrollo de toda esta plataforma, teniendo acceso a toda la tecnología que dará soporte al proyecto para interaccionar con ella y llevar a cabo los desarrollos que surjan durante el evento.

¿Cómo funciona?

- El Hackaton tendrá una capacidad total de 50 participantes
- La organización donará 10 € por cada participante que forme parte del evento.
- Los equipos estarán formados por grupos de 5 personas
- Para el completo desarrollo de la plataforma se formarán 10 bloques de desarrollo diferentes
- Cada equipo, a la hora de inscribirse, elegirá el bloque que desea desarrollar, asignando el bloque por orden de inscripción.
- No es necesario formar un equipo entero, los desarrolladores que deseen participar y no tengan equipo, se les asignará el mismo día de la inscripción
- Habrá varios mentores especializados en la tecnología a desarrollar: Google Glass, Drones y Wearables 
- Los desarrollos acabarán a las 19:30. Cada equipo dispondrá de 5 minutos para presentar su bloque al jurado
- El equipo ganador podrá donar en su nombre 250 € a la organización sin ánimo de lucro que desee.

Tenéis toda la información sobre como inscribiros y demás en la pagina web http://www.hackathonsolidario.com/

¡ Apúntate y se uno de los 50 elegidos para la gloria! ¡Cambiaras el mundo!

miércoles, 19 de marzo de 2014

Genymotion, el emulador más rápido de Android

Genymotion es un emulador de Android que aprovecha la arquitectura x86 para ejecutar de forma fluida y rápida distintos dispositivos Android. Olvidando la lentitud del emulador nativo de Android podemos ejecutar todo tipo de aplicaciones y juegos en nuestro Windows, Mac o Linux.
Uno de los principales usos de Genymotion es facilitar el desarrollo de aplicaciones Android. Casi más de 900.000 usuarios registrados usan sus maquinas virtuales para crear aplicaciones usando Eclipse o intelliJ. Se integran perfectamente con el adb, línea de comandos y los diferentes entorno de desarrollo. Podemos lanzar en apenas un par de segundos las aplicaciones conectadas al ADT desde el IDE para testearla. Mucho tiempo ahorrado.
Genymotion está basado en el uso de máquinas virtuales x86 optimizadas para correr sobre Virtualbox. A muchos les sonarán proyectos similares, pero la gente de Genymotion ha conseguido crear una interfaz simple capaz de soportar distintas funcionalidades accesibles a cualquier usuario, sin olvidar a los desarrolladores (su principal target y modelo de negocio).
Al descargar Genymotion podemos instalar, en apenas un par de clicks, cualquiera de las máquinas virtuales que emulan dispositivos como Nexus 4, Nexus 5, Nexus 7, Galaxy Nexus, HTC One, Moto X, Galaxy S4, Xperia Z, etc… para distintas configuraciones de Android 2.3, 4.1, 4.2, 4.3 y 4.4 , además de diferentes resoluciones de pantalla. El número de máquinass va aumentando según se van creando configuraciones personalizadas.
(Ver video)
Entre todas de las características que aporta el emulador de Genymotion se encuentran el uso de nuestra conexión a internet, la simulación ubicaciones GPS con el widgets que facilita la búsqueda y el posicionamiento sobre un mapa, simulación de la cámara, estado de la batería, rotación del dispositivo, etc.. También ofrecen cuentas premium que incluyen el control remoto táctil desde otro dispositivo, Pixel perfect para diseñar tal cual se vería en el dispositivo o la grabación de screencast desde la interfaz.
Por problemas de licencia, Genymotion no incluyen por defecto la aplicaciones de Google, aunque está trabajando para conseguir un acuerdo de Google. Aunque no hay problema, ya que Genymotion permite instalar cualquier apk o zip arrastrando sobre el emulador el archivo. Así que podemos echar un vistazo a los zip de Google Apps de rooztwiki e instalar el compatible con nuestro dispositivo. Perfecto.