Daniel D. Arreola @daniel_entropy ibmdebian43@gmail.com
Gracias al apoyo de la iniciativa TELMEXhub @telmehub
Herramientas windows: http://min.us/mQBVnDdbP http://minus.com/ddahink IDE Eclipse versin portatil !rchivo PD" del taller:
Lenguaje Java 1. Introduccin
#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 real y !ue tiene caracter$tica y comportamiento. %lae: Una clae e el molde de un objeto# !ue abtrae la caracter$tica y lo 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 programacin orientado a objetos, desarrollado por Sun Microsystems a principios de los aos 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 manipulacin directa de punteros o memoria. &a implementacin 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 evolucin del lenguaje a trav+s del Java "ommunity ,rocess, si bien otros an desarrollado tambi+n implementaciones alternativas de estas tecnologas de Sun, algunas incluso bajo licencias de so't-are libre. Entre diciembre de .00/ y mayo de .000, Sun Microsystems liber la mayor parte de sus tecnologas 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 programacin orientada a objeto. .a ejecucin de un mimo programa en m/ltiple itema operati(o. Incluir por de&ecto oporte para trabajo en red. Die0are para ejecutar cdigo en itema remoto de &orma egura. Deber$a er &'cil de uar y tomar lo mejor de otro lenguaje orientado a objeto# como %11.
3. Ar!uitectura de una %omputadora u Ordenador *e$7n la 8!E 28eal !cademia de la len$ua espa9ola3& una computadora es una m:1uina electrnica& anal$ica o di$ital& dotada de una memoria de $ran capacidad ' de m;todos de tratamiento de la in.ormacin& capa5 de resolver problemas matem:ticos ' l$icos mediante la utili5acin autom:tica 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&... *o.tware: *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 so.tware
!nidad "entral de Proceso #"P!$ 0icropocesador !thlon <= >? E< @ABB-
%ispositivos Entrada &alida 'lmacenamien to "omunicacin "mputo
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 rpido 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 m:1uina. 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: BCBCBBCBCBCBBBBCBCBCBCBBCBCBBBBCBBCCCBCBCCBBCBBCBCBCBBCBCCBCBCCBB BCCBCBCBCCBCBCBCBCCBCCC... Es e+actamente as(& pero es m:s cmodo recordar 1ue esos bits se encuentran a$rupados de ocho en ocho& .ormando octetos 2b'tes3: BCBCBBCBDCBCBBBBCDBCBCBCBBDCBCBBBBCDBBCCCBCBDCCBBCBBCDBCBCBBCD BCCBCBCCDBBBCCBCBDCBCCBCBCDBCBCCBCC ,ada octeto puede contener ? , E ?F< combinaciones distintas de ceros ' unos& es decir& cual1uier n7mero entre B ' ?FF: A?DC<CDA=DC<CDFAD?BCDA?D?C=DCACDCB<DCA@
2ambi3n podemo repreentar eto n/mero en bae 4e"adecimal: 5"6+ 5"A1 5"64 5"A1 5"3A 5"%7 5"6+ 5"D8 5"36 5"8A 5"9: O coniderarlo caractere: ; < 2 < : = ; > 6 j ? *te e el tipo de dato m' elemental !ue no podemo encontrar en %: el caracter. Un caracter ocupa e"actamente un byte @A bitB de memoria# y puede contener un n/mero entre 5 y +66# o entre C1+A y 1+:# dependiendo i !ueremo coniderarlo como in igno o con 3l.
Utiliza solo dos dgitos, 0 y 1. Un nmero en binario representa una suma de potencias de 2. Ejemplo: 110100 2 = 12 ! " 12 # " 02 $ " 12 2 " 02 1 " 02 0 = $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 nmero 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 B se interpreta como .also. )peracin !HD 4a operacin !HD 2en espa9ol I3& 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 !HD 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 H)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 B al K se utili5an los mismos s(mbolos 1ue en el sistema decimal ' a partir del CB se utili5a la letra ! ' as( hasta la letra " 1ue simboli5a el CF. !s( el n7mero he+adecimal ,!@ ser(a: ,LC< ? - !LC< C - @LC< B E C?L?F< - CBLC< - @ E @?@F 4a ra5n del uso de este sistema es por1ue tiene una e1uivalencia directa con el sistema binario. De hecho en una ci.ra he+adecimal caben e+actamente = bits. Por ello la traduccin de he+adecimal a binario se basa en esta tabla:
He+adecimal Binario B BBBB C BBBC ? BBCB @ BBCC = BCBB F BCBC < BCCB M BCCC A CBBB K CBBC ! CBCB B CBCC , CCBB D CCBC E CCCB " CCCC !s( el n7mero he+adecimal ,@D= ser(a el binario CCBB BBCC CCBC BCBB. I el binario BCCC CBCC CCBB BBCC ser(a el he+adecimal MB,@ http://www.ascii.cl/es/conversion.htm http://es.wikipedia.or$/wiki/*istemaNbina rio
!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 de.inicin o.icial& 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 e.ectuarse.
&or ejemplo en el caso de (ue nos encontremos en casa con un )oco )undido en una l*mpara, un posible algoritmo sera: +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 0os algoritmos son la base de la programaci1n, ya (ue los programas de computadora se pueden entender (ue son algoritmos escritos en un c1digo especial entendible por una computadora.
-aractersticas de los algoritmos ,aracter(sticas 1ue deben de cumplir los al$oritmos obli$atoriamente: OPn 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 di.erentes al planteado. O4os al$oritmos son independientes de la computadora. 4os al$oritmos se escriben para poder ser utili5ados en cual1uier m:1uina.
20os algoritmos deben de ser precisos. 0os resultados de los c*lculos deben de ser eactos, de manera rigurosa. 3o es '*lido un algoritmo (ue s1lo aproime la soluci1n. 20os algoritmos deben de ser )initos. 4eben de )inalizar en algn momento. 3o es un algoritmo '*lido a(uel (ue produce situaciones en las (ue el algoritmo no termina. 20os algoritmos deben de poder repetirse. 4eben de permitir su ejecuci1n las 'eces (ue .aga )alta. 3o son '*lidos los (ue tras ejecutarse una 'ez ya no pueden 'ol'er a .acerlo por la raz1n (ue sea.
-aractersticas aconsejables para los algoritmos 5alidez. Un algoritmo es '*lido si carece de errores. Un algoritmo puede resol'er el problema para el (ue se plante1 y sin embargo no ser '*lido debido a (ue posee errores E)iciencia. Un algoritmo es e)iciente si obtiene la soluci1n al problema en poco tiempo. 3o lo es si es lento en obtener el resultado. 6ptimo. Un algoritmo es 1ptimo si es el m*s e)iciente posible y no contiene errores. 0a bs(ueda de este algoritmo es el objeti'o prioritario del programador. 3o siempre podemos garantizar (ue el algoritmo .allado es el 1ptimo, a 'eces s.
Elementos (ue con)orman un algoritmo 2Entrada. 0os datos iniciales (ue posee el algoritmo antes de ejecutarse. 2&roceso. 7cciones (ue lle'a a cabo el algoritmo. 2/alida. 4atos (ue obtiene )inalmente el algoritmo. 8ases en la creaci1n 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. Elaboraci1n del algoritmo. +$, &rueba. -omprobaci1n del resultado. /e obser'a si el algoritmo obtiene la salida esperada para todas las entradas.
Errores 2Error del usuario. Errores (ue se producen cuando el usuario realiza algo inesperado y el programa no reacciona apropiadamente. 2Error del programador. /on errores (ue .a cometido el programador al generar el c1digo. 0a mayora de errores son de este tipo. 2Errores de documentaci1n. <curren cuando la documentaci1n del programa no es correcta y pro'oca )allos en el manejo
2Error de entrada = salida o de comunicaciones. <curre cuando )alla la comunicaci1n entre el programa y un dispositi'o >se desea imprimir y no .ay papel, )alla el teclado,...? 2Error )atal. <curre cuando el .ard@are produce una situaci1n inesperado (ue el so)t@are no puede controlar >el ordenador se cuelga, errores en la grabaci1n de datos,...? 2Error de ejecuci1n. <curren cuando la ejecuci1n del programa es m*s lenta de lo pre'isto. 0a labor del programador es predecir, encontrar y subsanar >si es posible? o al menos controlar los errores. Una mala gesti1n de errores causa eperiencias poco gratas al usuario de la aplicaci1n.
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 Dlos al$oritmosD por la computadora. 4a pro$ramacin se puede reali5ar empleando diversas t;cnicas o m;todos. Esas t;cnicas de.inen los distintos tipos de pro$ramaciones.
&rogramaci1n estructurada A757 En esta programaci1n se utiliza una t:cnica (ue genera programas (ue s1lo permiten utilizar tres estructuras de control: /ecuencias. /e con)orman de instrucciones (ue se ejecutan en orden normal. El )lujo del programa ejecuta la instrucci1n y pasa a ejecutar la siguiente. 7lternati'as o -ondicionales. Bnstrucciones en las (ue se e'ala una condici1n y dependiendo si el resultado es 'erdadero o no, el )lujo del programa se dirigir* a una instrucci1n o a otra. Bterati'as. Bnstrucciones (ue se repiten continuamente .asta (ue se cumple una determinada condici1n.
0a 'entaja de esta programaci1n est* en (ue es m*s legible. 0as bases de la programaci1n estructurada )ueron enunciadas por 3iClaus Dirdt.. /egn este cient)ico cual(uier problema algortmico poda resol'erse con el uso de estos tres tipos de instrucciones. El tiempo le .a dado la raz1n y .a generado una programaci1n (ue insta a todo programador a utilizar s1lo instrucciones de esos tres tipos. Es lo (ue se conoce como programaci1n estructurada.
&rogramaci1n modular -ompleta la programaci1n anterior permitiendo la de)inici1n de m1dulos independientes cada uno de los cuales se encargar* de una tarea del programa. 4e este )orma el programador se concentra en la codi)icaci1n de cada m1dulo .aciendo m*s sencilla esta tarea. 7l )inal se deben integrar los m1dulos para dar lugar a la aplicaci1n )inal. El c1digo de los m1dulos puede ser in'ocado en cual(uier parte del c1digo.Eealmente cada m1dulo 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.
0enguajes de programaci1n 0os lenguajes de programaci1n permiten codi)icar algoritmos en la computadora. /on una serie de smbolos e instrucciones de acuerdo con una sintais (ue )acilita su posterior traducci1n a c1digo 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 c1digo en el lenguaje de alto ni'el en c1digo entendible para la computadora en un proceso conocido como interpretaci1n o compilaci1n >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<s personas /ue esperan el microbus. ,.Tomar el bus.
?. 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 saln donde se dicta su curso de programacin. -:. Ingresar al saln.
Pseudo "digo leer '5 65 " si 'B6 si 'B" Mayor ' sino Mayor " 3inCsi sino si 6B" Mayor 6 sino Mayor " 3inCsi 3inCsi escribir Mayor
Proceso de escritura de pro$ramas *cribir programa en el editor de te"to %ompilar el programa &uente ,ay erroreD *jecutar el programa si no
Vamos a pro$ramarQQQ
H)4! EH R#!V!S
En nuestra consola de linu+& escribimos:
Ee'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. Pna 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 de.inidas 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 re.erencia como Sar$sS& aun1ue puede emplearse cual1uier otro identi.icador. 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 est:tico o TTde claseTT. 4a palabra reservada public si$ni.ica 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 imprein @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 m3todo 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 DD which 'ou have to use to re.er to it in 'our pro$rams DD is *'stem.out. Ghe variable *'stem.out re.ers to an ob%ect& and that ob%ect in turn contains a subroutine named print. Ghe compound identi.ier *'stem.out.print re.ers 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 in.ormation can be printedJ an' ob%ect o. t'pe Print*tream has a print subroutine that can be used to send in.ormation to that destination. Ghe ob%ect *'stem.out is %ust one possible destination& and *'stem.out.print is the subroutine that sends in.ormation to that particular destination. )ther ob%ects o. t'pe Print*tream mi$ht send in.ormation to other destinations such as .iles or across a network to other computers. Ghis is ob%ectDoriented pro$rammin$: 0an' di..erent thin$s which have somethin$ in common DD the' can all be used as destinations .or in.ormation DD can all be used in the same wa' DD throu$h a print subroutine. Introduction to Pro$rammin$ Psin$ #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 arc4i(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 tecladoEnew *canner2*'stem.in3J
Gcanner cuenta con metodo !ue reultaran utile# entre ello etan: teclado.ne"t@B II lee la iguiente linea# y lo almacena como cadena de caractere teclado.ne"tInt@BJ IIlee el iguiente numero# lo almacena como int en cao de !ue no e a int# mandara un menaje de error: teclado.ne"tDouble@BJ II .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 re.erencia 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 #DV 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 ditribucinB de modo !ue el cdigo !ue e conigue una (entaja en rendimiento ubtancial &rente a muc4o 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 etrec4amente 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 2Pna !PI de alto nivel para pro$ramacin $r:.ica en @D3 #HI 2#ava Hative Inter.ace3 #*P 2#ava*erver Pa$es3 #0" 2#ava 0edia "ramework3 Beans E#B 2Enterprise #ava Beans3
4a 0:1uina 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 programacin baado en (irtuali)acin. .o anterior igni&ica !ue el cdigo !ue e ecribe en -a(a puede er ejecutado in importar el 4ardKare donde e encuentre @-a(a e ejecuta e"actamente igual en un celular o en un er(idor... el cdigo no cambiaB. -OP igni&ica Q-a(a Oirtual Pac4ine C P'!uina Oirtual de -a(aQ. *te programa $ e ditinto en cada 4ardKare @a4ora $: la -OP de un celular e muy ditinta a la -OP en un er(idorB y (ar$a eg/n el 4ardKare# itema operati(o# etc3tera. Hero u miin e la mima: ejecutar cdigo ja(a. De eta &orma# cuando uno ecribe un programa en -a(a# el QcompiladorQ con(ierte dic4o cdigo en cdigo binario @QbytecodeQ lo llaman. Un arc4i(o Q.claQ generado por un compilador -a(a e un arc4i(o QbytecodeQB m' dic4o cdigo no e cdigo m'!uina directamente @no puede er ejecutado por un computador directamenteB ino e cdigo Qlito para ejecutarQ. -I2 @-utCinC2imeB e el compilador !ue toma QbytecodeQ y lo con(ierte en cdigo m'!uina# para ejecutarlo. *to lo 4ace en Qtiempo realQ. Hor upueto# cada -I2 e ditinto en cada computador# y 3to 4ace parte de la -OP# a$ !ue en realidad el programador nunca conoce -I2...
%ada int3rprete -a(a e una implementacin de la P'!uina Oirtual -a(a @-OPB. .o bytecode poibilitan el objeti(o de QKrite once# run anyK4ereQ# de ecribir el programa una (e) y !ue e pueda correr en cual!uier plata&orma !ue diponga de una implementacin de la -OP. 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 Oirtual -a(a !ue ir(e para ejecutarlo. %omo (emo en la &igura# el AHI de -a(a y la P'!uina Oirtual -a(a &orman una capa intermedia @-a(a plat&ormB !ue a$la el programa -a(a de la epeci&icidade del 4ardKare @4ardKareCbaed plat&ormB.
.a P'!uina Oirtual -a(a @-OPB e el entorno en el !ue e ejecutan lo programa -a(a# u miin 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 int3rprete -a(a epec$&ico ejecuta la intruccione !ue e guardan en lo arc4i(o cuya e"tenin e .cla. .a tarea principale de la -OP 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 4u3ped para cierta &uncione# como lo acceo a lo dipoiti(o. Oigilar 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 -OP. 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 ejecucin del programa Mo 4ay manera de manipular de &orma directa lo puntero .a -OP getiona autom'ticamente el uo de la memoria# de modo !ue no !ueden 4ueco. Mo e permiten reali)ar cierta con(erione @catingB entre ditinto tipo de dato.
-a(a e un lenguaje de programacin orientado a objeto puro# en el entido de !ue no 4ay ninguna (ariable# &uncin o contante !ue no et3 dentro de una clae. Ge accede a lo miembro dato y la &uncione miembro a tra(3 de lo objeto y de la clae. Hor ra)one de e&iciencia# e 4an coner(ado lo tipo b'ico de dato# int# &loat# double# c4ar# etc# imilare a lo del lenguaje %I%11. .o tipo de programa m' comune !ue e pueden 4acer 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 -OPB. 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 de.ine un !PI para @D& para los servidores& tele.on(a& reconocimiento de vo5& etc.
Gipos primitivos de #ava 4lamamos tipos primitivos de un len$ua%e cuando hablamos de tipos de datos 'a de.inidos 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 bacUpace# borra a la i)!uierda Tr return# repreenta el car'cter epecial *MOIO T& &orm &eed TT e el car'cter bacUla4 TV comilla TQ comilla
Ejemplo 4eclaraci1n de 5ariables 4eclaraci1n de una 'ariable como un entero int 'ariable1G int 'ariable2G int 'ariable$G 4eclaraci1n de 'ariables y asignaci1n de 'alores en una lnea int 'ariable1 = 1000, 'ariable2 = 2, 'ariable$G 4eclaraci1n de 'ariables tipo teto c.ar 'ariable G -on tama;o )ijo de caracteres: c.ar 'ariable+1!,G -on asignaci1n de 'alor c.ar 'ariable = HaH G