libro de java

8
 Java como una plataforma de programación En la primera edición de este libro, teníamos que escribir acerca de Java: "Como un lenguaje de programación, el despliegue de Java es exagerado: Java es sin duda un buen lenguaje de programación. No hay duda de que es uno de los mejores lenguajes disponibles para los programadores más serios. Creemos que podría haber sido un gran lenguaje de programación, pero probablemente es demasiado tarde para eso. Una vez que el lenguaje está en el campo, la horrible realidad de compatibilidad con código existente se establece." Nuestro editor obtuvo muchas críticas de este párrafo de alguien muy alto de Sun Microsystems, que permanecerá en el anonimato. Pero, en retrospectiva, nuestro pronóstico parece exacto. Java tiene un montón de características de lenguaje, que examinaremos en detalle más ade lante en este capítulo. Tiene su porción de verrugas, y sus más recientes adiciones al lenguaje no son tan elegantes como los originales debido a la fea realidad de compatibilidad. Pero, como ya dijimos en la primera edición, Java nunca fue sólo un idioma. Hay muchos lenguajes de programación por ahí, y pocos de ellos hacen mucho ruido. Java es una plataforma completa, con una gran biblioteca, que contiene gran cantidad de código reutilizable y un entorno de ejecución que proporciona servicios como seguridad, portabilidad a través de sistemas operativos y la recolección de basura automática. Como programador, desea un lenguaje con una agradable sintaxis y semántica comprensible (es decir, no C++). Java se ajusta a la ley, como decenas de otros lenguajes finos. Algunos idiomas le ofrecen portabilidad, recolección y similares, pero no tienen mucho de una biblioteca, obligarle a rodar su propio si desea tener acceso de gráficos o redes o base de datos de fantasía. Bueno, Java tiene todo: un buen idioma, un entorno de ejecución de alta calidad y una vasta biblioteca. Esa combinación es lo que hace que una propuesta irresistible para muchos programadores Java Como programador, usted querrá un lenguaje con una sintaxis y semántica agradable comprensible (es decir, no C + +). Java se ajusta a la ley, así como docenas de otros idiomas bien. Algunos idiomas se dan la portabilidad, la recolección de basura, etc, pero no tienen mucho de una biblioteca, forzando a rodar en la propia si desea gráficos extravagantes o el trabajo en red o acceso a bases de datos. Bueno, Java tiene todo: un buen lenguaje, un entorno de ejecución de alta calidad, y una amplia biblioteca. Esa combinación es lo que hace Java una propuesta irresistible para muchos programadores. rminos de moda del Libro Blanco de Java Los autores de Java han escrito un influyente libro blanco que explica sus objetivos y logros. También publicaron un resumen más corto que se organiza a lo largo de 11Términos de moda: Simple Orientado a objetos Con Experiencia en red Robusto Seguro Arquitectura Neutral Portable

Upload: erick-sanz

Post on 08-Jul-2015

27 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Libro de Java

5/9/2018 Libro de Java - slidepdf.com

http://slidepdf.com/reader/full/libro-de-java 1/8

 

Java como una plataforma de programación

En la primera edición de este libro, teníamos que escribir acerca de Java:

"Como un lenguaje de programación, el despliegue de Java es exagerado: Java es sin duda un buen

lenguaje de programación. No hay duda de que es uno de los mejores lenguajes disponibles para

los programadores más serios. Creemos que podría haber sido un gran lenguaje de programación,

pero probablemente es demasiado tarde para eso. Una vez que el lenguaje está en el campo, la

horrible realidad de compatibilidad con código existente se establece."

Nuestro editor obtuvo muchas críticas de este párrafo de alguien muy alto de Sun Microsystems,

que permanecerá en el anonimato. Pero, en retrospectiva, nuestro pronóstico parece exacto. Java

tiene un montón de características de lenguaje, que examinaremos en detalle más adelante en

este capítulo. Tiene su porción de verrugas, y sus más recientes adiciones al lenguaje no son tan

elegantes como los originales debido a la fea realidad de compatibilidad.

