IntroduccinaJAVA
1.1.ORIGEN.
EllenguajedeprogramacinJavafuecreadoporSunMicrosystems,empresalder
enservidoresparaInternet,enladcadadelos90.Javainicialmentefuellamado
OAK, y el primer proyecto en el que se aplic este lenguaje fue un sistema
completodecontroldeaparatoselectrodomsticosenelhogar.
Bill Joy, uno de los desarrolladores principales de Unix de Berkeley y cofundador
de Sun, vio en Oak el lenguaje de programacin adecuado para conquistar el
creciente campo del Internet. Despus de algunos ajustes en el diseo y un
cambio de nombre, se presenta pblicamente en agosto de 1995 el lenguaje de
programacinJava.
1.2AspectosGeneralesdeJava
Javasurgicomounarespuestaporparte deSunMicrosystemsparaelcreciente
mundo del desarrollo de aplicaciones para Internet, donde haba un caos
tremendo.Enelcualcadaempresa ldertratabadeimplantarsupropioestndar,
dondeunaaplicacinfuncionabaenunservidorynoenotro, debidoadiferencias
enelsistemaoperativo,incompatibilidadesdesoftwareyhardware.
Javaesunlenguajedepropsitogeneralyorientadoaobjetos,quetransformaun
Webestticoendinmicoeinteractivo.
LaplataformaJavaconstadedoscomponentes:
LaMquinaVirtualdeJava(JVM)
Esunprogramaejecutableenunaplataformaespecfica,capazdeinterpretary
ejecutarinstruccionesexpresadasenuncdigobinarioespecial(elbytecode),el
cualesgeneradoporelcompiladordellenguajeJava.Elcdigoparalamquina
virtualJavasealmacenaenarchivos.class,cadaunodeloscualescontiene,al
menos,elcdigoparaunaclasepblica.
LaMquinaVirtualdejava:
:EselcorazndelaplataformadeJava
:Eslaclaveparalaindependenciadelsistemaoperativoydelhardware.
:Leebytecodeindependientesdelaplataforma.
:SepuedeemularporsoftwareoimplementarenHardware.
Cadaplataforma(S.O, HARDWARE)tienesupropiaimplementacindelamquina
virtualdeJava.
La mquina virtual de Java permite que el mismo presente la caracterstica de
Interoperabilidadentreplataformas.
Estacaractersticaformapartedellema deJava:"Writeonce,runeverywhere"
(Escrbalo una vez, ejectalo en todos lados), a continuacin se ilustra este
concepto.
Elprocesodecreacinesmuysimilaraladeotroslenguajes:unavezcreado
elCdigoFuenteesnecesariocompilarloparagenerarunbinario,estebinario
denominado ByteCode en Java lleva por extensin .class, sin embargo, a
diferenciadeotroslenguajesestebinario(ByteCode)puedeserejecutadoen
diversas plataformas obtenindose el mismo resultado final. Esta
interoperabilidaddeejecucinsedebeaqueelByteCodeesejecutadoenuna
maquina virtual llamada "Java Virtual Machine", es a travs de este
componentequeselograunaejecucinidnticaendistintosambientes.
Hoy en da, existen diversos JVM ("Java Virtual Machines") para distintas
plataformas y ambientes que oscilan desde los Sistemas Operativos Linux,
Solaris,Windows,MacOSX,estopermitequecdigoescritoenJavapuedaser
ejecutadoencualquierambienteproducindoselosmismosresultados.
LaInterfazparalaProgramacindeAplicacionesdeJava(API
Java).
Esunagrancoleccindecomponentesdesoftwareyalistosparausar.LaAPI
est agrupada en libreras o paquetes de clases e interfaces relacionadas. Se
divideendosgrupos:
: La API bsicas: son todos los paquetes de libreras terminadas y
probadas.
: LaAPIextendida:sonnuevasversionesdepaquetesomejorasa
paquetesexistentes,queseencuentranenetapadeprueba.
EjemplosdeAPI:
: java lang: contiene clases que se aplican al lenguaje mismo,
tales como las clases para los datos primitivos (int, float, char, etc),
compuestos como Object, String, librera especficas como Math, el
compiladorjavac.
Es el nico paquete que se incluye automticamente en todos los
programasJava.
: java util: contiene clases como date (fecha), Time (horas), la
clasevector.
: java io: contiene las clases de entrada/salida estndares y para
manejararchivos.
Ejemplo:
UTIL
APIS DE JAVA
IO
AWT
APPLETS
SWING
TiposdeprogramasenJava.
LosprogramasenJavasuelenestarenunadelassiguientescategoras:
Applets
LosappletssonpequeosprogramasqueseincorporanenunapginaWeb
y que por lo tanto, necesitan de un Navegador Web compatible con Java
para poder ejecutarse. A menudo los applets se descargan junto con una
pginaHTMLdesdeunServidorWebyseejecutanenlamquinacliente.
Aplicaciones
Las aplicaciones son programas standalone de propsito general que
normalmenteseejecutandesdelalneadecomandosdelsistemaoperativo.
ConJavasepuederealizarcualquierprogramaquenormalmentesecreara
conalgnotrolenguajedeprogramacin.
Servlets.
6
Los servlets al contrario de los applets son programas que estn pensados
para trabajar en el lado del servidor y desarrollar aplicaciones Web que
interactenconlosclientes.Esdecirpermitecrearygestionarpginasweb
dinmicas.
PlataformasdeTrabajoenJavasegneltipodeProgramacindeseada
:
QuesJavaJ2SE?
JDK("JavaDevelopmentKit")yJ2SE("Java2StandardEdition")sonnombres
para el mismo componente utilizado en ambientes Java, el cual agrupa las
diversasfuncionalidadesnecesariasparadesarrollarprogramasJava.
LaplataformaJ2SE(Java2StandardEdition)eslabasedelatecnologaJavay
hoy en da, existen JDK's/J2SE para diversos ambientes y
plataformas,loscualesofrecenlosiguiente:
UncompiladorJava,capazdegenerarByteCode.
UnJVM("JavaVirtualMachine"),capazdeejecutarByteCode.
UnconjuntodeClasesbasellamadalaAPIdeJava, utilizadaspara
construir programasen Java.
OtrasutilerasparaadministrarcdigoescritoenJava,talescomo
Applets,ObjetosCORBA,FragmentosAuditivos,SoportedeCriptografa
(Seguridad)yManipulacindeXMLentreotrasfuncionalidades.
LaestructuradedirectoriosdelJDK/J2SEeslasiguiente:
JDK1.4.2
BINLIBJRE
Comosepuedeobservar,laestructuraseencuentradivididaentresgrandes
partes:
bin:incluyelosejecutablesparalageneracindeprogramasJava.
lib:Contienelaslibreras(Clases)baseempleadasenlageneracindela
granmayoradeprogramasJava.
jre:incluyeelambientenecesarioparaejecutarprogramasJava,elcuala
suvezseencuentrasubdivididoendistintosdirectorios.
:QuesJavaparaInternet(J2EE)?
La plataforma J2EE aade a Java la funcionalidad necesaria para convertirse en un
lenguaje orientado al desarrollo de servicios en Internet. Mediante JSP (un lenguaje de
programacin de pginas web dinmicas como PHP o ASP) y Servlets (scripts CGI en el
servidorcomolosdePerl)sepuedendesarrollarsitiosWebbajolatecnologaJava.
Cliente
Servicio WEB
Macos
Linux
Archivo JSP
Se almacena aqu
Window XP
QueslaplataformaJ2ME
La plataforma J2ME es una familia de especificaciones que definen varias
versiones minimizadas de la plataforma Java 2 estas versiones minimizadas
pueden ser usadas para programar en dispositivos electrnicos desde telfonos
celulares,enPDAs,hastaentarjetasinteligentes,etc.Estosdispositivospresentan
en comn que no disponen de abundante memoria ni mucha potencia en el
procesamiento, ni tampoco necesitan de todo el soporte que brinda el J2SE, (la
plataformaestndardeJavausadaensistemasdeescritorioyservidor).
EntornodeDesarrollodelasProgramasenJAVA.
10
Compilacinyejecucinde unprogramaenJava.
UsodelJDKparacontruiraplicaciones
EditordeTexto
Javadoc
Javac
Java
11
II.CREACIONDEAPLICACIONESENJAVA.
2.1. ESTRUCTURADEUNAAPLICACINENJAVA.
TodoprogramaJavaestacompuestomnimodetresreasdedeclaracinquea
continuacinsedescriben:
&DeclaracindelassentenciasdeImportacin(import)
&Declaracindelasclasesdiseadasporelusuario(class)
&Declaracindelaclaseprincipalquecontienealmtodomain(main)
1. DeclaracindelassentenciasdeImportacin.
Sedefinenlasclases,paquetesolibrerasquerequiereelusuarioparael
desarrollodesusaplicaciones.
Formato:
importnombredelpaquete.*
importnombredelpaquete.nombredelaclase
Enelprimercasoseimportatodaelpaquetecontodaslasclasesque
contenga.Enelsegundocasodeunpaqueteenparticularsedeseautilizarsolo
uno.
Ejemplo:
importjava.io.*//seimportantodaslasclasesdelpaquete
importjavax.swing.JOptionPane//delpaqueteswingsololaclaseJOptinPane
importjava.util.Vector//delpaquetetil,sololaclasevector
12
Serecomiendaincorporarsololasclasesdelospaquetesquesuprograma
requiere,yaqueentremenosubiquesucompilacinsermsrpida.
2. Declaracindelasclasesdiseadasporelusuario(class).
UnprogramaenJavaestaorganizadocomounacoleccindeclases.Estas
clasesdefinidasaquleindicanalusuarioquelasmismasvanarealizaruna
tareaespecfica.
ATRIBUTOSDELACLASE
Formato:
classnombredelaclase{
Modificadordeaccesotipodedato nombredemodificador
:
Modificadordeaccesotipodedatonombredel (listadeparmetrosFormales{
delmtodo
//DeclaracinLocal
Sentencia1
METODOSDELA
:
CLASE
Sentencia_n
returnexpresin
}
Modificadordeaccesovoidnombredel(listadeparmetrosFormales){
delmtodo
//DeclaracinLocal
sentencia1
:
sentencia_n
}
}
Recordemosunaclaseestaformadaporlosatributosysusmtodos,paranuestro
caso todos los atributos de la clase deben ser manejados como privados, los
mtodospuedenserpblicos,privadosopordefecto,enJava..
Cuando un mtodo no retorna valor debe ser precedido por la palabra reservada
void
13
3. Declaracindelaclaseprincipalquecontienealmtodomain(main).
Eslaclasequemanejaalmtodomain,elcualeselpuntoinicialde
ejecucindetodoslosprogramasJava.Unprogramamnimodebeposeer
unaclaseylamismadebeconteneralmtodomain.
Formato:
classnombredelaclase{publicstaticvoidmain(Stringargs[]){
//declaraciones
sentencia1
:
sentencian
}
}
EllenguajeJavaexigequeelmtodomainsedeclarecomopublicstaticvoid,por
lasiguienterazn,esstaticyaqueelmismoesllamadoporlamquinavirtualde
Javaentiempodeejecucinantesdequesecreecualquierobjeto,voidporqueno
retornaningnvaloryesunmtodopblico.Elarreglodecadenasargs,existey
esobligatorioubicarloyaquepermitedesernecesariointroducirdatosenforma
decadenasdecaracteresenlalneadeejecucindelprogramaJava.
2.2.ElementosBsicosdeunaAplicacinenJava
A continuacin presentamos los elementos mnimos que se requieren para
desarrollarunaaplicacinenJava.
14
2.2.1Comentarios
Javaofrecetrestiposdecomentarios:dosparacomentariosregularesenelcdigo
fuenteyunoparaladocumentacinespecialdelsistemajavadoc.
Comentariosdevariaslneas.
Loscomentariosdevariaslneasseincluyenentrelossmbolos/*y*/.Ejemplo:
/*
Esteesunejemplode
uncomentariodevarias
lneas.
*/
Comentariosdeunasolalnea.
Para comentariar una sola lnea se utiliza la doble diagonal //. El
comentarioseiniciacuandoseencuentraladoblediagonalycontinuahasta
elfinaldelalnea.
//Esteesuncomentariodeunasolalinea
//Esteesotrocomentario
2.2.2.Identificadores.
Un identificador es un nombre diseado por el usuario para identificar elementos
quevanasermanipuladosporsusaplicaciones. Losidentificadoresnoselimitan
a los caracteres ASCII, si el editor de texto lo soporta, se pueden escribir
identificadoresutilizandocaracteresUnicode.
Las letras Java incluyen los caracteres ASCII AZ y az. Los dgitos Java incluyen
los dgitos ASCII 09. Para propsitos de construir identificadores, los caracteres
ASCII$y_sontambinconsideradosletrasJava.
15
REGLASDECONSTRUCCIONDEUNNOMBREDEIDENTIFICADOR.
1. Debeempezarconunaletra.
2. A partir del segundo carcter puede tener mezclas de letras minsculas o
maysculasynmeros.
3. Noseadmitencaracteresespeciales.
4. No hay un lmite en lo concerniente al nmero de caracteres que pueden
tener los identificadores. Sin embargo utilizaremos como largo mximo 10
caracteres.
5. Las palabras reservadas no pueden ser utilizadas como nombres de
identificadores.
Ejemplosdeidentificadoresvlidos:
Trabajar,costo,precio,maximo,Contar
Invlidos
98tot,Pobla2002,Cantidad*P,public
2.2.3.PalabrasReservadas.
Sonaquellasquetienenunafuncinespecficadentrodellenguaje.
LasiguientetablamuestralaspalabrasreservadasdeJava,stassonreservadasy
nopuedenserutilizadascomoidentificadores.
16
abstract
default
If
private
this
boolean
do
Implements
protected
throw
break
double
Import
public
throws
byte
else
Instanceof
return
transient
case
extends
Int
short
try
catch
final
Interface
static
void
char
finally
Long
strictfp**
volatile
class
float
Native
super
while
const*
for
New
switch
continue
goto*
Package
synchronized
true, false, and null no son palabras reservadas sino constantes, as que tampoco
puedenserutilizadascomoidentificadores.
2.2.4.Literales oConstantes.
Una literal es un valor constante formado por una secuencia de caracteres.
Cualquier declaracin en Java que defina un valor constante, un valor que no
pueda ser cambiado durante la ejecucin del programa, es una literal.
Sonejemplosdeliteraleslosnmeros,loscaracteresylascadenasdecaracteres.
Literalesnumricas
Sepuedencrearliteralesnumricasapartirdecualquiertipodedato
primitivo.
Ejemplo:
123
//literalint
123.456
//literaldouble
123L
//literallong
17
123.456F
//literalfloat
Literalesbooleanas
Lasliteralesboolenasconsistendelaspalabrasreservadastrueyfalse.
Literalesdecaracteres
'%',
'7'
Literalesdecadena.
probar
modificar
cadenas
con
facilidad.
Formato:
staticfinaltipodedatonombredeidentificador=
valor
staticindicaquesolodebeexistirunacopiadela
constante.
EjemplostaticfinaldoublePI=3.141692
18
2.2.5.ExpresionesyOperadores
Expresin
Una expresin es una combinacin de variables, operadores y llamadas de
mtodos,quedevuelveunvalor.Eltipodedatodelvalorregresadoporuna
expresindependedeloselementosusadosenlaexpresin.
Operadores
Los operadores son smbolos especiales que por lo comn se utilizan en
expresiones.
LatablasiguientemuestralosdistintostiposdeoperadoresqueutilizaJava.
Operador
Significado
Ejemplo
Operadoresaritmticos
Suma
10+15=25
Resta
10090=10
Multiplicacin
12*3=36
Divisin
15/2=7
Mdulo
15%2=1
Operadoresdeasignacin
Asignacin
a= b
+=
Sumayasignacin
a+=b*(a=a+b)
19
Restayasignacin
a=b*(a=ab)
*=
Multiplicacinyasignacin
a*=b*(a=a*b)
/=
Divisinyasignacin
a/=b*(a=a/b)
%=
Mduloyasignacin
a%=b*(a=a%b)
Operadoresrelacionales
==
Igualdad
a==b
!=
Distinto
a!=b
<
Menorque
a<b
>
Mayorque
a>b
<=
Menoroigualque
a<=b
>=
Mayoroigualque
a>=b
Operadoresespeciales
++
Incremento
a++(postincremento)
++a (preincremento)
Decremento
a(postdecremento)
a (predecremento)
(tipo)expr
Cast
a=(int)b
Concatenacindecadenas
a="cad1"+"cad2"
Accesoavariablesymtodos
a=obj.var1
20
()
Agrupacindeexpresiones
a=(a+b)*c
Latablasiguientemuestralaprecedenciaasignadaalosoperadores,stosson
listadosenordendeprecedencia.
Losoperadoresenlamismafilatienenigualprecedencia
Operador
Notas
. [] ()
Loscorchetesseutilizanparalosarreglos
++ ! ~
!eselNOTlgicoy~eselcomplemento
debits
new(tipo)expr
newseutilizaparacrearinstanciasde
clases
* / %
Multiplicativos
Aditivos
Relacionales
== !=
Igualdad
&&
ANDlgicoencortocircuito
||
ORlgicoencortocircuito
= += = *= /= %= &= ^= Asignacin
|=
Todos los operadores binarios que tienen la misma prioridad (excepto los
operadoresdeasignacin)sonevaluadosdeizquierdaaderecha.
Losoperadoresdeasignacinsonevaluadosdederechaaizquierda
21
Variablesytiposdedatos.
Las variables son localidades de memoria en las que pueden almacenarse datos.
Cada una tiene un nombre, un tipo y valor. Java tiene tres tipos de variables: de
instancia,declaseylocales.
Variablesdeinstancia.
Seutilizanparadefinirlosatributosdeunobjeto.
Variablesdeclase.
Sonsimilaresalasvariablesdeinstancia,conlaexcepcindeque susvalores
sonlosmismosparatodaslasinstanciasdelaclase.
Variablelocales.
Sedeclaranyseutilizandentrodelasdefinicionesdelosmtodos.
* A diferencia de otros lenguajes, Java no tiene variables globales, es decir,
variablesquesonvistasencualquierpartedelprograma.
Variablesytiposdedatos.
Javaesunlenguaje"fuertementetipificado"porloqueesnecesarioespecificarel
tipo de dato para cada una de las variables que se vayan a utilizar en un
programa. El nombre de la variable debe de ser un identificador vlido, y se usa
parareferirsealosdatosquecontieneunavariable.
El tipo de una variable determina los valores que puede almacenar y las
operacionesquesepuedenhacersobreella. Paradaraunavariableuntipoyun
22
TipodeDatonombreVariable
Ejemplo:
Stringnombre //variabledetipoString
intedad
//variabledetipoint
Sepuedenescribirvariosnombresdevariablesdelmismotipoenunasolalnea,
intx,y,z
Stringnombre,apellido
Tambinsepuedeasignarunvalorinicialalasvariablesalmomentodecrearlas,
Stringnombre,apellido="MiApellido"
intedad=24
Variablesytiposdedatos.
LasvariablesenJavapuedenserunodelossiguientestipos:
Tipoprimitivo.
Una variable de tipo primitivo contiene un solo valor del tamao y formato
apropiadodesutipo:unnmero,uncarcter,ounvalorbooleano.
23
LatablasiguientelistalostiposdedatosprimitivossoportadosporJava.
Tipo
Descripcin
Tamao
Nmerosenteros
Byte
Enterobyte
3dgitos
Short
Enterocorto
5dgitos
Int
Entero
10dgitos
Long
Elnterolargo
19dgitos
Nmerosreales
Flota
Puntoflotante
Mximode10dgitos
Double
Puntoflotantededoblepresicin
Mximode19dgitos
Otrostipos
Char
Unsolocarcter
1carcterUnicode
Bolean
Unvalorbooleano
trueofalse
24
EnJava,cualquiernumricoconpuntoflotanteautomticamenteseconsidera
double.Paraqueseaconsideradofloatseagregaunaletra"f"o"F"alfinaldel
valor.
doubled=10.50
floatf=10.50F
Referencia.
Los arreglos, las clases y las interfaces son del tipo referencia. El valor de
unavariabledeltipo referencia esunadireccindeunconjuntodevalores
representadosporunavariable.
Las referencias en Java no son como en C++, stas son identificadores de
instanciasdealgunaclaseenparticular.
Ejemplo.
Stringcad//referenciaaunobjetodelaclaseString
Puntop//referenciaaunobjetodelaclasePunto
int[]var_arreglo//referenciaaunarreglodeenteros
2.2.7.Sentencia
Una instruccin o sentencia representa la tarea ms sencilla que se puede
realizarenunprograma.
Sentenciasdeexpresin
Los siguientes tipos de expresiones pueden ser hechas dentro de una
sentencia
terminando
la
expresin
con
punto
coma
():
25
*Expresionesdeasignacin
*Cualquierusodelosoperadores++y
* Llamadademtodos.
*Expresionesdecreacindeobjetos
Estaclasedesentenciassonllamadassentenciasdeexpresin.
Ejemplo.
valorA=8933.234//asignacin
valorA++//incremento
System.out.println(valorA)//llamadaaunmtodo
IntegerobjInt=newInteger(4)//creacindeobjetos
Sentenciasdedeclaracindevariables
Las sentencias de declaracin de variables se utilizan para declarar
variables.
Ejemplo:
int total
doubleprecio=8933.234
Stringdirec
.AlcanceyelTiempodeVidadelasVariables.
LosmbitosmsimportantesenJava sonaquellosdefinidos:
26
:Porunaclase
:Porunmtodo
:Porunbloque.
Eldeunaclaseloveremosmsadelante.
El mbito definido por un mtodo comienza con su llave de apertura y
termina con su llave de cierre. Toda variable u objeto declarado dentro de
unmtodo,serlocaladichomtodo.Sielmtodotieneparmetrosestos
tambin estn incluidos en el mbito del mtodo, por lo cual solo son
visiblesdentrodelmismo.
Javapermitequelasvariablesseandeclaradasdentrodecualquierbloque.
Unbloquecomienzaconunallave({)yfinalizanconunallavedecierre(}).
Cada vez que se crea un bloque esta creando un mbito, toda variable
declaradadentronoseraccesiblefueradeste.
Ejemplo:
classEjemplo{publicstaticvoidmain{
intx//conocidodentrodetodalaclase
x=10
if(x==10){//IniciaunNuevombito
inty=20
System.out.println(X=+x+Y=+y)
x=x*y
}
Y=x+100//ERRORyNOEXISTEENESTEAMBITO
System.out.println(X=+x)
}
}
27