Introducción a la Programación con Java
Daniel D. Arreola @daniel_entropy
[email protected]
Gracias al apoyo de la iniciativa TELMEXhub @telmehub
Herramientas windows: IDE Eclipse versin portatil http://min.us/mQBVnDdbP !rchivo PD" del taller: http://minus.com/ddahink
Lenguaje Java 1. Introducción
#ava es un len$ua%e multiparadi$ma& pero en su ma'or(a )rientado a )b%etos. *u sinta+is es parecida a ,--. El cdi$o uente se compila en b'tecode ' se
$uarda en un .class. El b'tecode es interpretado por la 0a1uina
Virtual2V03 4ibera memoria de modo automati5ado usando el
6arba$e ,ollector 2,olector de Basura3
)b%eto&,lase e Instancia Objeto: Un objeto e algo !ue e"ite# en el mundo %lae: real y !ue tiene Una clae e el molde de un objeto# !ue caracter$tica y abtrae la caracter$tica y lo comportamiento. comportamiento del objeto# de modo !ue ea ma &'cil reol(er un problema.
Intancia: Una intancia e el nombre !ue e le tiene !ue dar a una clae ante de empe)ar a trabajar con ella. * un ejemplo epeci&ico del objeto
+. ,itoria de -a(a Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma muca de su sinta!is de " y "##, pero tiene un modelo de objetos m$s simple y elimina erramientas de bajo nivel, %ue suelen inducir a mucos errores, como la manipulación directa de punteros o memoria. &a implementación original y de re'erencia del compilador, la m$%uina virtual y las bibliotecas de clases de Java 'ueron desarrollados por Sun Microsystems en (99). *esde entonces, Sun a controlado las especi'icaciones, el desarrollo y evolución del lenguaje a trav+s del Java "ommunity rocess, si bien otros an desarrollado tambi+n implementaciones alternativas de estas tecnologías de Sun, algunas incluso bajo licencias de so't-are libre. Entre diciembre de 00/ y mayo de 00, Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia 123 1&, de acuerdo con las especi'icaciones del Java "ommunity rocess, de tal 'orma %ue pr$cticamente todo el Java de Sun es aora so't-are libre 4aun%ue la biblioteca de clases de Sun %ue se re%uiere para ejecutar los programas Java a5n no lo es6.
"iloso(a *l lenguaje -a(a e creó con cinco objeti(o principale: Uar la metodolog$a de la programación orientada a objeto. a ejecución de un mimo programa en m/ltiple itema operati(o. Incluir por de&ecto oporte para trabajo en red. Die0are para ejecutar código en itema remoto de &orma egura. Deber$a er &'cil de uar y tomar lo mejor de otro lenguaje orientado a objeto# como %.
3. Ar!uitectura de una %omputadora u Ordenador
*e$7n la 8!E 28eal !cademia de la len$ua espa9ola3& una computadora es una m1uina electrnica& anal$ica o di$ital& dotada de una memoria de $ran capacidad ' de m;todos de tratamiento de la inormacin& capa5 de resolver problemas matemticos ' l$icos mediante la utili5acin automtica de pro$ramas.
Est dividida en dos partes importantes: Hardware: *e trata de todos los componentes (sicos 1ue orman parte de una computadora: procesador& 8!0& impresora& teclado& ratn&... *otware: *e trata de la parte conceptual del ordenador. Es decir los datos ' aplicaciones 1ue mane%a ' 1ue permiten un $rado de abstraccin ma'or. ,ual1uier cosa 1ue se pueda almacenar en una unidad de almacenamiento es sotware
!nidad "entral de Proceso #"P!$
0icropocesador !thlon <= >? E< @A-
%ispositivos Entrada
&alida
"ómputo
"omunicación
'lmacenamien to
Tipos de memoria ('M (Random Access Memory): Memoria de escritura y lectura. El contenido solo se mantiene mientras el computador está encendido. ()M (Read Only Memory): Memoria de solo lectura es permanente y no se a!ecta por el encendido o apagado del computador. "ach*+ Memoria de acceso muy rápido usada como puente entre la "#$ y la memoria RAM para evitar las demoras en la consulta de la memoria RAM.
Estructura de la memoria Parte de esta potencia de #ava viene de 1ue permite acceder con mucha libertad a la memoria de la m1uina. Para entender un poco cmo es posible& debemos entender cmo se $uardan los datos en la memoria. Ima$inemos 1ue la memoria tiene un montn de casillas& una enorme ila de casillas& cada una de las cuales contiene un d($ito binario 2bit3: CCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCC... Es e+actamente as(& pero es ms cmodo recordar 1ue esos bits se encuentran a$rupados de ocho en ocho& ormando octetos 2b'tes3: CCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCC ,ada octeto puede contener ? , ?F< combinaciones distintas de ceros ' unos& es decir& cual1uier n7mero entre ' ?FF: A?C
2ambin podemo repreentar eto n/mero en bae e"adecimal: 5"6+ 5"36
5"A1 5"8A
5"64 5"9
5"A1
5"3A
5"%7
5"6+
5"D8
O coniderarlo caractere: ;<2<:=;>6j? *te e el tipo de dato m' elemental !ue no podemo encontrar en %: el caracter. Un caracter ocupa e"actamente un byte bitB de memoria# y puede contener un n/mero entre 5 y +66# o entre C1+ y 1+# dependiendo i !ueremo coniderarlo como in igno o con l.
Utiliza solo dos dígitos, 0 y 1. Un número en binario representa una suma de potencias de 2. Ejemplo: 1101002 = 12!" 12#" 02$" 122" 021" 020 = $2 " 1% " 0 " # " 0 " 0 = !2 10 &ara con'ertir de decimal a binario se sigue el siguiente es(uema: 10! !2 2% 1$
% $ 1 0
2 210 10! !2 2% 1$ % $ 1 0
1
0
0
1 0 1
1
El binario se obtiene de la secuencia in'ersa de los residuos El número binario e(ui'alente es: 11010010
)peraciones l$icas *e trata de operaciones 1ue manipulan BIG* de orma l$ica& son mu' utili5adas en la computacin. *e basan en una interpretacin mu' utili5ada con los n7meros binarios en la cual el d($ito C se interpreta como verdadero ' el d($ito se interpreta como also. )peracin !D 4a operacin !D 2en espa9ol 3& sirve para unir e+presiones l$icas& se entiende 1ue el resultado de la operacin es verdadero si al$una de las dos e+presiones es verdadero En el caso de los d($itos binarios& la operacin !D opera con dos BIG* de modo 1ue el resultado ser uno si ambos bits valen uno.
4a tabla superior se llama tabla de la verdad ' sirve para mostrar resultados de operaciones l$icas& el resultado est en la parte blanca& en la otra parte se representan los operadores . El resultado ser C si ambos operadores valen C
)peracin )8 )8 2) en espa9ol3 devuelve verdadero si cual1uiera de los operandos es verdadero 2es decir& si valen C3. )peracin )G Esta operacin act7a sobre un solo BIG ' lo 1ue hace es invertirleJ es decir& si vale uno valdr cero& ' si vale cero valdr uno.
*istema he+adecimal Es un sistema 1ue se utili5a mucho para representar n7meros binarios. El sistema he+adecimal es la orma de representar n7meros en base C<. De modo 1ue en los d($itos del al K se utili5an los mismos s(mbolos 1ue en el sistema decimal ' a partir del C se utili5a la letra ! ' as( hasta la letra " 1ue simboli5a el CF. !s( el n7mero he+adecimal ,!@ ser(a:
,LC - !LC
He+adecimal Binario !s( el n7mero he+adecimal ,@D= C C ser(a el binario ? C @ CC CC CC CCC C. = C el binario F CC CCC CCC CC CC < CC M CCC ser(a el he+adecimal A C MB,@ K CC ! CC http://www.ascii.cl/es/conversion.htm B CCC http://es.wikipedia.or$/wiki/*istemaNbina , CC rio D CCC E CCC " CCCC
!l$oritmos *e$7n la 8!E: con%unto ordenado ' inito de operaciones 1ue permite hallar la solucin de un problema. 4os al$oritmos& como indica su deinicin oicial& son una serie de pasos 1ue permiten obtener la solucin a un problema. El len$ua%e al$or(tmico es a1uel 1ue implementa una solucin terica a un problema indicando las operaciones a reali5ar ' el orden en el 1ue se deben eectuarse.
&or ejemplo en el caso de (ue nos encontremos en casa con un )oco )undido en una l*mpara, un posible algoritmo sería: +1 -omprobar si ay )ocos de repuesto +2 En el caso de (ue las aya, sustituir el )oco anterior por el nue'o +$ /i no ay )ocos de repuesto, bajar a comprar un nue'o a la tienda y sustituir el 'iejo por el nue'o os algoritmos son la base de la programacin, ya (ue los programas de computadora se pueden entender (ue son algoritmos escritos en un cdigo especial entendible por una computadora.
-aracterísticas de los algoritmos ,aracter(sticas 1ue deben de cumplir los al$oritmos obli$atoriamente:
On al$oritmo debe resolver el problema para el 1ue ue ormulado. 4$icamente no sirve un al$oritmo 1ue no resuelve ese problema. En el caso de los pro$ramadores& a veces crean al$oritmos 1ue resuelven problemas dierentes al planteado. O4os al$oritmos son independientes de la computadora. 4os al$oritmos se escriben para poder ser utili5ados en cual1uier m1uina.
os algoritmos deben de ser precisos. os resultados de los c*lculos deben de ser eactos, de manera rigurosa. 3o es '*lido un algoritmo (ue slo aproime la solucin. os algoritmos deben de ser )initos. 4eben de )inalizar en algún momento. 3o es un algoritmo '*lido a(uel (ue produce situaciones en las (ue el algoritmo no termina. os algoritmos deben de poder repetirse. 4eben de permitir su ejecucin las 'eces (ue aga )alta. 3o son '*lidos los (ue tras ejecutarse una 'ez ya no pueden 'ol'er a acerlo por la razn (ue sea.
-aracterísticas aconsejables para los algoritmos 5alidez. Un algoritmo es '*lido si carece de errores. Un algoritmo puede resol'er el problema para el (ue se plante y sin embargo no ser '*lido debido a (ue posee errores E)iciencia. Un algoritmo es e)iciente si obtiene la solucin al problema en poco tiempo. 3o lo es si es lento en obtener el resultado. 6ptimo. Un algoritmo es ptimo si es el m*s e)iciente posible y no contiene errores. a bús(ueda de este algoritmo es el objeti'o prioritario del programador. 3o siempre podemos garantizar (ue el algoritmo allado es el ptimo, a 'eces sí.
Elementos (ue con)orman un algoritmo Entrada. os datos iniciales (ue posee el algoritmo antes de ejecutarse. &roceso. 7cciones (ue lle'a a cabo el algoritmo. /alida. 4atos (ue obtiene )inalmente el algoritmo. 8ases en la creacin de algoritmos +1 7n*lisis. En esta etapa se determina cu*l es eactamente el problema a resol'er. 9u datos )orman la entrada del algoritmo y cu*les deber*n obtenerse como salida. +2 4ise;o. Elaboracin del algoritmo. +$ &rueba. -omprobacin del resultado. /e obser'a si el algoritmo obtiene la salida esperada para todas las entradas.
Errores Error del usuario. Errores (ue se producen cuando el usuario realiza algo inesperado y el programa no reacciona apropiadamente. Error del programador. /on errores (ue a cometido el programador al generar el cdigo. a mayoría de errores son de este tipo. Errores de documentacin.
Error de entrada salida o de comunicaciones.
se desea imprimir y no ay papel, )alla el teclado,...? Error )atal. el ordenador se cuelga, errores en la grabacin de datos,...? Error de ejecucin. si es posible? o al menos controlar los errores. Una mala gestin de errores causa eperiencias poco gratas al usuario de la aplicacin.
Pro$ramacin
4a pro$ramacin consiste en pasar al$oritmos a al$7n len$ua%e de computadora a in de 1ue puedan ser entendidos los al$oritmos por la computadora. 4a pro$ramacin se puede reali5ar empleando diversas t;cnicas o m;todos. Esas t;cnicas deinen los distintos tipos de pro$ramaciones.
&rogramacin estructurada A757 En esta programacin se utiliza una tcnica (ue genera programas (ue slo permiten utilizar tres estructuras de control: /ecuencias. /e con)orman de instrucciones (ue se ejecutan en orden normal. El )lujo del programa ejecuta la instruccin y pasa a ejecutar la siguiente. 7lternati'as o -ondicionales. Bnstrucciones en las (ue se e'alúa una condicin y dependiendo si el resultado es 'erdadero o no, el )lujo del programa se dirigir* a una instruccin o a otra. Bterati'as. Bnstrucciones (ue se repiten continuamente asta (ue se cumple una determinada condicin.
a 'entaja de esta programacin est* en (ue es m*s legible. as bases de la programacin estructurada )ueron enunciadas por 3iClaus Dirdt. /egún este cientí)ico cual(uier problema algorítmico podía resol'erse con el uso de estos tres tipos de instrucciones. El tiempo le a dado la razn y a generado una programacin (ue insta a todo programador a utilizar slo instrucciones de esos tres tipos. Es lo (ue se conoce como programacin estructurada.
&rogramacin modular -ompleta la programacin anterior permitiendo la de)inicin de mdulos independientes cada uno de los cuales se encargar* de una tarea del programa. 4e este )orma el programador se concentra en la codi)icacin de cada mdulo aciendo m*s sencilla esta tarea. 7l )inal se deben integrar los mdulos para dar lugar a la aplicacin )inal. El cdigo de los mdulos puede ser in'ocado en cual(uier parte del cdigo.ealmente cada mdulo se comporta como un subprograma (ue, partir de unasdeterminadas entradas obtienen unas salidas concretas. /u )uncionamiento no depende del resto del programa por lo (ue es m*s )*cil encontrar los errores y realizar elmantenimiento.
enguajes de programacin os lenguajes de programacin permiten codi)icar algoritmos en la computadora. /on una serie de símbolos e instrucciones de acuerdo con una sintais (ue )acilita su posterior traduccin a cdigo entendible para la computadora. A757 es un lenguaje de alto ni'el por(ue su sintais se aproima al lenguaje umano. Face )alta so)t@are (ue trans)orme el cdigo en el lenguaje de alto ni'el en cdigo entendible para la computadora en un proceso conocido como interpretacin o compilacin >dependiendo del lenguaje?.
E%emplo de al$oritmos: "n estudiante se encuentra en su casa (durmiendo) y de%e ir a la universidad (a tomar la clase de programaci&n'') ue de%e *acer el estudiante+ -. %ormir hasta /ue suene el despertador. 0. Mirar la hora. 1. 2ay tiempo su3iciente4 1.-. &i5 entonces 1.-.-. 6a7arse. 1.-.0. 8estirse. 1.-.1. %esayunar. 1.0. 9o5 entonces 1.0.-. 8estirse.
:. Lavarse la boca. ;. %espedirse de la mam< y el pap<. =. 2ay tiempo su3iciente4 =.-. &i5 entonces =.-.-. "aminar a la parada. =.0. 9o5 entonces =.0.-. "orrer a a parada. >. 2asta /ue pase un micro para la universidad hacer+ >.-. Esperar el microbus >.0. 8er a las dem
?. Mientras /ue no llegue a la universidad hacer+ ?.-. &eguir en el microbus. ?.0. Pelear mentalmente con el conductor. -. Timbrar. --. 6aAarse. -0. Entrar a la universidad. -1. "aminar hasta llegar al salón donde se dicta su curso de programación. -:. Ingresar al salón.
Pseudo "ódigo leer '5 65 " si 'B6 si 'B" Mayor ' sino Mayor " 3inCsi
sino si 6B" Mayor sino
6
Mayor " 3inCsi 3inCsi escribir Mayor
Proceso de escritura de pro$ramas *cribir programa en el editor de te"to %ompilar el programa &uente
si
,ay errore no
*jecutar el programa
Vamos a pro$ramar
H)4! E R#!V!S
En nuestra consola de linu+& escribimos:
e'izando a )ondo nuestro primer programa Este e%emplo necesita una pe1ue9a e+plicacin. Godo en #ava est dentro de una clase& inclu'endo pro$ramas autnomos. El cdi$o uente se $uarda en archivos con el mismo nombre 1ue la clase 1ue contienen ' con e+tensin R.%avaS. na clase 2class3 declarada p7blica 2public3 debe se$uir este convenio. En el e%emplo anterior& la clase es Hola& por lo 1ue el cdi$o uente debe $uardarse en el ichero RHola.%avaS El compilador $enera un archivo de clase 2con e+tensin R.classS3 por cada una de las clases deinidas en el archivo uente. 4os pro$ramas 1ue se e%ecutan de orma independiente ' autnoma& deben contener el m;todo Smain23S.
4a palabra reservada SvoidS indica 1ue el m;todo main no devuelve nada. El m;todo main debe aceptar un arra' de ob%etos tipo *trin$. Por acuerdo se reerencia como Sar$sS& aun1ue puede emplearse cual1uier otro identiicador. 4a palabra reservada SstaticS indica 1ue el m;todo es un m;todo de clase& asociado a la clase en ve5 de una instancias de la misma. El m;todo main debe ser esttico o TTde claseTT. 4a palabra reservada public si$niica 1ue un m;todo puede ser llamado desde otras clases& o 1ue la clase puede ser usada por clases uera de la %erar1u(a de la propia clase. )tros tipos de acceso son SprivateS o SprotectedS.
a utilidad de impreión en pantalla por ejemploB &orma parte de la biblioteca et'ndar de -a(a: la clae EFFGytemFFF de&ine un campo p/blico et'tico llamado EFFoutFFF. *l objeto out e una intancia de EFFHrintGtreamFFF# !ue o&rece el mtodo EFFprintln GtringBFFF para (olcar dato en la pantalla la alida et'ndarB.
*'stem is one o #avaUs standard classes. )ne o the static member variables in this class is named out. *ince this variable is contained in the class *'stem& its ull name which 'ou have to use to reer to it in 'our pro$rams is *'stem.out. Ghe variable *'stem.out reers to an ob%ect& and that ob%ect in turn contains a subroutine named print. Ghe compound identiier *'stem.out.print reers to the subroutine print in the ob%ect out in the class *'stem.
*'stem.out is an ob%ect o the class Print*tream. Print*tream is another class that is a standard part o #ava. !n' ob%ect o t'pe Print*tream is a destination to which inormation can be printedJ an' ob%ect o t'pe Print*tream has a print subroutine that can be used to send inormation to that destination. Ghe ob%ect *'stem.out is %ust one possible destination& and *'stem.out.print is the subroutine that sends inormation to that particular destination. )ther ob%ects o t'pe Print*tream mi$ht send inormation to other destinations such as iles or across a network to other computers. Ghis is ob%ectoriented pro$rammin$: 0an' dierent thin$s which have somethin$ in common the' can all be used as destinations or inormation can all be used in the same wa' throu$h a print subroutine. Introduction to Pro$rammin$ sin$ #ava& *i+th Edition David #. Eck
E%emplo ? ,aremo una lectura del teclado. Importaremo la clae Gcanner# e una clae muy util# pue no permite leer dede el teclado o dede un arci(o. a linea para importarla al proyecto e : import %ava.util.*cannerJ
Dentro de el m;todo main de nuestra clase. ,reamos la instancia de *canner con la si$uiente linea: *canner tecladonew *canner2*'stem.in3J
Gcanner cuenta con metodo !ue reultaran utile# entre ello etan: teclado.ne"tB lee la iguiente linea# y lo almacena como cadena de caractere teclado.ne"tIntBJ lee el iguiente numero# lo almacena como int en cao de !ue no e a int# mandara un menaje de error: teclado.ne"tDoubleBJ ee el iguiente numero y lo almacena en un Double# i el dato !ue e almacena no e Double# manda menaje de error
5ariables *on combinaciones de letras ' n7meros 1ue permiten almacenar cual1uier valor en la memoria del ordenador. Estos valores los podremos utili5ar en el pro$rama haciendo reerencia al nombre de la variable. !l inali5ar la e%ecucin del pro$rama las variables se borran de los espacios reservados en la memoria.
Para 1ue sirve ' 1ue podemos hacer con #ava #ava esta dividido en cuatro principales ramas: #8E 2Entorno de e%ecucion3 #D 2Entorno de desarrollo ' testeo3 #EE 2Entorno para crear aplicaciones empresariales 1ue se usen tecnolo$ia de servidores3 #0E 2Entorno de desarrollo para moviles3
!plicaciones autnomas: Godo en #ava est dentro de una clase& inclu'endo pro$ramas autnomos. !pplets: 4as applets de #ava son pro$ramas incrustados en otras aplicaciones& normalmente una p$ina Web 1ue se muestra en un nave$ador. *ervlets: 4os servlets son componentes de la parte del servidor de #ava EE& encar$ados de $enerar respuestas a las peticiones recibidas de los clientes.
Aplicacione con (entana: GKing e la librer$a para la inter&a) gr'&ica de uuario a(an)ada de la plata&orma -a(a G*. -GH -a(a Ger(er HageB: p'gina !ue e compilan din'micamente o e preCcompilan pre(iamente a u ditribuciónB de modo !ue el código !ue e conigue una (entaja en rendimiento ubtancial &rente a muco lenguaje interpretado. *n eto principale uo# tambien e uan AHIF de -a(a o e"tenione# la cuale dotan# aumentan o mejoran alguna &uncionalidade.*ta e"tenione de -a(a et'n en pa!uete !ue cuelgan de la ra$) ja(a": ja(a".L. Mo e incluyen en la -DN o el -;*. Alguna de la e"tenione y ar!uitectura ligada etrecamente al lenguaje -a(a como on:
#DB, 2#ava Database ,onnectivit'3 para conectarse con bases de datos como )8!,4E #*" 2#ava*erver "aces3 #ava @D 2na !PI de alto nivel para pro$ramacin $rica en @D3 #I 2#ava ative Interace3 #*P 2#ava*erver Pa$es3 #0" 2#ava 0edia "ramework3 Beans E#B 2Enterprise #ava Beans3
4a 01uina Virtual #ava El len$ua%e #ava es a la ve5 compilado e interpretado. ,on el compilador se convierte el cdi$o uente 1ue reside en archivos cu'a e+tensin es .%ava& a un con%unto de instrucciones 1ue recibe el nombre de b'tecodes 1ue se $uardan en un archivo cu'a e+tensin es .class. Estas instrucciones son independientes del tipo de computadora. El int;rprete e%ecuta cada una de estas instrucciones en una computadora espec(ica 2Windows& 0acintosh& etc3. *olamente es necesario& por tanto& compilar una ve5 el pro$rama& pero se interpreta cada ve5 1ue se e%ecuta.
-a(a e un lenguaje de programación baado en (irtuali)ación. o anterior igni&ica !ue el código !ue e ecribe en -a(a puede er ejecutado in importar el ardKare donde e encuentre -a(a e ejecuta e"actamente igual en un celular o en un er(idor... el código no cambiaB. -P igni&ica Q-a(a irtual Pacine C P'!uina irtual de -a(aQ. *te programa $ e ditinto en cada ardKare aora $: la -P de un celular e muy ditinta a la -P en un er(idorB y (ar$a eg/n el ardKare# itema operati(o# etctera. Hero u miión e la mima: ejecutar código ja(a. De eta &orma# cuando uno ecribe un programa en -a(a# el QcompiladorQ con(ierte dico código en código binario QbytecodeQ lo llaman. Un arci(o Q.claQ generado por un compilador -a(a e un arci(o QbytecodeQB m' dico código no e código m'!uina directamente no puede er ejecutado por un computador directamenteB ino e código Qlito para ejecutarQ. -I2 -utCinC2imeB e el compilador !ue toma QbytecodeQ y lo con(ierte en código m'!uina# para ejecutarlo. *to lo ace en Qtiempo realQ. Hor upueto# cada -I2 e ditinto en cada computador# y to ace parte de la -P# a$ !ue en realidad el programador nunca conoce -I2...
%ada intrprete -a(a e una implementación de la P'!uina irtual -a(a -PB. o bytecode poibilitan el objeti(o de QKrite once# run anyKereQ# de ecribir el programa una (e) y !ue e pueda correr en cual!uier plata&orma !ue diponga de una implementación de la -P. Hor ejemplo# el mimo programa -a(a puede correr en RindoK# Golari# Pac OG S# inu".
-a(a e# por tanto# algo m' !ue un lenguaje# ya !ue la palabra -a(a e re&iere a do coa ineparable: el lenguaje !ue no ir(e para crear programa y la P'!uina irtual -a(a !ue ir(e para ejecutarlo. %omo (emo en la &igura# el AHI de -a(a y la P'!uina irtual -a(a &orman una capa intermedia -a(a plat&ormB !ue a$la el programa -a(a de la epeci&icidade del ardKare ardKareCbaed plat&ormB.
a P'!uina irtual -a(a -PB e el entorno en el !ue e ejecutan lo programa -a(a# u miión principal e la de garanti)ar la portabilidad de la aplicacione -a(a. De&ine eencialmente un ordenador abtracto y epeci&ica la intruccione bytecodeB !ue ete ordenador puede ejecutar. *l intrprete -a(a epec$&ico ejecuta la intruccione !ue e guardan en lo arci(o cuya e"tenión e .cla. a tarea principale de la -P on la iguiente: ;eer(ar epacio en memoria para lo objeto creado iberar la memoria no uada garbage collectionB. Aignar (ariable a regitro y pila lamar al itema uped para cierta &uncione# como lo acceo a lo dipoiti(o. igilar el cumplimiento de la norma de eguridad de la aplicacione -a(a
*ta /ltima tarea# e una de la m' importante !ue reali)a la -P. Adem'# la propia epeci&icacione del lenguaje -a(a contribuyen e"traordinariamente a ete objeti(o: a re&erencia a array on (eri&icada en el momento de la ejecución del programa Mo ay manera de manipular de &orma directa lo puntero a -P getiona autom'ticamente el uo de la memoria# de modo !ue no !ueden ueco. Mo e permiten reali)ar cierta con(erione catingB entre ditinto tipo de dato.
-a(a e un lenguaje de programación orientado a objeto puro# en el entido de !ue no ay ninguna (ariable# &unción o contante !ue no et dentro de una clae. Ge accede a lo miembro dato y la &uncione miembro a tra( de lo objeto y de la clae. Hor ra)one de e&iciencia# e an coner(ado lo tipo b'ico de dato# int# &loat# double# car# etc# imilare a lo del lenguaje %%. o tipo de programa m' comune !ue e pueden acer con -a(a on lo applet e ejecutan en el na(egador de la m'!uina clienteB y la aplicacione programa !ue e ejecutan directamente en la -PB. Otro tipo epecial de programa e denomina er(let !ue e imilar a lo applet pero e ejecutan en lo er(idore -a(a. a AHI de -a(a e muy rica# et' &ormada un conjunto de pa!uete de clae !ue le proporcionan una gran &uncionalidad.
El n7cleo de la !PI viene con cada una de las implementaciones de la #V0: 4o esencial: tipos de datos& clases ' ob%etos& arra's& cadenas de caracteres 2strin$s3& subprocesos 2threads3& entrada/salida& propiedades del sistema& etc. !pplets 0ane%o de la red 2networkin$3 Internacionali5acin *e$uridad ,omponentes 2#avaBeans3 Persistencia 2)b%ect seriali5ation3 ,one+in a bases de datos 2#DB,3 #ava proporciona tambi;n e+tensiones& por e%emplo deine un !PI para @D& para los servidores& teleon(a& reconocimiento de vo5& etc.
Gipos primitivos de #ava 4lamamos tipos primitivos de un len$ua%e cuando hablamos de tipos de datos 'a deinidos en el len$ua%e ' de los 1ue se puede partir para la construccin de e+presiones o tipos de compuestos.
*ecuencias de escape
Tn neKline. Galto de l$nea Tt tab Tb bacpace# borra a la i)!uierda Tr return# repreenta el car'cter epecial *MIO T& &orm &eed TT e el car'cter bacla TV comilla TQ comilla
Ejemplo 4eclaracin de 5ariables 4eclaracin de una 'ariable como un entero int 'ariable1G int 'ariable2G int 'ariable$G 4eclaracin de 'ariables y asignacin de 'alores en una línea int 'ariable1 = 1000, 'ariable2 = 2, 'ariable$G 4eclaracin de 'ariables tipo teto car 'ariable G -on tama;o )ijo de caracteres: car 'ariable+1!G -on asignacin de 'alor
car 'ariable = HaH G