Diferencia entre revisiones de «Java»

De Proyecto Butiá
Saltar a: navegación, buscar
Línea 43: Línea 43:
 
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:
 
A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:
  
Cliente Python:
+
'''Cliente Python:'''
 
<source lang="python">
 
<source lang="python">
  
Línea 68: Línea 68:
 
</source>
 
</source>
  
Cliente Java:
+
'''Cliente Java:'''
 
<source lang="java">
 
<source lang="java">
  
Línea 94: Línea 94:
 
     }
 
     }
 
</source>
 
</source>
 +
 +
 +
==¿Cómo utilizar la API en Java?==
 +
 +
=== Antes de empezar ===
 +
 +
En el caso de usar [[pyBot]] se debe ejecutar:
 +
 +
    python pybot_server.py
 +
 +
Para habilitar el DEBUG:
 +
 +
    python pybot_server.py DEBUG
 +
 +
Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.

Revisión del 13:05 28 jun 2015

Realización de una API en JAVA para manejar el robot butiá en ese lenguaje. Se presentan además ejemplos básicos.

Integrantes

  • Santiago Behak
  • Gonzalo Mercadante
  • Fernanda Toledo


Tutor

  • Federico Andrade


Objetivo

Dada la gran comunidad de programadores Java, puede ser de interés para muchos manejar el robot mediante dicho lenguaje. Por esta razón, el objetivo del trabajo fue traducir al lenguaje Java las funciones necesarias para el manejo del robot butiá. Dichas funciones se encuentran implementadas en el lenguaje Python actualmente. Además se implementaron ejemplos básicos de manejo del robot para mostrar cómo utilizar la nueva API.


Actas

3 de junio de 2015

  • Fueron planteadas las principales características del proyecto.
  • Se habló sobre cuáles eran los archivos de la API en Python que se necesitaban traducir. Se recomendó analizar el archivo functions.py. Luego de analizado este archivo, se decidió que los archivos a traducir eran 2:
  1. functions.py
  2. pybot_client.py

24 de junio de 2015

  • Se probaron los ejemplos realizados.
  • Se establecieron las pautas para la entrega y presentación.


Investigación

Antes de comenzar con la implementación de la API en Java se investigaron algunas cosas que se debían utilizar. Por un lado se realizó un estudio básico del lenguaje Python para poder entender la sintáxis de dicho lenguaje. Esto era necesario para poder compreder correctamente el comportamiento de las funciones que se debían traducir. Por otro lado se estudió el manejo básico de sockects, necesario para que el cliente (Java) se comunicara con el servidor (Python).


Desarollo

Primero se analizaron los archivos en Python, para luego comenzar a traducir las funciones al lenguaje Java. Durante la implementación, se trató en todo momento que el código fuera lo más similar posible al código en Python. Algunas cosas no fueron posibles realizarlas de forma similar dada las diferencias en los lenguajes. Un ejemplo de esto es la sintáxis utilizada en Python para establecer los parámetros de una función, donde se pueden definir parámetros opcionales. En Java, se debe sobrescribir la función para las distantas cantidades de parámetros que se requieran.

A continuación se muestra un ejemplo de una función en Python y luego se traducción en Java. Esta función realiza la comunicación con el servidor, ejecutando un comando desde el cliente:

Cliente Python:

def _doCommand(self, msg, ret_type = str):
        """
        Executes a command in butia.
        @param msg message to be executed
        """
        msg = msg + '\n'
        ret = ERROR
        self._lock.acquire()
        try:     
            self._client.send(msg)
            ret = self._client.recv(1024)
            ret = ret[:-1]
        except Exception, e:
            self._process_error(e)
        try:
            ret = ret_type(ret)
        except:
            ret = ERROR
        self._lock.release()
        return ret

Cliente Java:

public String doCommand(String msg) {
        /* Executes a command in butia.@param msg message to be executed*/
        msg = msg + '\n';
        String ret = "";
        try {
            this.lock.acquire();
            DataOutputStream outToServer = new DataOutputStream(client.getOutputStream());
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(client.getInputStream()));
            outToServer.write(msg.getBytes());
            outToServer.flush();
            
            char[] respuesta = new char[1024];
            inFromServer.read(respuesta);
            ret = String.valueOf(respuesta);

        } catch (Exception e) {
            ret = "" + ERROR;
            process_error(e);
        }
        this.lock.release();
        return ret;
    }


¿Cómo utilizar la API en Java?

Antes de empezar

En el caso de usar pyBot se debe ejecutar:

   python pybot_server.py

Para habilitar el DEBUG:

   python pybot_server.py DEBUG

Luego de iniciado el servidor, podemos conectarnos desde el cliente javabot_robedu.jar.