libro de java
TRANSCRIPT
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
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.
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.
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.
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.
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
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.
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".