Está en la página 1de 24

ORÍGENES DEL LENGUAJE JAVA

 Este lenguaje fue concebido por James Gosling, Patrick Naughton, Chris Warth,
Ed Frank y Mike Sheridan para Sun Microsystems, en 1991.

 Inicialmente “Oak” pero después en 1995, se renombró como Java.

 Se crea pesando en cubrir la necesidad de tener un lenguaje independiente


de la plataforma y que se pudiera usarse para crear software incorporable
en dispositivos electrónicos, como televisores, hornos microondas, neveras,
etc.

 En la búsqueda de una solución, se trabajó en un lenguaje portátil de


plataforma cruzada que generase códigos que se pudiesen ejecutar en
distintos CPU para diversos ambientes.

 Es importante resaltar que aunque la motivación inicial de Java no era la


Internet, el mismo está fuertemente ligado a la red, ya que mientras se
desarrollaban los detalles de Java, apareció La World Wide Web y el equipo
que lo desarrollaba se dio cuenta que este nuevo entorno los mismos
requerimientos que ellos perseguían cubrir con Java:programas de código
pequeño, confiable,seguro e independiente de la plataforma.
EL LENGUAJE DE PROGRAMACIÓN JAVA

 Java es en esencia un lenguaje de programación orientado a


objetos. También se define como una plataforma en la que las
aplicaciones pueden ser desarrolladas y ejecutadas.

 La mayoría de las características básicas de Java provienen de C y


C++.

 Java provee un ambiente de programación poderoso y lógicamente


consistente, que contiene los mejores elementos del pasado y le
agrega nuevas características necesarias para ambientes en línea.
Uno de los aspectos centrales de la filosofía del diseño en C, C++
y Java, es que el programador ejerce el control; excepto por las
restricciones que impone el ambiente Internet.

 El diseño de Java es tal que, es multiplataforma en código fuente y


la forma binaria compilada. Esto es posible, ya que Java compila
su código fuente en un bytecode intermedio e independiente de la
plataforma. Este bytecode es interpretado usando un intérprete
específico de la plataforma, es decir la Máquina Virtual de Java
(Java Virtual Machine – JVM) en tiempo de ejecución del
programa.
EL LENGUAJE DE PROGRAMACIÓN
JAVA
 El lenguaje de programación Java permite
desarrollar básicamente dos tipos de programas:
aplicaciones y applets.

Una aplicación es un programa autónomo que


puede ejecutarse en una computadora, bajo el
sistema operativo de esa computadora.

Un applet es un pequeño programa Java que


puede se embebido en una página HTML.

Aunque, se pueden desarrollar programas de


consola, esta no es su orientación.
CARACTERÍSTICAS DEL LENGUAJE

 Simple: Java es bastante fácil de aprender, dado que tiene la sintaxis de


C/C++. Es muy fácil que un programador experimentado la domine, ya
que solo se necesita una comprensión apropiada de los conceptos de
programación orientada a objetos. Además de su similitud con C/C++,
Java tiene otra característica que lo hace simple, y es que Java hace un
esfuerzo por no tener características sorprendentes. En Java hay un
número reducido de formas claras para abordar una tarea dada.

 Orientado a Objetos: Java no se creó para ser compatible en código


fuente con otros lenguajes. Esto otorgó a los desarrolladores de Java la
libertad de diseñar un lenguaje partiendo de cero. El resultado de esto fue
una aproximación limpia, útil y pragmática a los objetos, en un lenguaje
puramente orientado a objetos. El modelo de objetos Java es simple y fácil
de ampliar, mientras los tipos simples permanecen como “no objetos” de
alto rendimiento.

 Portable: Java, usa un conjunto optimizado de instrucciones, diseñado


