• Bienvenido

    Este blog nació la madrugada entre el 10 y el 11 de Septiembre de 2007 mientras instalaba Windows y Debian en una máquina que acababa de formatear para comenzar de nuevo.
    Predendo dejar plasmada mi experiencia con todos los 'experimentos' informáticos que llevo a cabo para que cualquiera haga uso de estos conocimientos que a mi me resultan realmente enriquecedores. Colgaré noticias interesantes e iré redactando artículos sobre materias fundamentales en el mundo de la informática como UNIX o Critografía. Mucho Google y mucha Wikipedia
    Comenta lo que quieras en el articulo que mas te haya interesado, cualquier comentario es totalmente bienvenido.
    Un saludo.
    JxXx
  • RSS Mountain Weekends

    • Vietnam: diario de viaje (XIV) agosto 23, 2015
      29/05/2015 19:27 Aeropuerto de HueEstamos en el aeropuerto de Hue esperando para coger el avión que nos va a llevar a Hanoi. Estos 2 últimos días han sido... especiales, diferentes al resto del viaje. El mejor resumen es que nos han intentado timar todo el rato, casi todo el mundo y en varias ocasiones lo han conseguido. Tomándonos una cervecita (Huda) tampo […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (XIII) agosto 23, 2015
      Voy a resumir muchísimo el día de hoy porque tengo muchísimas fotos y porque ya estoy muy cansado. Hemos desayunado fuerte en el hotel y hemos hecho un día de paseo exhaustivo por la zona centro de Hoi An. Lo hemos visto todo y, siento ser así de sincero, hemos acabado hasta los cojones porque todo el mundo nos ha querido vender algo. Si vienes a Hoi An prep […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (XII) agosto 10, 2015
      27/05/2015 21:52Hoy os escribo desde el Vinh Hung 3 Hotel, un hotel bastante próximo a la ciudad antigua de Hoi An en el que hemos decidido dormir dos noches de capricho, tampoco es que sea excesivamente caro pues nos está costando 40$ la noche, pero dentro de lo que hemos visto estos días es bastante lujoso, dentro del edificio, en el patio central ocupándo […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (XI) agosto 10, 2015
      26/05/2015 10:55Estamos en el aeropuerto de Phu Quoc, ya tenemos más o menos organizados los días que nos quedan de vieje, bueno a grandes rasgos, pero eso os lo cuento después, voy a seguir con la historia.Cuando dejé de escribir recogimos y nos montamos en la moto, siguiendo por el camino de la costa oeste hacia el norte y ya en el norte, tras pasar varios […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (X) agosto 10, 2015
      25/05/2015 Entre las 12 y las 13Tras mucho tiempo en moto por media isla hemos dado con un chiringuito y escribo a pocos metros del mar tomándome una Bia Saigon muy fría. Voy a contaros lo de las inmersiones. Con Cristina y el resto de la tripulación de Flipper, una pareja de rusos y una pareja de americanos, Dave y Rachel, que viven y trabajan de profesores […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (IX) agosto 9, 2015
      25/05/15 20:50Debería hacerle una foto al cuaderno para que lo vierais porque la calidad de la carretera era medio buena pero ha habido un momento en el que nos hemos salido a un camino de tierra y he tenido que dejar de escribir porque era imposible. Me he propuesto dedicarle el tiempo que haga falta hasta poner el diario al día, pero antes de continuar qui […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (VIII) agosto 9, 2015
      24/05/15 08:23Como de costumbre, primero os cuento dónde ando y luego sigo contando cosas. Estamos en un autobús rumbo al sur de Phu Quoc, vamos a hacer submarinismo tres parejas y el staff de Flipper. Ayer dejé de escribir para despegar y luego no me apeteció seguir escribiendo y se me va acumulando el trabajo.Tras ver el templo de la literatura decidimos p […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (VII) junio 24, 2015
      23/5/2015 11:37Ayer dejé de escribir porque ya nos íbamos y no me dio tiempo a contar nuestro día por Hanoi, me quedé en que habíamos quedado para cenar. Salimos y estaba lloviendo, pero nos estaba esperando un taxi al que no le hizo mucha gracia nuestro trayecto de poco más de un kilómetro. Nos dejó en la puerta de un bar en el que estaban Alfonso (que tamb […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (VI) junio 16, 2015
      21/5/2015 8:35Estoy hecho polvo, la noche ha sido movida, ha hecho mucho calor pero el aire acondicionado no ha dejado de sonar en ningún momento. A las cinco menos algo hemos llegado a Hanoi, hemos recogido nuestras cosas, nos hemos despedido de Eric (!mierda, no tengo ni su email ni nos hemos hecho una foto con él!) y hemos salido a la estación. Yo estaba […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (V) junio 13, 2015
      Me acabo de subir a una litera y no sé qué tal voy a poder escribir, ¿por dónde iba? A ver, souvenirs, mujeres albinas con gorros rojos, comida picante con arroz y palillos y niños bañándose... ah! un perro pidiendo comida con ojos tristes.  Después de comer seguimos andando y Tsum nos metió en una casa y nos contó un poco la historia de la familia y otras c […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (IV) junio 10, 2015
      19/05/2015 por la mañana tempranoHoy es el cumpleaños de Ho Chi Minh, nacido en 1890, el que fue gobernante y lider de la resistencia contra los poderosos de Vietnam y Estados Unidos. El guía que está en nuestro camarote en el tren nos está contando un montón de datos histñoricos de Vietnam y de Ho Chi Minh, estudió en Rusia y luego volvió a Vietnam y unió a […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (III) junio 6, 2015
      18/05/2015 12:38Imposible escribir… sigo luego en el tren… 18/05/2015 20:57 Estoy tumbado en la litera de arriba de un camarote de un tren de camino a Sapa. El otro día escribí en un autobús camino a la Bahía de Ha-Long y esta mañana he intentado escribir en el autobús de vuelta pero me ha sido imposible. La excursión a la bahía de Ha-Long ha sido espectacul […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (II) junio 3, 2015
      17-05-2015 - 07:46No voy a adelantar desde donde escribo hoy, de momento solo voy a decir que no es un lugar muy cómodo para escribir porque se mueve todo.Bueno, ayer nos bajamos del avión y llovía como si lo fueran a prohibir. Justo antes de salir por la aduana del aeropuerto de Hanoi entregamos los pasaportes, los papeles con nuestros datos, las fotos y la […]
      Juan Sin Miedo
    • Vietnam: diario de viaje (I) junio 2, 2015
      Hoy comienzo a transcribir mi diario de viaje, bueno, nuestro diario de viaje porque aunque ésta vez casi todo lo he escrito yo todo lo que estos días iré publicando, lo que se cuenta en este diario, nos pertenece a los dos. Así empieza éste relato con nuestras aventuras y desventuras, esperamos que os guste y que toméis nota si alguna vez pensáis en viajar […]
      Juan Sin Miedo
    • Expedición al Matterhorn 2014 julio 16, 2014
      Durante la última semana he trascrito el relato de nuestro viaje, relato que he escrito durante las muchísimas horas de coche que supuso el retorno a casa. El relato ha gustado mucho y he recibido mensajes tando de amigos y familiares como de contactos, amigos de amigos, de Facebook, dándome, dándonos, la enhorabuena por la expedición y diciendo que les esta […]
      Juan Sin Miedo
    • Expedición al Matterhorn 2014. EPÍLOGO julio 16, 2014
      Como atestigua el medio cuaderno escrito durante lo que llevamos de vuelta a casa nos han pasado muchas cosas durante este viaje. Los tres volvemos un poco mas viejos, un poco mas sabios y un poco mas amigos. El alpinismo no es sólo llegar a la cumbre, una de las primeras lecciones que se aprenden, alpinismo es disfrutar de un viaje largo y difícil,  de la s […]
      Juan Sin Miedo
    • Expedición al Matterhorn 2014. ESCALAR SOBRE EL MEDITERRANEO julio 16, 2014
      07/07/2014"El séquito se quitó el saquito sequito."Oigo gente paseando, bicicletas también. Es muy temprano y me duele la cabeza, tengo una resaca cojonuda, creo que me pasé con los gin tonics.El lugar que habíamos elegido para dormir la noche anterior no era el mejor, desde luego, estábamos muy cerca de las casas y llamábamos bastante la atención […]
      Juan Sin Miedo
    • Expedición al Matterhorn 2014. DESTINO INCIERTO julio 16, 2014
      06/07/201406:30 - Sigue lloviendo, ¡vaya tela! Me doy la vuelta en el saco y veo que los tres acabamos de abrir los ojos, nos hemos despertado a la vez. Miramos fuera... ¡Joder, sigue lloviendo! "Casi mejor seguir durmiendo" - Pensé. Ninguno dijimos nada pero los tres pensamos lo mismo... Y a las 10 de la mañana dejó de llover y empezó a salir el s […]
      Juan Sin Miedo
    • Expedición al Matterhorn 2014. LAS FIEBRES DEL MONT BLANC julio 15, 2014
      05/07/2014Amaneció lloviendo (¡jooooooooder!) pero a las 10 despejó un poco y empezamos a preparar los macutos muy tranquilamente y las 12:30 o una salimos hacia el pueblo y allí nos comimos un kebab buenísimo antes de coger el teleférico. La estación intermedia estaba nublada, había nubes justo por encima nuestro y no vimos el sol hasta quedarnos a ras de l […]
      Juan Sin Miedo
    • Expedición al Matterhorn 2014. RUMBO A CHAMONIX julio 13, 2014
      04/07/2014Desayunamos muy tranquilamente y sacamos y ordenamos todo, desmontamos la tienda y volvimos a cargar el coche (tetris mode on), pagamos el camping y cogimos carretera hacia Chamonix.En la frontera con Francia nos volvieron a parar. ¿He dicho ya que el coche de Borja es muy cantoso? Nos sacaron del coche y revolvieron todo de muy malas maneras. Nos […]
      Juan Sin Miedo
  • diciembre 2016
    L M X J V S D
    « Sep    
     1234
    567891011
    12131415161718
    19202122232425
    262728293031  
  • RSS Google: ciencia y tecnología

  • RSS 20 minutos de tecnología

    • Ha ocurrido un error; probablemente el feed está caído. Inténtalo de nuevo más tarde.
  • RSS HISPASEC

    • Ha ocurrido un error; probablemente el feed está caído. Inténtalo de nuevo más tarde.
  • RSS VNUNET

    • Ha ocurrido un error; probablemente el feed está caído. Inténtalo de nuevo más tarde.
  • RSS BarraPunto

Java

1.- PRIMEROS PASOS CON JAVA (en Linux)

1.1.- HOLAMUNDO

Instalas el JDK (manual para Windows [1], [2], [3] y manual para linux [1], [2], [3] )

Instalas NetBeans (ahora no lo vamos a usar)

Creas un fichero que se llame HolaMundo.java y en él escribes esto:

public class HolaMundo {
public static void main(String[] args) {
System.out.println(“Hola Mundo”);
System.out.println(“”);
System.out.println(“Tienes que guardar este código como HolaMundo.java”);
System.out.println(“Despues compilarlo así: javac HolaMundo.java”);
System.out.println(“Despues lo puedes ejecutar haciendo: java HolaMundo”);
System.out.println(“\n\n\t\t\t\tSaludos\n\n\n\t\t\t\t\t\tJxXx”);

}
}

Y Tal y como dice este fichero:

  1. Guardas
  2. Compilas con javac HolaMundo.java
  3. Ejecutas con java HolaMundo

1.2.- INFORMÁTICOS

Tenemos 4 ficheros:

InformaticoAbs.java, Programador.java, Analista.java y PruebaInformaicos.java

InformaticoAbs.java:

public abstract class InformaticoAbs
{
//Atributos
private String empresa;
private double sueldo;

//Constructor
public InformaticoAbs(String empresa)
{
this.empresa = empresa;
}

//Métodos
public String getEmpresa() { return this.empresa; }
public void setEmpresa(String nueva) { this.empresa = nueva; }
public double getSueldo() { return this.sueldo; }
public void setSueldo(double euros) { this.sueldo = euros; }
//método abstracto
public abstract double pagarSueldo(double horas);
}

Programador.java

public class Programador extends InformaticoAbs
{
String lenguaje;

public Programador(String empresa, String lenguaje)
{
super(empresa);
this.lenguaje = lenguaje;
}

public double pagarSueldo(double horas)
{
return horas*6;
}
}

Analista.java

public class Analista extends InformaticoAbs
{
String especialidad;

public Analista(String empresa, String especialidad)
{
super(empresa);
this.especialidad = especialidad;
}

public double pagarSueldo(double horas)
{
return horas*12;
}
}

PruebaInformaticos.java

public class PruebaInformaticos
{
public static void main(String args[])
{
//Creamos informáticos
InformaticoAbs inf1 = new Analista(“IBM”,”BBDD”);
InformaticoAbs inf2 = new Programador(“Indra”,”Java”);
System.out.println(“He creado un Analista de BBDD que trabaja para IBM y uno de Java para Indra. “);

//Pagamos los sueldos utilizando polimorfismo
inf1.setSueldo(inf1.pagarSueldo(500));
inf2.setSueldo(inf2.pagarSueldo(450));
System.out.println(“El primero gana 500€ y el segundo 450.(Polimorfismo)”);

System.out.println(“El sueldo del analista: “+inf1.getSueldo()+” He llamado a Analista.getSueldo()”);
System.out.println(“El sueldo del programador: “+inf2.getSueldo()+” He llamado a Programador.getSueldo()”);
}
}

Una vez guardado todo (cuidado con las mayúsculas de los nombres de los ficheros) hacemos desde la consola

$ javac InformaticoAbs.java Programador.java Analista.java PruebaInformaticos.java

Hemos compilado nuestros ficheros, ahora para ejecutar la prueba hacemos:

java PruebaInformaticos

1.3.- DIAGRAMAS UML

Bien… Necesitamos un suft que nos facilite el asunto (con el paint o similar tb se puede pero yo usaré umbrello:)

# apt-get install umbrello

Cargo InformaticoAbs.java, Programador.java, Analista.java y PruebaInformaicos.java en Umbrello, me lo curro un poco para que aparezca todo ordenado y capturando pantalla y editando con el Gimp nos queda esto:

informaticosuml.png

2.- Programación Orientada a Objetos con Java

La programación orientada a objetos es una nueva forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

  • Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos). Corresponden a los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa).—
  • Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.
  • Método: algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un “mensaje”. Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un “evento” con un nuevo mensaje para otro objeto del sistema.

Hay un cierto desacuerdo sobre exactamente qué características de un método de programación o lenguaje le definen como “orientado a objetos”, pero hay un consenso general en que las características siguientes son las más importantes (para más información, seguir los enlaces respectivos):

  • Abstracción: Cada objeto en el sistema sirve como modelo de un “agente” abstracto que puede realizar trabajo, informar y cambiar su estado, y “comunicarse” con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.
  • Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
  • Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
  • Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en “tiempo de ejecución”, esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en “tiempo de compilación”) de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.
  • Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que reimplementar su comportamiento. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple; esta característica no está soportada por algunos lenguajes (como Java).

El lenguaje Java se creó con cinco objetivos principales:

  1. Usar la metodología de la P.O.O.
  2. Permitir la ejecución de un mismo programa en múltiples sistemas operativos.
  3. Incluir por defecto soporte para trabajo en red.
  4. Ejecutar código en sistemas remotos de forma segura.
  5. Ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos.

La segunda característica, la independencia de la plataforma, significa que programas escritos en el lenguaje Java pueden ejecutarse igualmente en cualquier tipo de hardware. Es lo que significa ser capaz de escribir un programa una vez y que pueda ejecutarse en cualquier dispositivo, tal como reza el axioma de Java, ‘’’write once, run everywhere’’’.

Recolector de basura

Un argumento en contra de lenguajes como C++ es que los programadores se encuentran con la carga añadida de tener que administrar la memoria solicitada dinámicamente de forma manual. La recolección de basura de Java es un proceso prácticamente invisible al desarrollador. Es decir, el programador no tiene conciencia de cuándo la recolección de basura tendrá lugar, ya que ésta no tiene necesariamente que guardar relación con las acciones que realiza el código fuente.

Sintaxis

La sintaxis de Java se deriva en gran medida de C++. Pero a diferencia de éste, que combina la sintaxis para programación genérica, estructurada y orientada a objetos, Java fue construido desde el principio para ser completamente orientado a objetos. Todo en Java es un objeto (salvo algunas excepciones), y todo en Java reside en alguna clase.

Hola Mundo

”Para conocer el origen del programa “Hola Mundo” véase: Hello world program

Aplicaciones autónomas

 

// Hola.java 
public class Hola 
{ 
    public static void main(String[] args) { 
        System.out.println("Hola, mundo!"); 
    } 
}

Este ejemplo necesita una pequeña explicación.

  • Todo en Java está dentro de una clase, incluyendo programas autónomos.
  • El código fuente se guarda en archivos con el mismo nombre que la clase que contienen y con extensión “.java”. Una clase (class) declarada pública (public) debe seguir este convenio. En el ejemplo anterior, la clase es Hola, por lo que el código fuente debe guardarse en el fichero “Hola.java”
  • El compilador genera un archivo de clase (con extensión “.class”) por cada una de las clases definidas en el archivo fuente. Una clase anónima se trata como si su nombre fuera la concatenación del nombre de la clase que la encierra, el símbolo “$”, y un número entero.
  • Los programas que se ejecutan de forma independiente y autónoma, deben contener el método ”main()”.
  • La palabra reservada ”void” indica que el método main no devuelve nada.
  • El método main debe aceptar un array de objetos tipo String. Por acuerdo se referencia como ”args”, aunque puede emplearse cualquier otro identificador.
  • La palabra reservada ”static” indica que el método es un método de clase, asociado a la clase en vez de a instancias de la misma. El método main debe ser estático o ’’de clase’’.
  • La palabra reservada public significa que un método puede ser llamado desde otras clases, o que la clase puede ser usada por clases fuera de la jerarquía de la propia clase. Otros tipos de acceso son ”private” o ”protected”.
  • La utilidad de impresión (en pantalla por ejemplo) forma parte de la librería estándar de Java: la clase ‘’’System’’’ define un campo público estático llamado ‘’’out’’’. El objeto out es una instancia de ‘’’PrintStream’’’, que ofrece el método ‘’’println(String)’’’ para volcar datos en la pantalla (la salida estándar).
  • Las aplicaciones autónomas se ejecutan dando al entorno de ejecución de Java el nombre de la clase cuyo método main debe invocarse. Por ejemplo, una línea de comando (en Unix o Windows) de la forma java –cp . Hola ejecutará el programa del ejemplo (previamente compilado y generado “Hola.class”) . El nombre de la clase cuyo método main se llama puede especificarse también en el fichero “MANIFEST” del archivo de empaquetamiento de Java (.jar).

Applets

Las applets de Java son programas incrustados en otras aplicaciones, normalmente una página Web que se muestra en un navegador.

 

// Hola.java 
import java.applet. Applet; 
import java.awt. Graphics; 

public class Hola extends Applet { 
    public void paint(Graphics gc) { 
        gc.drawString("Hola, mundo!", 65, 95); 
    } 
} 
 <!-- Hola.html --> 
<html> 
  <head> 
    <title>Applet Hola Mundo</title> 
  </head> 
  <body> 
    <applet code="Hola" width="200" height="200"> 
    </applet> 
  </body> 
</html>

La sentencia import indica al compilador de Java que incluya las clases java.applet. Applet y java.awt. Graphics, para poder referenciarlas por sus nombres, sin tener que anteponer la ruta completa cada vez que se quieran usar en el código fuente.

La clase Hola extiende (extends) a la clase Applet, es decir, es una subclase de ésta. La clase Applet permite a la aplicación mostrar y controlar el estado del applet. La clase Applet es un componente del AWT (Abstract Windowing Toolkit), que permite al applet mostrar una inteterfaz gráfica de usuario o GUI (Graphical User Interface), y responder a eventos generados por el usuario.

La clase Hola sobrecarga el método paint(Graphics) heredado de la superclase contenedora (Applet en este caso), para acceder al código encargado de dibujar. El método paint() recibe un objeto Graphics que contiene el contexto gráfico para dibujar el applet. El método paint() llama al método drawString(String, int, int) del objeto Graphics para mostrar la cadena de caracteres Hola, mundo! en la posición (65, 96) del espacio de dibujo asignado al applet.

La referencia al applet es colocada en un documento HTML usando la etiqueta <applet>. Esta etiqueta o tag tiene tres atributos: code="Hola" indica el nombre del applet, y width="200" height="200" establece la anchura y altura, respectivamente, del applet. Un applet también pueden alojarse dentro de un documento HTML usando los elementos object, o embed, aunque el soporte que ofrecen los navegadores Web no es uniforme.[5][6]

A %d blogueros les gusta esto: