You are on page 1of 20

Centro de Informtica

UNMSM

INTRODUCCION A JAVA Java surgi en 1991 cuando un grupo de ingenieros de Sun Microsystems trataron de disear un nuevo lenguaje de programacin destinado a electrodomsticos. La reducida potencia de clculo y memoria de los electrodomsticos llev a desarrollar un lenguaje sencillo capaz de generar cdigo de tamao muy reducido. e!ido a la e"istencia de distintos tipos de #$%s y a los continuos cam!ios& era importante conseguir una 'erramienta independiente del tipo de #$% utilizada. esarrollaron un cdigo (neutro) *ue no depend+a del tipo de electrodomstico& el cual se ejecuta!a so!re una (m*uina 'ipottica o virtual) denominada Java ,irtual Mac'ine -J,M.. /ra la J,M *uien interpreta!a el cdigo neutro convirtindolo a cdigo particular de la #$% utilizada. /sto permit+a lo *ue luego se 'a convertido en el principal lema del lenguaje0 (1rite 2nce& 3un /very4'ere). 5 pesar de los es6uerzos realizados por sus creadores& ninguna empresa de electrodomsticos se interes por el nuevo lenguaje. #omo lenguaje de programacin para computadores& Java se introdujo a 6inales de 1997. La clave 6ue la incorporacin de un intrprete Java en la versin 8.9 del programa :etscape :avigator& produciendo una verdadera revolucin en ;nternet. Java 1.1 apareci a principios de 199<& mejorando sustancialmente la primera versin del lenguaje. Java 1.8& ms tarde re!autizado como Java 8& naci a 6inales de 199=. 5l programar en Java no se parte de cero. #ual*uier aplicacin *ue se desarrolle se apoya en un gran n>mero de clases pree"istentes. 5lgunas de ellas 'ec'as por el propio usuario& otras pueden ser comerciales& pero siempre 'ay un n>mero muy importante de clases *ue 6orman parte del propio lenguaje -el 5$; o 5pplication $rogramming ;nter6ace de Java.. Java incorpora en el propio lenguaje muc'os aspectos *ue en cual*uier otro lenguaje son e"tensiones propiedad de empresas de so6t4are o 6a!ricantes de ordenadores -t'reads& ejecucin remota& componentes& seguridad& acceso a !ases de datos& etc... Por eso Java es el lenguaje ideal para aprender la infor !"i#a oderna & por*ue incorpora todos estos conceptos de un modo estndar& muc'o ms sencillo y claro *ue con las citadas e"tensiones de otros lenguajes. /sto es consecuencia de 'a!er sido diseado ms recientemente y por un >nico e*uipo.

Durand Flores, Carlos Enrique

Java Bsico

Centro de Informtica

UNMSM