para ser ejecutado por una Máquina Virtual, que es emulada por el
sistema en tiempo de ejecución de Java. Este conjunto de instrucciones se
conoce como BYTECODE, que representa la salida de un compilador de
Java. Esto significa que el sistema de tiempo de ejecución de Java es un
Intérprete de BYTECODE. Debido a esto, sólo el sistema de tiempo de
ejecución de Java tiene que ser implementado para cada plataforma, y una
vez que este paquete existe para un sistema, cualquier programa Java
puede correr en él
CARACTERÍSTICAS DEL LENGUAJE

 Interpretado y de Alto Rendimiento: Java fue diseñado para ser un lenguaje


interpretado, a fin de solucionar los aspectos relacionados con la descarga a través de la
Internet. Ejecutar programas de Java en diferentes entornos es una tarea simple debido
a que estos programas (BYTECODE) son Interpretados por una Máquina Virtual Java. A
pesar de que el BYTECODE de Java es interpretado, está diseñado de tal forma que fácil
de traducir a código máquina nativo para alto rendimiento.

 Seguro: Una de las principales características de Java, es que la ejecución de un


programa Java está limitada al entorno de ejecución Java, por lo que no se proporciona
acceso a partes restringidas del computador. Esto lo garantiza la característica de ser un
lenguaje interpretado, ya que el sistema de tiempo de ejecución puede contener un
programa y evitar que produzca efectos colaterales fuera del sistema, obedeciendo al
hecho que la Máquina Virtual controla la ejecución de cada programa Java.

 Robusto: Siendo un lenguaje estrictamente tipificado, Java verifica el código del


programador en tiempo de compilación, y además en tiempo de ejecución. Java da una
alta prioridad a la capacidad de generar programas confiables, a fin de enfrentar las
extraordinarias demandas provenientes del entorno multiplataforma de Internet.

 Multihilo: Java fue diseñado para cumplir el requisito del mundo real de crear
programas en red interactivos. Para conseguir esto, Java proporciona la programación
multihilo, que permite escribir programas que realicen varias cosas a la vez. El intérprete
Java permite la sincronización de multiprocesos, que permite la construcción de
programas interactivos, que se ejecuten eficientemente.
CARACTERÍSTICAS DEL
LENGUAJE
 Distribuido: Java fue diseñado para el entorno distribuido de
Internet, por lo que trabaja con el protocolo TCP/IP. Java incorpora
capacidades para el envío de mensajes que hacía posible que los
objetos en computadoras separadas ejecutaran procedimientos en
forma remota. Esta característica le proporciona una abstracción
única para la programación Cliente-Servidor.

 - Dinámico: En Java el código puede ser enlazado dinámicamente


en forma segura. Esto es posible por las grandes cantidades de data
en tiempo de ejecución que procesan los programas de Java, que es
usada para la verificación y resolución de accesos a objetos en
tiempo de ejecución. Esta característica es importante para la
robustez del entorno de applets, y hace posible actualizar
dinámicamente pequeños bits del BYTECODE en un sistema en plena
ejecución.
JAVA vs C/C++

 Comparado con C++, Java es considerado un lenguaje puramente orientado a objetos,


debido a quelos programas Java requieren necesariamente el uso de objetos y no como
en C++, en donde se pueden escribir programas híbridos. En Java no existen funciones
ni variables globales; todas las interfaces con data de objetos deben ser definidas en
las bibliotecas de clases.

 Java es robusto considerando sus técnicas de administración de memoria, ya que


administra la asignación y liberación de memoria de forma automática. A diferencia de
C/C++ en donde el programador debe asignar y liberar manualmente la memoria
dinámica.
 Los desarrolladores de Java añadieron la característica de la recolección automática de
basura. En C/C++ una fuente complejidad en muchas aplicaciones es la administración
de almacenamiento, que significa asignación y liberación de memoria. La recolección de
basura que efectivamente significa liberación periódica de memoria que no está siendo
referenciada, asegura que Java no solo facilita la programación, sino ayuda a reducir
drásticamente los errores en tiempo de ejecución.

 Java omite muchas características de difícil comprensión de C++. Estas características


omitidas consisten principalmente en la sobrecarga de operadores, la herencia múltiple
y las conversiones automáticas extensivas.
 La mayor diferencia entre Java y C/C++, es la característica de Java de ser