Pero, como ya dijimos en la primera edición, Java nunca fue sólo un idioma. Hay muchos lenguajes

de programación por ahí, y pocos de ellos hacen mucho ruido. Java es una plataforma completa,con una gran biblioteca, que contiene gran cantidad de código reutilizable y un entorno de

ejecución que proporciona servicios como seguridad, portabilidad a través de sistemas operativos

y la recolección de basura automática.

Como programador, desea un lenguaje con una agradable sintaxis y semántica comprensible (es

decir, no C++). Java se ajusta a la ley, como decenas de otros lenguajes finos. Algunos idiomas le

ofrecen portabilidad, recolección y similares, pero no tienen mucho de una biblioteca, obligarle a

rodar su propio si desea tener acceso de gráficos o redes o base de datos de fantasía. Bueno, Java

tiene todo: un buen idioma, un entorno de ejecución de alta calidad y una vasta biblioteca. Esa

combinación es lo que hace que una propuesta irresistible para muchos programadores Java

Como programador, usted querrá un lenguaje con una sintaxis y semántica agradable

comprensible (es decir, no C + +). Java se ajusta a la ley, así como docenas de otros idiomas bien.

Algunos idiomas se dan la portabilidad, la recolección de basura, etc, pero no tienen mucho de

una biblioteca, forzando a rodar en la propia si desea gráficos extravagantes o el trabajo en red o

acceso a bases de datos. Bueno, Java tiene todo: un buen lenguaje, un entorno de ejecución de

alta calidad, y una amplia biblioteca. Esa combinación es lo que hace Java una propuesta

irresistible para muchos programadores.

Términos de moda del Libro Blanco de Java

Los autores de Java han escrito un influyente libro blanco que explica sus objetivos y logros.

También publicaron un resumen más corto que se organiza a lo largo de 11Términos de moda:

Simple

Orientado a objetos

Con Experiencia en red

Robusto

Seguro

Arquitectura Neutral

Portable

Page 2: Libro de Java

5/9/2018 Libro de Java - slidepdf.com

http://slidepdf.com/reader/full/libro-de-java 2/8

 

Interpretado

Alto rendimiento

Dinámico

Multiproceso

En esta sección:

y  Se resumirá con extractos del libro blanco, lo que los diseñadores Java dicen acerca de las

palabras anteriores y

y  Diremos lo que pensamos de las anteriores palabras, basado en nuestras experiencias con

la versión actual de Java.

Simple

Hemos querido construir un sistema que puede ser programado con facilidad sin mucha

  formación esotérica y que ha movilizado hoy la práctica estándar. Así que, aunque nos

dimos cuenta de que C++ era inadecuado, diseñamos Java tan estrechamente a C++ como

sea posible a fin de que el sistema sea más comprensible. Java utilizan con poca frecuenciaomiten muchos y mal entiende, confusas características de C++ que, en nuestra

experiencia, se creen más dolor que beneficios.

La sintaxis de Java es, en efecto, una versión limpia de la sintaxis de C++. No es necesario para los

archivos de encabezado, aritmética de punteros (o incluso una sintaxis de puntero), estructuras,

sindicatos, sobrecarga de operadores, clases base virtuales y así sucesivamente. (Consulte las

notas de C++ intercalados en todo el texto para obtener más información sobre las diferencias

entre Java y C++). Los diseñadores, sin embargo, no intentaron arreglar todas las características de

torpes de C++ torpes. Por ejemplo, la sintaxis de la instrucción switch no cambia en Java. Si sabe

C++, encontrará la transición a la sintaxis de Java fácil.

Si está acostumbrado a un entorno de programación visual (como Visual Basic), no encontrará Java

simple. Hay demasiada sintaxis extraña (aunque no tardará mucho en acostumbrarse a ella). Más

importante, usted debe programar aún más en Java. La belleza de Visual Basic es que su entorno

de diseño visual casi automáticamente proporciona mucha de la infraestructura para una

aplicación. La funcionalidad equivalente debe programarse manualmente, generalmente con un

poco de código en Java.

Otro aspecto de ser simple es ser pequeño. Uno de los objetivos de Java es permitir la

