## Otros Métodos de la Clase System

La clase System contiene otros métodos que proporcionan varias funcionalidades incluyendo la copia de arrays y la obtención de la hora actual.

### Copiar Arrays

> El método arraycopy() de la clase System se utiliza para realizar una copia eficiente de los datos de un array a otro. Este método requiere cinco argumentos:

>     public static
>         void copiaarray(Object fuente, int indiceFuente, Object destino, int indiceDestino, int longitud)

> Los dos argumentos del tipo Object indican los array de origen y de destino. Los tres argumentos enteros indican la posición en los array de origen y destino y el número de elementos a copiar.

> El siguiente programa utiliza copiaarray() para copiar algunos elementos desde copiaDesde a copiaA.

>     class Prueba {
>         public static void main(String[] args) {
>             byte[] copiaDesde = { 'd', 'e','s', 'c', 'a', 'f', 'e', 'i', 'n', 'a', 'd', 'o' };
>             byte[] copiaA = new byte[7];

>             System.copiaarray(copiaDesde, 3, copiaA, 0, 7);
>             System.out.println(new String(copiaA, 0));
>         }
>     }

Con la llamada al método copiaarray() en este programa de ejemplo comienza la copia en el elemento número 3 del array fuente -- recuerda que los índices de los arrays empiezan en cero, por eso la copia empieza en el elemento 'c'. Luego copiaarray() pone los elementos copiados en la posición 0 del array destino copiaA. Copia 7 elementos: 'c', 'a', 'f', 'e', 'i', 'n', y 'a'. Efectivamente, el método copiaarray() saca "cafeina" de "descafeinado".

Observa que el array de destino debe ser asignado antes de llamar a arraycopy() y debe ser lo suficientemente largo para contener los datos copiados.

### Obtener la Hora Actual

> El método currentTimeMillis() devuelve la hora actual en milisegundos desde las 00:00:00 del 1 de Enero de 1970. Este método se utiliza comunmente en pruebas de rendimiento; obtener la hora actual, realizar la operación que se quiere controlar, obtener de nuevo la hora actual--la diferencia entre las dos horas es el tiempo que ha tardado en realizarse la operación.

> En interfaces gráficos de usuarios el tiempo entre dos pulsaciones del ratón se utiliza para determinar su el usuario ha realizado un doble click. El siguiente applet utiliza currentTimeMillis() para calcular el número de milisegundos entre los dos clicks del ratón. Si el tiempo entre los dos clicks es menor de 200 milisegundos, los dos clicks de ratón se interpretan como un doble click.

> > Su navegador no entiende la etiqueta APPLET.

> Aquíi tienes el código fuente para el applet TimingIsEverything:

>     import java.awt.*;

>     public class TimingIsEverything extends java.applet.Applet {

>         public long firstClickTime = 0;
>         public String displayStr;

>         public void init() {
>             displayStr = "Ha un Doble Click aquí";
>         }
>         public void paint(Graphics g) {
>             Color fondo = new Color(255, 204, 51);
>             g.setColor(fondo);
>             g.drawRect(0, 0, size().width-1, size().height-1);
>             g.setColor(Color.black);
>             g.drawString(displayStr, 40, 30);
>         }
>         public boolean mouseDown(java.awt.Event evt, int x, int y) {
>             long clickTime = System.currentTimeMillis();
>             long clickInterval = clickTime - firstClickTime;
>             if (clickInterval < 200) {
>                 displayStr = "Doble Click!! (Intervalo = " + clickInterval + ")";
>                 firstClickTime = 0;
>             } else {
>                 displayStr = "Un solo Click!!";
>                 firstClickTime = clickTime;
>             }
>             repaint();
>             return true;
>         }
>     }

> Se podría utilizar el valor devuelto por este método para calcular la hora y fecha actuales. Sin embargo, encontrarás más conveniente obtener la hora y fecha actuales desde la clase Date del paquete java.util.

### Salir del Entorno de Ejecución.

> Para salir del intérprete Java, llama al método System.exit(). Debes pasarle un código de salida en un entero y el interprete saldrá con ese código de salida:

>     System.exit(-1);

> Nota: El método exit() hace salir del intérprete Java, no sólo del programa Java-- ten cuidado cuando utilice está función.

> Consideraciones de Seguridad: La llamada al método exit() está sujeta a las restricciones de seguridad. Por eso dependiendo del navegador donde se esté ejecutando el applet, una llamada a exit() desde un applet podría resultar en una excepción SecurityException.

### Selecionar y Obtener el Manejador de Seguridad

> El controlador de seguridad es un objeto que refuerza cierta vigilancia de seguridad para una aplicación Java. Se puede seleccionar el controlador de seguridad actual para una aplicación utilizando el método setSecurityManager() de la clase System, y se puede recuperar el controlador de seguridad actual utilizando el método getSecurityManager().

> Consideraciones de Seguridad: El controlador de seguridad de una aplicación sólo puede seleccionarse una vez. Normalmente, un navegador selecciona su controlador de seguridad durante el arranque. Por eso, la mayoría de las veces, los applets no pueden seleccionar el controlador de seguridad porque ya ha sido seleccionado. Si un applet hace esto resultará una SecurityException.

Ozito