Multiplataforma. En C/C++ es imposible ejecutar el mismo archivo objeto en diversas
plataformas. El diseño de Java es tal que es multiplataforma tanto el código fuente
como el código binario.
LA PLATAFORMA JAVA

 Una plataforma se define como el entorno de hardware y/o


software sobre el cual se ejecutan los programas. La
plataforma Java es una plataforma de sólo software, que se
ejecuta sobre cualquier otra plataforma basada en
hardware. Java posee tres grandes plataformas:
J2SE (Java 2 Platform Standard Edition),
J2EE (Java 2 Platform Enterprise Edition)
J2ME (Java 2 Platform Micro Edition).

 La Java 2 Platform Standard Edition – J2SE


(Plataforma Java 2 Edición Estándar) es un conjunto de
especificaciones que describen el ambiente de desarrollo de
aplicaciones Java.
LA PLATAFORMA JAVA

 El J2SDK (Equipo
Estándar de Desarrollo -
SDK), es un ambiente
de desarrollo para
construir aplicaciones,
applets, y componentes
usando el lenguaje de
programación Java.

 El Java 2 SDK, incluye


un conjunto de
herramientas y
utilidades de desarrollo
así como también el
ambiente de ejecución
Java.
HERRAMIENTAS Y UTILIDADES DE
DESARROLLO
 Es un conjunto de herramientas para desarrollar
y probar programas escritos en el lenguaje Java y
ejecutarlos en la plataforma Java. Están
diseñadas para ser usadas desde la línea de
comandos.
 Generalmente se agrupan en las siguientes
categorías:
Básicas: herramientas fundamentales del SDK
que se usan para crear y construir aplicaciones.
Algunas de las herramientas básicas que
usaremos en este curso se describen a
continuación:
HERRAMIENTAS Y UTILIDADES DE
DESARROLLO

- RMI: herramientas que te permiten crear aplicaciones que interactúan entre redes, tales como
la Web.
- Internacionalización: herramientas que te permiten crear aplicaciones que puedan ser
adaptadas a cualquier idioma y región. El estudio de estas herramientas esta fuera del alcance de
este curso.
- Seguridad: herramientas que te permiten establecer políticas de seguridad en tu sistema
operativo y crear aplicaciones que puedan trabajar dentro del alcance de estas políticas y permitir,
de forma segura, el acceso a tu aplicación desde sitios remotos.
- IDL y RMI-IIOP: herramientas utilizadas para crear aplicaciones que usen el estándar
OMG IDL y CORBA/IIOP.
- Java Plug-in: utilidades para usar en conjunto con el Java Plug-in.
EL AMBIENTE EN TIEMPO DE EJECUCIÓN DE JAVA – JRE

 El Java 2 Runtime Environment (Ambiente de Ejecución de Java - JRE), permite ejecutar aplicaciones
escritas en Java. Contiene la Máquina Virtual de Java, las clases comprendidas en la API de Java y las
tecnologías de despliegue.

- La Máquina Virtual de Java - JVM: La Java Virtual Machine es una computadora abstracta implementada
sobre una plataforma particular que interpreta el código binario o BYTECODE y lo ejecuta en esa
plataforma, limitando el acceso a otras partes del sistema.

La JVM (JVM) se compone de las siguientes partes:


Java HotSpot Client VM: diseñado para ejecutar las aplicaciones en un ambiente de Cliente,
reduciendo el tiempo de carga de una aplicación y la paginación de memoria.
Java HotSpot Server VM: diseñado para obtener las máximas velocidades de ejecución en un
ambiente de Servidor.

- La Interfaz de Programación de Aplicaciones – API: La Interfaz de Programación de Aplicaciones Java


(API), es una conjunto de partes de software (clases e interfaces) organizada, coherente y consistente
en paquetes. Estas clases, suelen agruparse de acuerdo al servicio que prestan:

Núcleo (proveen el conjunto de paquetes esenciales para crear aplicaciones Java, tales como:
fundamentos del lenguaje, utilidades del lenguaje, procesos de E/S, comunicación de redes,
preferencias, colecciones, JNI, seguridad, XML, cifrado y componentes).