construcción de software que puede funcionar por sí mismo en las máquinas pequeñas. El 

tamaño del soporte básico de clase e intérprete es aproximadamente de 40 K bytes; la

adición de las bibliotecas de la norma básica y el apoyo de subprocesos (básicamente, un

autónomo microkernel) agrega una K 175 adicionales.

Este fue un gran logro en el momento. Por supuesto, la biblioteca ha crecido desde entonces de

enormes proporciones. Ahora existe un Java Micro Edition con una pequeña biblioteca, apto para

dispositivos embebidos.

Page 3: Libro de Java

5/9/2018 Libro de Java - slidepdf.com

http://slidepdf.com/reader/full/libro-de-java 3/8

 

Orientado a objetos

En pocas palabras, diseño orientado a objetos es una técnica de programación que se

centra en los datos (= objetos) y en las interfaces a ese objeto. Para hacer una analogía con

carpintería, un carpintero "orientado a objetos" se ocupan fundamentalmente de la silla

que está construyendo, y secundariamente con las herramientas que utiliza para hacerla;

un carpintero "no orientado a objetos " pensaría principalmente en sus herramientas.Los

servicios orientados a objetos de Java son esencialmente las de C++.

Orientación a Objetos ha demostrado su valía en los últimos 30 años, y es inconcebible que un

lenguaje de programación moderno no lo utilice. De hecho, las características orientadas a objetos

de Java son comparables a las de C++. La principal diferencia entre Java y C + + se encuentra en la

herencia múltiple, que Java ha reemplazado con el concepto más simple de las interfaces, y en el

modelo de metaclase Java (que discutimos en el capítulo 5).

Con experiencia de red

 Java tiene una extensa biblioteca de rutinas para hacer frente a los protocolos TCP/IP comoHTTP y FTP. Las aplicaciones de Java pueden abrir y acceder a objetos a través de la red y 

de las direcciones URL con la misma facilidad que al acceder a un sistema de archivos local.

Hemos encontrado las capacidades de redes de Java fuertes y fáciles de usar.

Cualquiera que haya tratado de hacer la programación de Internet utilizando otro idioma se

deleitarán con la sencillez que Java hace onerosas tareas como la apertura de una conexión de

socket. (Cubrimos la creación de redes en el Volumen II de este libro.) El mecanismo de invocación

de método remoto permite la comunicación entre objetos distribuidos (también están cubiertos

en el Volumen II).

Robusto

  Java está diseñado para escribir programas que deben ser fiables en una variedad de

maneras.

  Java pone mucho énfasis en el control temprano de posibles problemas, más tarde

dinamiza (tiempo de ejecución) el control y eliminación de las situaciones que son proclives

al error. . . .. . . . La mayor diferencia individual entre Java y C / C + + es que Java tiene un

modelo de puntero que elimina la posibilidad de sobreescribir la memoria y la corrupción

de datos.

Esta función también es muy útil. El compilador de Java detecta muchos problemas que, en otros

idiomas, se muestran sólo en tiempo de ejecución. En cuanto al segundo punto, quien ha pasado

horas persiguiendo a daños en la memoria causada por un error de puntero será muy feliz con

esta característica de Java.

Si usted viene de un lenguaje como Visual Basic que explícitamente no utilizan punteros,

probablemente se estará preguntando por qué esto es tan importante. Los programadores de C

no son tan afortunados.

Page 4: Libro de Java

5/9/2018 Libro de Java - slidepdf.com

http://slidepdf.com/reader/full/libro-de-java 4/8

 

Ellos necesitan punteros para acceder a cadenas, matrices, objetos, e incluso los archivos. En

Visual Basic, no utiliza indicadores para cualquiera de estas entidades, ni tampoco tiene que

preocuparse acerca de reservar memoria para ellos. Por otra parte, muchas estructuras de datos

son difíciles de implementar en un lenguaje sin puntador. Java le ofrece lo mejor de ambos

mundos. Usted no necesita consejos para las construcciones cotidianas, como cadenas y matrices.

