Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

sábado, 16 de noviembre de 2013

Instalación Emulador de Java para Android (JBED)


Las aplicaciones que se utilizaban en los móviles estaban diseñadas en Java (J2ME). Pero con la llegada de los Smartphones con su sistema Android nuestras aplicaciones Java han dejado de funcionar. Hace falta un emulador de Java para sistema Android.
Para ello vamos a tener que instalar el único emulador de Java para Android disponible por el momento (JBED).



Instalación del emulador JBED:

* Requisitos:

    1-Tener un smartphone con el sistema Android.
    2-Tener instalada en nuestro Smartphone el gestor de archivos "Root Explorer". (se puede descargar desde PlayStore).
    3-Descargar el paquete "Jbed.zip", comprobando que Jbed corresponda a la version de tu Android.

* Pasos a seguir:

1- Copiamos "Jbed.zip" dentro nuestro Smartphone Android.
2- Si aún no hemos instalado la aplicación "Root Explorer", procederemos a descargarlo e instalar-lo.




3- Abrimos "Root Explorer" y desde allí descomprimimos el paquete "Jbed.zip". Observamos que se nos ha creado un arbol de carpetas con dos archivos:

    /sdcard/extracted/jbed/system/app/Jbed.apk
    /sdcard/extracted/jbed/system/app/libjbedvm.so


4- Sin salir del "Root Explorer", movemos los archivos "Jbed.apk" y "libjbedvm.so" y los ponemos en las siguientes rutas respectivamente:

    /system/app/Jbed.apk   
    /system/lib/libjbedvm.so


5- Por último comprobar que esos archivos tengan permisos de lectura y escritura. Si no los tiene se les pueden aplicar desde el mismo Root Explorer.





















Nota: En cuanto tenga conocimiento pondré en vuestra disposición los archivos del emulador de java Jbed para Android 4.1.

martes, 15 de octubre de 2013

Crear una esfera en 3D.

Para crear un objeto 3D es necesario tener instalada la API Java3D. 
Como instalar la API Java3D y agregarla a la IDE de Netbeans pinchar aquí


Codigo:

package esfera3d;

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.universe.SimpleUniverse;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.Node;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;

public final class Esfera3D extends Applet {

    public Esfera3D() {
        setLayout(new BorderLayout());
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        Canvas3D canvas3D = new Canvas3D(config);
        add("Center", canvas3D);
        BranchGroup escena = crearEscenaGrafico();
        SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
        simpleU.getViewingPlatform().setNominalViewingTransform();
        simpleU.addBranchGraph(escena);

    }

    public BranchGroup crearEscenaGrafico() {
        BranchGroup objPrincipal = new BranchGroup();
        objPrincipal.addChild(CrearEsfera());
        objPrincipal.addChild(CrearIluminacion());
        return objPrincipal;

    }

    private Node CrearEsfera() {
        Sphere esfera = new Sphere(0.3f); //Tamaño esfera (0.3)
        return esfera;
    }

    private Node CrearIluminacion() {
        Color3f colorLuz = new Color3f(1.0f, 0.5f, 6.1f);
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 20.0), 100.0);
        Vector3f direccionLuz = new Vector3f(4.0f, -7.0f, -12.0f);
        DirectionalLight luz1 = new DirectionalLight(colorLuz, direccionLuz);
        luz1.setInfluencingBounds(bounds);

        return luz1;
    }

    public static void main(String[] args) {
        Frame frame = new MainFrame(new Esfera3D(), 256, 256); //Tamaño ventana de 256x256 pixeles.
    }
}



Resultado:



Instalación de la API Java3D:


Nos dirigimos a descargar el paquete Java3D en la pagina oficial de oracle.
API Java 3D




Descargamos la correspondiente "Java 3D 1.5.1" (act. oct-2013).
Instalamos dejando todas las opciones que nos viene por defecto.
 

Si fuera el caso en que NetbeansIDE no detectara la nueva API de Java3D, habria que agregarla manualmente de la siguiente forma:

Abrimos NetBeans y nos dirigimos a "Tools -> Ant Library -> [New Library...]"



Library Name: Java3D (cambiamos "MyLibrary" por "Java3D")
Library Type: Class Libraries (lo dejamos por defecto)
[Ok]

 
Nos dirigimos a la libreria que acabamos de crear "Java3D" y le damos al botón [Add JAR/Folder...]
Y agregamos todos los archivos ".JAR" ubicados en la siguiente ruta:
"C:\Program Files\Java\Java3D\1.5.1\lib\ext".



