Tecnolog铆a Java
Conceptos
Fundamentales
El lenguaje Java
Simple
Independiente
de la Plataforma
El lenguaje de programaci贸n Java naci贸 en 1991 como parte de
un proyecto de investigaci贸n
destinado a desarrollar un lenguaje de
programaci贸n llamado Oak (en espa帽ol, roble) que resolver铆a
la falta de
comunicaci贸n entre numerosos dispositivos de consumo tales como las videograbadoras
y
los televisores. En concreto, un equipo de expertos en desarrollo de software
(el equipo Green) quer铆a
crear un lenguaje que permitiese a diferentes
dispositivos de consumo dotados de diferentes unidades
de procesamiento central
(CPU) compartir las mismas mejoras del software.
Este intento inicial fracas贸
despu茅s de varios acuerdos fallidos con varias compa帽铆as de dispositivos
de
consumo. El equipo Green se vio obligado a buscar otro mercado para su nuevo
lenguaje.
Afortunadamente, empezaba a
popularizarse el uso de la World Wide Web y el equipo reconoci贸 que
el lenguaje
Oak era perfecto para desarrollar componentes multimedia que mejorasen el
contenido de
las p谩ginas web. Los
primeros desarrollos del lenguaje Oak se aplicaron a estas peque帽as
aplicaciones, llamadas applets, y los programadores que usaban Internet
adoptaron lo que se
convertir铆a en el lenguaje de programaci贸n Java.
El lenguaje Java se dise帽贸 para ser:
Orientado a Objetos
Distribuido
Simple
Multihilo
Seguro
Independiente de la Plataforma
Orientado a Objetos
Java es un lenguaje de programaci贸n orientada a objetos (OO)
porque uno de los principales
objetivos del programador de aplicaciones Java es
crear objetos, fragmentos de c贸digo aut贸nomos
que puedan interaccionar con otros
objetos para resolver un problema.
La programaci贸n OO empez贸 con el lenguaje SIMULA-67 en 1967
y ha dado lugar a lenguajes tan
populares como C++, en el que se ha inspirado
ligeramente el lenguaje Java.
La programaci贸n OO se diferencia de la programaci贸n por
procedimientos en que 茅sta 煤ltima se
centra en la secuencia de pasos del c贸digo
necesarios para resolver un problema, mientras que los
lenguajes orientados a
objetos se centran en la creaci贸n e interacci贸n de los objetos.
En la figura siguiente se muestra la importancia que tiene
la secuencia de operaciones en un
programa basado en procedimientos.
En la figura siguiente se ilustra la importancia de los
objetos y sus interacciones en un programa
orientado a objetos.
Distribuido
Java es un lenguaje distribuido porque da cabida a
tecnolog铆as de redes distribuidas tales como RMI
(Remote Method Invocation), CORBA
(Common Object Request Broker Architecture) y URL
(Universal Resource Locator).
Asimismo, la capacidad de carga din谩mica de clases de Java
permite descargar fragmentos de c贸digo
a trav茅s de Internet y ejecutarlas en un
equipo inform谩tico de tipo PC.
En la figura siguiente se ilustran las propiedades
distribuidas de la tecnolog铆a Java.
El lenguaje Java es simple porque sus dise帽adores han
suprimido algunas de las construcciones de
programaci贸n m谩s complejas o
dif铆ciles de otros lenguajes populares.
Por ejemplo, Java no permite a los programadores manejar
directamente los punteros a las
direcciones de memoria, una funci贸n compleja y,
a menudo, mal utilizada de los lenguajes C y C++.
En su lugar, s贸lo les permite manejar objetos
utilizando referencias a objetos.
Adem谩s, utiliza una funci贸n denominada reciclaje de memoria
din谩mica (garbage collector) para
hacer el seguimiento de los objetos a los que
ya no se hace referencia y eliminarlos.
Otro aspecto que hace de Java un lenguaje simple es que los
tipos de datos booleanos (boolean) s贸lo
pueden tener los valores true o false,
frente a otros lenguajes donde tambi茅n se admiten los valores 1
y 0.
Multihilo
El lenguaje Java admite procesamiento multihilo
(multithread), es decir, la ejecuci贸n simult谩nea de
tareas diferentes tales
como consultar una base de datos y reproducir en la pantalla una interfaz de
usuario.
Gracias a la ejecuci贸n multihilo, los programas Java pueden
hacer un uso muy eficiente de los
recursos del sistema.
En la figura siguiente se ilustra el procesamiento multihilo
del lenguaje Java.
Seguro
Los programas Java son seguros porque el lenguaje Java, con
el entorno en el que se ejecutan los
programas con esta tecnolog铆a, aplica
medidas de seguridad para proteger el c贸digo de posibles
ataques. Estas medidas
incluyen:
Prohibir la manipulaci贸n de la memoria mediante el uso de
punteros.
Impedir que los programas distribuidos, por ejemplo los
applets, puedan hacer operaciones de lectura
y escritura en el disco duro de un
equipo.
Verificar que todos los programas Java contengan c贸digo
v谩lido.
Facilitar el uso de firmas digitales. Una empresa o una
persona puede “firmar” el c贸digo de Java de
forma que quien reciba el c贸digo
pueda verificar la legitimidad del mismo.
En la figura siguiente puede verse c贸mo la seguridad
integrada en los programas Java impide ejecutar
c贸digo no v谩lido en un equipo.
Los programas escritos en la mayor铆a de los lenguajes
normalmente necesitan numerosas
modificaciones para poder ejecutarse en
diferentes tipos de plataformas inform谩ticas (la combinaci贸n
de una CPU y un
sistema operativo). Esta dependencia de la plataforma se produce porque la
mayor铆a
de los lenguajes exigen que se escriba el c贸digo espec铆fico para la
plataforma subyacente.
Lenguajes tan populares como C y C++ obligan al programador
a compilar y vincular sus programas,
lo que da lugar a un programa ejecutable
exclusivo de una plataforma. Al rev茅s que C y C++, el
lenguaje Java es
independiente de la plataforma.
Programas dependientes de la plataforma
Un compilador es una aplicaci贸n que convierte un
programa escrito por un programador en un c贸digo
espec铆fico para la CPU
denominado c贸digo m谩quina. Estos archivos espec铆ficos de la plataforma
(archivos binarios) a menudo se combinan con otros archivos, tales como
bibliotecas de c贸digo
preelaborado, mediante un vinculador para crear un
programa dependiente de la plataforma, llamado
ejecutable, que el
usuario final puede ejecutar.
En la figura siguiente puede verse la forma en que un
compilador crea un archivo binario.
Programas dependientes de la plataforma.
La figura siguiente muestra c贸mo se vincula un archivo
binario a las bibliotecas para crear un
ejecutable dependiente de la
plataforma.
La
figura siguiente muestra c贸mo se vincula un archivo binario a las bibliotecas
para crear
un ejecutable dependiente de la plataforma.
Programas independientes de la plataforma
Un programa Java puede ejecutarse, con escasas o ninguna
modificaci贸n, en varias combinaciones de
CPU y sistemas operativos como,
por ejemplo, el sistema operativo Solaris con un procesador
SPARC®, MacOS en un
procesador Motorola y Microsoft Windows en un procesador Intel.
Posiblemente sea preciso realizar algunas modificaciones
para hacer que un programa Java sea
independiente de la plataforma. Por
ejemplo, puede ser necesario cambiar los nombres de los
directorios a fin de
que utilicen los delimitadores adecuados (barras inclinadas e invertidas) para
el
sistema operativo de base.
Programas independientes de la plataforma
Al igual que ocurre con los programas C y C++, los programas
Java tambi茅n se compilan utilizando
un compilador espec铆fico para la tecnolog铆a
Java.
No obstante, el formato resultante de un programa Java
compilado es c贸digo de byte Java
independiente de la plataforma en lugar de
c贸digo m谩quina espec铆fico de la CPU.
Una vez generado el c贸digo de byte, se interpreta (ejecuta)
a trav茅s de un int茅rprete llamado m谩quina
virtual o VM. Una m谩quina virtual es
un programa espec铆fico de la plataforma que lee el c贸digo de
byte
(independiente de la plataforma) y lo ejecuta en una plataforma concreta. Por
este motivo, el
lenguaje Java a menudo se define como un lenguaje interpretado
y los programas Java se consideran
como transportables o ejecutables en
cualquier plataforma. Entre los lenguajes interpretados se
incluye tambi茅n Perl.
Para que los programas Java sean independientes de la
plataforma, es preciso disponer de una
m谩quina virtual llamada m谩quina virtual
de Java (JVM™) en cada plataforma donde se vayan a
ejecutar. La m谩quina virtual
de Java es la encargada de interpretar el c贸digo Java, cargar las clases
correspondientes y ejecutar los programas Java.
Sin embargo, un programa Java necesita algo m谩s que una
m谩quina virtual de Java para ejecutarse.
Tambi茅n precisa una serie de
bibliotecas de clases est谩ndar espec铆ficas para la plataforma. Las
bibliotecas
de clases de Java son bibliotecas de c贸digo preescrito que puede combinarse con
el c贸digo
elaborado por el programador para crear aplicaciones s贸lidas.
La combinaci贸n del software JVM y estas bibliotecas de
clases se conocen como el entorno de
tiempo de ejecuci贸n de Java (JRE). Sun
Microsystems proporciona entornos de ejecuci贸n de Java
para numerosas
plataformas de uso com煤n.
Programas independientes de la plataforma
En la figura siguiente puede verse c贸mo el compilador de
Java crea c贸digo de byte.
Programas independientes de la plataforma
En la figura siguiente se muestra c贸mo un archivo de c贸digo
de byte de Java se ejecuta en varias
plataformas donde existe un entorno de
ejecuci贸n de Java.
Fases del
Ciclo de Vida de los Productos
El ciclo de vida de los productos (Product Life Cycle o
PLC) representa un conjunto de fases
aceptadas por la industria que un
programador deber铆a seguir al desarrollar cualquier producto nuevo.
El ciclo
se compone de siete fases. Son las siguientes:
1. An谩lisis
2. Dise帽o
3. Desarrollo
4. Comprobaci贸n
5. Implementaci贸n
6. Mantenimiento
7. Fin del ciclo de vida (EOL)
El
ciclo de vida de los productos s贸lo es una filosof铆a para sistematizar las
fases de desarrollo de
nuevos productos. Existen otras tales como: Rational
Unified Process, XP (Extreme Programming) y
TDD (Test Driven Design).
Fase
de An谩lisis
El an谩lisis es el proceso de investigar un problema que se
pretende resolver con un producto. Entre
otras tareas, consiste en:
Definir claramente el problema que se quiere resolver,
el nicho de mercado al que se dirige o el
sistema que se quiere crear. Los
l铆mites del problema tambi茅n se conocen como el 谩mbito del
proyecto.
Identificar los subcomponentes fundamentales que forman
parte de la totalidad del producto.
En la figura siguiente se ilustra la fase de an谩lisis.
Fase
de Dise帽o
El dise帽o es el proceso de aplicar las
conclusiones extra铆das en la fase de an谩lisis al proyecto del
producto. La
tarea principal en la fase de dise帽o es desarrollar planos o
especificaciones de los
productos o los componentes del sistema.
En la figura siguiente se ilustra la fase de
dise帽o.
El desarrollo consiste en utilizar los planos
creados durante la fase de dise帽o para crear los
componentes reales.
En la figura siguiente se ilustra la fase de
desarrollo.
Fase
de Comprobaci贸n
La comprobaci贸n consiste en asegurarse de
que cada uno de los componentes o la totalidad del
producto cumplan los
requisitos de la especificaci贸n creada durante la fase de dise帽o.
Normalmente la comprobaci贸n la realiza un equipo
de personas distinto de aquel que ha desarrollado
el producto. Esto
garantiza que se probar谩 de forma objetiva, eliminando la subjetividad del
programador.
En la figura siguiente se ilustra la fase de
comprobaci贸n.
Fase
de Implementaci贸n
La implementaci贸n consiste en poner el producto
a disposici贸n de los clientes.
La implementaci贸n es la acci贸n de distribuir un
producto de tal forma que los clientes puedan
adquirirlo.
A menudo, la fase de implementaci贸n se conoce en
la industria inform谩tica como primera entrega al
cliente o FCS.
En la figura siguiente se ilustra la fase de
implementaci贸n.
Fase
de Mantenimiento
El mantenimiento consiste en resolver los
problemas del producto y publicar nuevas versiones o
revisiones del mismo.
En la figura siguiente se ilustra la fase de
mantenimiento.
Fin
del Ciclo de Vida (EOL)
Aunque el ciclo de vida de los productos no
incluye una fase espec铆fica para iniciar un concepto o un
proyecto, s铆 la tiene
para finalizarlo. El fin del ciclo de vida o EOL consiste en realizar todas las
tareas necesarias para garantizar que clientes y empleados sean conscientes
de que un producto ha
dejado de venderse y recibir asistencia t茅cnica, y de
que hay un nuevo producto disponible.
El fin del ciclo de vida implica sustituir el
producto por otro reci茅n desarrollado.
En la figura siguiente se ilustra la fase final
del ciclo de vida de los productos.
¿Por
qu茅 debe seguir las fases del ciclo de vida de los productos?
El PLC es una parte importante del desarrollo de
los productos porque ayuda a garantizar que 茅stos se
crear谩n y
suministrar谩n de forma que se reduzca el tiempo de salida al mercado, la
calidad del
producto sea alta y se maximice el retorno de la inversi贸n.
Los desarrolladores que no siguen sus
directrices a menudo encuentran problemas
que cuesta corregir y que podr铆an haberse evitado.
No hay comentarios.:
Publicar un comentario