Usted tiene el poder de los punteros, si usted lo necesita, por ejemplo, de las listas enlazadas. Y

siempre tienes la seguridad completa, porque nunca se puede acceder a un puntero erróneo,

cometen errores de asignación de memoria, o para proteger contra fugas de memoria de

distancia.

Seguro

  Java está pensado para utilizarse en entornos de red distribuida. Hacia ese fin, se ha

colocado mucho énfasis en la seguridad. Java permite la construcción de sistemas libres de

virus, libre de manipulaciones.

En la primera edición de Core Java se nos dijo: "Bueno, Nunca digas nunca '", y acertamos. No

mucho tiempo después de la primera versión del Java Development Kit fue lanzado, un grupo deexpertos en seguridad de la Universidad de Princeton encontró errores sutiles en las

características de seguridad de Java 1.0. Sun Microsystems ha fomentado la investigación en

seguridad de Java, haciendo pública la especificación y la aplicación de la máquina virtual y las

bibliotecas de seguridad. Se han fijado todos los fallos de seguridad conocidos rápidamente. En

cualquier caso, Java hace que sea muy difícil de burlar sus mecanismos de seguridad. Los errores

encontrados hasta ahora han sido muy técnico y muy pocos en número.

Desde el principio, Java fue diseñado para hacer imposible, entre ellos ciertos tipos de ataques:

-  Conquistando la pila de ejecución un ataque común de gusanos y virus

-  Corromper la memoria fuera de su propio espacio de proceso

-  Leer o escribir archivos sin permiso

Una serie de características de seguridad se han añadido a Java en el tiempo. Desde la versión 1.1,

Java tiene la noción de clases de firma digital (véase el Volumen II). Con una clase de firma, puede

estar seguro de lo que escribió. Cada vez que usted confía en el autor de la clase, la clase se puede

permitir más privilegios en el equipo.

Arquitectura Neutral

El compilador genera un formato de archivo objeto neutro de arquitectura: el código

compilado es ejecutable en muchos procesadores, dada la presencia del sistema de

ejecución Java.

El compilador de Java hace esto mediante la generación de instrucciones de bytecode( 

código de bytes) que no tienen nada que ver con una arquitectura de computadora en

  particular. Por el contrario, están diseñados para ser fáciles de interpretar en cualquier 

máquina y fácil de traducir a código máquina nativo en tiempo real.

Esto no es una idea nueva. Más de 30 años, la implementación original de NiklausWirth de Pascal y

el sistema de UCSD Pascal utilizan la misma técnica.

Page 5: Libro de Java

5/9/2018 Libro de Java - slidepdf.com

http://slidepdf.com/reader/full/libro-de-java 5/8

 

Por supuesto, interpretar los bytecodes es necesariamente más lento que ejecutar las

instrucciones de la máquina a toda velocidad, por lo que no está claro que esto es incluso una

buena idea.

Sin embargo, las máquinas virtuales tienen la opción de traducir las secuencias bytecode

ejecutado con más frecuencia en código máquina, un proceso llamado compilación just-in-time.

Esta estrategia ha demostrado ser tan efectiva que incluso la plataforma de Microsofts.NET se

basa en una máquina virtual.

La máquina virtual tiene otras ventajas. Aumenta la seguridad porque la máquina virtual puede

comprobar el comportamiento de las secuencias de instrucciones. Algunos programas incluso

producen bytecodes sobre la marcha, dinámicamente mejorar las capacidades de un programa en

ejecución.

Portable

 A diferencia de C y C++, no hay ningún "dependiente de la implementación" aspectos de la

especificación. Los tamaños de los tipos de datos primitivos son especificados, tal cual el comportamiento de aritmética sobre ellos.

Por ejemplo, un int en Java es siempre un entero de 32 bits. En C / C + +, int puede significar un

número entero de 16 bits, un entero de 32 bits, o cualquier otro tamaño que el proveedor de

compilador le gusta. La única restricción es que el tipo int debe tener al menos tantos bytes como

un short int y no puede tener más bytes que un longint.Tener un tamaño fijo de tipos de números

