Información JAVA
JAVA

Historia del Lenguaje Java

Sus Creadores

Ventajas

Desventajas

Maquina Virtual de Java

Tipos de datos

Control de Flujo

Palabras reservadas

Instanciar una clase

Inicializar un objeto

Eliminar objetos

Declarar clases


Historia del Lenguaje Java


Sus Creadores

En 1990, la empresa Sun Microsystems, tras el abandono del proyecto NeWS (Network/extensible Window System), decide crear un pequeño grupo de programadores cuyo objetivo es desarrollar un nuevo lenguaje destinado al campo de la electrónica de consumo, especialmente electrodomésticos. Este proyecto se conocía como Green Project. A la cabeza del grupo se encontraba el programador James Goslin.

A diferencia de la mayoría de otros lenguajes de programación, los creadores de Java no tenían en mente la creación de un lenguaje para ser utilizado por desarrolladores de software. El desarrollo de este sistema en principio tenía que ser un lenguaje empleado para programar los componentes electrónicos de diversos electrodomésticos, como por ejemplo, aparatos de aire acondicionado. Inicialmente, el lenguaje creado por los ingenieros de Sun James Gosling, Patrick Naughton, Chris Warth, Ed Frank y Mike Sheridan, llevaba el nombre de "Oak", en honor a un árbol que se veía desde la ventana de su oficina.
Al tiempo que Oak maduraba, la World Wide Web se encontraba en su período crítico de crecimiento y el equipo de desarrollo de Sun se dio cuenta de que Oak era perfectamente adecuado para la programación en Internet.
Este nuevo lenguaje se creó como una extensión del C++, ya dominado por muchos programadores, y dieron un énfasis verdaderamente sorprendente en la programación orientada a objetos (OOP), que sin duda tiene que ser dominada para poder programar en Java.

Java hubiese quedado reducido a un lenguaje para programar los chips de diversos electrodomésticos si no hubiese sido por una fuerza emergente que empezó a dar sus primeros pasos, también a principios de los años 90: la World Wide Web (WWW). Esta red mundial, además de proporcionar información "estática" en forma de texto transmitido a través del protocolo HTML, también exigía la transmisión de programas portables independientes de la plataforma.

En 1993, tras un fracaso del proyecto, Sun se centra en el desarrollo de sistemas de televisión interactiva y en el lenguaje Oak. En esta época, aparece Mosaic y la World Wide Web comienza su transición al modo gráfico. Patrick Naughton, otro miembro del equipo, pone en libre distribución por la red el lenguaje Oak. Java estaba a punto de nacer.

Se crea la primera aplicación para un ordenador personal, un browser para HTML, que demostraría toda la potencia de este nuevo lenguaje. En el se podría visualizar el primer applet Java que se escribió: Duke, la mascota de Java, agitando la mano.

Debido a que el nombre de “Oak” era muy parecido al de otro producto, se decidió cambiarle el nombre a “Java” esto en enero de 1995.

Tras una supuesta estancia en una cafetería, James Goslin estableció el nombre definitivo para el lenguaje: Java, que es café en argot americano y el 23 de Mayo de 1995, Sun Microsystems anuncia formalmente la aparición del nuevo lenguaje de programación Java y de Hot Java, un navegador para éste desarrollado con el mismo lenguaje.

También en mayo de 1995 Sun le da licencia a Netscape para el uso de java en sus navegadores. A finales del 1995, Netscape y Sun anuncian Javascript, un lenguaje basado en java el cual fue diseñado para personas no programadoras.
 
En los primeros seis meses de 1996 existían ya un gran número de compañías líderes, tanto de software como de hardware, con licencia de Sun de la tecnología Java. Entre ellas podríamos incluir Adobe, Asymetrix, Borland, IBM, Macromedia,  Microsoft, Novell, Oracle, Spyglass y Symantec. Estas y otras licencias de Java, incorporan a Java en sus productos de escritorio, sistemas operativos y otras herramientas de desarrollo.
Java es, por encima de todo, un lenguaje de programación. Pero sus características le están convirtiendo en la piedra angular de lo que puede ser la gran revolución en el mundo informático: acabar con el dominio de Microsoft y su sistema operativo Windows.