/l principal o!jetivo del lenguaje Java es llegar a ser el (ne"o universal) *ue conecte a los usuarios con la in6ormacin& est sta situada en el ordenador local& en un servidor de 1e!& en una !ase de datos o en cual*uier otro lugar. $%U& '( JAVA) Java es un lenguaje de progra lenguaje Java como si ul"i"area y din! i#o+ a#i*n uy #o ple"o+ La compa+a Sun descri!e el ple, orien"ado a o-je"os, dis"ri-uido, in"erpre"ado,

ro-us"o, seguro, de ar.ui"e#"ura neu"ra, por"a-le, de al"as pres"a#iones,

Los programas desarrollados en Java presentan diversas ventajas 6rente a los desarrollados en otros lenguajes como #?#@@. La ejecucin de programas en Java tiene muc'as posi!ilidades0 ejecucin como aplicacin independiente -StandAalone 5pplication.& ejecucin como applet& ejecucin como servlet& etc. %n applet es una aplicacin especial *ue se ejecuta dentro de un navegador o !ro4ser -por ejemplo :etscape :avigator o ;nternet /"plorer. al cargar una pgina BCML desde un servidor 1e!. /l applet se descarga desde el servidor y no re*uiere instalacin en el ordenador donde se encuentra el !ro4ser. %n servlet es una aplicacin sin inter6ace gr6ica *ue se ejecuta en un servidor de ;nternet. La ejecucin como aplicacin independiente es anloga a los programas desarrollados con otros lenguajes. 5dems de incorporar la ejecucin como 5pplet& Java permite 6cilmente el desarrollo tanto de ar*uitecturas clienteAservidor como de aplicaciones distri!uidas& consistentes en crear aplicaciones capaces de conectarse a otros ordenadores y ejecutar tareas en varios ordenadores simultneamente& repartiendo por lo tanto el tra!ajo. 5un*ue tam!in otros lenguajes de programacin permiten crear aplicaciones de este tipo& Java incorpora en su propio 5$; estas 6uncionalidades. CARACT'R/(TICA(0 (i ple+ 26rece la 6uncionalidad de un lenguaje potente pero sin las caracter+sticas

menos usadas y ms con6usas de stos. /l ejemplo ms claro puede ser el recolector de !asura& *ue evita *ue andemos preocupndonos de li!erar memoria. 2tro ejemplo podr+a ser la supresin de los punteros.

Durand Flores, Carlos Enrique

Java Bsico

Centro de Informtica 1enguaje de o-je"os+ D$or *u EdeE o!jetos y no Eorientado aE o!jetosF

UNMSM

$or *ue& al contrario de otros e 'ec'o& C2 2

lenguajes como #@@& no es un lenguaje modi6icado para poder tra!ajar con o!jetos sino *ue es un lenguaje creado para tra!ajar con o!jetos desde cero. orientacin a o!jetos0 encapsulacin& 'erencia y polimor6ismo. Dis"ri-uido. $roporciona las li!rer+as y 'erramientas necesarias para *ue las aplicaciones puedan ser distri!uidas. Se 'a desarrollado con e"tensas capacidades de intercone"in a red y soporta varios protocolos de red. Ro-us"o. 3ealiza variadas compro!aciones tanto en tiempo de compilacin como de ejecucin. /ntre ellas podemos mencionar la compro!acin de tipos y la compro!acin de l+mites de arrays. Por"a-le. /sto no se re6iere a la independencia de la plata6orma& si no a la porta!ilidad en cuanto a desarrollo. $or ejemplo& los enteros son siempre enteros de G8 !its en complemento a 8& con independencia de la plata6orma. 2ul"ipla"afor a. #omo mencionamos antes& no es necesario recompilar las lo *ue 'ay en Java son o!jetos. Java soporta las tres caracter+sticas !sicas de la

aplicaciones Java para los distintos sistemas en *ue van a ser e"plotadas. 2ul"i3ilo. $ermite m>ltiples 'ilos de ejecucin& es decir& muc'as actividades simultneas dentro del mismo programa. Las ventajas de esto son un mejor rendimiento interactivo -el usuario no perci!e tanto la ocupacin de la m*uina. y un mejor comportamiento en tiempo real -aun*ue sea algo muy limitado por el sistema operativo.. Din! i#o. #uando una aplicacin se lanza& no se cargan todas las li!rer+as *ue

re*uiere& sino *ue la carga es !ajo demanda. Las li!rer+as nuevas o actualizadas no paralizarn las aplicaciones en 6uncionamiento.

Durand Flores, Carlos Enrique

Java Bsico

Centro de Informtica 4UNDA2'NTO( POO

UNMSM

/n la vida real podemos o!servar *ue estamos rodeados de o!jetos& por ejemplo una mesa& una silla& un !ol+gra6o& etc. y todos ellos podr+an clasi6icarse -con mayor o menor detalle. atendiendo a una de6inicin. 5dems& sa!emos *ue a pesar de e"istir muc'os tipos de mesas& todas ellas tienen unas caracter+sticas comunes. /n de6initiva& es posi!le concluir *ue pueden 'acerse dos distinciones0 $or una parte tenemos el concepto de lo *ue es una mesa. $or otra parte tenemos mesas concretas.

/sta idea 6ue trasladada a la in6ormtica y surgieron los conceptos de clase y o!jeto. $odemos decir *ue una clase es un concepto so!re una entidad a!stracta *ue de6ine cmo sern todos los o!jetos *ue e"istan de ese tipo. $or tanto& un o!jeto es una concrecin mientras *ue una clase es una a!straccin. Si trasladamos la de6inicin anterior a la jerga tcnica in6ormtica& podemos decir *ue una clase es un prototipo *ue de6ine las propiedades y los mtodos comunes a m>ltiples o!jetos de un mismo tipo. Ser+a como una plantilla para la creacin de o!jetos. $or su parte& un o!jeto es un conjunto de propiedades y mtodos capaces de manipular dic'as propiedades.

Objetos en el Mundo Real

Durand Flores, Carlos Enrique

"

Java Bsico

Centro de Informtica

UNMSM

PRO5RA2ACI6N ORI'NTADA A O7J'TO( /s un paradigma de programacin *ue de6ine los programas en trminos de Eclases de o!jetosE& La programacin orientada a o!jetos -$22.& e"presa un programa como un conjunto de estos o!jetos& *ue cola!oran entre ellos para realizar tareas. /sto permite 'acer los programas y mdulos ms 6ciles de escri!ir& mantener y reutilizar. La $22 'ace *ue los pro!lemas sean ms sencillos& al permitir dividir el pro!lema. /st divisin se 'ace en o!jetos& de 6orma *ue cada o!jeto 6uncione de 6orma totalmente independiente. %n o!jeto es un elemento del programa *ue posee sus propios datos y su propio 6uncionamiento. /s decir un o!jeto est 6ormado por datos - propiedades. y 6unciones *ue es capaz de realizar el o!jeto 8"odos..

$odemos decir *ue un lenguaje est orientado a o!jetos si soporta o!jetos como una caracter+stica 6undamental del mismo. $ero& D*u signi6ica soportar o!jetosF Hundamentalmente consiste en *ue el lenguaje permita las siguientes caracter+sticas0 /ncapsulacin& Berencia& $olimor6ismo. $%U& (ON 1A( C1A('() Las clases son las plantillas para 'acer o!jetos. %na clase sirve para de6inir una serie de o!jetos con propiedades -atri!utos.& comportamientos -operaciones o mtodos.& y semntica comunes. Bay *ue pensar en una clase como un molde. 5 travs de las clases se o!tienen los o!jetos en s+. /s decir antes de poder utilizar un o!jeto se de!e de6inir la clase a la *ue pertenece& esa de6inicin incluye0 (us a"ri-u"os+ /s decir& los datos miem!ros de esa clase. Los datos pueden ser p>!licos -accesi!les desde otra clase. o privados -slo accesi!les por cdigo de su propia clase. Cam!in se las llama campos. (us 8"odos+ Las 6unciones miem!ro de la clase. Son las acciones -u operaciones.

*ue puede realizar la clase. C*digo de ini#iali9a#i*n+ $ara crear una clase normalmente 'ace 6alta realizar operaciones previas -es lo *ue se conoce como el constructor de la clase..

Durand Flores, Carlos Enrique

Java Bsico

Centro de Informtica O"ras #lases+

UNMSM

entro de una clase se pueden de6inir otras clases -clases internas& son

consideradas como asociaciones dentro de %ML..

Diversas Definiciones de Clases

$%U& (ON 1O( O7J'TO() (e les lla a ins"an#ias de #lase+ (on un ele i"e ini#iar el o-je"o+ en"o en s: de la #lase, un o-je"o

se #rea u"ili9ando el lla 8"odo .ue per

ado #ons"ru#"or de la #lase+ 'l #ons"ru#"or es el

%n o!jeto contiene en s+ mismo la in6ormacin y los mtodos o 6unciones necesarios para manipular esa in6ormacin. Lo ms importante de los o!jetos es *ue permiten tener un control total so!re I*uinI o I*uI puede acceder a sus miem!ros& es decir& los o!jetos pueden tener miem!ros p>!licos a los *ue podrn acceder otros o!jetos o miem!ros privados a los *ue slo puede acceder l. /stos miem!ros pueden ser tanto varia!les como 6unciones.

Durand Flores, Carlos Enrique

Java Bsico

Centro de Informtica

UNMSM

Notacin de Clase y Objeto en UML

PROPI'DAD'( D' 1A POO 'NCAP(U1A2I'NTO %n o!jeto es un conjunto de propiedades y mtodos& es decir& datos y programas relacionados entre s+ como si estuvieran encerrados en una cpsula. Son inaccesi!les e impiden conocer cmo est distri!uida la in6ormacin dentro de ellos. /sto implica *ue las peticiones de in6ormacin a un o!jeto de!en 'acerse mediante mensajes dirigidos a l. %n mensaje es una simple llamada a un mtodo del o!jeto con el *ue se *uiere comunicar. /l 'ec'o de ser una cpsula& algo cerrado e inaccesi!le& 6avorecer la depuracin de aplicaciones y la reutilizacin del cdigo en caso de migrarlo a otros entornos tam!in permite reducir el potencial de errores *ue pudieran ocurrir. Bagamos una comparacin con lo *ue ser+a la vida real. #uando montamos en un coc'e nos limitados a dar a la llave contacto y el motor arranca. /s muy simple& pero esa simpleza nos la !rinda la encapsulacin. La realidad es *ue ocurren muc'as cosas0 contacto elctrico& 6uncionamiento del motor de arran*ue& apertura del paso de com!usti!le& etc. $ero& Dnecesitamos sa!er realmente lo *ue ocurre para 'acer uso de lF :o& nos !asta con sa!er *ue para arrancarlo necesitamos introducir la llave en el contacto y girarla. 1a esen#ia del en#apsula fun#ionalidad es"a ul"i ien"o es .ue #uando un o-je"o "rae #onsigo su plo0 por lo general la mayor+a de

a se o#ul"a, por eje

gente *ue ve televisin no sa!e& o no se preocupa de la complejidad electrnica *ue 'ay de detrs de la pantalla ni de todas las operaciones *ue tienen *ue ocurrir para mostrar una imagen en la pantalla es decir la televisin 'ace lo *ue tiene *ue 'acer sin mostrarnos el proceso necesario para ello& y por suerte& la mayor+a de los arte6actos electrodomsticos 6uncionan as+.

Durand Flores, Carlos Enrique

Java Bsico

Centro de Informtica

UNMSM

Encapsulamiento

;'R'NCIA La 'erencia es una caracter+stica *ue permite la creacin de clases a partir de otras. /sto conlleva tanto la reutilizacin del cdigo& como la especializacin de las clases. La reutilizacin del cdigo viene dada por*ue podemos de6inir clases nuevas partiendo de otras ya e"istentes. /n este caso se 'eredan sus propiedades y mtodos. La especializacin de las clases viene por aadidura ya *ue& al de6inir una clase partiendo de otra& lo *ue estamos es creando una nueva clase ms especializada. ,isto lo anterior podemos ya intuir *ue las clases pueden organizarse jerr*uicamente. /sta jerar*u+a viene determinada por el uso realizado de la 'erencia. #on esta organizacin empezamos a tener trminos como0 clase padre& clase 'ija& superclase -o clase ra+z. y clase 6inal. 5 continuacin vamos a e"plicarlos0 Clase padre o super#lase0 se dice *ue una clase es padre de otra cuando sirve como punto de partida para crear a esta >ltima. Clase 3ija o su-#lase0 es a*uella clase *ue 'ereda de otra& y es 'ija con respecto a su clase padre o su superclase. Clase final0 toda a*uella *ue no es clase padre de otras.

Durand Flores, Carlos Enrique

&

Java Bsico

Centro de Informtica

UNMSM

Herencia

/n el gra6ico anterior se representa una jerar*u+a de clases de 6iguras geomtricas. /n la cima de la jerar*u+a tenemos la clase (Higura)& y es la clase padre de las clases (#irculo) y ($oligono). La clase (#irculo) es una clase 'ija de la clase (Higura) y tam!in es una clase 6inal. La clase ($oligono) es clase 'ija de la clase (Higura) y clase padre de las clases (3ectangulo) y (Criangulo). /l resto de relaciones *ue 6altan ser+an similares a las ya e"plicadas. La 'erencia puede ser de dos tipos0 simple y compuesta. La di6erencia entre am!as es *ue en el caso de 'erencia compuesta se permite 'eredar de ms de una clase. /n otras pala!ras& se trata de *ue una clase 'ija pueda tener ms de una clase padre. PO1I2OR4I(2O #onsiste en la posi!ilidad de tener mtodos con el mismo nom!re en distintas clases. 5l 'a!lar de mtodos en distintas clases nos estamos re6iriendo a mtodos distintos y por tanto con comportamientos distintos a pesar de *ue tengan el mismo nom!re. /l polimor6ismo permite poder enviar un mismo mensaje -recordemos *ue un mensaje es una invocacin a un mtodo. a o!jetos de clases di6erentes. /stos o!jetos reci!irn el mismo mensaje pero respondern a l de 6ormas di6erentes. $or ejemplo& un

Durand Flores, Carlos Enrique

'

Java Bsico

Centro de Informtica

UNMSM

mensaje (@) para un o!jeto entero signi6icar+a una suma& mientras *ue para un o!jeto string -cadena de caracteres. signi6icar+a la concatenacin.

olimorfismo

/n l gra6ico podemos ver una jerar*u+a de clases en la *ue todas las clases *ue la componen tienen un mtodo llamado (di!ujar-.). Codos tienen el mismo nom!re pero cada uno de ellos podr tener una 6uncionalidad distinta. /n este ejemplo concreto& una posi!le interpretacin podr+a ser *ue tenemos dos clases 'ijas *ue rede6inen el mtodo (di!ujar-.) de su clase padre. $ro!a!lemente el mtodo (di!ujar-.) de la clase padre sea un mtodo a!stracto -no se 'a implementado& slo se 'a de6inido. ya *ue para di!ujar un pol+gono es necesario sa!er el tipo de pol+gono del *ue se trata. $or tanto& las clases 'ijas de la clase ($oligono) se ven o!ligadas a implementar el mtodo (di!ujar-.) *ue ser distinto en cada caso. /sto es un claro ejemplo de polimor6ismo. PRINCIPIO D' OCU1TACI6N #onsiste en *ue cada o!jeto est aislado del e"terior& es un mdulo natural& y cada tipo de o!jeto e"pone una inter6az a otros o!jetos *ue espec+6ica cmo pueden interactuar con los o!jetos de la clase. /l aislamiento protege a las propiedades de un o!jeto contra su modi6icacin por *uien no tenga derec'o a acceder a ellas& solamente los propios mtodos internos del o!jeto pueden acceder a su estado. /sto asegura *ue otros o!jetos no pueden cam!iar el estado interno de un o!jeto de maneras inesperadas& eliminando e6ectos secundarios e interacciones inesperadas. 5lgunos lenguajes relajan esto& permitiendo un acceso directo a los datos internos del o!jeto de una manera controlada y limitando el grado de a!straccin. La aplicacin entera se reduce a un agregado o rompeca!ezas de o!jetos.

Durand Flores, Carlos Enrique

1(

Java Bsico

Centro de Informtica

UNMSM

/n programacin orientada a o!jetos el principio de ocultacin 'ace re6erencia a *ue los atri!utos privados de un o!jeto no pueden ser modi6icados ni o!tenidos a no ser *ue se 'aga a travs de alg>n mdulo -6unciones& mtodos y en algunos lenguajes tam!in llamados propiedades del o!jeto.. %n o!jeto oculta lo *ue 'ace a otros o!jetos y al mundo e"terior& pero un o!jeto necesita presentar un (rostro) al mundo e"terior para poder inicializar sus operaciones en el ejemplo de la televisin& /sta tiene *ue mostrar diversos !otones en el control remoto y en si misma *ue permiten realizar operaciones para ajustar los niveles de volumen& la seleccin de canales& etc. /stos !otones se conocen como inter6aces.

rincipio de Ocultacin

A7(TRACCI6N #ada o!jeto en el sistema sirve como modelo de un EagenteE a!stracto *ue puede realizar tra!ajo& in6ormar y cam!iar su estado& y EcomunicarseE con otros o!jetos en el sistema sin revelar cmo se implementan estas caracter+sticas. Los procesos& las 6unciones o los mtodos pueden tam!in ser a!stra+dos y cuando lo estn& una variedad de tcnicas son re*ueridas para ampliar una a!straccin. La a!straccin se re6iere a *uitar las propiedades y acciones de un o!jeto para dejar solo a*uellas *ue sean necesarias& *ue *uiere decir esto ultimo *ue di6erentes tipos de

Durand Flores, Carlos Enrique

11

Java Bsico

Centro de Informtica

UNMSM

pro!lemas re*uieren di6erentes cantidades de in6ormacin aun si estos pro!lemas pertenecen a un rea en com>n. CON(ID'RACION'( PR'VIA( (O4T<AR' JAVA /l so6t4are de Java contempla G plata6ormas para el desarrollo de aplicaciones0 Java (' =Java ("andard 'di"ion> /s el conjunto de 'erramientas so6t4are *ue permite el desarrollo y la ejecucin de programas Java destinados al lado cliente. Se le suele llamar S J -So6t4are evelopment Jit. o Jit de 'ttp0??java.sun.com?. entro del J8S/ se incluyen el compilador y la J,M -Java ,irtual Mac'ine. o M*uina virtual de Java. Cam!in se la conoce como ;ntrprete de Java. #ada plata6orma tiene su propia versin. /n la pgina de Java dentro de Sun puede descargarse el J8S/ para 1indo4s& Linu"& Solaris& etc. Si se tra!aja con sistemas operativos menos corrientes como Mac2S de 5pple& 5;K de ;LM& B$A%K de Be4lettA$acMard& etc. conviene ir a 'ttp0??lopica.source6orge.net?vm.'tml esarrollo de $rogramas. /s gratuito y de li!re distri!ucin. Se puede descargar desde la pgina o6icial de Sun Microsystems relacionada con Java

Java '' =Java 'n"erprise 'di"ion> $lata6orma del lenguaje Java destinada al desarrollo de aplicaciones empresariales estructuradas t+picamente en tres capas0 capa de presentacin de datos& capa de lgica de negocio y capa de datos persistentes -!ases de datos.. Se compone de un conjunto de estndares y !i!liotecas Java *ue permiten la creacin de las aplicaciones empresariales anteriormente citadas. /sta plata6orma se utiliza so!re todo para programacin en servidores. Sin conocer lo 6undamental de J8S/& resulta invia!le introducirse en J8//.

Java 2' =Java 2i#ro 'di"ion> $lata6orma del lenguaje Java destinada al desarrollo de aplicaciones para pe*ueos dispositivos mviles de memoria limitada& poca capacidad de procesamiento y con inter6aces gr6icas limitadas. C+picamente tel6onos mviles& $ 5s -$ersonal 5ssistent

Durand Flores, Carlos Enrique

Java Bsico

Centro de Informtica

UNMSM

igital.& $ocMets $#s& televisiones& relojes& sistemas de ayuda para automviles& tarjetas& etc. #omo en J8//& la !ase para programar mediante J8M/& es J8S/. '1 'NTORNO D' D'(ARRO11O D' JAVA /"isten distintos programas comerciales *ue permiten desarrollar cdigo Java. La compa+a Sun& creadora de Java& distri!uye gratuitamente el Java-tm. compilar y ejecutar programas en Java. ;ncorpora adems la posi!ilidad de ejecutar parcialmente el programa& deteniendo la ejecucin en el punto deseado y estudiando en cada momento el valor de cada una de las varia!les -con el denominado e!ugger.. #ual*uier programador con un m+nimo de e"periencia sa!e *ue una parte muy importante -muc'as veces la mayor parte. del tiempo destinado a la ela!oracin de un programa se destina a la deteccin y correccin de errores. /"iste tam!in una versin reducida del J J& denominada J3/ -Java 3untime /nvironment. destinada >nicamente a ejecutar cdigo Java -no permite compilar.. Los ; /s -;ntegrated evelopment /nvironment.& tal y como su nom!re indica& son evelopment Jit -J J.. Se trata de un conjunto de programas y li!rer+as *ue permiten desarrollar&

entornos de desarrollo integrados. /n un mismo programa es posi!le escri!ir el cdigo Java& compilarlo y ejecutarlo sin tener *ue cam!iar de aplicacin. 5lgunos incluyen una 'erramienta para realizar e!ug gr6icamente& 6rente a la versin *ue incorpora el J J !asada en la utilizacin de una consola -denominada 'a!itualmente ventana de comandos de MSA 2S& en 1indo4s :C?97?9=. !astante di6+cil y pesada de utilizar. /stos entornos integrados permiten desarrollar las aplicaciones de 6orma muc'o ms rpida& incorporando en muc'os casos li!rer+as con componentes ya desarrollados& los cuales se incorporan al proyecto o programa. #omo inconvenientes se pueden sealar algunos 6allos de compati!ilidad entre plata6ormas& y 6ic'eros resultantes de mayor tamao *ue los !asados en clases estndar. 5lgunos ; /s *ue podemos citar son0 Jcreator& :et!eans& /clipse y Jdeveloper entre otros.

Durand Flores, Carlos Enrique

1!

Java Bsico

Centro de Informtica 7?T'COD'(

UNMSM

%n programa # o #@@ es totalmente ejecuta!le y eso 'ace *ue no sea independiente de la plata6orma y *ue su tamao normalmente se dispare ya *ue dentro del cdigo 6inal 'ay *ue incluir las li!rer+as de la plata6orma.

roceso de compilacin de un pro!rama C""

Los programas Java no son ejecuta!les& no se compilan como los programas en # o #@ @. /n su lugar son interpretados por una aplicacin conocida como la de cada sistema. $reviamente el cdigo 6uente en Java se tiene *ue precompilar generando un cdigo -*ue no es directamente ejecuta!le. previo conocido como bytecode o J-code. /se cdigo -generado normalmente en arc'ivos con e"tensin #lass. es el *ue es ejecutado por la m*uina virtual de Java *ue interpreta las instrucciones de los !ytecodes& ejecutando el cdigo de la aplicacin. /l !ytecode se puede ejecutar en cual*uier plata6orma& lo >nico *ue se re*uiere es *ue esa plata6orma posea un intrprete adecuado -la m*uina virtual de esa plata6orma.. !.uina vir"ual de Java -J,M.. Nracias a ello no tienen por*ue incluir todo el cdigo y li!rer+as propias

Durand Flores, Carlos Enrique

1"

Java Bsico

Centro de Informtica 1A JAVA VIRTUA1 2AC;IN'

UNMSM

La e"istencia de distintos tipos de procesadores y ordenadores llev a los ingenieros de Sun a la conclusin de *ue era muy importante conseguir un so6t4are *ue no dependiera del tipo de procesador utilizado. Se plante la necesidad de conseguir un cdigo capaz de ejecutarse en cual*uier tipo de m*uina. %na vez compilado no de!er+a ser necesaria ninguna modi6icacin por el 'ec'o de cam!iar de procesador o de ejecutarlo en otra m*uina. La clave consisti en desarrollar un cdigo (neutro) el cual estuviera preparado para ser ejecutado so!re una (m*uina 'ipottica o virtual)& denominada Java ,irtual Mac'ina -J,M.. /s esta J,M *uien interpreta este cdigo neutro convirtindolo a cdigo particular de la #$% utilizada. Se evita tener *ue realizar un programa di6erente para cada #$% o plata6orma. La J,M es el intrprete de Java. /jecuta los (!ytecodes) -6ic'eros compilados con e"tensin O.class. creados por el compilador de Java -javac.e"e.. Ciene numerosas opciones entre las *ue destaca la posi!ilidad de utilizar el denominado J;C -JustA;nA Cime #ompiler.& *ue puede mejorar entre 19 y 89 veces la velocidad de ejecucin de un programa. La J,M& adems es un programa muy pe*ueo y *ue se distri!uye gratuitamente para prcticamente todos los sistemas operativos. 5 este mtodo de ejecucin de programas en tiempo real se le llama #ust in $ime -J;C..

roceso de compilacin de un pro!rama #ava

Durand Flores, Carlos Enrique

1#

Java Bsico

Centro de Informtica 1A( VARIA71'( PAT; ? C1A((PAT;

UNMSM

$ara poder compilar y ejecutar las aplicaciones Java es necesario tener acceso al directorio en el *ue se encuentran el compilador y el intrprete. $ara poder compilar y ejecutar cmodamente de!er+amos aadir el directorio (P!in) del J J a la varia!le de entorno PAT;. $ara los usuarios de 2S y 1indo4s& desde el s+m!olo del sistema tendremos *ue escri!ir0 set $5CBQR$5CBRSc0PjavaP!in /n la e"plicacin anterior slo se cam!ia la varia!le de entorno $5CB para la sesin en curso -la ventana actual.. La varia!le de entorno $5CB no es espec+6ica de Java& si no *ue ms !ien es un mecanismo de los sistemas operativos para localizar programas *ue no se encuentran en el directorio actual. $ero a'ora vamos con otra varia!le de entorno *ue s+ lo es& estamos 'a!lando de C1A((PAT;. Java carga dinmicamente las clases seg>n la necesidad& pero Ddnde !usca esas

clasesF. /ste es el papel de la varia!le de entorno #L5SS$5CB& indicar a Java donde !uscar las clases y li!rer+as propias -el 5$; de Java. y las clases de usuario. 5 partir del J J versin 1.1.T slo es necesario usar esta varia!le para indicar las clases de usuario. ,eamos un ejemplo. Supongamos *ue disponemos de una li!rer+a de clases *ue vamos a usar 'a!itualmente y *ue est comprimida en un 6ic'ero llamado (mili!reria.zip). Cam!in nos interesa usar un conjunto de clases sin comprimir *ue estn todas situadas en un mismo directorio llamado (misclases). $ara los usuarios de 2S y 1indo4s& la li!rer+a est en (c0PdesarrolloPli!reria) y el esde el s+m!olo del sistema

conjunto de clases est en (c0PdesarrolloPclases). tendremos *ue escri!ir0

set #L5SS$5CBQ.Sc0PdesarrolloPli!reriaPmili!reria.zipSc0PdesarrolloPmisclases $ara *ue los cam!ios en las varia!les pa"3 y #lasspa"3 sean permanentes 'ay *ue compro!ar *ue la carpeta con los ejecuta!les del Mit de desarrollo esten incluidos en la varia!le de entorno pa"3+

Durand Flores, Carlos Enrique

1$

Java Bsico

Centro de Informtica

UNMSM

/sto lo podemos compro!ar escri!iendo pa"3 en la l+nea de comandos. Si la carpeta del Mit de desarrollo no est incluida& 'a!r *ue 'acerlo. $ara ello en 1indo4s 8999 o K$0 1. 8. G. T. $ulsar el !otn derec'o so!re Mi $# y elegir Propiedades ;r al apartado Op#iones avan9adas Bacer clic so!re el !otn Varia-les de en"orno 5adir a la lista de la varia!le Pa"3 la ruta a la carpeta con los programas del J J. /jemplo de contenido de la varia!le pat'0 $5CBQ#0P1;::CPSUSC/MG8S#0P1;::CS#0P1;::CPSUSC/MG8P1L/MS#0P5rc'ivos de programaPMicroso6t ,isual StudioP#ommonPCoolsP1in:CS#0P5rc'ivos de programaPMicroso6t ,isual StudioP#ommonPMS ev9=PLinS#0P5rc'ivos de programaPMicroso6t ,isual StudioP#ommonPCoolsS#0P5rc'ivos de programaPMicroso6t ,isual StudioP,#9=P!in@C0AAr#3ivos de progra aAjBsdCDn-AjBsdCE+F+BA-in

/n negrita est sealada la ruta a la carpeta de ejecuta!les -carpeta !in. del Mit de desarrollo. /st carpeta var+a seg>n la instalacin& para acceder a la varia!le #L5SS$5CB0 si estamos en un 4indo4s :CA8999AK$0 1. 8. G. T. $ulsar el !otn derec'o so!re Mi $# y elegir Propiedades ;r al apartado Op#iones avan9adas Bacer clic so!re el !otn Varia-les de en"orno 5adir la varia!le #L5SS$5CB en la *ue escri!iremos simplemente un punto0 #lasspa"3G+ :oten *ue en #L5SS$5CB agregu el directorio actual -..& para poder compilar y ejecutar desde cual*uier directorio.

Durand Flores, Carlos Enrique

1%

Java Bsico

Centro de Informtica

UNMSM

CO2PI1ACI6N ? 'J'CUCION D' CODI5O JAVA /l compilador Java es una de las 'erramientas de desarrollo incluidas en el J J. 3ealiza un anlisis de sinta"is del cdigo escrito en los 6ic'eros 6uente de Java -con e"tensin O.java.. Si no encuentra errores en el cdigo genera los 6ic'eros compilados -con e"tensin O.class.. /n otro caso muestra la l+nea o l+neas errneas. /n el J J de Sun dic'o compilador se llama javac.e"e. Ciene numerosas opciones& algunas de las cuales var+an de una versin a otra. Se aconseja consultar la documentacin de la versin del J J utilizada para o!tener una in6ormacin detallada de las distintas posi!ilidades. La compilacin del cdigo java se realiza mediante el programa java# incluido en el so6t4are de desarrollo de java. La 6orma de compilar es -desde la l+nea de comandos.0 java# arc%ivo&java /l resultado de esto es un arc'ivo con el mismo nom!re *ue el arc'ivo java pero con la e"tensin #lass. /sto ya es el arc'ivo con el cdigo en 6orma de -y"e#odes. /s decir con el cdigo precompilado. Si la clase es ejecuta!le -slo lo son si contienen el mtodo ain.& el cdigo se puede

interpretar usando el programa java del Mit de desarrollo. Sinta"is0 java arc%ivo&class /stos comandos 'ay *ue escri!irlos desde la l+nea de comandos de en la carpeta en la *ue se encuentre el programa. $ero antes 'ay *ue asegurarse de *ue los programas del Mit de desarrollo son accesi!les desde cual*uier carpeta del sistema. $ara ello 'ay *ue compro!ar *ue la carpeta con los ejecuta!les del Mit de desarrollo est incluida en la varia!le de entorno pa"3+ Environment
J)*)

-avac

Java B+te,code

-ava Java *M

.-ava

.class
Compilacin de un pro!rama #ava

Durand Flores, Carlos Enrique

1&

Java Bsico

Centro de Informtica

UNMSM

TIPO( D' ARC;IVO( java0 /s la e"tensin de los arc'ivos 6uente del lenguaje java& ejem. !ienvenido.java& Miapplet.java. #lass0 /l resultado de compilar un arc'ivo 6uente java es un arc'ivo en !yteAcode con e"tensin class& ejem. !ienvenido.class& Miapplet.class. /l comando usado para compilar los ar'ivos con e"tensin java es javac y para su ejecucin el comando java *ue vienen incluidos en el J J -Java evelopment Jit. de Sun Microsystems. jarH9ip0 Las clases desarrolladas en java suelen por lo general guardarse en estos tipos de arc'ivos comprimidos. 'je plo de Prue-a

??arc'ivo con el nom!re Lienvenido.java class Lienvenido V pu!lic static void main-String WX args. V System.out.println-ELienvenido a JavaYE.S Z Z Nr!alo en TuCarpe"a con el nom!re 7ienvenido+java luego compila y ejecuta el programa anterior& es decir0 javac Lienvenido.java java Lienvenido 1:nea E0 es un simple comentario de tipo l+nea en el *ue 'emos colocado el nom!re del 6ic'ero. /l compilador ignorar todo lo *ue va desde los caracteres (??) 'asta el 6inal de la l+nea. Los comentarios son de muc'a utilidad& tanto para otras personas *ue tengan *ue revisar el cdigo& como para nosotros mismos en 6uturas revisiones. 1:nea B0 declara el nom!re de la clase. %samos la pala!ra reservada class seguida del nom!re *ue *ueremos darle a nuestra clase& en este caso es (Lienvenido). Ua sa!emos *ue Java es un lenguaje orientado a o!jetos& por tanto& nuestro programa 'a de ser de6inido como una clase. $or convencin& las clases Java se de6inen con la primera letra en may>sculas.

Durand Flores, Carlos Enrique

1'

Java Bsico

Centro de Informtica

UNMSM

'je

plo pu!lic static void main-String WX args. V System.out.println-EBolaPn[ue talE.S System.out.println-E%noPn osPnCresPn#uatroE.S Z

class J991 V

Z 'je plo pu!lic static void main-String WX args. V System.out.println-EBolaE.S System.out.println-E5diosE.S System.out.println-EE.S System.out.print-E$ues valeE.S System.out.print-E/soE.S System.out.print-E,aleE.S Z Z prin"ln= ensaje> /scri!e el (mensaje) y luego se produce un cam!io de l+nea *ue

class J998 V

e*uivale a pulsar W3eturnX prin"= ensaje> /scri!e el (mensaje) y el cursor se sit>a al 6inal del mensaje y en

la misma l+nea. $ara recordarlo piensa en la siguiente (6rmula)0 prin"ln G prin" I ln -l+nea nueva.

Durand Flores, Carlos Enrique

Java Bsico

You might also like