Está en la página 1de 7

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

FACULTAD DE INGENIERÍA
PROYECTO CURRICULAR DE INGENIERÍA ELÉCTRICA
PROGRAMACION ORIENTADA A OBJETOS

GUIA NO. 3
GENERALIDADES DE JAVA

OBJETIVOS

- Identificar los elementos de java


- Describir el rol de la JVM

QUÉ ES JAVA

Es una plataforma y un lenguaje de programación OO

HISTORIA

Java es un lenguaje desarrollado por Sun Microsystem en 1991 con la


intención de competir con Microsoft en el mercado de la red. Sin embargo, su
historia se remonta a la creación de una filial de Sun (FirstPerson) enfocada al
desarrollo de aplicaciones para electrodomésticos, microondas, lavaplatos,
televisores, vídeos, equipos de música, entre otros. Esta filial desapareció tras
un par de éxitos de laboratorio y ningún desarrollo comercial.

Sin embargo, para el desarrollo en el laboratorio, uno de los trabajadores de


FirstPerson, James Gosling, desarrolló un lenguaje derivado de C++ que
intentaba eliminar las deficiencias del mismo. Llamó a ese lenguaje Oak.
Cuando Sun abandonó el proyecto de FirstPerson, se encontró con este
lenguaje y, tras varias modificaciones (entre ellas la del nombre), decidió
lanzarlo al mercado en verano de 1995.

El éxito de Java reside en varias de sus características. Java es un lenguaje


sencillo, o todo lo sencillo que puede ser un lenguaje orientado a objetos,
eliminando la mayor parte de los problemas de C++, que aportó su granito (o
tonelada) de arena a los problemas de C. Es un lenguaje independiente de
plataforma, por lo que un programa hecho en Java se ejecutará igual en un PC
con Windows que en una estación de trabajo basada en Unix. También hay
que destacar su seguridad, desarrollar programas que accedan ilegalmente a
la memoria o realizar caballos de troya es una tarea propia de titanes.

Cabe mencionar también su capacidad multihilo, su robustez o lo integrado que


tiene el protocolo TCP/IP, lo que lo hace un lenguaje ideal para Internet. Pero
es su sencillez, portabilidad y seguridad lo que le han hecho un lenguaje de
tanta importancia.

MsC(c) Ing. María Luisa Barreto Sandoval 1


UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE INGENIERÍA
PROYECTO CURRICULAR DE INGENIERÍA ELÉCTRICA
PROGRAMACION ORIENTADA A OBJETOS

CARACTERÍSTICAS DE JAVA

Simple
Es un lenguaje sencillo de aprender. Su sintaxis es la de C++ “simplificada”.
Los creadores de Java partieron de la sintaxis de C++ y trataron de eliminar de
este todo lo que resultase complicado o fuente de errores en este lenguaje.

Dinámico
El lenguaje java y su sistema de ejecución en tiempo real son dinámicos en la
fase de enlazado

Orientado a Objetos
Posiblemente sea el lenguaje más orientado a objetos de todos los existentes;
en Java todo, a excepción de los tipos fundamentales de variables (int, char,
long...) es un objeto.

Distribuido
Java es muy orientado al trabajo en red. Soporta protocolos TCP/IP, UDP,
HTTP y FTP, el uso de estos protocolos es sencillo comparado con otros
lenguajes que lo soportan. Periten abrir sockets y establecer y aceptar
conexiones con servidores o clientes remotos.

Robusto

• Diseñado para crear software altamente fiable. Para ello proporciona


numerosas comprobaciones en compilación y en tiempo de ejecución.
• Tiene incorporado capacidad para prevenir corrupción de la memoria
• Automáticamente administra el proceso de localización de memoria y
comprueba el limite de los arreglos
• Esta prohibido la aritmética de punteros y restringe a los objetos llamar
espacios en memoria.

El compilador Java detecta muchos errores que otros compiladores solo