El lenguaje Java es un lenguaje lo bastante potente para desarrollar aplicaciones en cualquier ámbito, sin perder de vista que el contexto de Internet donde se ha desarrollado le dota de una potencia adicional.

A pesar de que mucha gente pueda creer que Java es un lenguaje para programar en Internet, nada más lejos de la realidad pues es un lenguaje de propósito general con el que se puede escribir desde un applet para una página Web hasta una aplicación financiera en modo texto sin ninguna conexión a Internet.
Y así fue; en menos de ocho años, desde su creación en Sun Microsystems, Java se ha transformado en un lenguaje utilizado por millones de programadores en todo el mundo, gracias a su portabilidad, potencia, seguridad y estabilidad.

Bill Joy uno de los co-fundadores de Sun microsystems vio la oportunidad de que este proyecto entrara en el emergente Internet, su idea fue la de liberar java de forma gratuita, de tal forma que al regalarlo para uso no comercial, este se convertiría en estándar por el amplio uso.

El objetivo principal de Java, era conseguir un entorno de desarrollo de software que fuera  independiente de la plataforma de ejecución.

Inicio de esta pagina


Ventajas


Pocos lenguajes de programación han despertado tanto interés como Java y, al mismo tiempo, son pocos los lenguajes que han contribuido a redefinir, en la misma medida que Java, el concepto de programa y aquello que los programadores pueden hacer. Mientras que la utilización de los programas creados con otros lenguajes se limita a cierta plataforma, Java es un lenguaje que no depende del tipo de plataforma que emplea. Si bien resulta necesario examinar todo el software que se recupera de Internet para verificar si puede trasmitir algún virus al sistema Cliente (o bien cabe confiar en la empresa que escribió dicho software). Java es un lenguaje que ha sido diseñado para escribir programas que puedan transferirse y ejecutarse con total seguridad.

Antes de que Java entrara en escena, el software se comercializaba en una caja, había que alojarlo permanentemente en el disco duro, ver que funcionara en la red y proceder a actualizarlo una y otra vez. Ahora bien, los programas creados en Java pueden simplemente hacer una breve y cordial visita al sistema Cliente desde la red. Una vez utilizados, abandonan el sistema. Siempre están actualizados y se comunican perfectamente con la red. Por si su independencia del tipo de plataforma que utilizan, así como sus interesantes presentaciones aplicadas a la red fueran poco, Java presenta los beneficios que supone la orientación a objetos y el encadenamiento múltiple. Estas características, permiten al código emular con mayor exactitud los problemas del mundo real que se desean resolver. Por otra parte el lenguaje es dinámico, los pequeños fragmentos de código Java se ensamblan en tiempo de ejecución en el programa y no en el momento en el que se escribe el código.

La ausencia del preprocesador: El preprocesador lleva acabo sustituciones globales en el código antes de pasarlo por el compilador. Esto hace que el compilador tenga que  vérselas con una serie de elementos de código totalmente distintos a los escritorios originalmente, y la persona responsable de meter dicho código debe descubrir que es lo que esta haciendo el preprocesador. Los diseñadores de Java consideraron que el preprocesador transformaba demasiado el código, de modo que lo desecharon del proyecto

Sin archivos make ni enlace de librerías: Cuando se programa en C o en C++, a menudo uno de los retos mas importantes de un archivo make, un pequeño programa que indica al compilador como construir el archivo ejecutable. Por lo general, el código fuente esta distribuido en diversos archivos y requiere el uso de librerías de código que ya hayan sido compiladas.

El propósito del archivo make consiste en garantizar que la información adecuada llegue al preprocesador; el código fuente que no haya cambiado no sea compilado innecesariamente y que la librería este enlazada correctamente

Java se ocupa del propósito inicial del archivo make, eliminando el preprocesador. El segundo propósito se observa directamente en el compilador.

Java es un lenguaje dinámico. La maquina virtual de java enlaza los programas java en tiempo de ejecución, eliminando la necesidad de enlazarlos con las librerías en tiempo de compilación

Eliminación del acceso directo a memoria y de la aritmética de punteros: En C y en C++, un puntero es un entero que representa una dirección de la memoria en el ordenador, Cuando se utiliza los punteros en programas creados en C o en C++, se esta indicando al ordenador que localice la dirección de memoria especifica y que utilice su contenido.