elimina un dolor de cabeza.Datos binarios se almacenan y se transmiten en un formato fijo,

eliminando la confusión sobre ordenación de bytes. Las cadenas se guardan en un formato

Unicode estándar.

Las librerías que son una parte del sistema definen interfaces portátiles. Por ejemplo, hay una clase de ventana abstracta y las implementaciones de la misma para UNIX, Windows y 

Macintosh.

Quienes lo hayan intentado saben, que es un esfuerzo de proporciones heroicas escribir un

programa que se vea bien en Windows, Macintosh, y en diez sabores de UNIX. Java 1.0 hizo el

heroico esfuerzo, la entrega de un kit de herramientas simples que asignan comunes elementos de

interfaz de usuario para una serie de plataformas.

Por desgracia, el resultado es una librería que, con mucho trabajo, apenas podía dar resultados

aceptables en sistemas diferentes (Y a menudo eran diferentes fallos en las implementaciones de

gráficos de las diferentes plataformas).

Pero era un comienzo. Existen muchas aplicaciones en las que la portabilidad es más importante

que la superficie resbaladiza de la interfaz de usuario, y estas aplicaciones se benefician de las

primeras versiones de Java. Por ahora, el conjunto de herramientas de interfaz de usuario ha sido

completamente reescrito para que ya no se base en la interfaz de usuario principal. El resultado es

mucho más coherente y, creemos, más atractivo que en versiones anteriores de Java.

Page 6: Libro de Java

5/9/2018 Libro de Java - slidepdf.com

http://slidepdf.com/reader/full/libro-de-java 6/8

 

Interpretado

El intérprete Java puede ejecutar bytecode Java directamente en cualquier máquina a la

que se ha instalado el intérprete. Puesto que la vinculación es un proceso más gradual y 

ligero, el proceso de desarrollo y de exploración puede ser mucho más rápido.

El incremento de la vinculación tiene ventajas, pero su ventaja para el proceso de desarrollo

claramente es exagerada.El principio del desarrollo de las herramientas de Java fue bastante

lento.Hoy en día, los bytecodes se traducen a código máquina por el compilador Just-in-time.

Alto rendimiento

Mientras que el rendimiento de bytecodes interpretados suele ser más que suficiente, hay 

situaciones donde se requiere un mayor rendimiento. Los bytecodes se puede traducir al 

vuelo (en tiempo de ejecución) en código de máquina para la CPU particular, mientras la

aplicación se esté ejecutando.

En los primeros años de Java, muchos usuarios no estaban de acuerdo con la afirmación de queladesempeño fue "más que suficiente." Hoy, sin embargo, los compiladores just-in-time se han

hecho tan buenos que son competitivos con los compiladores tradicionales y, en algunos casos ,

incluso los superan porque tienen más información disponible. Por ejemplo, un compilador Just-in-

time puede controlar qué código se ejecuta con frecuencia y sólo optimizar el código para la

velocidad. Una optimización más sofisticada es la eliminación (o "código en línea") de las llamadas

a funciones. El compilador just-in-time sabe qué clases se han cargado.Puede utilizar código en

línea cuando, según la colección cargada de clases, nunca reemplace una función determinada,una

función particular nunca es anulada, y esto puede deshacer aquella optimización más tarde si

fuera necesario.

Multiproceso

[ Los] beneficios de subprocesamiento múltiple son de mejor capacidad de respuesta

interactiva y el comportamiento en tiempo real.

Si alguna vez ha intentado hacer subprocesamiento múltiple en otro idioma, estará gratamente

sorprendido de lo fácil que es en Java. Subprocesos en Java también pueden sacar provecho de

sistemas multiprocesadores si el sistema operativo base lo hace. En el aspecto negativo, difieren

de las implementaciones de hilo en las principales plataformas y Java no hace ningún esfuerzo

para ser plataforma independiente a este respecto. Sólo el código para llamar a subprocesamiento

múltiple sigue siendo la misma a través de máquinas; Java descarga la aplicación de

subprocesamiento múltiple para el sistema operativo subyacente o una biblioteca de subprocesos.