Y le damos al [Ok].


Nos dirigimos al menú Projects, carpeta Libraries -> Add Library...


 
Elegimos "Java3D" y pulsamos botón [Add Library].


Listo.


sábado, 15 de junio de 2013

Triangulo de Pascal

Codigo


package triangulopascal;

public class TrianguloPascal {
    public static void main(String[] args) {
        int nfilas = 10;
        int[] a = new int[1];
        for (int i = 1; i <= nfilas; i++) {
            int[] x = new int[i];
            for (int j = 0; j < i; j++) {
                if (j == 0 || j == (i - 1)) {
                    x[j] = 1;
                } else {
                    x[j] = a[j] + a[j - 1];
                }
                System.out.print(x[j] + " ");
            }
            a = x;
            System.out.println();
        }
    }
}



Resultado:


run:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1 
BUILD SUCCESSFUL (total time: 0 seconds)


domingo, 20 de enero de 2013

Generar números aleatorios sin repetición.

En el siguiente ejemplo tenemos una baraja que consta de 10 cartas que vamos a mezclar aleatoriamente para luego mostrarlo en pantalla.


Codigo:

//Números aleatorios sin repetición
package aleatorisinrepeticion;
import java.util.Stack;

public class AleatoriSinRepeticion {
  public static void main(String[] args) {
    int pos;
    int nCartas = 10;
    Stack < Integer > pCartas = new Stack < Integer > ();
    for (int i = 0; i < nCartas ; i++) {
      pos = (int) Math.floor(Math.random() * nCartas );
      while (pCartas.contains(pos)) {
        pos = (int) Math.floor(Math.random() * nCartas );
      }
      pCartas.push(pos);
    }
    System.out.println("Núm. aleatorios sin repetición:");
    System.out.println(pCartas.toString());
  }
}


Resultado:

run:
Núm. aleatorios sin repetición:
[2, 8, 5, 7, 6, 3, 0, 9, 4, 1]
BUILD SUCCESSFUL (total time: 0 seconds)

jueves, 3 de enero de 2013

Pasar vector a Matriz

Codigo:

package vectortaula;

public class VectorTaula {

  public static void main(String[] args) {

    int vDist[] = {774, 647, 192, 754, 515, 578, 861, 947, 253};
    int n= (int)Math.sqrt(vDist.length);
    int taula[][] = new int[n][n];
    int cont = 0;

    for (int x = 0; x < n; x++) {
      for (int y = 0; y < n; y++) {
        taula[y][x] = vDist[cont];
        cont++;
      }
    }

    MostrarTaula(taula, n);

  }

  private static void MostrarTaula(int[][] taula, int n) {
    System.out.println("Matriz:");
    String str = "";
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        str += taula[j][i] + "\t";
      }
      System.out.println(str);
      str = "";
    }
  }

}


Resultado:

run:
Matriz:
774 647 192
754 515 578
861 947 253
BUILD SUCCESSFUL (total time: 0 seconds)

Pasar vector a Matriz Simétrica.

Se puede utilizar para tablas de distancias entre nodos, donde la distancia entre el nodo A y el B y viceversa son equivalentes.


Codigo:

package taulatriangular1;

public class TaulaTriangular1 {

  public static void main(String[] args) {

    int nNodes = 5;
    int vDist[] = {774, 647, 192, 754, 515, 578, 861, 947, 253, 496};
    int taula[][] = new int[nNodes][nNodes];
    int cont = 0;

    for (int i = 0; i < nNodes; i++) {
      for (int j = 0; j < nNodes; j++) {
        if (j == i) {
          taula[i][j] = 0;
        }
        if (j > i) {
          taula[i][j] = vDist[cont];
          taula[j][i] = taula[i][j];
          cont++;
        }
      } 
    }

    mostrarTaula(taula, nNodes);

  }

  private static void mostrarTaula(int[][] taula, int nNodes) {
    String str = "";
    for (int i = 0; i < nNodes; i++) {
      for (int j = 0; j < nNodes; j++) {
        str += taula[i][j] + "\t";
      }
      System.out.println(str);
      str = "";
    }
  }

}


Resultado:

run:
0    774    647    192    754
774  0      515    578    861
647  515    0      947    253
192  578    947    0      496
754  861    253    496    0
BUILD SUCCESSFUL (total time: 0 seconds)

Con la tecnología de Blogger.