He aquí parte de la herencia de C como lenguaje de programación de sistemas. En tareas de programación de bajo nivel para una plataforma especifica, este lenguaje resulta muy útil. Pero en la programación de alto nivel, esta practica de programación no es adecuada y suele generar confusiones en el código. Como este estilo de programación genera programas que ofrecen pocas garantías en materia de seguridad, se ha determinado que Java no tenga acceso directo a la memoria ni soporte la aritmética de punteros.

La orientación a objetos: Una de las ventajas que supone empezar desde el principio se traduce en el hecho de que Java ha sido creado inicialmente como lenguaje orientado a objetos. Teniendo en cuanta que la orientación a objetos es tal vez la tendencia mas popular en el desarrollo de software moderno.

Un lenguaje preparado para la red: Java fue creado desde el principio como un lenguaje pensado para la red. La maquina virtual de Java evita que los programas transferidos al ordenador lo destruyan, facilita la rápida transferencia de dichos programas y los ejecuta de modo que no dependan del sistema operativo subyacente.

Estas ventajas son inherentes al lenguaje Java. En la programación diaria no se toman en cuenta estos detalles. Pero teniendo en cuenta que Java ha sido creado para funcionar con la red, se tiene adelante una serie de funciones extensas, incluidas en la API, que permite la interacción con Internet. Mediante la utilización de las API se puede emplear elementos de un alto nivel de abstracción, como los localizadores de recursos uniformes (URL), o comunicarse a niveles muy bajos trasfiriendo simplemente paquetes de un lado a otro.

Java tiene la característica de que libera la memoria automáticamente, por lo cual uno no se tiene que preocupar por la perdida de esta.

Inicio de esta pagina


 

Desventajas


Aunque una de las principales habilidades y ventaja es la portabilidad, el método que java utiliza para la creación de el código, es ineficiente. Cuando Java es compilado y pasado a código de bytes, un interprete llamado maquina virtual, especialmente diseñado para una arquitectura de hardware, corre el programa. ¿Por que es este un problema?, Java al tener que interpretar el código, es mas lento que C. El código compilado, muestra una serie de instrucciones que tienen que ver directamente con las instrucciones del procesador, entonces, un interprete debe primero traducir el código binario de java a el equivalente de las instrucciones de cada tipo de procesador. Obviamente, este proceso toma algo de tiempo y no importa el tamaño del programa este será mas lento que realizar la mima operación directamente en el código de la maquina.

¿Que tan importante es la diferencia de velocidad?, de acuerdo a PC Magazine, parece ser muy significativa, “Comparado con código nativo, La maquina virtual de Java es atrozmente lenta... Java aun no puede competir con el código nativo compilado de C++” (PC Magazine, abril, 1998). C++ ha sido ampliamente adoptado por los desarrolladores y no desearan cambiar el lenguaje si las aplicaciones que ellos desarrollan con java no están a la altura de los estándares de ellos y de los clientes. De cualquier manera , si la diferencia de velocidad es insignificante, los desarrolladores talvez desearían aprender y programar en Java por las significativas ventajas que el lenguaje ofrece.

Inicio de esta pagina


 

Maquina Virtual de Java


Java es, entre otras cosas, un lenguaje orientado a objetos, encadenado y dinámico, pero esta no es la razón fundamental por la cual se le considera el mejor lenguaje para trabajar en la red. Lo maravilloso es la manera en que se ejecutan los programas creados en Java. Los programas Java se ejecutan en maquinas virtuales que habitan en el ordenador.

Un programa Java no tiene contacto con el ordenador en el que se ejecuta, sino que se relaciona con la maquina virtual. Esta configuración tiene una serie de implicaciones de gran importancia

En primer lugar, los programas en Java no dependen del tipo de plataforma que utilizan, en cierta forma se escribe para una sola plataforma: la maquina virtual.

La maquina virtual de Java decide lo que los programas Java pueden hacer y lo que no. Los programas escritos en lenguajes compilados, como C y C++, son ejecutados directamente por el sistema operativo. Por tanto, éstos tienen acceso directo a todos los recursos del sistema, incluyendo la memoria y el sistema de archivos.

