Prof: Luis Snchez Breve historia Hace algunos aos Sun !icros"ste#s decidi intentar introducirse en el #ercado de la electrnica de consu#o " desarrollar $rogra#as $ara $e%ueos dis$ositi&os electrnicos' (ras un co#ienzo inesta)le Sun decidi crear una filial deno#inada FirstPearson Inc' $ara %ue fuera la res$onsa)le del $ro"ecto' *nicial#ente los desarrollos esta)an dirigidos a los e%ui$os do#+sticos: #icroondas tostadoras " funda#ental#ente tele&isin interacti&a' ,e)ido a la falta de ha)ilidad de los usuarios $ara el #anejo de estos dis$ositi&os la fia)ilidad del cdigo " la facilidad de desarrollo' Ja#es Gosling decidi %ue las &entajas a$ortadas $or -.. no co#$ensa)an el gran costo de $rue)as " de$uracin' /ste a su &ez desarrolla)a un lenguaje de $rogra#acin lla#ado 0A1 el cual $artiendo de -.. intenta)a e&itar las deficiencias %ue i)a o)ser&ando' Para Gosling los siste#as desarrollados en - o -.. de)an ser co#$ilados $ara una ar%uitectura " si se ca#)ia)a la ar%uitectura todo el soft2are de)era co#$ilarse de nue&o' /sto encarece #ucho los desarrollos3 $or tanto Gosling decidi #ejorar las caractersticas de 0A1 " utilizarlo' /l uso de este lenguaje se a$lic a un $ro"ecto lla#ado Green el cual consista en un siste#a de control co#$leto de los a$aratos electrnicos " el entorno de un hogar' Para ello se constru"o un co#$utador e4$eri#ental deno#inado 56 7star se&en83 $osterior#ente se a$lico a otro $ro"ecto deno#inado V0, 7Video on ,e#and8 en el %ue se e#$lea)a $ara interfaz de la tele&isin interacti&a' 9inguno de estos $ro"ectos se con&irti nunca en un siste#a co#ercial $ero fueron desarrollados en lo %ue se conoce co#o Ja&a $ri#iti&o' ,e)ido a estas circunstancias en :;;< FirstPearson Inc cierra sus $uertas' 2 Pero fue =ill Joe cofundador de Sun %uien reto#o el $ro"ecto de A01 " tras ciertos ca#)ios en el diseo " no#)res nace JAVA el cual fue $resentado en :;;>' Caractersticas Las caractersticas $rinci$ales %ue nos ofrece JAVA son las siguientes: Simple Ja&a ofrece toda la funcionalidad de un lenguaje $otente $ero sin to#ar en cuenta las caractersticas confusas de estos $or eje#$lo Ja&a $uede ser co#$ilado en cual%uier ar%uitectura " )ajo cual%uier siste#a o$erati&o3 #ientras %ue se de)e ada$tar al siste#a o$erati&o " ar%uitectura del co#$utador' Ja&a e&ita en un >?@ el #anejo de a$untadores referencias a #e#orias 7t"$edef struct Adefine8' Orientado a objeto Ja&a i#$le#enta la tecnologa de -.. $ero con algunas #ejoras " #anteniendo la si#$licidad del lenguaje' (ra)aja sus datos co#o o)jetos " con interfaces a esos o)jetos' So$orta las tres caractersticas $rinci$ales de la P00' /nca$sula#iento herencia " $oli#orfis#o' Distribuido Ja&a fue creado $ara el entorno distri)uido de internet "a %ue gestiona los $rotocolos de intercone4in (-PB*P' /sta caracterstica $er#ite a los $rogra#adores acceder a la infor#acin a tra&+s de la red' (a#)i+n $ro$orciona li)reras " herra#ientas $ara %ue los $rogra#as $uedan ser distri)uidos es decir %ue se ejecuten en &arias #%uinas interactuando entre s' Robusto Ja&a realiza &erificaciones en )usca de $ro)le#as tanto en tie#$o de ejecucin co#o en tie#$o de co#$ilacin' La co#$ro)acin a"uda a detectar errores los antes $osi)les o)liga a la declaracin e4$lcita de #+todos' !aneja la #e#oria $ara eli#inar las $reocu$aciones $or $arte del $rogra#ador' Ade#s $ara asegurar el funciona#iento de la a$licacin realiza una &erificacin de los )"tesC codes %ue son el resultado de la co#$ilacin de un $rogra#a en ja&a 3 Arquitectura neutral o ultiplata!orma Para esta)lecer Ja&a co#o $arte integral de la red el co#$ilador Ja&a co#$ila su cdigo a un fichero o)jeto de for#ato inde$endiente de la ar%uitectura de la #%uina en %ue se ejecutar' -ual%uier #%uina %ue tenga el siste#a de ejecucin 7run ti#e8 $uede ejecutar ese cdigo o)jeto sin i#$ortar en #odo alguno la #%uina en %ue se ha"a generado' Interpretado Ja&a $er#ite la creacin de $rogra#as %ue se $ueden ejecutar en diferentes $latafor#as $or #edio de la co#$ilacin en una re$resentacin inter#edia lla#ada cdigo )"tecode' /ste cdigo $uede ser inter$retado en cual%uier siste#a %ue tenga un int+r$rete Ja&a' /l )"tecode fue cuidadosa#ente diseado $ara %ue fuera fcil traducirlo al cdigo nati&o " $oder conseguir as un rendi#iento alto !ultithreaded 7#ultiflujo o #ultihilo8 Ja&a $er#ite #uchas acti&idades si#ultneas en un $rogra#a' Los threads son )sica#ente $rocesos o $iezas inde$endientes de un gran $roceso' /l )eneficio de ser #ultithreaded consiste en #ejor rendi#iento interacti&o " #ejor co#$orta#iento en tie#$o real' Din"mico Ja&a se )eneficia todo lo $osi)le de la tecnologa orientada a o)jeto' Ja&a no intenta conectar todos los #dulos %ue co#$renden una a$licacin hasta el tie#$o de ejecucin' Las li)reras nue&as o actualizadas no $aralizarn las a$licaciones actuales 7sie#$re %ue #antengan el a$i anterior8 Ja&a $ara e&itar %ue los #dulos de )"teCcodes o los o)jetos o nue&as clases ha"a %ue estar tra"+ndolos de la red cada &ez %ue se necesiten i#$le#enta las o$ciones de $ersistencia $ara %ue no se eli#inen cuando se li#$ie la cache de la #%uina' #elocidad Los $rogra#as en ja&a no tienden hacer #u" r$idos de)ido a %ue co#o es un lenguaje inter$retad no alcanza la &elocidad %ue un ejecuta)le' 4 $A %&'I(A #IR)'A$ D* +A#A ,+#- /s un entorno de ejecucin $ara a$licaciones JAVA cu"a finalidad es la de ada$tar los $rogra#as Ja&a co#$ilados a las caractersticas del siste#a o$erati&o donde se &an a ejecutar' *DICIO(*S D* +A#A /l entorno de ja&a se caracteriza $or dis$oner de un a#$lio conjunto de $a%uetes de clases $ara la realizacin de las a$licaciones' /ste gru$o de clases se organiza en tres grandes ediciones Ja&a' +.S* ,+ava . *st"ndar *dition-/ /sta confor#ado $or los $a%uetes de uso general es decir a%uellos %ue se usan en cual%uier a$licacin3 co#o son trata#iento de cadenas colecciones acceso a datos entornos grficos " a$licaciones $ara na&egadores internet' +.** ,+ava *nterprise *dition-/ Pro$orciona los $a%uetes " tecnologas necesarias $ara la creacin de a$licaciones e#$resariales #ultica$a entre ellas las a$licaciones %ue se &an a ejecutar en entorno 2e)' COD.FUENTE BYTE-CODES JVM LINUX JVM OTRO JVM WINDOWS S.O. WINDOWS S.O. LINUX OTRO S.O PROGRAMA ORIGINAL EN JAVA .jaa COMPILACI!N PROGRAMA OBJETO ."#a$$ COD.FUENTE BYTE-CODES JVM LINUX JVM OTRO JVM WINDOWS S.O. WINDOWS S.O. LINUX OTRO S.O PROGRAMA ORIGINAL EN JAVA .jaa COMPILACI!N PROGRAMA OBJETO ."#a$$ EJECUCI!N % +.* ,+ava . icro *dition-/ /sta edicin inclu"e una serie de $a%uetes " es$ecificaciones %ue $osi)ilitan la creacin de a$licaciones Ja&a ejecuta)les en dis$ositi&os electrnicos de ca$acidad li#itada' +ava Development 0it ,+D0- /ste Dit de desarrollo $ro$orciona el conjunto de herra#ientas )sico $ara el desarrollo de a$licaciones con Ja&a estndar' I()*1RA)*D D*#*$OP*() *(#IRO(*() ,ID*- /s un entorno de $rogra#acin %ue ha sido e#$a%uetado co#o un $rogra#a de a$licacin es decir consiste en un editor de cdigo un co#$ilador un de$urador " un constructor de interfaz grfica 7GE*8' Los *,/s $ueden ser a$licaciones $or s solas o $ueden ser $arte de a$licaciones e4istentes' /ntre los entornos de $rogra#acin dedicados a la $rogra#acin en Ja&a tene#os: 9et=eans' J)uilder Jde&elo$er /cli$se Jgras$ Jcreator '' Pro2ramaci3n Orientada a Objetos ,POO o OOP- -onsiste en una coleccin de o)jetos %ue se crean interactFan entre s " e&entual#ente desa$arecen cuando "a no son Ftiles' Orientado a objeto/ significa %ue el soft2are se organiza co#o una coleccin de o)jetos %ue contienen estructuras de datos con un #is#o co#$orta#iento' Objeto/ es algo %ue tiene sentido en el conte4to de la a$licacin' /s un conce$to a)straccin o cosa con l#ites )ien definidos " con significado a efectos del $ro)le#a %ue se tenga en #ano' Los o)jetos tienen dos $ro$sitos: $ro#o&er la co#$rensin del #undo real " $ro$orcionar una )ase $rctica $ara la i#$le#entacin $or co#$utadora' Caractersticas de los objetos Identidad3 indica %ue los datos estn cuantificados en entidades discretas " distingui)les deno#inadas o)jetos Clasi!icaci3n: significa %ue los o)jetos con la #is#a estructura de datos " co#$orta#iento se agru$an $ara for#ar una clase & Clase/ Las clases son declaraciones de o)jetos ta#)i+n se $odran definir co#o a)stracciones de o)jetos' /sto %uiere decir %ue la definicin de un o)jeto es la clase' -uando $rogra#a#os un o)jeto " defini#os sus caractersticas " funcionalidades en realidad lo %ue esta#os haciendo es $rogra#ar una clase'' 4todo/ es una funcin u o$eracin %ue se $uede a$licada $or los o)jetos de una clase Atributo/ re$resentan los datos asociados al o)jeto o lo %ue es lo #is#o sus $ro$iedad des o caractersticas' Los atri)utos " sus &alores en un #o#ento dado deter#inan el estado de un o)jeto. Caractersticas principales de la POO *ncapsulaci3n/ La enca$sulacin es un #ecanis#o %ue consiste en organizar datos " #+todos de una estructura conciliando el #odo en %ue el o)jeto se i#$le#enta es decir e&itando el acceso a datos $or cual%uier otro #edio distinto a los es$ecificados' Por lo tanto la enca$sulacin garantiza la integridad de los datos %ue contiene un o)jeto' 5erencia: consiste en co#$artir atri)utos " #+todos entre las clases to#ando co#o )ase una relacin jerr%uica' /je#$lo: Asu#a %ue tene#os una clase GPersonaG con los #+todos " $ro$iedades )sicas de una o)jeto $ersona co#o $odran ser Gca#inarG o Gha)larG $odra#os tener otras clases co#o GGuiller#oG o GPedroG %ue co#$arten todas las caractersticas de una GPersonaG $ero %ue aaden caractersticas $ro$ias' Por lo %ue GGuiller#oG " GPedroG $ueden realizar las #is#as funciones %ue $uede realizar una GPersonaG " ade#s cada una $uede realizar las su"as $ro$ias $or eje#$lo GGuiller#oG sa)e nadar $ero GPedroG no " GPedroG sa)e )ailar reggeton $ero GGuiller#oG no' Polimor!ismo: el $oli#orfis#o se refiere a la ca$acidad $ara %ue &arias clases deri&adas de una antecesora utilicen un #is#o #+todo de for#a diferente' /je#$lo: ' Su$onga las siguientes clases Pez " A&e %ue heredan de la su$erclase Ani#al' La clase Ani#al tiene el #+todo a)stracto mover %ue se i#$le#enta de for#a distinta en cada una de las su)clases 7$eces " a&es se #ue&en de for#a distinta8' Introducci3n al len2uaje de pro2ramaci3n +ava Sinta6is B"sica Lenguaje sensi)le a #a"Fsculas " #inFsculas lo %ue %uiere decir %ue hace distincin entre #a"Fsculas " #inFsculas no es lo #is#o escri)ir /,A, %ue /dad Las lneas de sentencias finalizan en el carcter H7I Los )lo%ues de sentencias se deli#itan entre lla&es H8H a)re un )lo%ue de sentencia H9I cierra un )lo%ue de sentencias Comentarios /n ja&a e4isten tres #aneras de declarar los co#entarios -o#entarios de una lnea &an $recedido $or los caracteres H::I -o#entarios #ultilneas los cuales se inician con los caracteres H:;I " finalizan con los caracteresI;:I -o#entarios de docu#entacin se inician con los caracteres H:;;I " finalizan con los caracteres H;:'I /stos co#entarios a diferencias de los dos anteriores se al#acenan en un docu#ento ja&a'doc generado $or ja&a auto#tica#ente cuando se utiliza esta herra#ienta' Palabras reservadas Son todas a%uellas $ala)ras cla&es definidas en Ja&a " %ue no se $ueden utilizar co#o identificadores' Por eje#$lo: a)stract continue for ne2 s2itch $acDage'' Identi!icadores Los identificadores son los no#)res %ue se le dan a las &aria)les funciones constantes clases " o)jetos Re2las para crear los identi!icadores ,e)en co#enzar $or una letra o su)ra"ado Pueden contener &alores nu#+ricos /l Fnico s#)olo es$ecial %ue se usa es el su)ra"ado ( 9o de)e lle&ar es$acios en )lanco 9o de)e ser el no#)re de una $ala)ra reser&ada /n Ja&a e4isten reglas $ara deter#inar cuando un identificador es una clase &aria)le constante o #+todo' /stas son las siguientes: Los no#)res de &aria)les " #+todos co#ienzan con #inFsculas' Si se trata de un no#)re co#$uesto cada $ala)ra e#$ieza con #a"Fscula no se utiliza el carcter su)ra"ado' /je#$los: n nu#ero nu#ero,e/le#entos $onValor escri)e(itulo sueldo9eto' Los no#)res de clases sie#$re co#ienzan con #a"Fscula' Si se trata de no#)res co#$uestos cada $ala)ra se inicia con #a"Fsculas no se utiliza el carcter su)ra"ado' /je#$los: Volu#en-ilindro Alu#no Progra#a,ePrue)a' Los no#)res de constantes se escri)en con #a"Fscula si es un no#)re co#)inado se utiliza el carcter su)ra"ado' /je#$lo: P* (A!AJ0K!AL*!0' *structura de un Pro2rama en +A#A $u)lic class 9o#)re,e-lase M $u)lic static &oid #ain 7StringN O args8 M sentencias3 P P *lementos del $en2uaje +ava )ipos de datos primitivos (oda la infor#acin %ue #aneja ja&a se re$resenta $or un o)jeto o un ti$o de dato )sico' Ja&a so$orta los ocho ti$os de datos $ri#iti&os int short long )"te char float dou)l+ " )oolean' ) /ntre estos ocho ti$os de datos no se encuentran los %ue re$resentan una cadean 7String8 el #oti&o es %ue en ja&a estas se tratan #ediante o)jetos de la clase String' Los ti$os de datos $ri#iti&os se agru$an en cuatro: *nteros (i$o /s$acio en #e#oria en )"tes Qango ="te : C:RS a :R6 Short R CTR6US a TR6U6 *nt < CR:<6<STU<S a R:<6<STU<6 long S C;RR::6?TUS><66>S?S a;RR::6?TUS><66>S?S Reales (i$o /s$acio en #e#oria en )"tes Qango float < .CT'<?RSRT<6e.TS a .C:'<?RT;S dou)le S .C:'6;6U;T:T<SURRT:>6?eT?S a <';<?U>U<>S<:R<U><<eCTR< -arcter (i$o /s$acio en #e#oria en )"tes -har R Lgicos (i$o Valor $or defecto Qango =oolean false (rue o false #ariables /s un es$acio de #e#oria donde un $rogra#a $uede al#acenar un dato %ue $uede ca#)iar durante el $roceso de ejecucin' Declaraci3n de las variable Sinta4is 1* ti$oKdeKdato no#)re,eVaria)le3 o ti$oKdeKdato no#)re,eVaria)leV&alorinicial3 Constantes Son $osiciones de #e#orias referenciadas $or un no#)re %ue no ca#)ian su &alor durante el $roceso de ejecuci' Declaraci3n de las constantes Sinta4is final ti$odedato 90!=Q/K,/K-09S(A9(/V&alor3 0$eradores Aritmeticos 0$erador Qesultado . Su#a C Qesta o unario 5 !ulti$licacin B ,i&isin 7si se a$lica a un ti$o entero el resultado ser la $arte entera de la di&isin8 @ !odulo o resto Asi2naci3n 0$erador Qesultado .V Su#a " asignacin AVA.> A.V> CV Qesta " asignacin AVACR ACVR 5V !ulti$licacin " asignacin AVA5< A5V< BV ,i&isin " asignacin AVABT ABVT @V Qesto " asignacin AVa@R A@VR Incremento < decremento 0$erador Qesultado .. *ncre#ento si es ..A ser $re incre#ento " en el caso de %ue sea A.. significa $ost incre#ento CC ,ecre#ento ..A ser $re decre#ento " en el caso de %ue sea A.. significa $ost decre#ento 11 Relacionales 0$erador Qesultado VV *gual %ue !V ,iferente de W !a"or %ue X !enor %ue WV !a"or o igual XV !enor o igual $32icos 0$erador Qesultado YY And en cortocircuito ZZ 0r en cortocircuito ! 9ot [ Lo 7or e4clusi&o8r Y And lgico Z 0r lgico Precedencia de los Operadores 7 8 .. CC ! 5 B @ . C W W WV XV VV Y [ Z YY ZZ V Secuencias de escape ,=- \]) Qetroceso ]n Salto de lnea ]t (a)ulacin horizontal ]] =arra ] ]^ -o#illa si#$le 12 ]^^ -o#illa do)le 13 *structuras de control en +ava *structuras condicional/ son a%uellas %ue $er#iten ejecutar una serie de instrucciones segFn el &alor arrojado $or una e4$resin relacional o lgica> /ntre ellas tene#os: Simple: /n este caso se &alida la e4$resin relacional o lgica " si esta es &erdadera se ejecutan las instrucciones corres$ondiente3 " el $rogra#a continuara con las siguientes lneas de instruccin' if 7condicion8 M sentencias a ejecutar3 P Doble/ /n este caso se &alida la e4$resin relacional o lgica " si esta es &erdadera se ejecutan las instrucciones corres$ondiente3 " si es falsa se ejecutaran el otro gru$o de instrucciones' Por a#)os casos el $rogra#a continuar con las siguientes lneas de instruccin I! ,condicion8 M sentencias a ejecutar si la condicion es &erdadero3 P else M sentencias a ejecutar si la condicion es falsa3 P Selecci3n ?ltiple/ /sta estructura nos $er#ite ejecutar una serie de instrucciones segFn se cu#$la una de las condiciones $reesta)lecidas " luego continuar con las siguientes instrucciones del $rogra#a' Caso @/ i! ,condicion- M sentencias a ejecutar si la condicion es &erdadero3 P 14 else i! ,condicion@- M sentencias a ejecutar si la condicion: es &erdadero3 P else i! ,condicion.- M sentencias a ejecutar si la condicionR es &erdadero3 P *lseM sentencias a ejecutar si ninguna de las condiciones son &erdadero P -aso R: sAitch,e6pression-M case @:M sentencias a ejecutar si el &alor de la e4$resin es :3 )reaD3 P case .:M sentencias a ejecutar si el &alor de la e4$resin es R3 )reaD3 P case B:M sentencias a ejecutar si el &alor de la e4$resin es T3 )reaD3 P de!ault:M sentencias a ejecutar si el &alor no corres$onde a ninguna de las anteriores3 )reaD3 P P La sentencia )reaD indica en esta estructura %ue el $rogra#a de)e continuar al final de la estructura s2itch o sea en la siguiente lnea de instruccin des$u+s de la estructura s2itch' 1% 0tra for#a de i#$le#entar estructuras #Flti$les es a tra&+s de la anidacin de estructuras if " sus diferentes co#)inaciones' I! ,condicion8 M sentencias a ejecutar si la condicion es &erdadero3 P else M I! ,condicion@8 M sentencias a ejecutar si la condicion: es &erdadero3 P
else M i! ,condicion.- M sentencias a ejecutar3 P P P *structuras iterativas:cclicas:bucles:laCos/ son estructuras %ue nos $er#iten re$etir infinitas &eces o hasta %ue se cu#$la una condicin una serie de instrucciones' *structura Ahile / esta estructura re$ite el ciclo #ientras la condicin e&aluada sea &erdadera en este $ri#er caso se de)e forzar a %ue la condicin se cu#$la la $ri#era &ez $ara $oder entrar al ciclo iterati&o' *nicializacin _hile7condicion8M Sentencia: SentenciaR SentenciaT incre#ento 1& P *structura do:Ahile / esta estructura re$ite el ciclo #ientras la condicin e&aluada sea &erdadera en este segundo caso $ode#os o)ser&ar %ue $or lo #enos la estructura ejecuta las instrucciones antes de ser &alidada3 o sea $or lo #enos ejecuta el ciclo una &ez' *nicializacin do M Sentencia: SentenciaR SentenciaT incre#ento P 2hile7condicion8 /jercicios :' ,esarrolle un $rogra#a en Ja&a %ue $er#ita deter#inar si un nF#ero al#acenado en una &aria)le es $ar o i#$ar' R' ,esarrolle un $rogra#a en Ja&a %ue $er#ita deter#inar el no#)re del da de la se#ana si en una &aria)le se asigna un &alor del : al 6 T' ,esarrolle un $rogra#a en Ja&a %ue $er#ita deter#inar si un nF#ero al#acenado en una &aria)le es $ar o i#$ar' <' ,esarrolle un $rogra#a en Ja&a %ue $er#ita deter#inar la su#a de los nF#eros co#$rendido entre : " T?' >' ,esarrolle un $rogra#a en Ja&a %ue $er#ita deter#inar la su#a de los nF#eros $ares " la su#a de los nF#eros i#$ares co#$rendidos entre : " >? U' ,esarrolle un $rogra#a en Ja&a %ue $er#ita calcular el rea de un triangulo rectngulo circulo' Partiendo de un #enF $rinci$al3 asu#a %ue los &alores "a estn cargados en #e#oria 1' 6' ,esarrolle un $rogra#a en Ja&a %ue $er#ita deter#inar la cantidad de $ersonas %ue estn entre :>CR? aos entre R? " T? entre T? ">? " #a"ores a >? de un rango de datos estudiados %ue &an de :> a S? &alores