Sin embargo, la facilidad de subprocesamiento múltiple es una de las principales razones por qué

Java es un lenguaje de atractivo para el desarrollo del lado del servidor.

Dinámico 

En un número de formas, Java es un lenguaje más dinámico que C o C++. Fue diseñado

  para adaptarse a un entorno en constante evolución. Las Librerías libremente pueden

Page 7: Libro de Java

5/9/2018 Libro de Java - slidepdf.com

http://slidepdf.com/reader/full/libro-de-java 7/8

 

agregar nuevos métodos y variables de instancia sin ningún efecto sobre sus clientes. En

 Java, es fácil encontrar información de tipo de tiempo de ejecución.

Esta es una característica importante en aquellas situaciones en que el código debe ser añadido a

un programa en ejecución. Un buen ejemplo es el código que se descarga de Internet para

ejecutar en un navegador. En Java 1.0, descubrir información de tipo en tiempo de ejecución no

fue nada sencillo, pero las versiones actuales de Java dan la idea del programador completo en la

estructura y el comportamiento de sus objetos. Esto es muy útil para sistemas que necesitan para

analizar los objetos en tiempo de ejecución, tales como Java GUI builders, depuradores

inteligentes, los componentes extraíbles (enchufables), y bases de datos de objetos.

Applets de Java e Internet

La idea es simple: Los usuarios podrán descargar los bytecodes de Java desde Internet y

ejecutarlos en sus propias máquinas. Los programas de Java que funcionan en las páginas web se

llaman applets.

Para el uso de un applet, usted sólo necesita un navegador web compatible con Java, que seejecutarán los bytecodes para usted. No es necesario instalar ningún software.Porque las licencias

de Sun del código fuente Java insisten en que no haya cambios en el lenguaje estándar y

biblioteca, por lo tanto un applet Java debe ejecutarse en cualquier explorador que se anuncian

como compatible con Java. Se obtiene la última versión del programa cada vez que visite la página

web que contiene el applet.

Lo más importante, gracias a la seguridad de la máquina virtual, nunca tendrá que preocuparse

por los ataques de código malintencionado.

Cuando el usuario se descarga un applet, que funciona como la incrustación de imágenes en una

página web. El applet se convierte en una parte de la página y el texto fluye alrededor del espacioutilizado para el applet. El punto es que la imagen está viva. Reacciona a los comandos del usuario,

cambia su apariencia, y envía los datos entre el ordenador presenta el applet y el equipo de

servicio.

La figura 1-1 muestra un buen ejemplo de una página web dinámica que lleva a cabo cálculos

complejos. La miniaplicaciónJmol muestra las estructuras moleculares. Al utilizar el ratón, se

puede rotar y hacer zoom en cada molécula para entender mejor su estructura. Este tipo de

manipulación directa no se puede lograr con páginas web estáticas, pero los appletshacen que sea

posible. (Usted puede encontrar este applet en http://jmol.sourceforge.net.)

Unabrevehistoria de Java

En esta sección se ofrece una breve historia de la evolución de Java. Se basa en diversas fuentes publicadas (lomás importante, en una entrevista con los creadores de Java en julio de 1995 de la línea SunWorld la revista).

Java se remonta a 1991, cuando un grupo de ingenieros de Sun, dirigido por Patrick Naughton y su

compañero de Sun(y todo el equipo asistente) James Gosling, han querido diseñar un lenguaje de

computadora pequeña que podría ser utilizado para dispositivos como cajas de distribución de

televisión por cable.

Page 8: Libro de Java

5/9/2018 Libro de Java - slidepdf.com

http://slidepdf.com/reader/full/libro-de-java 8/8

 

Debido a que estos dispositivos no tienen mucho poder ni memoria, el lenguaje tenía que ser

pequeño y generar un código muy estricto. Además, debido a diferentes fabricantes También,

porque los fabricantes diferentes pueden elegir diferentes unidades de procesamiento central

(CPU), era importante que el lenguaje no estuviera ligado a ninguna arquitectura única. El

proyecto recibió el nombre "Green".