Considerando que los programas creados en Java se ejecutan desde la maquina virtual, los creadores de dicha maquina deciden en ultima instancia que pude hacer cada programa y que no. El espacio creado para ejecutar los programas Java es el entorno de tiempo de ejecución. Esta maquina virtual actúa como un cortafuego entre el ordenador host (anfitrión) y el programa Java. Un programa Java nunca accede a los mecanismos de entrada y salida del ordenador, al sistema de archivos, ni a la memoria. Simplemente solicita a la maquina virtual que lo haga.

Inicio de esta pagina


Tipos de datos


Java proporciona los tipos de datos que comúnmente se encuentran en los distintos lenguajes de programación, con la diferencia en que la representación interna de ellos no es un problema para el programador sino que el mismo lenguaje se encarga de ellos, para que se pueda intercambiar datos binarios generados por computadoras con diferente arquitectura.

Datos Numéricos:

*Enteros :

byte (8 Bits)  short (16Bits)  int (32 Bits)  long (64 Bits)

Los números pueden ser expresados en base diez (10), hexadecimal (16) u octal (8),. Un número en formato decimal es simplemente un conjunto de dígitos que van desde el 0 al 9, nunca hay un cero a la izquierda. Un número en hexadecimal va precedido por 0x y luego la secuencia de dígitos permitidos en la notación hexadecimal : números del 0 al 9 y letras desde la A hasta la F. Para escribir un número en notación octal basta con escribir un cero a la izquierda del número, los dígitos permitidos en esta notación van desde el 0 al 7.
 
 

*Reales :

float (32 Bits)  double (64Bits)

Un número real tiene las siguientes partes: la parte entera, la parte fraccionaria o decimal que va precedida por un punto "." y el exponente que es un valor opcional y que va precedido por la letra E o e y seguida de un número que indica la potencia de diez.
 

*Datos Alfanuméricos:

String : Este es un caso particular porque String es una clase y no un tipo de dato. A diferencia de los tipos numéricos estos son clases de objetos, que incluyen todos los métodos necesarios para procesar cadenas como conversión de datos, inserción de datos, búsquedas, etc.
 

*Otros tipos de datos:

char Representa un carácter alfanumérico, cuyos código es el ASCII.
Boolean Representa un tipo de dato booleano, cuyos posibles valores son true y false.
Void Representa un tipo de dato nulo, que no existe, es usado para indicar que una función no retorna datos.

Inicio de esta pagina


 

Control de Flujo


---Sentencia IF-ELSE
Su funcionamiento es idéntico al que se les da en los otros lenguajes de programación.
 

Ejemplo:
if ( Edad > 200 )
{
      System.out.println("La edad digitada sobrepasa el límite");
      ......
}

else
if ( Edad < 0 )
{
      System.out.println("La edad digitada es menor que cero");
      .......
}

else
{
      System.out.println("Edad registrada");
      ......
}
 

---Sentencia SWITCH-CASE
Su funcionamiento es igual al de su equivalente en C++.
 

Ejemplo:
switch ( Estado )
{
   case 0:
   System.out.println("Estado OK ");
   ......
   break;

   case 1:
   {
     System.out.println("Estado EN ACTUALIZACIÓN");
     .....
    }
    break;

    case 2:
      System.out.println("Estado ERROR DE CALCULO");
      return;
      ......

   default :
      System.out.println("Estado NO CONOCIDO");
      .....
}

---Sentencia For
La sintaxis y definición de bucles For en Java es igual a la de C++:
 

for ( Valores Iniciales ; Test para que el bucle continúe; Incrementos )
{
     Sentencias
}
 

Ejemplo:

int i,x;
for ( i = 1 ; i <= 10 ; i ++ )
{
      x=i * 30;
}
 

En este ejemplo se hace un bucle usando la variable entera i como contador, cuyo valor inicial es 1 y la condición para que el bucle continúe es que i sea menor o igual a 10, el incremento de i como se puede ver es de una unidad.

También es posible usar varios indicadores o variables dentro de FOR y la definición de variables dentro del bucle:

int i , j , x ;
for ( i = 1 , j = 10 ; ( i <= 20 ) && ( j < 15 ) ; i += 5 , j ++ )
{
     int z; // Variable local al bucle
     z = i * j ;
     x = ( z + 4 ) / 3 ;
}

Otra posibilidad en el bucle for es la de detener su ejecución a partir de múltiples condiciones:

int x,i ;
for ( i = 1; i <= 100; i++ )
{
     x= i * 3;
     if ( x > 200 ) break;
}
 

La palabra reservada break indica que se detenga el bucle, en este caso si el valor de x es mayor que 200.

---Sentencia WHILE
Como la mayoría de palabras reservadas de Java, la sintaxis de ésta es igual a la de C++.

While ( Condición )
{
     ..................
     Instrucciones
     ................
}

Un bucle WHILE se realiza siempre y cuando se cumpla una condición dada.

Ejemplo:

int i =1;
while ( i < 23 )
{
    .................
    i ++ ;
}

El bucle anterior se repite 22 veces ya que la condición es que i sea menor que 23 y el incremento de i es unitario.

Otra forma de detener un bucle WHILE se hace usando la palabra reservada break.

Ejemplo:

int i =1, x =4;
while ( i < 23 )
{
    .................
    x = x * i + 3 ;
    if ( x > 40 ) break;
    i ++ ;
}

En este ejemplo aparte de la condición de i < 23 , el bucle se detendrá con la condición x > 40.

Inicio de esta pagina


Palabras reservadas


abstract
boolean
break
byte
byvalue*
case
cast*
catch
char
class
const*
continue
default
do
double
else
extends
false
final
finally
float
for
future*
generic*
goto*
if
implements
import
inner*
instanceof
int
interface
long
native
new
null
operator*
outer*
package
private
protected
public
rest*
return
short
satatic
super
switch
synchronized
this
throw
transient
true
try
var*
void
volatile
while

Las palabras reservadas se pueden clasificar en las siguientes categorías:

Tipos de datos: boolean, float, double, int, char
Sentencias condicionales: if, else, switch
Sentencias iterativas: for, do, while, continue
Tratamiento de las excepciones: try, catch, finally, throw
Estructura de datos: class, interface, implements, extends
Modificadores y control de acceso: public, private, protected, transient
Otras: super, null, this.
 
Las palabras marcadas con un * no se utilizan en C/C++.
 
 

Instanciar una clase



el operador new permite realizar una instancia de una clase, mediante la asignacionde memoria para el objeto nevo de este tipo. new necesita un solo argumento: una llamada al método constructor
Rectangle rect = new Rectangle(0,0,100,200);

Inicializar un objeto



Una clase podria tener multiples constructores para realizar diferentes tipos de inicializacion en los nuevos objetos. Los constructores tienen el mismo nombre de la clase y no tienen tipo de retorno. Un constructor que no tiene ningún argumento, es conocido como constructor por defecto.

Si una clase tiene varios constructores, estos tendran el mismo nombre pero diferentes parametros.


Ejemplo:Date hoy = new Date();
Date cumpleaños = new Date(1951,04,09);


Utilizar objetos:->Referenciar variables de un objeto.
hoy.dia=14 ->Referenciar metodos de un objeto.
dia=Cumpleaños.Dia();


Eliminar objetos



Un objeto es elegible para la recolección de basura cuando no existen mas referencias a ese objeto. Las referencias que se mantienen en una variable desaparecen de forma natural cuando la variable sale de su ambito. O cuando se borra explicitamente un objeto referencia mediante el uso de null.

Recolector de basura (Garbage collector)

Funciona en un thread de baja prioridad de forma síncrona o asíncrona. Escanea dinamicamente la memoria buscando objetos, marcando aquellos que han sido referenciados.

Se puede invocar al recolector de basura (System.gc()), aunque no se garantiza que los objetos sean recolectados.

FinalizaciónAntes de que un objeto sea redactado, el recolector de basura le permite limpiarse él mismo me diante la llamada al método finalize() el propio objeto.

Declarar clases



Una clase es un prototipo que se puede utilizar para crear objetos. La implementacion de una clase comprende dos componentes: la declaracion y el cuerpo de la clase.

Declaracion de la clase{
cuerpo de la clase;
}

Declarar la superclase de la clase

En java, todas las clases tienen una superclase. Si no se especifica una superclase para una clase, se asume que es la clase object(declarando en java.lang)Para especificar explicitamente la superclase de una clase, se debe poner la palabra clave extends mas el nombre de la superclase.

Inicio de esta pagina



Aréchiga Rocha Jorge Luis       arechiga.50megs.com