UNIVERSIDAD POLITÉCNICA AMAZÓNICA
![]() |
Ingeniería de Sistemas y Telemática
Java
DOCENTE: Marco
Aurelio Porro Chulli
INTEGRANTES: Yosmer Aguilar
Cabrera
Erlin Darwin Herrera Cieza
CICLO: V
Bagua Grande setiembre del 2016
DEFINICION
Sun Microsystems desarrolló, en 1991, el lenguaje
de programación orientado a objetos que se conoce como Java. El objetivo
era utilizarlo en un set-top box, un
tipo de dispositivo que se encarga de la recepción y la descodificación de la
señal televisiva. El primer nombre del lenguaje fue Oak,
luego se conoció como Green y finamente adoptó la denominación de Java.
![]() |
La
intención de Sun era crear un lenguaje con una estructura y una sintaxis
similar a C y C++, aunque con
un modelo de objetos más simple y eliminando las herramientas de bajo nivel.
Java es un lenguaje de programación orientado a objetos que se
popularizó a partir del lanzamiento de su primera versión comercial de amplia
difusión, la JDK 1.0 en 1996. Actualmente es uno de los lenguajes más
usados para la programación en todo el mundo.
Java es un lenguaje útil para casi todo tipo de
problemas. Podemos citar como funcionalidades de Java varias:
1.
Aplicaciones “cliente”: son las que se ejecutan en un solo ordenador
(por ejemplo el portátil de tu casa) sin necesidad de conectarse a otra
máquina. Pueden servirte por ejemplo para realizar cálculos o gestionar datos.
2.
Aplicaciones “cliente/servidor”: son programas que necesitan conectarse
a otra máquina (por ejemplo un servidor de datos) para pedirle algún servicio
de forma más o menos continua, como podría ser el uso de una base de datos.
Pueden servir por ejemplo para el teletrabajo: trabajar desde casa pero
conectados a un ordenador de una empresa.
3. Podemos
hablar también de “aplicaciones web”, que son programas Java que se
ejecutan en un servidor de páginas web. Estas aplicaciones reciben
“solicitudes” desde un ordenador y envían al navegador (Internet Explorer,
Firefox, Safari, etc.) que actúa como su cliente páginas de respuesta en HTML.
Los
pilares en los que se sustenta Java son cinco: la programación orientada a
objetos, la posibilidad de ejecutar un mismo programa en diversos sistemas
operativos, la inclusión por defecto de soporte para trabajo en red, la opción
de ejecutar el código en sistemas remotos
de manera segura y la facilidad de uso.
Lo
habitual es que las aplicaciones Java se encuentren compiladas en un bytecode (un fichero binario que tiene un
programa ejecutable), aunque también pueden estar compiladas en código máquina nativo.
Sun
controla las especificaciones y el desarrollo del lenguaje, los compiladores,
las máquinas virtuales y las bibliotecas de clases a través del Java Community Process.
En los últimos años, la empresa (que fue adquirida por Oracle)
ha liberado gran parte de las tecnologías Java bajo la licencia GNU GPL.
La aplicación de Java es muy
amplia. El lenguaje se utiliza en una gran variedad de dispositivos móviles,
como teléfonos y pequeños electrodomésticos. Dentro del ámbito de Internet,
Java permite desarrollar pequeñas aplicaciones (conocidas con el nombre de applets)
que se incrustan en el código HTML de una página, para su directa ejecución
desde un navegador; cabe mencionar que es necesario contar con el plug-in
adecuado para su funcionamiento, pero la instalación es liviana y sencilla.
Razones
para escoger Java por sobre otros lenguajes
![]() |
*
Es orientado a objetos: si bien existen detractores de esta modalidad, la programación orientada a objetos
resulta muy conveniente para la mayoría de las aplicaciones, y es esencial para
los videojuegos. Entre las ventajas más evidentes que ofrece se encuentra un
gran control sobre el código y una mejor organización, dado que basta con
escribir una vez los métodos y las propiedades de un objeto, independientemente
de la cantidad de veces que se utilicen.
*
Es muy flexible:
Java es un lenguaje especialmente preparado para la reutilización del código;
permite a sus usuarios tomar un programa que hayan desarrollado tiempo atrás y
actualizarlo con mucha facilidad, sea que necesiten agregar funciones o
adaptarlo a un nuevo entorno.
*
Funciona en cualquier plataforma: a diferencia de los
programas que requieren de versiones específicas para cada sistema operativo
(tales como Windows o Mac), las aplicaciones desarrolladas en Java funcionan en
cualquier entorno, dado que no es el sistema quien las ejecuta,
sino la máquina virtual (conocida como Java Virtual Machine o JVM).
*
Su uso no acarrea inversiones económicas: programar en Java es absolutamente gratis;
no es necesario adquirir ninguna licencia, sino simplemente
descargar el kit de desarrollo (Java
Development Kit o JDK)
y dar riendas sueltas a la imaginación.
*
Es de fuente abierta:
Java ofrece el código de casi todas sus librerías nativas para que los
desarrolladores puedan conocerlas y estudiarlas en profundidad, o bien ampliar
su funcionalidad, beneficiándose a ellos mismos y a los demás.
*
Es un lenguaje expandible: continuando con el punto anterior, cada programador
tiene la libertad de revisar y mejorar el código nativo de Java, y su trabajo puede convertirse en
la solución a los problemas de muchas personas en todo el mundo. Infinidad de
desarrolladores han aprovechado esta virtud del lenguaje y continúan
haciéndolo.
PRINCIPALES
CARACTERÍSTICAS DE JAVA.
Sun describe al lenguaje Java de la siguiente manera:
- Simple
- Orientado
a Objetos
- Tipado
estáticamente
- Distribuido
- Interpretado
- Robusto
- Seguro
- de
Arquitectura Neutral
- Multihilo
- con Recolector
de basura (Garbage Collector)
- Portable
- de Alto
Rendimiento: sobre todo con la aparición de hardware especializado y mejor
software
- Dinámico
Sun admite que lo dicho anteriormente son un montón de halagos por su
parte, pero el hecho es que todas esas características pueden servir para
describir el lenguaje. Todas ellas son importantes, sin embargo cabe destacar
tres, que son las que han proporcionado tanto interés por el lenguaje: la
portabilidad, el hecho de que sea de arquitectura neutral y su simplicidad.
Java ofrece toda la funcionalidad de los lenguajes potentes, pero sin las
características menos usadas y más confusas de éstos.
1.
Simple
Basado en el lenguaje C++ pero donde se eliminan muchas de las características OOP que se utilizan esporádicamente y que creaban frecuentes problemas a los programadores. Esta eliminación de causas de error y problemas de mantenimiento facilita y reduce el coste del desarrollo de software.
Basado en el lenguaje C++ pero donde se eliminan muchas de las características OOP que se utilizan esporádicamente y que creaban frecuentes problemas a los programadores. Esta eliminación de causas de error y problemas de mantenimiento facilita y reduce el coste del desarrollo de software.
o Java no da soporte a struct, union y
pointer
o Java no ofrece typedef ni #define
o No permite la sobrecarga de
operadores.
o No ofrece herencia múltiple.
o Maneja los comandos en línea de
diferente manera que C++
o Java tienen una clase String, que
permite un mejor manejo que los arrays de terminación nula del C y C++.
o Java tiene un sistema automático de
asignación y liberación de memoria (recolector de basura) que mejora mucho los
sistemas del C++
2.
Orientado
al objeto
Java da buen soporte a las técnicas de desarrollo OOP y en resumen a la reutilización de componentes de software.
Java da buen soporte a las técnicas de desarrollo OOP y en resumen a la reutilización de componentes de software.
3.
Distribuido
Java se ha diseñado para trabajar en ambiente de redes y contienen una gran biblioteca de clases para la utilización del protocolo TCP/IP, incluyendo HTTP y FTP. El código Java se puede manipular a través de recursos URL con la misma facilidad que C y C++ utilizan recursos locales (archivos).
Java se ha diseñado para trabajar en ambiente de redes y contienen una gran biblioteca de clases para la utilización del protocolo TCP/IP, incluyendo HTTP y FTP. El código Java se puede manipular a través de recursos URL con la misma facilidad que C y C++ utilizan recursos locales (archivos).
4.
Interpretado
El compilador Java traduce cada fichero fuente de clases a código de bytes (Bytecode), que puede ser interpretado por todas las máquinas que den soporte a un visualizador de que funcione con Java. Este Bytecode no es específico de una máquina determinada, por lo que no se compila y enlaza como en el ciclo clásico, sino que se interpreta.
El compilador Java traduce cada fichero fuente de clases a código de bytes (Bytecode), que puede ser interpretado por todas las máquinas que den soporte a un visualizador de que funcione con Java. Este Bytecode no es específico de una máquina determinada, por lo que no se compila y enlaza como en el ciclo clásico, sino que se interpreta.
5.
Sólido
El código Java no se quiebra fácilmente ante errores de programación. Así el relaje que existe en la declaración y manejo de tipos en C y C++ se torna en restricciones en Java, donde no es posible la conversión forzada (cast) de enteros en punteros y no ofrece soporte a los punteros que permitan saltarse reglas de manejo de tipos. Así en Java no es posible escribir en áreas arbitrarias de memoria ni realizar operaciones que corrompan el código. En resumen se eliminan muchas de las posibilidades de "trucos" que ofrecía el C y C++.
El código Java no se quiebra fácilmente ante errores de programación. Así el relaje que existe en la declaración y manejo de tipos en C y C++ se torna en restricciones en Java, donde no es posible la conversión forzada (cast) de enteros en punteros y no ofrece soporte a los punteros que permitan saltarse reglas de manejo de tipos. Así en Java no es posible escribir en áreas arbitrarias de memoria ni realizar operaciones que corrompan el código. En resumen se eliminan muchas de las posibilidades de "trucos" que ofrecía el C y C++.
6.
Seguro
Como Java suele funcionar en ambiente de redes el tema de seguridad debe interesar en sobremanera. Las mismas características antes descritas que evitan la corrupción de código evitan su manipulación. Actualmente se está trabajando en encriptar el código.
Como Java suele funcionar en ambiente de redes el tema de seguridad debe interesar en sobremanera. Las mismas características antes descritas que evitan la corrupción de código evitan su manipulación. Actualmente se está trabajando en encriptar el código.
7.
Arquitectura
neutral
El compilador crea códigos de byte (Bytecode) que se envía al visualizador solicitado y se interpreta en la máquina que posee un intérprete de Java o dispone de un visualizador que funciona con Java.
El compilador crea códigos de byte (Bytecode) que se envía al visualizador solicitado y se interpreta en la máquina que posee un intérprete de Java o dispone de un visualizador que funciona con Java.
8.
Portable
Al ser de arquitectura neutral es altamente portable, pero esta característica puede verse de otra manera: Los tipos estándares (int, float...) están igualmente implementados en todas las máquinas por lo que las operaciones aritméticas funcionaran igual en todas las máquinas.
Al ser de arquitectura neutral es altamente portable, pero esta característica puede verse de otra manera: Los tipos estándares (int, float...) están igualmente implementados en todas las máquinas por lo que las operaciones aritméticas funcionaran igual en todas las máquinas.
9.
Alto
desempeño
al ser código interpretado, la ejecución no es tan rápida como el código compilado para una plataforma particular. El compilador Java suele ofrecer la posibilidad de compilar Bytecode en código máquina de determinadas plataformas, y según Sun este código resultar de una eficacia similar a compilaciones de C y C++.
al ser código interpretado, la ejecución no es tan rápida como el código compilado para una plataforma particular. El compilador Java suele ofrecer la posibilidad de compilar Bytecode en código máquina de determinadas plataformas, y según Sun este código resultar de una eficacia similar a compilaciones de C y C++.
10. Multihilos
Java puede aplicarse a la realización de aplicaciones en las que ocurra más de una cosa a la vez. Java, apoyándose en un sistema de gestión de eventos basado en el paradigma de condición y monitores C.A.R. permite apoyar la conducta en tiempo real e interactiva en programas
Java puede aplicarse a la realización de aplicaciones en las que ocurra más de una cosa a la vez. Java, apoyándose en un sistema de gestión de eventos basado en el paradigma de condición y monitores C.A.R. permite apoyar la conducta en tiempo real e interactiva en programas
11. Dinámico
al contrario que C++ que exige se compile de nuevo la aplicación al cambiar una clase madre Java utiliza un sistema de interfaces que permite aligerar esta dependencia. Como resultado, los programas Java pueden permitir nuevos métodos y variables en un objeto de biblioteca sin afectar a los objetos dependientes.
al contrario que C++ que exige se compile de nuevo la aplicación al cambiar una clase madre Java utiliza un sistema de interfaces que permite aligerar esta dependencia. Como resultado, los programas Java pueden permitir nuevos métodos y variables en un objeto de biblioteca sin afectar a los objetos dependientes.
Diferencias con C++
Java
es mejor que el C++, por lo que no tiene:
1.
En
Java no es posible crear variables globales. Solo las variables estáticas y
publicas de algunas clases pueden considerarse como tales, pero esto
generalmente, y como en el caso de las variables globales en C++ son síntoma de
un mal diseño.
2.
Java
no dispone de sentencia goto lo cual permite crear un código más robusto y
seguro así como más optimizado. Para cubrir esta falta Java proporciona un
tratamiento muy optimizado de excepciones, poderoso y bien definido.
3.
Los
punteros son una característica poderosa y peligrosa del C++, en si evitan que
ninguna variable sea privada de verdad, ya que es fácil acceder a la mis a
través de punteros, los cuales son fuente inacabable de problemas y
malfuncionamiento. Java no dispone de tratamiento de punteros. Los vectores o
arrays lo son de modo cierto, lo cual evita sobrepasar el mismo o salirse de
sus limites.
4.
El
manejo de memoria en C se realiza de forma peligrosa a través de punteros
obtenidos con la función malloc(), y que se libera explícitamente con free(),
esto puede causar errores si el programador no controla perfectamente los pasos
en que estas operaciones se realizan. Otro error es el olvido frecuente de
liberar memoria, lo cual termina consumiendo los recursos del sistema. Java no
dispone de punteros y todos lo objetos se crean con el operador new, el cual
asigna espacio en el montículo de memoria a cada objeto. Lo que se obtiene con
new es un descriptor del objeto (no una dirección) la dirección real es
manejada por el sistema el cual la puede mover o recolocar según necesidad,
pero el programador no ha de preocuparse por ello. Lo importante es que el
objeto tiene memoria asignada mientras le interese al programa, quedando esta
memoria disponible en cuanto este interés cese. No se hará falta llamar a free
o delete ya que el recolector
de basura realizara esta
labor. Este recolector o reciclador de basura se ejecutara cuando el sistema
este libre o una asignación no encuentre lugar disponible.
5.
C
y C++ disponen de tipos de
datos frágiles cuyos limites
y características dependen de la implementación y maquina del compilador. Java
implementa limites y tamaños sensatos y validos para todo tipo de máquinas y
entornos (independientes del Hardware) por lo que es totalmente reproducibles
en cualquier plataforma.
6.
En
C es posible la realización de casting o conversión de tipos en tiempo de
ejecución. En C++ esta operación es peligrosa ya que los objetos son
referencias a zonas de memoria y no es posible tener información sobre sí la
conversión en posible. En Java los descriptores de los objetos contienen
información completa acerca de la clase a la que pertenece el objeto, por lo
que pueden realizarse comprobaciones en tiempo de ejecución sobre la
compatibilidad de tipos y emitir la excepción correspondiente si no es
aplicable la conversión.
7.
En
Java no se dispone de archivos de cabecera con los prototipos de las clases.
Esto, en principio es una desventaja, hasta que se comprueba que esta habilidad
del C++ ha llevado a entornos de compilación prácticamente inmanejables, ya que
cada compilación puede tratar estos archivos de formas un tanto complejas. Java
no dispone de esta habilidad de archivos de cabecera, el tipo y la visibilidad
de la clase se compila en el propio archivo de la clase, siendo tarea del intérprete
de Java realizar el acceso.
8.
Java
no tiene struct ni union, ambos sistemas de encasulamiento y polimorfismo un tanto
crípticos e inseguros del C++, unificando todo en un solo concepto de clases.
9.
La
programación de entornos reales de C y C++ implica un buen conocimiento del
manejo del preprocesador y sus trucos, lo cual no es una manera limpia de
controlar lo que se compila. Java no dispone de este sistema, pero tienen
medios (como la declaración final para constantes) que permiten igual potencia.
Java
Genera:
Un
programador en Java puede crear:
1.
applets
programas elementales incluidos en páginas HTML a través de la etiqueta app y que se despliega en el visualizador tras cargarse la página.
programas elementales incluidos en páginas HTML a través de la etiqueta app y que se despliega en el visualizador tras cargarse la página.
2.
Aplicaciones
programas escritos en Java y que se ejecutan de forma independiente de los visualizadores. Esto se realiza llamando a los intérpretes Java con el programa como opción.
programas escritos en Java y que se ejecutan de forma independiente de los visualizadores. Esto se realiza llamando a los intérpretes Java con el programa como opción.
3.
Manipuladores
de protocolo
programas que se cargan en el visualizador e interpretan un protocolo (como pueda ser HTTP).
programas que se cargan en el visualizador e interpretan un protocolo (como pueda ser HTTP).
4.
Manipuladores
de contenido
un programa cargado en el visualizador y que interpreta el contenido de determinado tipo de ficheros.
un programa cargado en el visualizador y que interpreta el contenido de determinado tipo de ficheros.
5.
Métodos
nativos
métodos que se declaran en una cierta clase Java pero que se implementan en C.
métodos que se declaran en una cierta clase Java pero que se implementan en C.
Java en
Operación
Cuando
un usuario solicita un applet construido con java ocurre:
1.
El
usuario solicita un documento HTML al servidor de información.
2.
El
servidor envia el documento al visualizador del cliente, este documento tienen
una etiqueta app que identifica la referencia a un applet
3.
El
bytecode (optienido por compilación de código java) del applet se transfiere al
cliente.
4.
El
visualizador del cliente, que funciona con Java (tiene una VM) interpreta el
Bytecode y despliega el applet
5.
Como
código del applet contiene toda la información necesaria, el usuario tiene una
interacción total con el applet sin relacionarse de nuevo con el servidor.
Software para manipulación de java
1.
tJava
Pequeño visualizador de WWW que permite un perfecto manejo de applets. Se distribuye con el propio Java y se invoca como hotjava
Pequeño visualizador de WWW que permite un perfecto manejo de applets. Se distribuye con el propio Java y se invoca como hotjava
2.
Interprete
de Java
Se invoca con el comando java y debe de disponerse del propio de la plataforma existente. Ocupa alrrededor de 40 Kb (175 con todas las bibliotecas).
Se invoca con el comando java y debe de disponerse del propio de la plataforma existente. Ocupa alrrededor de 40 Kb (175 con todas las bibliotecas).
3.
Compilador
de Java
se invoca con javac y produce la conversión de código Java en Bytecode
se invoca con javac y produce la conversión de código Java en Bytecode
4.
Generador
de archivos fuente y cabecera C
Genera archivos de ambos tipos para elaborar métodos. Se invoca como javah o javah_g.
Genera archivos de ambos tipos para elaborar métodos. Se invoca como javah o javah_g.
5.
Desamblador
de Java
Se invoca con javap e imprime información sobre un archivo de clase.
Se invoca con javap e imprime información sobre un archivo de clase.
6.
Generador
de documentos
Imprime documentación sobre una clase Java. Estas páginas, visualizables como HTML se encuentran en cantidad de sitios con información sobre aplicaciones Java. Se invoca como javadoc.
Imprime documentación sobre una clase Java. Estas páginas, visualizables como HTML se encuentran en cantidad de sitios con información sobre aplicaciones Java. Se invoca como javadoc.
7.
Herramienta
de perfilado
Se invoca con javaprof y formatea la opción –prof del compilador.
Se invoca con javaprof y formatea la opción –prof del compilador.
8.
Documentación
La distribución del compilador incluye gran cantidad de documentación en formato HTML.
La distribución del compilador incluye gran cantidad de documentación en formato HTML.
9.
Interfaz
de Programación
Son un conjunto de clases que se distribuyen con el código fuente del Java y que los programadores pueden utilizar. Esto se agrupa en tres paquetes que contienen completa documentación y que incluyen:
Son un conjunto de clases que se distribuyen con el código fuente del Java y que los programadores pueden utilizar. Esto se agrupa en tres paquetes que contienen completa documentación y que incluyen:
1.
package
java.lang:
características del lenguaje como: objetos, hilos, excepciones, caracteres,
enteros y cadenas.
2.
package
java.util:
características como: la cache, vinculador, pila y vector.
3.
package
java.io:
características de entrada/salida como: flujos de datos de salida, de impresión
y de entrada de texto.
Características Generales del Lenguaje
1.
Java
es sensible a mayúsculas y minúsculas. Por convención los nombres de las clases
comienzan con mayúscula y los métodos y objetos con minúscula.
2.
Los
comentarios en Java pueden tener varios estilos:
o /* comentario */
o // comentario
o /** comentario extendido
hasta que se encuentre */
hasta que se encuentre */
3.
Java
ignora los comentarios y espacios en blanco. La disposición del código es mas
conveniencia de visualización que exigencia lexicografica.
4.
Las
sangrías y métodos de presentación son herencia del C y C++.
5.
Java
utiliza ; como separador de posiciones y {} como agrupador de posiciones.
6.
Los
nombre de los identificadores siguen la siguientes reglas:
1. Un identificador no puede ser una
palabra clave
2. Un nombre debe empezar con una letra,
subrayado _ o signo $
3. Después de la primera letra se puede
utilizar cualquier carácter, a excepción de aquellos reservados para uso del
lenguaje (., + ...)
7.
La
convención de nombres ha de ser coherente y aportar significancia al contexto,
así:
0. Emplear sustantivos para los nombres
1. Emplear verbos para las acciones y
métodos.
2. Letras mayúsculas iniciales para
nombres de clases.
3. Minúsculas para nombres de métodos.
4. Mayúsculas para distinguir entre
palabras en nombres compuestos.
8.
Lo
anterior es practica en la OOP, pero el programador podra generar las
convenciones oportunas, pero con significado y valor añadido.
Una aplicación Esencial.
/**
mi primera aplicación Java
@autor jmrr
@version 1.1.0
*/
Class AplicacionEsencial {
Public static void main (String args[]) {
System.out.println("Hola Mundo");
}
}
mi primera aplicación Java
@autor jmrr
@version 1.1.0
*/
Class AplicacionEsencial {
Public static void main (String args[]) {
System.out.println("Hola Mundo");
}
}
Lo anterior representa el codigo de un
progrma Java que se compilara y ejecutara de la siguiente forma:
1.
el
código anterior se guarda en un fichero texto cuya extensión es .java
(AplicacionEsencial.java)
2.
este
se compila llamando a javac. El resultado de esta compilación es un fichero con
el nombre de la clase contenida y la extensión .class
(AplicacionEsencial.class). El nombre del fichero fuente (.java podra ser
cualquiera pero dado que el resultado de la compilación adquiere el nombre de
la clase contenida en el mismo, es buena practica el llamar al fichero fuente
con el mismo nombre.
3.
El
fichero obtenido puede ser llamado como argumento del interprete para su
ejecución:
$ javac
AplicacionEsencial.java
$ java AplicacionEsencial.class
Hola Mundo
$
$ java AplicacionEsencial.class
Hola Mundo
$
Las
partes del programa anterior son:
1.
Comentarios: desde "/*" hasta que aparece
"*/", son ignorados por el compilador
2.
La
palabra clave class que seguida del nombre de la clase a
definir y de la llave de apertura "{" da comienzo a la definición de
la misma.
3.
Cuerpo de la clase que contendrá métodos,
operaciones y datos de la clase. En nuestro caso solo contienen un método, el
que todas las aplicaciones han de tener: main
4.
La
línea: "Public static void main (String
args[]) {" da comienzo al metodo main, las palabras clave que
anteceden al nombre indican formas expecificas para este y su explicación se
hara a posteriori.
5.
Despues
de main se declara los parametros de este metodo (String args[]) que en este caso conta de un array de cadenas
decaracteres cuyo nombre es args. Esta aplicación no hace uso de estos
parametros, pero todos los metodos main han de declarar tal lista, ya que
representa la teorica linea de comandos que podria acompañar a la llamada a la
clase:
6.
$java
AplicacionEsencial alpha beta
7.
Entre
las llaves de apertura y cierre se encuentra en cuerpo del método o lista de
sentencias que le implementan, en nuestro caso una única llamada al método
println.
Un
Applet Esencial.
El
applet es la clave para conectar el codigo Jacçva con un visualizador. Son
programas a los que hace referencia una página HTML por medio de la etiqueta
app, programa que es interpretado por el visualizador compaible Java.
La
principal diferencia entre el applet y una aplicación es que aquel no se puede
ejecutar independientemente de un visualizador. Y la razón para ello es que
carece de un método main.
/**
mi primer applet Java
@autor jmrr
@version 1.1.0
*/
import browser.Applet;
import awt.Graphics;
Class AppletEsencial extends Applet {
Public void init () {
Resize(600,300);
}
Public void paint(Graphics context) {
Context.drawString("Hola Mundo", 50, 100);
}
}
mi primer applet Java
@autor jmrr
@version 1.1.0
*/
import browser.Applet;
import awt.Graphics;
Class AppletEsencial extends Applet {
Public void init () {
Resize(600,300);
}
Public void paint(Graphics context) {
Context.drawString("Hola Mundo", 50, 100);
}
}
Como
en el caso de aplicación se define una clase, anteriormente a lo cual se
importa código necesario que queda disponible para el applet. Estos dos imports
(browser.Applet y awt.Graphics)son parte de la interfaz de programación de
aplicaciones (API) que contienen paquetes de clases de utilidad en la escritura
de aplicaciones y applets. La documentación completa de estos paquetes se puede
encontrar en el http://java.sun.com.
Sigue
la declaración del applet (Class AppletEsencial extends Applet) que identifica
este como subclase de la clase Applet, con lo cual los objetos de AppletEsencial
heredan muchas de sus características y funcionalidad.
El
cuerpo del applet contiene dos metodos: init que
inicia el tamaño del applet y paint que
genera la presentación visual del applet. El método paint incluye un parámetro
requerido (context) que es de tipo Graphics y se utiliza en el cuerpo para ser
el objeto del dibujo en las coordenadas dadas por la función drawString.
Este
código se coloca en el fichero AppletEsencial.java y se compila, pero el
resultado (AppletEsencial.class) no se podrá ejecutar con el intérprete.
$ javac
AppletEsencial.java
$ java AppletEsencial.class
In class AppletEsencial: void main(String argv[]) is not defined.
$
$ java AppletEsencial.class
In class AppletEsencial: void main(String argv[]) is not defined.
$
El
intérprete busca un método main para iniciar la ejecución y este no existe.
Para
visualizar el applet se hace necesario crear una página HTML que contenga una
etiqueta app que haga referencia al applet creado (Applet Esencial.class) y
determine la localización del mismo (URL) relativa o absoluta.
<HTML>
<!—-Proposito: presentar el primer applet -->
<!—-Autor: jmrr -->
<HEAD>
<TITLE>Interfase para AppletEsencial</TITLE>
</HEAD>
<BODY>
<P>Prototipo de applet:<APP Class="AppletEsencial">
</BODY>
</HTML>
<!—-Proposito: presentar el primer applet -->
<!—-Autor: jmrr -->
<HEAD>
<TITLE>Interfase para AppletEsencial</TITLE>
</HEAD>
<BODY>
<P>Prototipo de applet:<APP Class="AppletEsencial">
</BODY>
</HTML>
Al
abrir esta página con el visualizador, el applet será llamado y se ejecutara apareciendo
la cadena "hola mundo" en la página.
Por
defecto las clases son buscadas en un directorio llamado classes que
colgara del directorio donde se encuentra la página HTML.
Generalidades del Lenguaje.
·
Primeras
aplicaciones con Java
·
Clases:
Herencia
·
Paquetes
e interfaces
·
Gestión
de Cadenas
·
Gestión
de excepciones
·
Hilos
y sincronización
·
Utilidades
·
Clases
de Entrada y Salida
·
Applets
·
Ventana
Abstracta
·
Introducción
al Tratamiento de Imágenes
TIPOS DE DATOS
En
lenguajes de programación un tipo de dato es un atributo de una parte de
los datos que indica al ordenador (y/o el programador) algo sobre la clase de
datos sobre los que se va a procesar. Esto incluye imponer restricciones en los
datos, como qué valores pueden tomar y qué operaciones se pueden realizar.
Un
tipo de dato puede ser también visto como una limitación impuesta en la
interpretación de los datos en un sistema de tipificación, describiendo la
representación, interpretación y la estructura de los valores u objetos
almacenados en la memoria del ordenador. El sistema de tipificación usa
información de los tipos de datos para comprobar la verificación de los
programas que acceden o manipulan los datos.
TIPOS DE DATOS EN JAVA
Un dato siempre lleva asociado un tipo de dato, que determina el conjunto
de valores que puede tomar.
En Java toda la información que maneja un programa está representada por
dos tipos principales de datos:
a) Datos
de tipo básico o primitivo.
Los tipos de datos básicos o primitivos no son objetos y se pueden
utilizar directamente en un programa sin necesidad de crear objetos de este
tipo. La biblioteca Java proporciona clases asociadas a estos tipos que
proporcionan métodos que facilitan su manejo.
Los tipos de datos primitivos que soporta Java son:
|
Tipo de dato
|
Representación
|
Tamaño (Bytes)
|
Rango de Valores
|
Valor por defecto
|
Clase Asociada
|
|
byte
|
Numérico
Entero con signo
|
1
|
-128
a 127
|
0
|
Byte
|
|
short
|
Numérico
Entero con signo
|
2
|
-32768
a 32767
|
0
|
Short
|
|
int
|
Numérico
Entero con signo
|
4
|
-2147483648
a 2147483647
|
0
|
Integer
|
|
long
|
Numérico
Entero con signo
|
8
|
-9223372036854775808
a 9223372036854775807
|
0
|
Long
|
|
float
|
Numérico
en Coma flotante de precisión simple Norma IEEE 754
|
4
|
± 3.4x1038 a ± 3.4x1038
|
0.0
|
Float
|
|
double
|
Numérico
en Coma flotante de precisión doble Norma IEEE 754
|
8
|
± 1.8x10308 a ± 1.8x10308
|
0.0
|
Double
|
|
char
|
Carácter
Unicode
|
2
|
\u0000 a
\uFFFF
|
\u0000
|
Character
|
|
boolean
|
Dato lógico
|
-
|
true ó
false
|
false
|
Boolean
|
|
void
|
-
|
-
|
-
|
-
|
Void
|
b) Referencias a
objetos.
Las
variables de tipo primitivo nos permiten almacenar valores primitivos como
números o caracteres. Las variables de tipo referencia NO almacenan valores,
sino que nos permiten acceder a métodos y atributos de un objeto. Además algo
importante a tener en cuenta, y que explicaremos en posteriores entradas es que
el tipo de referencia debe ser compatible al tipo de objeto al que se refiere.
OPERADORES.
Un
operador lleva a cabo operaciones sobre uno (operador unario), dos (operador
binario) o tres (operador ternario) datos u operandos de tipo primitvo
devolviendo un valor determinado también de un tipo primitivo. El tipo de valor
devuelto tras la evaluación depende del operador y del tipo de los operandos.
Por ejemplo, los operadores aritméticos trabajan con operandos numéricos,
llevan a cabo operaciones aritméticas básicas y devuelven el valor numérico
correspondiente. Los operadores se pueden clasificar en distintos grupos según
se muestra en los siguientes apartados.
Operador asignación
El operador asignación, =, es un operador
binario que asigna el valor del término de la derecha al operando de la
izquierda. El operando de la izquierda suele ser el identificador de una
variable. El término de la derecha es, en general, una expresión de un tipo de
dato compatible; en particular puede ser una constante u otra variable. Como
caso particular, y a diferencia de los demás operadores, este operador no se
evalúa devolviendo un determinado valor.
|
Tabla del Operador de asignación
|
|||
|
Operador
|
Descripción
|
Ejemplo
|
Resultado de ejemplo
|
|
=
|
Operador de asignación
|
N=4
|
4 vale 4
|
Operadores aritméticos
El
lenguaje de programación Java tiene varios operadores aritméticos para los
datos numéricos enteros y reales.
|
Tabla de operadores
aritméticos
|
|||
|
Operador
|
Descripción
|
Ejemplo
|
Resultado de ejemplo
|
|
-
|
operador unario de
cambio de signo
|
-4
|
-4
|
|
+
|
Suma
|
2.5 + 7.1
|
9.5
|
|
-
|
Resta
|
235.6 - 103.5
|
132.1
|
|
*
|
Producto
|
1.2 * 1.1
|
1.32
|
|
/
|
División(tanto entera
como real)
|
0.050 / 0.2
|
0.25
|
|
%
|
Resto de la división
entera
|
20 % 7
|
6
|
Operadores aritméticos incrementales
Los
operadores aritméticos incrementales son operadores unarios (un único
operando). El operando puede ser numérico o de tipo char y el resultado es del
mismo tipo que el operando. Estos operadores pueden emplearse de dos formas
dependiendo de su posición con respecto al operando
|
Tabla de operadores
Aritméticos incrementales
|
|||
|
Operador
|
Descripción
|
Ejemplo
|
Resultado de ejemplo
|
|
++
|
Incremento
i++ primero se utiliza la variable y luego
se incrementa su valor
++i primero se incrementa el valor
de la variable y luego se utiliza
|
4++
a=5; b=a++;
a=5; b=++a;
|
5
a vale 6 y b vale 5
a vale 6 y b vale 6
|
|
--
|
Decremento
|
4--
|
3
|
Operadores aritméticos combinados
Combinan
un operador aritmético con el operador asignación. Como en el caso de los
operadores aritméticos pueden tener operando numéricos enteros o reales y el
tipo específico de resultado numérico dependerá del tipo de éstos
|
Tabla
de Operadores aritméticos combinados
|
|||
|
Operador
|
Descripción
|
Ejemplo
|
Resultado de ejemplo
|
|
+=
|
Suma combinada
|
a+=b
|
a=a+b
|
|
-=
|
Resta combinada
|
a-=b
|
a=a-b
|
|
*=
|
Producto combinado
|
a*=b
|
a=a*b
|
|
/=
|
División combinada
|
a/=b
|
a=a/b
|
|
%=
|
Resto combinado
|
a%=b
|
a=a%b
|
Operadores de relación
Realizan comparaciones entre datos compatibles
de tipos primitivos (numéricos, carácter y booleanos) teniendo siempre un
resultado booleano. Los operandos booleanos sólo pueden emplear los operadores
de igualdad y desigualdad
|
Operador
|
Descripción
|
Ejemplo
|
Resultado de ejemplo
|
|
==
|
Igual que
|
7 == 38
|
false
|
|
!=
|
Distinto que
|
'a' != 'k'
|
true
|
|
<
|
Menor Que
|
'G' < 'B'
|
false
|
|
>
|
Mayor que
|
'b' > 'a'
|
true
|
|
<=
|
Menor e igual que
|
7.5 <= 7.38
|
false
|
|
>=
|
Menor e igual que
|
38 >= 7
|
true
|
Operadores lógicos o booleanos
Realizan
operaciones sobre datos booleanos y tienen como resultado un valor booleano. En
la Tabla 4.6 se resumen los diferentes operadores de esta categoría.
|
Tabla
de Operadores lógicos o booleanos
|
|||
|
Operador
|
Descripción
|
Ejemplo
|
Resultado del ejemplo
|
|
!
|
Negación - NOT (unario)
|
!false
!(5==5)
|
true
false
|
|
|
|
Suma lógica – OR (binario)
|
true | false
(5==5)|(5<4)
|
true
true
|
|
^
|
Suma lógica exclusiva – XOR
(binario)
|
true ^ false (5==5)|(5<4)
|
true
true
|
|
&
|
Producto lógico – AND (binario)
|
true & false
(5==5)&(5<4)
|
False
false
|
|
||
|
Suma lógica con cortocircuito: si el
primer operando es true entonces el segundo se salta y el resultado es true
|
true || false
(5==5)||(5<4)
|
True
true
|
|
&&
|
Producto lógico con cortocircuito:
si el primer operando es false entonces el segundo se salta y el resultado es
false
|
false && true
(5==5)&&(5<4)
|
False
false
|
El operador condicional
Este
operador ternario tomado de C/C++ permite devolver valores en función de una
expresión lógica. Sintaxis:
expresionLogica ? expresion_1 : expresion_2
Si el
resultado de evaluar la expresión lógica es verdadero, devuelve el valor de la
primera expresión, y en caso contrario, devuelve el valor de la segunda
expresión.
|
Tabla del operador condicional
|
|||
|
Operador
|
Descripción
|
Ejemplo
|
Resultado del ejemplo
|
|
?:
|
operador condicional
|
a = 4;
b = a == 4 ? a+5 : 6-a;
b = a > 4 ? a*7 : a+8;
|
b vale 9
b vale 12
|
Operadores de bit
Tienen operandos de tipo entero (o char) y un
resultado de tipo entero. Realizan operaciones con dígitos (ceros y unos) de la
representación binaria de los operandos. Exceptuando al operador negación, los
demás operadores son binarios.
|
Tabla de Operadores de Bit
|
|||
|
Operador
|
Descripción
|
Ejemplo
|
Resultado del ejemplo
|
|
~
|
Negación ó complemento binario
(unario)
|
~12
|
-13
|
|
|
|
Suma lógica binaria – OR (binario)
|
12|10
|
8
|
|
^
|
Suma lógica exclusiva – XOR
(binario)
|
12^10
|
6
|
|
&
|
Producto lógico binario – AND
(binario)
|
12&10
|
14
|
|
<<
|
Desplaza a la izquierda los bits del
1º operando tantas veces como indica el 2º operando (por la derecha siempre
entra un cero)
|
7<<2
-7<<2
|
28
-28
|
|
>>
|
Desplaza
a la derecha los bits del 1º operando tantas veces como indica el 2º operando
(por la izquierda entra siempre el mismo bit más significativo anterior)
|
7>>2
-7>>2
|
1
-2
|
|
>>>
|
Desplaza
a la derecha los bits del 1º operando tantas veces como indica el 2º operando
– sin signo (por la izquierda entra siempre un cero).
|
7>>>2
-7>>>2
|
1
1073741822
|
Operador concatenación de cadenas
El
operador concatenación, +, es un
operador binario que devuelve una cadena resultado de concatenar las dos
cadenas que actúan como operandos. Si sólo uno de los operandos es de tipo
cadena, el otro operando se convierte implícitamente en tipo cadena.
|
Tabla de Operador
concatenación de cadenas
|
|||
|
Operador
|
Descripción
|
Ejemplo
|
Resultado del ejemplo
|
|
+
|
Operador concatenación
|
“Hola” + “Juan”
|
“HolaJuan”
|
Separadores
Existen
algunos caracteres que tienen un significado especial en el lenguaje Java.
|
Tabla de
separadores
|
|
|
Operador
|
Descripción
|
|
()
|
Permiten modificar la
prioridad de una expresión, contener expresiones para el control de flujo y
realizar conversiones de tipo. Por otro lado pueden contener la lista de
parámetros o argumentos, tanto en la definición de un método como en la
llamada al mismo.
|
|
{}
|
Permiten definir
bloques de código y ámbitos y contener los valores iniciales de las variables
array
|
|
[]
|
Permiten declarar
variables de tipo array (vectores o matrices) y referenciar sus elementos
|
|
;
|
Permite separar
sentencias
|
|
,
|
Permite separar
identificadores consecutivos en la declaración de variables y en las listas
de parámetros. También se emplea para encadenar sentencias dentro de un bucle
for
|
|
.
|
Permite separar el
nombre de un atributo o método de su instancia de referencia. También separa
el identificador de un paquete de los de los subpaquetes y clases
|


