Ir directamente al contenido

Se bienvenido a estas tierras digitales...

...especialmente si eres un molino....

Un diminuto servidor de aplicaciones desarrollado en Java

3 mayo, 2008

Este es un código que embute las aplicaciones Java que se deseen dentro de una hebra gestionada por la misma máquina virtual. La resolución de nombres de clases se ha de implementar con un cargador de clases virtual para cada hebra y se debe añadir una biblioteca (que publicaré pronto) de gestión de hebras para resolver el conflicto entre las mismas.

import java.lang.* ;
import java.lang.reflect.Method;

public class Servidor
{
   public static void main(String []args)
   {
     System.out.println("Iniciando la clase Servidor \n");
     iniciarEnHebra("Aplicacion1",args);
     iniciarEnHebra("Aplicacion2",args);
   }

   public static Proceso iniciarEnHebra(String nombreClase, String[] args)
   {
      Proceso proceso = new Proceso(nombreClase, args);
      //****************  Nuevo: **********************
      ThreadGroup grupo = new ThreadGroup("main");
      Thread hebra = new Thread(grupo, proceso);
      //****************  Nuevo: **********************
      hebra.start();
      return proceso;
   }
 }

class Proceso implements Runnable{
  String nombreClase;
  String[] Argumentos;
  //****************  Nuevo: **********************
  ThreadGroup hebraEnCurso;
  //****************  Nuevo: **********************

  public Proceso (String nombre, String[] args)
  {
    nombreClase = nombre;
    Argumentos  = args;
  }

  public static void iniciarOtraClase(String nombreClase, String[] args)
  throws Exception
  {
     //Obtener la clase
     Class objeto = Class.forName(nombreClase);
     //Localizar el metodo main(String []) de esa clase
     Class[] tipoParametrosMain = {args.getClass()};
     Method main = objeto.getMethod("main", tipoParametrosMain);
     //array con los argumentos a pasarle a la clase
     Object[] parametrosMain = {args};
     //Iniciar la clase
     main.invoke(null, parametrosMain);
   }

  public void run()
  {
     //****************  Nuevo: **********************
      hebraEnCurso=Thread.currentThread().getThreadGroup();
     //****************  Nuevo: **********************

     try{
        iniciarOtraClase(nombreClase, Argumentos);
        }catch(Exception e){
           System.out.println(" Excepcion ... ");
	   e.printStackTrace();
        }
  }

  public void terminar()
  {
    if(hebraEnCurso != null)
           hebraEnCurso.stop();
  }

}

Las aplicaciones de prueba que se pueden usar son :

//Aplicacion1
import java.lang.*;

public class Aplicacion1
{
   public static void main(String[]arrs)
   {
     System.out.println("Este bucle es de la aplicacion 1");
     for (int i = 0;i<10000;i++){
        System.out.println("Aplicacion 1");
	   }

    System.out.println("Final de la aplicacion 1");
  }

}
[/sourcecode]

 [sourcecode language='csharp']
//Aplicacion2
import java.lang.*;

public class Aplicacion2
{
   public static void main(String[]arrs)
   {
     System.out.println("Este bucle es de la aplicacion 2");
          for (int i = 0;i<10000;i++){
           System.out.println("Aplicacion 2");
	    }

	 System.out.println("Final de la aplicacion 2");
   }

}
[/sourcecode]

Una de virus …

13 abril, 2008

Los virus atacan y se proliferan si se puede aprovechar la misma vulnerabilidad en miles de millones de máquinas. Al igual que ocurre con las pandemias en los humanos. Igualmente una vacuna es efectiva siguiendo el mismo principio pero a la inversa. La arquitectura de los Sistemas Operativos de Microsoft, lease, Windows es genérica. Los usuarios que los poseen se cuentan a millones. De los usuarios que los poseen, un gran porcentaje son inexpertos usuarios que se valen de las amigables interfaces de estos sistemas operativos para salvar el gap de conocimiento necesario para manejar estas máquinas.

Alguien que fabrique un virus, es evidente, elegirá hacerlo para estas arquitecturas sofware-sociales. Evidentemente afectará a más gente (número de usuarios con windows) y podrá hacer más daño (menos expertos, esto no quiere decir que un usuario de windows carezca de conocimientos técnicos, no quiero decir esto, entre los usuarios de windows se cuentan más los inexpertos que entre los de linux, por ejemplo).

Un usuario con Linux es diferente de los demás, en tanto en cuanto ha de elegir su propia distribución y además configurarla a su gusto o según sus necesidades. Por lo que la infección se complica en proporción inversa al número de distribuciones linux diferentes. Un usuario con Linux puede, en situaciones anómalas monitorizar, analizar, sustituir, recompilar, ciertas partes del sistema operativo que en Windows (por motivos de patente) es ilegal o imposible, con lo que la flexibilidad es mayor y el tiempo de maniobra de un virus posible virus, es menor.

Un usuario Mac, casi, goza de los mismos privilegios.

Por tanto, el sentido común y un sistema operativo específico como Linux o como MacOS goza de mayor libertad para con los virus. Ojo, esto no salva a estos usuarios del pishing y de otras actividades que no son virus pero son software malicioso (contra esto se apela al sentido común del usuario).

Seminario: Ejemplos de aplicación de las TIC’s en el sector público y privado de Almería.

1 abril, 2008

En este evento organizado en la UAL por el Vicerrectorado de Tecnologías de la Información y la Comunicación, por la Escuela Politécnica Superior, por el club .NET de la Universidad de Almería y por el que suscribe, se terciaron charlas de importancia, tanto por su contenido como por la talla de los ponentes. En este evento estuvieron el Ministerio de Trabajo y Asuntos Sociales, la Junta de Andalucía (representada por la Consejería de Innovación, Ciencia y Empresa), la E.P. Hospital de Poniente, representantes del departamento de ERP de la Universidad de Almería e Innova-Humana. Como se puede ver fue un seminario denso, entretenido y sobre todo ilustrativo. Tras el café -que constituyó una pausa merecida para tomar café y aire- regresamos al tajo, en esta ocasión para abordar a los servidores de aplicaciones, ver una pequeña introducción y un ejemplo de un mini-servidor de aplicaciones desarrollado en Java.

En esta imagen podemos ver la mesa con los ponentes :

mesa1.jpg

En la siguiente imagen está el que suscribe explicando su desarrollo del servidor de aplicaciones:

mesa4.jpg mesa5.jpg

Mi primer CASIO

21 marzo, 2008

Allá por el inicio de los 80, concretamente en 1981, tuve mi primer casio. Impresionante que aún pueda encontrar en Internet su fotografía.

casio-game20.jpg