Java

26 entradas

Java es un lenguaje de programación de propósito general. Desde hace muchos años encabeza el ranking Tiobe de lenguajes de programación, con lo que tiene una buena acojida y podemos encontrarlo en numerosos sistemas. Su sintaxis deriva de C y C++, está fuertemente orientado a objetos (todo en Java son objetos), y su principal característica es ser multiplataforma.

Es decir, Java se caracteriza porque sus códigos fuentes son compilados a un código intermedio entre el fuente y el código máquina llamado bytecode. Dicho bytecode se ejecuta sobre la Máquina Virtual de Java (JVM), que está disponible en la gran mayoría de plataformas, con lo que conseguimos construir una vez y ejecutar en todos lados.

Dispone de librerías de todo tipo para programación de alto nivel. Y dado que corre sobre la capa de la JVM carece de librerías de bajo nivel. Esta capa intermedia que proporciona la multiplaforma merma su velocidad comparádose con otros lenguajes pero las últimas versiones de la máquina virtual ha mejorado mucho en rendimiento. Hay frameworks de Java que van desde la programación de entornos gráficos, pasando por microservicios, a desarrollo de grandes aplicaciones web.

Con Java puedes hacer casi de todo y para casi todo tipo de proyectos.

Java Swing 1: A vista de pájaro

En éste post, espero dar un vistazo general al paquete de clases de Java de Swing, en concreto a la versión estándar 1.7 update 9. En la fecha en que escribo ésto, los Swing ya no están en desarrollo, con lo que no se van a añadir nuevas funcionalidades, ni componentes. En la web de Oracle, podemos ver la jerarquía completa del paquete javax.swing en la documentación original, aquí teneis el árbol de la jerarquía de clases: http://docs.oracle.com/javase/7/docs/api/javax/swing/package-tree.html Casi todas las clases que hay para crear nuestra interfaz de usuario van a empezar por J, como JFrame, JDialog, JButton, JLabel, etcétera… Ya tengo instalada la versión del JDK y del JRE más nueva ahora mismo para asegurarme de que tengo al día el paquete de clases. Así pues, la ayuda contextual de Eclipse me muestra un listado de todos éstos componentes: Tenemos 46 clases en éste listado, de las cuales la clase con la que se contruyen todas las demás clases visuales es JComponent. El resto de clases de Swing que no comienzan por J, ayudan o nos sirven de herramientas para éstas. Quitando la JComponent, nos quedan 45 clases que “dibujan” nuestra interfaz gráfica. Estado actual Swing se contruyó […]

Hola Mundo con Swing y Eclipse

Aquí dejo cómo crear una primera aplicación gráfica en Java usando Swing y Eclipse. El ejercicio clásico ¡Hola Mundo! usando una tecnología que nos brinda Java crear aplicaciones con entorno gráfico, Java Swing. Y para verlo, el entorno de desarrollo elegido ha sido Eclipse. Curioseando qué tal van los desarrollos, con respecto a las interfaces gráficas de usuario (llamadas GUI para los amigos), veo que tengo otra nueva actualización del Window Builder. El Window Builder es un conjunto de plugins de Eclipse que nos van a permitir hacer GUIs en Java sin gastar casi tiempo. A fecha de hoy tengo la versión Juno de Eclipse, y me acabo de instalar el plugin Swing Designer que está disponible dentro del propio Eclipse, en la famosa opción Help -> Install New Software. Instalada la versión 1.5.1 del Swing Designer, me he puesto manos a la obra. En el Explorador de Proyectos, donde estés creando tu aplicación Java, le das con el botón derecho del ratón a New -> Other… Y verás una ventana como la siguiente donde puedes elegir todo el tipo de ficheros, clases, o lo que sea que quieras hacer: Se parece a Visual Studio, NetBeans o IDEs similares ¿verdad? Personalmente […]

Java Medio 5: Clases tipo Interfaz

Vamos a ver cómo se usan las clases de tipo interface. Se usan de igual manera que las clases abstractas, pero tienen unas características peculiares propias de ellas que las diferencian. Las interfaces establecen las variables y funciones que se van a tener, pero no se implementan las funciones dentro de ellas, sino que se implementan en las clases derivadas. No podemos heredar de varias clases abstractas, pero sí que se puede hacer herencia múltiple usando interfaces. Un ejemplo para explicarlo todo ésto es el siguiente: package javaMedio;public class JavaMedio5Interfaz { public static void main(String[] args) { unaClase a; a = new unaClase(); a.nombre = “María”; a.escribir(); a.contar(); }}abstract class cBase { public String nombre; public void escribir() { System.out.println(nombre); }}interface iBase { public static int version = 2; public void contar();}class unaClase extends cBase implements iBase { public void contar() { System.out.println(“versión: ” + version + “rnvamos a contar: 0,1,10,11,100,101,110,111,1000…”); }} Su salida es la siguiente: Maríaversión: 2vamos a contar: 0,1,10,11,100,101,110,111,1000… Vamos con la clase que hereda todo: class unaClase extends cBase implements iBase { public void contar() { System.out.println(“versión: ” + version + “rnvamos a contar: 0,1,10,11,100,101,110,111,1000…”); } Observa que extiende cBase e implementa iBase, extends e implements […]

Java Medio 4: Miembros tipo Static

Algo raro pasa con static. Surge de la necesidad de compartir datos o código entre todas los objetos de una misma clase. Por ello, los atributos declarados como static dentro de una clase, existen incluso sin tener ningún objeto de la clase, y se puede acceder a ellos con sólo haber cargado la clase en la JVM. Es decir, por ejemplo, si tenemos una clase como la siguiente: package javaMedio;public class Persona { public String nombre = new String(); public static String nombreDeLaClase = new String(“Persona”); private static String version = new String(“1.0.0”);  public void escribir() { System.out.println(“Ésta persona se llama ” + nombre); System.out.println(“…” + nombreDeLaClase); System.out.println(“…” + version); }} Y en otro fichero tenemos algo tal que así: package javaMedio;public class JavaMedio4Static { public static void main(String[] args) { System.out.println(Persona.nombreDeLaClase); // no podemos hacer ésto // System.out.println(Persona.version); Persona p1 = new Persona(); Persona p2 = new Persona(); p1.nombre = “Pepito”; p2.nombre = “Juanito”; // no debemos, pero podemos hacer ésto p1.nombreDeLaClase = “Clase de nombre Persona”; // deberíamos hacer así Persona.nombreDeLaClase = “Clase de nombre Persona”; // para evitar confusiones // porque todas las Personas // van a tener la misma variable // nombreDeLaClase p1.escribir(); p2.escribir(); }} Observa […]

Java Medio 3: Clases abstractas

Continuando con la herencia y polimorfismo de las clases vamos a ver qué son los métodos y clases abstractas. Cuando una clase va a ser la base para otras, pero no van a codificarse las funciones que tiene, sino que se van a hacer en las clases que la extienden, entonces declaramos la clase como abstract. Vamos a ver con un ejemplo cómo se usa, es muy sencillo: package javaMedio;public class JavaMedio3Abstract { public static void main(String[] args) { claseBase objeto1, objeto2; // ésto no lo podemos hacer porque es abstract // objeto1 = new claseBase(); objeto1 = new claseA(); objeto2 = new claseB(); objeto1.cadena = “cadena del objeto1”; objeto2.cadena = “cadena del objeto2”; objeto1.escribir(); objeto2.escribir(); }}abstract class claseBase { public byte x, y; public String cadena; public abstract void escribir();}class claseA extends claseBase { public void escribir() { System.out.println(“Esto es un objeto de la claseA: ” + cadena); }}class claseB extends claseBase { public void escribir() { System.out.println(“Esto es un objeto de la claseB: ” + cadena); }} Como vemos, no podemos reservar memoria para un objeto de tipo claseBase, porque éste tipo de objeto es base de otros, es decir, que al ser abstract sólo se puede usar […]

Java Medio 2: Extendiendo clases a partir de otras clases

Sábado sabadete, aquí va otro tutorialete… xD para los que esten siguiendo estos minitutoriales para aprender a programar en Java, vamos a continuar con los conocimientos indispensables antes de empezar a hacer programas más o menos grandes. O si ya te has enfrascado con alguno y necesitas saber ésto de los extends espero que aclare las cosas. Ésta vez voy a explicar cómo reutilizar código, para no tener que hacer una y otra vez lo mismo o para mantener el código bien organizado utilizando la herencia y polimorfismo. Vamos a ver cómo crear clases reutilizando el código de clases ya creadas, de manera que podremos ampliar su uso añadiendo nuevas funciones o miembros de la clase, o podremos modificar los existentes. Todo ésto se hace con la palabra reservada extends. A saber, al utilizar extends, la clase que extiende a otra hereda todas las variables y funciones de la otra. A ésto se le llama herencia. Y por otro lado, en la clase que ha heredado, por ejemplo una función, podemos volver a declararla en la clase que extiende, de manera que haga otra cosa. A ésto otro se le llama polimorfismo. Ésto es todo lo que hay que saber, […]

Java Medio 1: Clases y paquetes, organización en ficheros

Vamos a ver cómo organizar los programas Java, en clases u objetos como prefiramos llamarlos. Cómo dividir los códigos fuentes en distintos ficheros o cómo plantearse la creación de un programa bien grande estructurándolo para poder hacerlo poco a poco, repartiendo el trabajo o haciéndolo en partes más simples. Todo son clases en Java, y estas clases se organizan packetes, llamados packages en inglés. Podemos crear clases a partir de otras clases utilizando el extends. Y cada clase la podemos separar individualmente en cada fichero. Por otro lado los paquetes de clases los podemos importar para usarlos en una clase mediante la instrucción import. Resumiendo ésto es todo, a continuación lo veremos explicado.Cada fichero se debe nombrar con el nombre de la clase principal. Un ejemplo que nos va a servir para comprender varios conceptos es el siguiente:package javaMedio;import java.util.Date;public class JavaMedio1ClasesPaquetes { public static void main(String[] args) { Persona p = new Persona(); p.nombre = “Pepito”; p.escribir(); }}class Persona { String nombre = new String(); Date fechaCreacion = new Date(); public void escribir() { String aux = new String(); aux = “Objeto de tipo Persona con nombre: ” + nombre + “n”  + “Creado en fecha: ” + fechaCreacion; […]

Java Básico 6: Matrices y vectores

Ya estamos a domingo de nuevo, parece que va siendo costumbre los domingos de nuevo escribir un post. Vamos a empezar con un tipo de variables que vamos a usar para almacenar muchos datos de igual naturaleza, es decir, los llamados vectores y matrices. Algunos llaman a los vectores matrices también porque son matrices de una sola fila. Imaginemos pues que queremos guardar 3 elementos de tipo entero. Para ello usaremos lo siguiente: package javaBasico;public class JavaBasico6Matrix { public static void main(String[] args) { // declaración de la variable ‘vector’ int vector[]; // se reserva memoria para guardar los  // valores, es decir, guardamos 3 posiciones // de memoria de tipo entero vector = new int[3]; // guardamos en la posición 0 el número 2 vector[0] = 2; // guardamos… vector[1] = 3; // guardamos… vector[2] = 4; // escribimos en el out (pantalla) el vector System.out.println(vector[0] + “, ” + vector[1] + “, ” + vector[2]); } } En Java siempre los vectores y matrices, también las clases que hagamos primero hay que declararlas y luego se les reserva memoria para poder usarlas. Es decir, la primera parte es decirle al programa que vamos a usar una variable, que […]

Java Básico 5: Clases comunes

¡Hola de nuevo! Estoy cogiendo carrerilla con ésto de los tutoriales, me siento fresco, será el buen tiempo, que es fin de semana, los pájaros cantan, el indice Ibex sube, la prima de riesgo baja aquí en España. La cosa no está para echar cohetes pero bueno, si necesitas hacer cosas en Java, que ya están hechas, sólo tendrás que usarlas y entonces sí que vas a hechar cohetes. Vamos a ver unas clases de Java que nos facilitan la vida mucho, sobre todo si estas siguiendo el tutorial desde cero. Para empezar, si vamos a utilizar cadenas de caracteres, Java nos proporciona la clase String. Podemos declarar variables de tipo String de la forma: String cadena;cadena = “Aquí va la cadena de caracteres que queramos”;cadena = cadena + cadena;System.out.println(cadena); Ésto anterior nos va a imprimir: Aquí va la cadena de caracteres que queramosAquí va la cadena de caracteres que queramos Lo que hemos visto aquí arriba es que la variable cadena le hemos dicho que almacene “Aquí va la cadena de caracteres que queramos”, luego al hacer la suma lo que le hemos dicho que haga es que ahora cadena vale cadena + cadena, es decir, pon dos veces […]

Java Básico 4: Funciones

Hola! hoy es domingo, tengo un rato libre, y he pensado avanzar un poco este curso de programación rápido con las funciones. Vamos a ver en líneas generales cómo dividir el código de nuestro programa para que sea más fácil luego leerlo, para desarrollarlo en partes o poco a poco, en fin, es de buena costumbre usar funciones cuando hacemos tareas que usan mas de unas 20 líneas de código. Es decir, comenzamos escribiendo código en el ‘main’, y llegado el momento de que nuestro ‘main’ ocupa muchas líneas entonces se convierte en un mamotreto de código que es bien complicado de leer. Para evitar ésto lo dividimos con funciones como por ejemplo puede ser el código siguiente: public class JavaBasico4Funciones { public static void main(String[] args) { PrincipioDelPrograma(); HacerCosa1(); HacerCosa2(); HacerCosa3(); FinalDelPrograma(); } static void PrincipioDelPrograma(){ } static void HacerCosa1(){ } static void HacerCosa2(){ } static void HacerCosa3(){ } static void FinalDelPrograma(){ } }De ésta manera queda más claro todo y podemos centrarnos en hacer los subprogramas declarados en las funciones. Éste es un ejemplo claro de la técnica de programación ‘Divide y vencerás’.También puede ocurrir que estamos escribiendo un programa y llegamos a un momento en que nos […]

Java Básico 3: Bucles y estructuras de control

Sábado por la mañana, hace buena temperatura ahora en otoño, ni frio ni calor en Alicante. Así da gusto. Pues hoy voy a darle vueltas a los bucles y a controlar qué se ejecuta en un pequeño programa en Java. Vamos a ver los bucles y las estructuras principales que se usan. Éstos son los if, else, switch, while, do while, for, break, continue y el try-catch para control de errores de ejecución. Vamos al grano, si usamos el siguiente código: // Paquete donde se organiza ésta clase de Javapackage javaBasico;// Declaración de la clase con su nombrepublic class JavaBasico3BuclesEstructuras { // Entrada principal al programa, el main para los amigos public static void main(String[] args) { // Aquí va el código que empieza nada más  // arrancar el programa System.out.println(“¡Hola Mundo!”); // declaro la variable a y le doy valor byte a = 1;  // el if sirve para comprobar si ocurre // una cosa… if (a == 2) { // si a vale 2 entonces hace ésto System.out.println(“a sí vale 2”); } else { // si a no vale 2 muestra éste mensaje System.out.println(“a no vale 2”); } // switch sirve para hacer una lista de  // casos posibles switch (a) { […]

Java Básico 2: Tipos de datos

En éste post vamos a ver los tipos de datos primitivos, los básicos, sobre los que se construirán datos u objetos más complejos o complicados, valga la redundancia. Los más usuales son: byte, que permite almacenar número de 8 bits, negativos y positivos. Es decir desde el -11111111 al +11111111, o que es lo mismo que desde -128 al +127. short, es igual que el byte pero en vez de 8 bits con signo tenemos 16 bits. Aumentan considerablemente la contidad de números posibles que van desde el -32768 al +32767. int, es igual pero ahora tenemos 32 bits. long, ahora tenemos 64 bits. char, guarda valores del 0 al 65535. Los primeros valores corresponden a los caracteres ASCII, que son los caracteres normales que usamos al escribir, es decir, las letras. Por ejemplo el 97 es la ‘a’ float, se utiliza para números decimales. Se utilizan 32 bits, con una precisión aproximada de 7 dígitos. double, es un número decimal. Internamente se usan 64 bits, con lo que se tiene una mayor precisión, aproximadamente de unos 16 dígitos. boolean, se usa para almacenar un valor booleano, es decir, verdadero o falso. Éstos son los mínimos sobre los que se […]