detectarían en tiempo de ejecución o incluso nunca. (ej: if(a=b) then ... el
compilador Java no nos dejaría compilar este código.

Seguro
Sobre todo un tipo de desarrollo: los Applet. Estos son programas diseñados
para ser ejecutados en una página web. Java garantiza que ningún Applet
puede escribir o leer de nuestro disco o mandar información del usuario que
accede a la página a través de la red (como, por ejemplo, la dirección de correo
electrónico). En general no permite realizar cualquier acción que pudiera dañar
la máquina o violar la intimidad del que visita la página web.

MsC(c) Ing. María Luisa Barreto Sandoval 2


UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE INGENIERÍA
PROYECTO CURRICULAR DE INGENIERÍA ELÉCTRICA
PROGRAMACION ORIENTADA A OBJETOS

Interpretado y plataforma independiente


• Los programas de java son interpretados a un conjunto de instrucciones
de la maquina nativa (lenguaje de máquina) en tiempo de ejecución.
• Interpretado y compilado a la vez. Es compilado en la medida que su
código fuente se transforma en una especie de código máquina.
• Java ejecuta bajo el control de una JVM.
• Los programas de Java pueden correr en cualquier sistema operativo
que provea una JVM (Windows, MAC, Linux, Unix)
• El compilador de java genera bytecodes: un formato intermedio
indiferente a la arquitectura diseñada para transportar el código
eficientemente a múltiples plataformas

Portable
En Java no hay aspectos dependientes de la implementación, todas las
implementaciones de Java siguen los mismos estándares en cuanto a tamaño
y almacenamiento de los datos.
Esto no ocurre así en C++, por ejemplo. En éste un entero, por ejemplo, puede
tener un tamaño de 16, 32 o más bits, siendo lo única limitación que el entero
sea mayor que un short y menor que un long int. Así mismo C++ bajo UNIX
almacena los datos en formato little endian,

La portabilidad se consigue haciendo de Java un lenguaje medio interpretado


medio compilado. ¿Cómo se come esto? Pues se coge el código fuente, se
compila a un lenguaje intermedio cercano al lenguaje máquina pero
independiente del ordenador y el sistema operativo en que se ejecuta (llamado
en el mundo Java bytecodes) y, finalmente, se interpreta ese lenguaje
intermedio por medio de un programa denominado máquina virtual de Java.

Este esquema lo han seguido otros lenguajes, como por ejemplo Visual Basic.
Sin embargo, nunca se había empleado como punto de partida a un lenguaje
multiplataforma ni se había hecho de manera tan eficiente. Cuando Java
apareció en el mercado se hablaba de que era entre 10 y 30 veces más lento
que C++. Ahora, con los compiladores JIT (Just in Time) se habla de tiempos
entre 2 y 5 veces más lentos. Con la potencia de las máquinas actuales, esa
lentitud es un precio que se puede pagar sin problemas contemplando las
ventajas de un lenguaje portable.

Arquitectura Neutral
El código generado por el compilador Java es independiente de la arquitectura:
podría ejecutarse en un entorno UNIX, Mac o Windows. El motivo de esto es
que el que realmente ejecuta el código generado por el compilador no es el
procesador del ordenador directamente, sino que este se ejecuta mediante una
máquina virtual. Esto permite que los Applets de una web pueda ejecutarlos
cualquier máquina que se conecte a ella independientemente de que sistema

MsC(c) Ing. María Luisa Barreto Sandoval 3


UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE INGENIERÍA
PROYECTO CURRICULAR DE INGENIERÍA ELÉCTRICA
PROGRAMACION ORIENTADA A OBJETOS

operativo emplee (siempre y cuando el ordenador en cuestión tenga instalada


una máquina virtual de Java).

Rendimiento medio
Actualmente la velocidad de procesado del código Java es semejante a la de
C++, hay ciertos pruebas estándares de comparación (benchmarks) en las que
Java gana a C++ y viceversa.

Esto es así gracias al uso de compiladores just in time, compiladores que


traduce los bytecodes de Java en código para una determinada CPU, que no
precisa de la máquina virtual para ser ejecutado, y guardan el resultado de
dicha conversión, volviéndolo a llamar en caso de volverlo a necesitar, con lo
que se evita la sobrecarga de trabajo asociada a la interpretación del bytecode.
No obstante por norma general el programa Java consume bastante más
memoria que el programa C++, ya que no sólo ha de cargar en memoria los
recursos necesario para la ejecución del programa, sino que además debe
simular un sistema operativo y hardware virtuales (la máquina virtual). Por otro
lado la programación gráfica empleando las librerías Swing es más lenta que el
uso de componentes nativos en las interfaces de usuario.
En general en Java se ha sacrificado el rendimiento para facilitar la
programación y sobre todo para conseguir la característica de neutralidad
arquitectural, si bien es cierto que los avances en las máquinas virtuales
remedian cada vez más estas decisiones de diseño.

Multithread
Soporta de modo nativo los threads, sin necesidad del uso de de librerías
específicas (como es el caso de C++). Esto le permite además que cada
Thread de una aplicación java pueda correr en una CPU distinta, si la
aplicación se ejecuta en una máquina que posee varias CPU. Las aplicaciones
de C++ no son capaces de distribuir, de modo transparente para el
programador, la carga entre varias CPU.

Orientación a objetos

Dado que Java es un lenguaje orientado a objetos, es imprescindible entender


qué es esto y en qué afecta a nuestros programas. Desde el principio, la
carrera por crear lenguajes de programación ha sido una carrera para intentar
realizar abstracciones sobre la máquina. Al principio no eran grandes
abstracciones y el concepto de lenguajes imperativos es prueba de ello. Exigen
pensar en términos del ordenador y no en términos del problema a solucionar.
Esto provoca que los programas sean difíciles de crear y mantener, al no tener
una relación obvia con el problema que representan No abstraen lo suficiente.

Muchos paradigmas de programación intentaron resolver este problema


alterando la visión del mundo y adaptándola al lenguaje. Estas aproximaciones

MsC(c) Ing. María Luisa Barreto Sandoval 4


UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE INGENIERÍA
PROYECTO CURRICULAR DE INGENIERÍA ELÉCTRICA
PROGRAMACION ORIENTADA A OBJETOS

modelaban el mundo como un conjunto de objetos o de listas. Funcionaban


bien para algunos problemas pero no para otros. Los lenguajes orientados a
objetos, más generales, permiten realizar soluciones que, leídas, describen el
problema. Permiten escribir soluciones pensando en el problema y no en el
ordenador que debe solucionarlo en último extremo. Se basan en cinco
características:

• Todo es un objeto. Cada elemento del problema debe ser modelizado


como un objeto.
• Un programa es un conjunto de objetos diciendose entre sí que
deben hacer por medio de mensajes. Cuando necesitas que un objeto
haga algo le mandas un mensajes. Más concretamente, ejecutas un
método de dicho objeto.
• Cada objeto tiene su propia memoria, que llena con otros objetos.
Cada objeto puede contener otros objetos. De este modo se puede
incrementar la complejidad del programa, pero detrás de dicha
complejidad sigue habiendo simples objetos.
• Todo objeto tiene un tipo. En jerga POO, cada objeto es una instancia
(un caso particular) de una clase (el tipo general). Lo que distingue a
una clase de otra es la respuesta a la pregunta, ¿qué mensajes puedes
recibir?
• Todos los objetos de un determinado tipo pueden recibir los
mismos mensajes. Por ejemplo, dado que un objeto de tipo Gato es
también un objeto de tipo Animal, se puede hacer código pensando en
los mensajes que se mandan a un animal y aplicarlo a todos los objetos
de ese tipo, sin pensar si son también gatos o no.

PROCESO DE COMPILACION DE JAVA

Java es un lenguaje de programación de alto nivel con el que se pueden


escribir tanto programas convencionales como para internet.

Java es independiente de la plataforma, tanto en código fuente como en


binario, es decir que el código producido por el compilador java puede
transportarse a cualquier plataforma (Intel, Sparc, Motorola) que tenga
instalada una máquina virtual y ejecutarse

Java contiene dos elementos:


• Un compilador
• Un interprete

El compilador produce un código de bytes que se almacena en un fichero para


ser ejecutado por el interprete Java denominado máquina virtual

MsC(c) Ing. María Luisa Barreto Sandoval 5


UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE INGENIERÍA
PROYECTO CURRICULAR DE INGENIERÍA ELÉCTRICA
PROGRAMACION ORIENTADA A OBJETOS

Los códigos de bytes de Java son un conjunto de instrucciones


correspondientes a un lenguaje máquina que no es específico de ningún
procesador, sino de la máquina virtual de Java

La interpretación proporciona independencia de la máquina


Mayor velocidad en la ejecución del programa

Programa compilador Código de Máquina


escrito en Bytes Virtual de
Java Java

Los códigos de bytes de Java son un conjunto de instrucciones


correspondientes a un lenguaje máquina que no es específico de ningún
procesador, sino de la máquina virtual de Java.

KIT’s DE DESARROLLO DE JAVA

• Java ME (MicroEdition): Versión que se dirige específicamente al espacio


de consumo. La plataforma de Java Micro Edition (Java ME) provee un
ambiente robusto y flexible para la ejecución de aplicaciones en móviles y
otros dispositivos embebidos como: teléfonos celulares, PDAs,TV e
impresoras.
• Java SE (Estándar Edition): Completa el ambiente de desarrollo para
internet. La tecnología Java SE, ha revolucionado la informática con la
introducción de la estabilidad, seguridad, y características completas en el

MsC(c) Ing. María Luisa Barreto Sandoval 6


UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE INGENIERÍA
PROYECTO CURRICULAR DE INGENIERÍA ELÉCTRICA
PROGRAMACION ORIENTADA A OBJETOS

ambiente de desarrollo y despliegue que es diseñado desde cero para la


web. Se ofrece compatibilidad entre plataformas, la entrega de la red
segura, y la tarjeta inteligente a la escalabilidad supercomputador. Su
software proporciona a los desarrolladores una plataforma para el desarrollo
rápido de aplicaciones.
• Java EE (Enterprise Edition): Cada cosa en Java SE, mas un servidor de
aplicaciones y herramientas de creación de prototipos.

API (Java Doc)

• Es el estándar de la industria para documentar las clases de java


• Es una utilidad de Sun Microsystem para la generación de documentación
de APIs en formato HTML a partir de código fuente Java
• La mayoría de los IDEs los genera automáticamente
• Para generarse APIs con Javadocs han usarse etiquetas con HTML o
ciertas palabras reservadas precedidas del caracter @.
• Estas etiquetas se escriben al principio de cada clase, miembro o método
dependiendo de que objeto se desee escribir mediante un comentario
iniciado con /** y terminado **/

MsC(c) Ing. María Luisa Barreto Sandoval 7

También podría gustarte