Integración (proveen el conjunto de paquetes que te permiten crear aplicaciones que puedan invocar
métodos/procedimientos remotos, comunicarse con bases de datos y crear servicios de nombres y
directorios).

Interfaces de Usuario: proveen el conjunto de paquetes para la creación de aplicaciones con amigables
interfaces graficas de usuario (AWT y Swing).

- Tecnologías de despliegue: están representadas por la “Java Web Start” y el “Java


Plugin”, que son tecnologías que permiten ejecutar aplicaciones Java desde Internet.
PARADIGMA POO
Existe un acuerdo acerca de qué características contempla la
"orientación a objetos", las características siguientes son las más
importantes:
Abstracción: denota las características esenciales de un objeto, donde
se capturan sus comportamientos. Cada objeto en el sistema sirve
como modelo de un "agente" abstracto que puede realizar trabajo,
informar y cambiar su estado, y "comunicarse" con otros objetos en
el sistema sin revelar cómo se implementan estas características.

La abstracción es clave en el proceso de análisis y diseño orientado a


objetos, ya que mediante ella podemos llegar a armar un conjunto de
clases que permitan modelar la realidad o el problema que se quiere
atacar.
PARADIGMA POO
Encapsulamiento: Significa reunir a todos los elementos que pueden
considerarse pertenecientes a una misma entidad, al mismo nivel de
abstracción. Esto permite aumentar la cohesión de los componentes
del sistema. Algunos autores confunden este concepto con el
principio de ocultación, principalmente porque se suelen emplear
conjuntamente.

Modularidad: Se denomina Modularidad a la propiedad que permite


