Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La tecnologa Java se usa para desarrollar aplicaciones para un amplio alcance de entornos,
desde dispositivos del consumidor hasta sistemas empresariales heterogneos.
Simple
Basado en el lenguaje C++ pero donde se eliminan muchas de las caractersticas OOP
que se utilizan espordicamente y que creaban frecuentes problemas a los
programadores. Esta eliminacin de causas de error y problemas de mantenimiento
facilita y reduce el coste del desarrollo de software.
Java tienen una clase String, que permite un mejor manejo que los
arrays de terminacin nula del C y C++.
2.
Orientado al objeto
Java da buen soporte a las tcnicas de desarrollo OOP y en resumen a la reutilizacin
de componentes de software.
3.
Distribuido
Java se ha diseado para trabajar en ambiente de redes y contienen una gran biblioteca
de clases para la utilizacin del protocolo TCP/IP, incluyendo HTTP y FTP. El cdigo
Java se puede manipular a travs 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 cdigo de bytes (Bytecode),
que puede ser interpretado por todas las mquinas que den soporte a un visualizador de
que funcione con Java. Este Bytecode no es especifico de una mquina determinada,
por lo que no se compila y enlaza como en el ciclo clsico, sino que se interpreta.
5.
Slido
El cdigo Java no se quiebra fcilmente ante errores de programacin. As el relaje que
existe en la declaracin y manejo de tipos en C y C++ se torna en restricciones en Java,
donde no es posible la conversin 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 cdigo. En resumen se eliminan muchas de las posibilidades de "trucos"
que ofreca el C y C++.
6.
Seguro
Como Java suele funcionar en ambiente de redes el tema de seguridad debe interesar
en sobremanera. Las mismas caractersticas antes descritas que evitan la corrupcin de
cdigo evitan su manipulacin. Actualmente se esta trabajando en encriptar el cdigo.
7.
Arquitectura neutral
El compilador crea cdigos de byte (Bytecode) que se enva al visualizador solicitado
y se interpreta en la mquina que posee un interprete de Java o dispone de un
visualizador que funciona con Java.
8.
Portable
Al ser de arquitectura neutral es altamente portable, pero esta caracterstica puede
verse de otra manera: Los tipos estndares (int, float ...) estn igualmente
implementados en todas las mquinas por lo que las operaciones aritmticas
funcionaran igual en todas las mquinas.
9.
Alto desempeo
al ser cdigo interpretado, la ejecucin no es tan rpida como el cdigo compilado para
una plataforma particular. El compilador Java suele ofrecer la posibilidad de compilar
Bytecode en cdigo mquina de determinadas plataformas, y segn Sun este cdigo
resultar de una eficacia similar a compilaciones de C y C++.
10. Multihilos
Java puede aplicarse a la realizacin de aplicaciones en las que ocurra ms de una cosa
a la vez. Java, apoyndose en un sistema de gestin de eventos basado en el paradigma
de condicin y monitores C.A.R. permite apoyar la conducta en tiempo real e
interactiva en programas
11. Dinmico
al contrario que C++ que exige se compile de nuevo la aplicacin al cambiar una clase
madre Java utiliza un sistema de interfaces que permite aligerar esta dependencia.
Como resultado, los programas Java pueden permitir nuevos mtodos y variables en un
objeto de biblioteca sin afectar a los objetos dependientes.
Estructura lgica.
Desde el punto de vista lgico, puede considerarse que los programas comprenden dos tipos de
elementos diferentes: estructuras de datos y algoritmos. O dicho en otras palabras: datos, e
instrucciones para su manipulacin. Su representacin codificada adopta dos formas: una
entendible por la mquina (ejecutable y ficheros de datos) y otra entendible por el humano
(fuente). Para el conjunto de ambas puede considerarse una escala conceptual que, si vamos de
lo general a lo particular, podemos representarla como sigue:
Traduccin de un programa
Compilacin y ejecucin de un programa en Java
Una vez escritos, pueden ser ejecutados de diversas formas:
Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este
proceso se lo llama interpretar y a los programas que lo hacen se los conoce como intrpretes.
Ejemplos de esto son bash, clsico en estaciones Unix y que fue escrito para el proyecto GNU o
Python, cuya peculiaridad adems de ser multipropsito, est en su facilidad de uso y
productividad y de hecho, es usado en parte de los proyectos Google y YouTube.[3]
Traduciendo el cdigo escrito del programa (lo que se denomina cdigo fuente), a su
equivalente en lenguaje mquina. A este proceso se le llama compilar y al programa traductor
se le denomina compilador. Ejemplos de esto son: Ellenguaje C, que combina en su sintaxis
caractersticas de medio y bajo nivel y el compilador gcc usado en el proyecto GNU.
Programas que se auto-modifican
Un programa en ejecucin se trata de forma diferente que los datos en los cuales opera. De
cualquier forma, en algunos casos sta distincin es ambigua, especialmente cuando un
programa se modifica a s mismo. El programa modificado es secuencialmente ejecutado como
parte del mismo programa. Se pueden escribir programas auto-modificables en lenguajes
como Lisp, COBOL y Prol
Ejecucin y almacenamiento de los programas
Tpicamente, los programas se almacenan en una memoria no voltil (por ejemplo un disco),
para que luego el usuario de la computadora, directa o indirectamente, solicite su ejecucin. Al
momento de dicha solicitud, el programa es cargado en la memoria de acceso aleatorio o RAM
del equipo, bajo el control del software llamado sistema operativo, el cual puede acceder
directamente al procesador. El procesador ejecuta (corre) el programa, instruccin por
instruccin hasta que termina. A un programa en ejecucin se le suele llamar tambin proceso.
Un programa puede terminar su ejecucin en forma normal o por causa de un error, dicho
error puede ser de software o de hardware.
5 . Una vez tengamos el archivo ejecutable, ser el sistema operativo el encargado de colocar
el programa en la memoria central y ejecutarlo.
6 . Comprobar el funcionamiento del programa.
7 . Si se detecta errores o un mal funcionamiento del programa, activar el depurador para
trazar el programa y ejecutarlo sentencia a sentencia.
8 . Una vez que hayamos encontrado la causa del error, volveremos al editor y lo corregimos.
9 . El proceso de compilar, enlazar y ejecutar el programa lo repetiremos hasta que no se
produzcan errores.
Compilacin
Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de
programacin a otro lenguaje de programacin, generando un programa equivalente que la
mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina,
pero tambin puede ser un cdigo intermedio (bytecode), o simplemente texto. Este proceso
de traduccin se conoce como compilacin.
El proceso de compilacin, es el proceso por el cual se traducen las instrucciones escritas en un
determinado lenguaje de programacin a lenguaje mquina. Adems de un traductor, se
pueden necesitar otros programas para crear un programa objeto ejecutable. Un programa
fuente se puede dividir en mdulos almacenados en archivos distintos. La tarea de reunir el
programa fuente a menudo se confa a un programa distinto, llamado preprocesador. El
preprocesador tambin puede expandir abreviaturas, llamadas a macros, a proposiciones del
lenguaje fuente.
Normalmente la creacin de un programa ejecutable (un tpico.exe para Microsoft Windows o
DOS) conlleva dos pasos. El primer paso se llama compilacin (propiamente dicho) y traduce el
cdigo fuente escrito en un lenguaje de programacin almacenado en un archivo a cdigo en
bajo nivel (normalmente en cdigo objeto, no directamente a lenguaje mquina). El segundo
paso se llama enlazado en el cual se enlaza el cdigo de bajo nivel generado de todos los
ficheros y subprogramas que se han mandado compilar y se aade el cdigo de las funciones
que hay en las bibliotecas del compilador para que el ejecutable pueda comunicarse
directamente con el sistema operativo, traduciendo as finalmente el cdigo objeto a cdigo
mquina, y generando un mdulo ejecutable.
Enlace de un programa
Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado directamente por
un ordenador, sino que debe ser traducido a lenguaje mquina.
Las etapas por las que debe pasar un programa escrito en un lenguaje de programacin, hasta
poder ser ejecutable son:
Programa fuente: Programa escrito en un lenguaje de alto nivel (texto ordinario que contiene
las sentencias del programa en un lenguaje de programacin). Necesita ser traducido a cdigo
mquina para poder ser ejecutado.
Compilador: Programa encargado de traducir los programas fuentes escritos en un lenguaje de
alto nivel a lenguaje mquina y de comprobar que las llamadas a las funciones de librera se
realizan correctamente.
Programa (o cdigo) objeto: Es el programa fuente traducido (por el compilador) a cdigo
mquina. An no es directamente ejecutable.
Programa Ejecutable: Traduccin completa a cdigo mquina, realizada por el enlazador, del
programa fuente y que ya es directamente ejecutable.
Montador o enlazador (Linker ): Es el programa encargado de insertar al programa objeto el
cdigo mquina de las funciones de las libreras (archivos de biblioteca) usadas en el programa
y realizar el proceso de montaje, que producir un programa ejecutable .exe. Las libreras son
una coleccin de cdigo (funciones) ya programado y traducido a cdigo mquina, listo para
utilizar en un programa y que facilita la labor del programador.
La sintxis de un lenguaje define los elementos de dicho lenguaje y cmo se combinan para
formar un programa. Los elementos tpicos de cualquier lenguaje son los siguientes:
Tipos de datos
Sentencias
Bloques de cdigo
Comentarios
Expresiones
Operadores
A lo largo de las pginas que siguen examinaremos en detalle cada uno de estos elementos.
Identificadores
Un identificador es un nombre que identifica a una variable, a un mtodo o funcin miembro,
a una clase. Todos los lenguajes tienen ciertas reglas para componer los identificadores:
Todos los identificadores han de comenzar con una letra, el carcter subrayado ( _ ) o
el carcter dollar ( $ ).
Adems de estas restricciones, hay ciertas convenciones que hacen que el programa sea ms
legible, pero que no afectan a la ejecucin del programa. La primera y fundamental es la de
encontrar un nombre que sea significativo, de modo que el programa sea lo ms legible
posible. El tiempo que se pretende ahorrar eligiendo nombres cortos y poco significativos se
pierde con creces cuando se revisa el programa despus de cierto tiempo.
Tipo de
identificador
Convencin
Ejemplo
nombre de una
clase
String, Rectangulo,
CinematicaApplet
nombre de
funcin
calcularArea, getValue,
setColor
nombre de
variable
nombre de
constante
En letras maysculas
PI, MAX_ANCHO
Comentarios
Un comentario es un texto adicional que se aade al cdigo para explicar su funcionalidad,
bien a otras personas que lean el programa, o al propio autor como recordatorio. Los
comentarios son una parte importante de la documentacin de un programa. Los comentarios
son ignorados por el compilador, por lo que no incrementan el tamao del archivo ejecutable;
se pueden por tanto, aadir libremente al cdigo para que pueda entenderse mejor.
La programacin orientada a objetos facilita mucho la lectura del cdigo, por lo que lo que no
se precisa hacer tanto uso de los comentarios como en los lenguajes estructurados. En Java
existen tres tipos de comentarios
Comentarios de documentacin
10
Como podemos observar un comentario en varias lneas es un bloque de texto situado entre el
smbolo de comienzo del bloque /*, y otro de terminacin del mismo*/. Teniendo encuentra
este hecho, los programadores disean comentarios como el siguiente:
/*--------------------------------|
| (C) Angel Franco Garca
| fecha: Marzo 1999
|
|
| programa: PrimeroApp.java
|---------------------------------*/
Los comentarios de documentacin es un bloque de texto situado entre el smbolo de
comienzo del bloque /**, y otro de terminacin del mismo */. El programajavadoc utiliza estos
comentarios para generar la documentacin del cdigo.
/** Este es el primer programa de una
serie dedicada a explicar los fundamentos del lenguaje Java */
Habitualmente, usaremos comentarios en una sola lnea //, ya que no tiene el inconveniente
de aprendernos los smbolos de comienzo y terminacin del bloque, u olvidarnos de poner
este ltimo, dando lugar a un error en el momento de la compilacin. En la ventana de edicin
del Entorno Integrado de Desarrollo (IDE) los comentarios se distinguen del resto del cdigo
por el color del texto.
public class PrimeroApp{
public static void main(String[] args) {
//imprime un mensaje
System.out.println("El primer programa");
}
}
Un procedimiento elemental de depuracin de un programa consiste en anular ciertas
sentencias de un programa mediante los delimitadores de comentarios. Por ejemplo, se puede
modificar el programa y anular la sentencia que imprime el mensaje, poniendo delante de ella
el delimitador de comentarios en una sola lnea.
//System.out.println("El primer programa");
Al correr el programa, observaremos que no imprime nada en la pantalla.
La sentencia System.out.println() imprime un mensaje en la consola, una ventana DOS que se
abre en el escritorio de Windows 95. La funcin println tiene un slo argumento una cadena de
caracteres u objeto de la clase String.
11
Sentencias
Una sentencia es una orden que se le da al programa para realizar una tarea especfica, esta
puede ser: mostrar un mensaje en la pantalla, declarar una variable (para reservar espacio en
memoria), inicializarla, llamar a una funcin, etc. Las sentencias acaban con ;. este carcter
separa una sentencia de la siguiente. Normalmente, las sentencias se ponen unas debajo de
otras, aunque sentencias cortas pueden colocarse en una misma lnea. He aqu algunos
ejemplos de sentencias
int i=1;
import java.awt.*;
System.out.println("El primer programa");
rect.mover(10, 20);
En el lenguaje Java, los caracteres espacio en blanco se pueden emplear libremente. Como
podremos ver en los sucesivos ejemplos, es muy importante para la legibilidad de un programa
la colocacin de unas lneas debajo de otras empleando tabuladores. El editor del IDE nos
ayudar plenamente en esta tarea sin apenas percibirlo.
Bloques de cdigo
Un bloque de cdigo es un grupo de sentencias que se comportan como una unidad. Un
bloque de cdigo est limitado por las llaves de apertura { y cierre }. Como ejemplos de
bloques de cdigo tenemos la definicin de una clase, la definicin de una funcin miembro,
una sentencia iterativa for, los bloques try ... catch, para el tratamiento de las excepciones,
etc.
Expresiones
Una expresin es todo aquello que se puede poner a la derecha del operador asignacin =. Por
ejemplo:
x=123;
y=(x+100)/4;
area=circulo.calcularArea(2.5);
Rectangulo r=new Rectangulo(10, 10, 200, 300);
La primera expresin asigna un valor a la variable x.
La segunda, realiza una operacin
12
La tercera, es una llamada a una funcin miembro calcularArea desde un objeto circulo de una
clase determinada
La cuarta, reserva espacio en memoria para un objeto de la clase Rectangulo mediante la
llamada a una funcin especial denominada constructor.
Variables
Una variable es un nombre que se asocia con una porcin de la memoria del ordenador, en la
que se guarda el valor asignado a dicha variable. Hay varios tipos de variables que requieren
distintas cantidades de memoria para guardar datos.
Todas las variables han de declararse antes de usarlas, la declaracin consiste en una sentencia
en la que figura el tipo de dato y el nombre que asignamos a la variable. Una vez declarada se
le podr asignar valores.
Java tiene tres tipos de variables:
de instancia
de clase
locales
Las variables de instancia o miembros dato como veremos ms adelante, se usan para guardar
los atributos de un objeto particular.
Las variables de clase o miembros dato estticos son similares a las variables de instancia, con
la excepcin de que los valores que guardan son los mismos para todos los objetos de una
determinada clase. En el siguiente ejemplo, PI es una variable de clase y radio es una variable
de instancia. PI guarda el mismo valor para todos los objetos de la clase Circulo, pero el radio
de cada crculo puede ser diferente
class Circulo{
static final double PI=3.1416;
double radio;
//...
}
13
Las variables locales se utilizan dentro de las funciones miembro o mtodos. En el siguiente
ejemplo area es una variable local a la funcin calcularArea en la que se guarda el valor del
rea de un objeto de la clase Circulo. Una variable local existe desde el momento de su
definicin hasta el final del bloque en el que se encuentra.
class Circulo{
//...
double calcularArea(){
double area=PI*radio*radio;
return area;
}
}
En el lenguaje Java, las variables locales se declaran en el momento en el que son necesarias.
Es una buena costumbre inicializar las variables en el momento en el que son declaradas.
Veamos algunos ejemplos de declaracin de algunas variables
int x=0;
String nombre="Angel";
double a=3.5, b=0.0, c=-2.4;
boolean bNuevo=true;
int[] datos;
Delante del nombre de cada variable se ha de especificar el tipo de variable que hemos
destacado en letra negrita. Las variables pueden ser
Un array
double radioCirculo=3.2;
Las variables son uno de los elementos bsicos de un programa, y se deben
Declarar
Inicializar
Usar
Descripcion
boolean
char
Caracteres Unicode de 16 bits Los caracteres alfa-numricos son los mismos que los ASCII
con el bit alto puesto a 0. El intervalo de valores va desde 0 hasta 65535 (valores de 16-bits
sin signo).
byte
short
Tamao 16 bits. El intervalo de valores va desde -215 hasta 215-1 (-32768 a 32767)
int
long
float
Tamao 32 bits. Nmeros en coma flotante de simple precisin. Estndar IEEE 754-1985
(de 1.40239846e45f a 3.40282347e+38f)
double
Tamao 64 bits. Nmeros en coma flotante de doble precisin. Estndar IEEE 754-1985.
(de 4.94065645841246544e324d a 1.7976931348623157e+308d.)
15
secuencia de escape est formada por la barra invertida (\) y un carcter. En la siguiente tabla
se dan las secuencias de escape ms utilizadas.
Carcter
Secuencia de escape
retorno de
carro
\r
tabulador
horizontal
\t
nueva lnea
\n
barra invertida \\
Variables booleanas
En el lenguaje C/C++ el valor 0 se toma como falso y el 1 como verdadero. En el lenguaje Java
existe el tipo de dato boolean. Una variable booleana solamente puede guardar uno de los dos
posibles valores: true (verdadero) y false (falso).
boolean encontrado=false;
{...}
encontrado=true;
Variables enteras
Una variable entera consiste en cualquier combinacin de cifras precedidos por el signo ms
(opcional), para los positivos, o el signo menos, para los negativos. Son ejemplos de nmeros
enteros:
12, -36, 0, 4687, -3598
Como ejemplos de declaracin de variable enteras tenemos:
int numero=1205;
int x,y;
long m=30L;
int es la palabra reservada para declarar una variable entera. En el primer caso, el compilador
reserva una porcin de 32 bits de memoria en el que guarda el nmero 1205. Se accede a
dicha porcin de memoria mediante el nombre de la variable, numero. En el segundo caso, las
porciones de memoria cuyos nombres son x e y, guardan cualquier valor entero si la variable
16
es local o cero si la variable es de instancia o de clase. El uso de una variaable local antes de ser
convenientemente inicializada puede conducir a consecuencias desastrosas. Por tanto,
declarar e inicializar una variable es una prctica aconsejable.
En la tercera lnea 30 es un nmero de tipo int por defecto, le ponemos el sufijo L en
maysculas o minsculas para indicar que es de tipo long.
Existen como vemos en la tabla varios tipos de nmeros enteros (byte, short, int, long), y
tambin existe una clase denominada BigInteger cuyos objetos pueden guardar un nmero
entero arbitrariamente grande.
Variables en coma flotante
Las variables del tipo float o double (coma flotante) se usan para guardar nmeros en
memoria que tienen parte entera y parte decimal.
double PI=3.14159;
double g=9.7805, c=2.9979e8;
El primero es una aproximacin del nmero real p, el segundo es la aceleracin de la gravedad
a nivel del mar, el tercero es la velocidad de la luz en m/s, que es la forma de escribir 2.9979
108. El carcter punto '.', separa la parte entera de la parte decimal, en vez del carcter coma ','
que usamos habitualmente en nuestro idioma.
Otras ejemplos son los siguientes
float a=12.5f;
float b=7f;
double c=7.0;
double d=7d;
En la primera lnea 12.5 lleva el sufijo f, ya que por defecto 12.5 es double. En la segunda lnea
7 es un entero y por tanto 7f es un nmero de tipo float. Y as el resto de los ejemplos.
Conceptualmente, hay infinitos nmeros de valores entre dos nmeros reales. Ya que los
valores de las variables se guardan en un nmero prefijado de bits, algunos valores no se
pueden representar de forma precisa en memoria. Por tanto, los valores de las variables en
coma flotante en un ordenador solamente se aproximan a los verdaderos nmeros reales en
matemticas. La aproximacin es tanto mejor, cuanto mayor sea el tamao de la memoria que
reservamos para guardarlo. De este hecho, surgen las variables del tipo float y double. Para
nmeros de precisin arbitararia se emplea la clase BigDecimal.
17
Valores constantes
Cuando se declara una variable de tipo final, se ha de inicializar y cualquier intento de
modificarla en el curso de la ejecucin del programa da lugar a un error en tiempo de
compilacin.
Normalmente, las constantes de un programa se suelen poner en letras maysculas, para
distinguirlas de las que no son constantes. He aqu ejemplos de declaracin de constantes.
final double PI=3.141592653589793;
final int MAX_DATOS=150;
Las cadenas de caracteres o strings
Adems de los ocho tipos de datos primitivos, las variables en Java pueden ser declaradas para
guardar una instancia de una clase, como veremos en el siguiente captulo (Clases y objetos).
Las cadenas de caracteres o strings son distintas en Java y en el lenguaje C/C++, en este ltimo,
las cadenas son arrays de caracteres terminados en el carcter '\0'. Sin embargo, en Java son
objetos de la clase String.
String
mensaje="El primer programa";
Empleando strings, el primer programa quedara de la forma equivalente
public class PrimeroApp{
public static void main(String[] args) {
//imprime un mensaje
String
mensaje="El primer programa";
System.out.println
(mensaje);
}
}
En una cadena se pueden insertar caracteres especiales como el carcter tabulador '\t' o el de
nueva lnea '\n'
String texto="Un string con \t un carcter tabulador y \n un salto de lnea";
18
Palabras reservadas
En el siguiente cuadro se listan las palabras reservadas, aquellas que emplea el lenguaje Java, y
que el programador no puede utilizar como identificadores. Algunas de estas palabras le
resultarn familiares al programador del lenguaje C/C++. Las palabras reservadas sealadas
con un arterisco (*) no se utilizan.
abstract
boolean
break
byte
byvalue*
case
cast*
catch
char
class
const*
continue
default
do
double
else
extends
false
final
finally
float
for
future*
generic*
goto*
if
implements
import
inner*
instanceof
int
interface
long
native
new
null
operator*
outer*
package
private
protected
public
rest*
return
short
satatic
super
switch
synchronized
this
throw
transient
true
try
var*
void
volatile
while
19