subdividir una aplicación en partes más pequeñas (llamadas
módulos), cada una de las cuales debe ser tan independiente como
sea posible de la aplicación en sí y de las restantes partes. Estos
módulos que se puedan compilar por separado, pero que tienen
conexiones con otros módulos. Al igual que la encapsulación, los
lenguajes soportan la Modularidad de diversas formas.
PARADIGMA POO
Principio de ocultación: Cada objeto está aislado del exterior, es
un módulo natural, y cada tipo de objeto expone una interfaz a
otros objetos que especifica cómo pueden interactuar con los
objetos de la clase. El aislamiento protege a las propiedades de un
objeto contra su modificación por quien no tenga derecho a acceder
a ellas, solamente los propios métodos internos del objeto pueden
acceder a su estado. Esto asegura que otros objetos no pueden
cambiar el estado interno de un objeto de maneras inesperadas,
eliminando efectos secundarios e interacciones inesperadas. Algunos
lenguajes relajan esto, permitiendo un acceso directo a los datos
internos del objeto de una manera controlada y limitando el grado
de abstracción. La aplicación entera se reduce a un agregado o
rompecabezas de objetos.
PARADIGMA POO
Polimorfismo: comportamientos diferentes, asociados a objetos
distintos, pueden compartir el mismo nombre, al llamarlos por ese
nombre se utilizará el comportamiento correspondiente al objeto que
se esté usando. O dicho de otro modo, las referencias y las
colecciones de objetos pueden contener objetos de diferentes tipos, y
la invocación de un comportamiento en una referencia producirá el
comportamiento correcto para el tipo real del objeto referenciado.
Cuando esto ocurre en "tiempo de ejecución", esta última
característica se llama asignación tardía o asignación dinámica.
Algunos lenguajes proporcionan medios más estáticos (en "tiempo de
compilación") de polimorfismo, tales como las plantillas y la
sobrecarga de operadores de C++.
PARADIGMA POO
Herencia: las clases no están aisladas, sino que se relacionan entre
sí, formando una jerarquía de clasificación. Los objetos heredan las
propiedades y el comportamiento de todas las clases a las que
pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados
como tipos especializados de objetos preexistentes. Estos pueden
compartir (y extender) su comportamiento sin tener que volver a
implementarlo. Esto suele hacerse habitualmente agrupando los
objetos en clases y estas en árboles o enrejados que reflejan un
comportamiento común. Cuando un objeto hereda de más de una
clase se dice que hay herencia múltiple.
Recolección de basura: la recolección de basura o garbage
collector es la técnica por la cual el entorno de objetos se encarga de
destruir automáticamente, y por tanto desvincular la memoria
asociada, los objetos que hayan quedado sin ninguna referencia a
ellos. Esto significa que el programador no debe preocuparse por la
asignación o liberación de memoria, ya que el entorno la asignará al
crear un nuevo objeto y la liberará cuando nadie lo esté usando.
ELEMENTOS DE LA POO
 CLASES

La clase es núcleo de Java. Es la construcción lógica sobre la que se construye


el lenguaje Java, ya que define la forma y la naturaleza de un objeto.

La clase constituye la base de la Programación Orientada a Objetos en Java.


Cualquier concepto que desee implementar en un programa Java debe ser
encapsulado en una clase. Dentro de una clase están definidos los datos y los
códigos que actúan sobre esos datos. Todas las actividades del programa
Java ocurren dentro de una clase, razón por la cual se dice que Java es un
lenguaje 100% orientado a objetos.

Una clase en Java se define como: “una plantilla que tiene las definiciones
de variables o estados y métodos o comportamientos que es común a todos los
objetos de un tipo en particular”.

Java usa especificaciones de clase para construir objetos, que son


instancias de una clase.

Es importante tener claro que una clase es una abstracción lógica, por lo
que hasta que un objeto de esa clase sea creado, no existirá una
representación física de esa clase en memoria.
DEFINICIÓN DE LAS CLASES

 Cuando se define una clase, se manifiesta su naturaleza y forma exacta.


Esto se hace especificandolos miembros de la clase, es decir las variables y
los métodos que operan en ella.
 Una clase se define a través de la palabra clave class. A continuación se
muestra la forma general de la definición de una clase:

[acceso] [modif] class NombreClase [extends SuperClase] [implements


Interfaces]
{
// Variables miembro
[acceso] [modif] tipo nombreVariable [= valorInicial];
// Métodos miembro
[acceso] [modif] tipo nombreMetodo([parametros]) [throws
excepciones]
{
// Cuerpo del método
};
};
OBJETOS
 La creación de un objeto es básicamente la creación de una
instancia de una clase. Un objeto de una clase se crea mediante el
operador new, como se muestra a continuación:
Coordenadas plano = new Coordenadas ();
 En realidad, en la sentencia dada se realizan tres acciones: la
declaración del objeto, la instanciación del objeto y la inicialización
del mismo. La declaración del objeto no necesita realizarse junto
con la creación del objeto. Pueden hacerse en pasos separados
como se muestra a continuación:
Coordenadas plano;
plano = new Coordenadas();
Aquí la primera de las dos líneas es la declaración del objeto, en
donde Coordenadas representa a la clase y plano es la variable de
referencia a los objetos. El operador new en Java es llamado
 operador de instanciación, el cual se usa para crear nuevos
objetos. La inicialización del objeto se hace usando
Coordenadas(), que es la llamada a su constructor usado para
inicializar el objeto.
Ejemplo de la declaración de una clase
public class Ejemplo
{
// Variables Miembro
private int x;
float Y;
static char sc;
static double sd;
// Métodos Miembro
void setX(int valor)
{
x=valor;
}
public float getY()
{
return Y;
}
}
1.3. CLASES EJECUTABLES
Como ya se ha mencionado en Java todo es una clase, por lo tanto la aplicación
(programa) también es una clase. Dicha clase tiene la característica particular
de poseer un método de clase denominado main. Este método es semejante
a la función main() de un programa C++, razón por la cual, va a ser el
primer método en ejecutarse al correr un programa Java.

public class NombreClase [extends SuperClase] [implements interfaz]


{
// Variables miembro
...
// Métodos miembro
...
// Método main
public static void main(String [ ] args) {
// Cuerpo del método
}

}

También podría gustarte