Você está na página 1de 32

Java (lenguaje de programacin)

Existen desacuerdos sobre la neutralidad en el punto de vista de la versin actual de este artculo o seccin.
En la pgina de discusin puedes consultar el debate al respecto.

Java
Desarrollador(es)

James Gosling & Sun Microsystems Para desarrolladores de Java

Informacin general

Extensiones comunes

.java, .class, .jar

Paradigma

Orientado a objetos,imperativo

Apareci en

!!"

Dise ado por

Sun Microsystems#Oracle $orporation%

!ltima versin estable

Java Standard Edition & 'pdate (" # .&.("% # " de


octubre de )* +, -ace +. d/as%

"ipo de dato

0uerte, Esttico

Implementaciones

OpenJ12, 3otSpot,muc-as otras

Dialectos

Generic Java, 4i55a

Influido por

Objective6$, $77,Smalltal8, Ei99el

#a influido a

$:, J:, JavaScript, 434,4yt-on

$istema operativo

Multiplata9orma

%icencia

G;' G4< = Java $ommunity 4rocess

El lenguaje de programacin Java fue originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue adquirida por la compaa racle) y pu!licado en "##$ como un

componente fundamental de la plataforma Java de Sun Microsystems% Su sinta&is deriva muc'o de ( y ())* pero tiene menos facilidades de !ajo nivel que cualquiera de ellos% +as aplicaciones de Java son generalmente compiladas a !ytecode (clase Java) que puede ejecutarse en cualquier m,quina virtual Java (J-M) sin importar la arquitectura de la computadora su!yacente% Es un lenguaje de programacin de propsito general* concurrente* orientado a o!jetos y !asado en clases que fue diseado especficamente para tener tan pocas dependencias de implementacin como fuera posi!le% Su intencin es permitir que losdesarrolladores de aplicaciones escri!an el programa una ve. y lo ejecuten en cualquier dispositivo (conocido en ingl/s como WORA* o 0write once, run anywhere0)* lo que quiere decir que el cdigo que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra% Java es* a partir de 12"1* uno de los lenguajes de programacin m,s populares en uso* particularmente para aplicaciones de cliente3servidor de 4e!* con unos "2 millones de usuarios reportados%" 1 +a compaa Sun desarroll la implementacin de referencia original para los compiladores de Java* m,quinas virtuales* yli!reras de clases en "##" y las pu!lic por primera ve. en "##$% 5 partir de mayo de 1226* en cumplimiento con las especificaciones del 7roceso de la (omunidad Java* Sun volvi a licenciar la mayora de sus tecnologas de Java !ajo la+icencia 78!lica General de G9:% tros tam!i/n 'an desarrollado implementaciones alternas a estas tecnologas de Sun* tales como el (ompilador de Java de G9: y el G9: (lasspat'%
ndice
;ocultar<

o o o o o

" =istoria 1 >ilosofa 1%" rientado a o!jetos

1%1 ?ndependencia de la plataforma 1%@ El recolector de !asura @ Sinta&is @%" 5plicaciones autnomas @%1 5pplets

o o o o o o o o o o o o o o o o o o

@%@ Servlets @%A 5plicaciones con ventanas A Entornos de funcionamiento A%" En dispositivos mviles y sistemas empotrados A%1 En el navegador 4e! A%@ En sistemas de servidor A%A En aplicaciones de escritorio A%$ 7lataformas soportadas $ 7rogramacin $%" E&presiones $%1 peradores $%1%" peradores a nivel de !it

$%@ 7recedencia de operadores $%A Sentencias $%A%" (onversin de tipos B ?ndustria relacionada 6 (rticas 6%" General 6%1 El lenguaje 6%@ 5pariencia 6%A Cendimiento D Cecursos D%" JCE D%1 (omponentes D%@ 57?s

o o o o o o

D%A E&tensiones y arquitecturas relacionadas # Java en cdigo a!ierto #%" 5lternativas li!res #%1 (rticas referentes a Java y el soft4are li!re "2 -/ase tam!i/n "" Ceferencias "1 9otas "@ Enlaces e&ternos "@%" racle 3 Sun

"@%1 Eutoriales "@%@ (rticas

=istoria;editar F editar cdigo<

GuHe* la mascota de Java

Java se cre como una 'erramienta de programacin para ser usada en un proyecto de set3top3 !o& en una pequea operacin denominada the Green Project en Sun Microsystems en el ao "##"% El equipo (Green Team)* compuesto por trece personas y dirigido por James Gosling* tra!aj durante "D meses en Sand =ill Coad en Menlo 7arH en su desarrollo% El lenguaje se denomin inicialmente Oak (por un ro!le que 'a!a fuera de la oficina de Gosling)* luego pas a denominarse Greentras descu!rir que Oak era ya una marca comercial registrada para adaptadores de tarjetas gr,ficas y finalmente se renom!r a Java% Es frecuentada por algunos de los miem!ros del equipo% 7ero no est, claro si es un acrnimo o no* aunque algunas fuentes sealan que podra tratarse de las iniciales de sus creadoresI James Gosling, Arthur Van Hoff, y An y !echtolsheim% tros a!ogan por el siguiente

acrnimo* Just Another Vague Acronym (0slo otro acrnimo am!iguo m,s0)% +a 'iptesis que m,s fuer.a tiene es la de que Java de!e su nom!re a un tipo de caf/ disponi!le en la cafetera cercana* de a' que el icono de java sea una ta.a de caf/ caliente% :n pequeo signo que da fuer.a a esta teora es que los A primeros !ytes (el n"mero m#gico) de los arc'ivos%class que genera el compilador* son en 'e&adecimal* 2&(5>EJ5JE% 5 pesar de todas estas teoras* el nom!re fue sacado al parecer de una lista aleatoria de pala!ras% @ +os o!jetivos de Gosling eran implementar una m,quina virtual y un lenguaje con una estructura y sinta&is similar a ())% Entre junio y julio de "##A* tras una sesin maratoniana de tres das entre Jo'n Gaga* James Gosling* 7atricH 9aug'ton* Kayne Cosing y Eric Sc'midt* el equipo reorient la plataforma 'acia la Ke!% Sintieron que la llegada del navegador 4e! Mosaic* propiciara que ?nternet se convirtiese en un medio interactivo* como el que pensa!an era la televisin por ca!le% 9aug'ton cre entonces un prototipo de navegador* Ke!Cunner* que m,s tarde sera conocido como =otJava% En "##A* se les 'i.o una demostracin de =otJava y la plataforma Java a los ejecutivos de Sun% Java "%2a pudo descargarse por primera ve. en "##A* pero 'u!o que esperar al 1@ de mayo de "##$* durante las conferencias de SunKorld* a que vieran la lu. p8!lica Java y =otJava* el navegador Ke!% El acontecimiento fue anunciado por Jo'n Gage* el Girector (ientfico de Sun Microsystems% El acto estuvo acompaado por una pequea sorpresa adicional* el anuncio por parte de Marc 5ndreessen* -icepresidente Ejecutivo de 9etscape* de que Java sera soportado en sus navegadores% El # de enero del ao siguiente* "##B* Sun fund el grupo empresarial JavaSoft para que se encargase del desarrollo tecnolgico% ;"< Gos semanas m,s tarde la primera versin de Java fue pu!licada% +a promesa inicial de Gosling era Write Once, Run Anywhere (Escr!elo una ve.* ejec8talo en cualquier lugar)* proporcionando un lenguaje independiente de la plataforma y un entorno de ejecucin (la J-M) ligero y gratuito para las plataformas m,s populares de forma que los !inarios (!ytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma%

El entorno de ejecucin era relativamente seguro y los principales navegadores 4e! pronto incorporaron la posi!ilidad de ejecutar applets Java incrustadas en las p,ginas 4e!% Java 'a e&perimentado numerosos cam!ios desde la versin primigenia* JGL "%2* as como un enorme incremento en el n8mero de clases y paquetes que componen la !i!lioteca est,ndar% A Gesde J1SE "%A* la evolucin del lenguaje 'a sido regulada por el J(7 (Java (ommunity 7rocess)* que usa Java $%ecification Re&uests (JSCs) para proponer y especificar cam!ios en la plataforma Java% El lenguaje en s mismo est, especificado en la Java 'anguage $%ecification (J+S)* o Especificacin del +enguaje Java% +os cam!ios en los J+S son gestionados en JSC #2"%

JDK 1.0 (1@ de enero de "##B) M 7rimer lan.amientoI comunicado de prensa JDK 1.1 ("# de fe!rero de "##6) M 7rincipales adiciones incluidasI comunicado de prensa una reestructuracin intensiva del modelo de eventos 5KE (5!stract Kindo4ing EoolHit)

clases internas (inner classes) JavaJeans JGJ( (Java Gata!ase (onnectivity)* para la integracin de !ases de datos CM? (Cemote Met'od ?nvocation) J2SE 1.2 (D de diciem!re de "##D) M 9om!re clave Playgroun % Esta y las siguientes

versiones fueron recogidas !ajo la denominacin Java 2 y el nom!re 0J1SE0 (Java 1 7latform* Standard Edition)* reempla. a JGL para distinguir la plataforma !ase de J1EE (Java 1 7latform* Enterprise Edition) y J1ME (Java 1 7latform* Micro Edition)% incluanI comunicado de prensa tras mejoras aadidas

la pala!ra reservada (Hey4ord) strictfp refle&in en la programacin la 57? gr,fica ( S4ing) fue integrada en las clases !,sicas la m,quina virtual (J-M) de Sun fue equipada con un compilador J?E (Just in Eime) por primera ve.

Java 7lug3in Java ?G+* una implementacin de ?G+ (+enguaje de Gescripcin de ?nterfa.) para la interopera!ilidad con ( CJ5

(olecciones ((ollections) J2SE 1.3 (D de mayo de 1222) M 9om!re clave (estrel% +os cam!ios m,s nota!les

fueronIcomunicado de prensa lista completa de cam!ios

la inclusin de la m,quina virtual de =otSpot J-M (la J-M de =otSpot fue lan.ada inicialmente en a!ril de "###* para la J-M de J1SE "%1)

CM? fue cam!iado para que se !asara en ( CJ5 JavaSound se incluy el Java 9aming and Girectory ?nterface (J9G?) en el paquete de !i!liotecas principales (anteriormente disponi!le como una e&tensin)

Java 7latform Ge!ugger 5rc'itecture (J7G5) J2SE 1.4 (B de fe!rero de 1221) M 9om!re (lave )erlin% Este fue el primer lan.amiento de

la plataforma Java desarrollado !ajo el 7roceso de la (omunidad Java comoJSC $#% +os cam!ios m,s nota!les fueronI comunicado de prensalista completa de cam!ios

7ala!ra reservada assert (Especificado en JSC A"%) E&presiones regulares modeladas al estilo de las e&presiones regulares 7erl Encadenacin de e&cepciones 7ermite a una e&cepcin encapsular la e&cepcin de !ajo nivel original%


B@%)

non3!locHing 9?

(9e4 ?nputN utput) (Especificado en JSC $"%)

+ogging 57? (Specified in JSC A6%) 57? ?N para la lectura y escritura de im,genes en formatos como J7EG o 79G

7arser OM+ integrado y procesador OS+E (J5O7) (Especificado en JSC $ y JSC

Seguridad integrada y e&tensiones criptogr,ficas (J(E* JSSE* J55S) Java Ke! Start incluido (El primer lan.amiento ocurri en mar.o de 122" para J1SE "%@) (Especificado en JSC $B%)

J2SE 5.0 (@2 de septiem!re de 122A) M 9om!re claveI Tiger% ( riginalmente numerado "%$* esta notacin a8n es usada internamente%;1<) Gesarrollado !ajo JSC "6B* Eiger aadi un n8mero significativo de nuevas caractersticas comunicado de prensa

7lantillas (gen/ricos) M provee conversin de tipos (type safety) en tiempo de compilacin para colecciones y elimina la necesidad de la mayora de conversin de tipos (type casting)% (Especificado por JSC "A%)

Metadatos M tam!i/n llamados anotaciones* permite a estructuras del lenguaje como las clases o los m/todos* ser etiquetados con datos adicionales* que puedan ser procesados posteriormente por utilidades de proceso de metadatos% (Especificado por JSC "6$%)

5uto!o&ingNun!o&ing M (onversiones autom,ticas entre tipos primitivos ((omo los int) y clases de envoltura primitivas ((omo Integer)% (Especificado por JSC 12"%)

Enumeraciones M la pala!ra reservada enum crea una typesafe* lista ordenada de valores (como Dia.LUNES* Dia.MARTES* etc%)% 5nteriormente* esto solo poda ser llevado a ca!o por constantes enteras o clases construidas manualmente (enum pattern)% (Especificado por JSC 12"%)

-arargs (n8mero de argumentos varia!le) M El 8ltimo par,metro de un m/todo puede ser declarado con el nom!re del tipo seguido por tres puntos (e%g% void

drawtext String... !ines")% En la llamada al m/todo* puede usarse cualquier


n8mero de par,metros de ese tipo* que ser,n almacenados en un array para pasarlos al m/todo%

Jucle for mejorado M +a sinta&is para el !ucle for se 'a e&tendido con una sinta&is especial para iterar so!re cada miem!ro de un array o so!re cualquier clase que implemente Itera#!e* como la clase est,ndar $o!!ection* de la siguiente formaI

void disp!a%&idgets for , , w.disp!a% "+

Itera#!e'&idget( widgets" )

&idget w * widgets" )

Este ejemplo itera so!re el o!jeto Itera#!e widgets* asignando* en orden* cada uno de los elementos a la varia!le w* y llamando al m/todo disp!a% " de cada uno de ellos% (Especificado por JSC 12"%)

Java SE 6 ("" de diciem!re de 122B) M 9om!re clave )ustang% Estuvo en desarrollo !ajo la JSC 162% En esta versin* Sun cam!i el nom!re 0J1SE0 por Java SE y elimin el 0%20 del n8mero de versin%;@<% Est, disponi!le en 'ttpINNjava%sun%comNjavaseNBN% +os cam!ios m,s importantes introducidos en esta versin sonI

?ncluye un nuevo marco de tra!ajo y 57?s que 'acen posi!le la com!inacin de Java con lenguajes din,micos como 7=7* 7yt'on* Cu!y y JavaScript%

?ncluye el motor C'ino* de Mo.illa* una implementacin de Javascript en Java% ?ncluye un cliente completo de Servicios Ke! y soporta las 8ltimas especificaciones para Servicios Ke!* como J5O3KS 1%2* J5OJ 1%2* SE5O y J5O7%

Mejoras en la interfa. gr,fica y en el rendimiento% Java SE M 9om!re clave *ol%hin% En el ao 122B a8n se encontra!a en las primeras

etapas de planificacin% Su lan.amiento fue en julio de 12""%

Soporte para OM+ dentro del propio lenguaje% :n nuevo concepto de superpaquete% Soporte para closures% ?ntroduccin de anotaciones est,ndar para detectar fallos en el soft4are% 9o oficialesI 9? 1% Java Module System% Java Lernel% 9ueva 57? para el manejo de Gas y >ec'as* la cual reempla.ara las antiguas clases Gate y (alendar%

;A<

7osi!ilidad de operar con clases JigGecimal usando operandos%

En el 122$ se calcula en A*$ millones el n8mero de desarrolladores y 1%$22 millones de dispositivos 'a!ilitados con tecnologa Java%

>ilosofa;editar F editar cdigo<


El lenguaje Java se cre con cinco o!jetivos principalesI "% Ge!era usar el paradigma de la programacin orientada a o!jetos% 1% Ge!era permitir la ejecucin de un mismo programa en m8ltiples sistemas operativos% @% Ge!era incluir por defecto soporte para tra!ajo en red% A% Ge!era disearse para ejecutar cdigo en sistemas remotos de forma segura%

$% Ge!era ser f,cil de usar y tomar lo mejor de otros lenguajes orientados a o!jetos* como () )% 7ara conseguir la ejecucin de cdigo remoto y el soporte de red* los programadores de Java a veces recurren a e&tensiones como ( CJ5 ((ommon (ommunications Engine o SGi respectivamente% !ject Cequest JroHer 5rc'itecture)* ?nternet

!rien"ado a o#je"o$;editar F editar cdigo<


+a primera caracterstica* orientado a o!jetos (P Q)* se refiere a un m/todo de programacin y al * una primera idea es disear el diseo del lenguaje% 5unque 'ay muc'as interpretaciones para

soft4are de forma que los distintos tipos de datos que usen est/n unidos a sus operaciones% 5s* los datos y el cdigo (funciones o m/todos) se com!inan en entidades llamadas o!jetos% :n o!jeto puede verse como un paquete que contiene el PcomportamientoQ (el cdigo) y el PestadoQ (datos)% El principio es separar aquello que cam!ia de las cosas que permanecen inaltera!les% >recuentemente* cam!iar una estructura de datos implica un cam!io en el cdigo que opera so!re los mismos* o viceversa% Esta separacin en o!jetos co'erentes e independientes ofrece una !ase m,s esta!le para el diseo de un sistema soft4are% El o!jetivo es 'acer que grandes proyectos sean f,ciles de gestionar y manejar* mejorando como consecuencia su calidad y reduciendo el n8mero de proyectos fallidos% tra de las grandes promesas de la programacin orientada a o!jetos es la

creacin de entidades m,s gen/ricas (o!jetos) que permitan la reutili.acin del soft4are entre proyectos* una de las premisas fundamentales de la ?ngeniera del Soft4are% :n o!jeto gen/rico PclienteQ* por ejemplo* de!era en teora tener el mismo conjunto de comportamiento en diferentes proyectos* so!re todo cuando estos coinciden en cierta medida* algo que suele suceder en las grandes organi.aciones% En este sentido* los o!jetos podran verse como pie.as reutili.a!les que pueden emplearse en m8ltiples proyectos distintos* posi!ilitando as a la industria del soft4are a construir proyectos de envergadura empleando componentes ya e&istentes y de compro!ada calidadR conduciendo esto finalmente a una reduccin dr,stica del tiempo de desarrollo% 7odemos usar como ejemplo de o!jeto el aluminio% :na ve. definidos datos (peso* malea!ilidad* etc%)* y su PcomportamientoQ (soldar dos pie.as* etc%)* el o!jeto PaluminioQ puede ser reutili.ado en el campo de la construccin* del automvil* de la aviacin* etc% +a reutili.acin del soft4are 'a e&perimentado resultados dispares* encontrando dos dificultades principalesI el diseo de o!jetos realmente gen/ricos es po!remente comprendido* y falta una metodologa para la amplia comunicacin de oportunidades de reutili.acin% 5lgunas comunidades de Pcdigo a!iertoQ (open source) quieren ayudar en este pro!lema dando medios a los desarrolladores para diseminar la informacin so!re el uso y versatilidad de o!jetos reutili.a!les y !i!liotecas de o!jetos%

%ndependencia de la pla"a&orma;editar F editar cdigo<

+a segunda caracterstica* la independencia de la plataforma* significa que programas escritos en el lenguaje Java pueden ejecutarse igualmente en cualquier tipo de 'ard4are% Este es el significado de ser capa. de escri!ir un programa una ve. y que pueda ejecutarse en cualquier dispositivo* tal como re.a el a&ioma de Java* STT4rite once* run any4'ereTTT% 7ara ello* se compila el cdigo fuente escrito en lenguaje Java* para generar un cdigo conocido como P!ytecodeQ (especficamente Java !ytecode)Minstrucciones m,quina simplificadas especficas de la plataforma Java% Esta pie.a est, Pa medio caminoQ entre el cdigo fuente y el cdigo m,quina que entiende el dispositivo destino% El !ytecode es ejecutado entonces en la m,quina virtual (J-M)* un programa escrito en cdigo nativo de la plataforma destino (que es el que entiende su 'ard4are)* que interpreta y ejecuta el cdigo% 5dem,s* se suministran !i!liotecas adicionales para acceder a las caractersticas de cada dispositivo (como los gr,ficos* ejecucin mediante 'e!ras o t'reads* la interfa. de red) de forma unificada% Se de!e tener presente que* aunque 'ay una etapa e&plcita de compilacin* el !ytecode generado es interpretado o convertido a instrucciones m,quina del cdigo nativo por el compilador J?E (Just ?n Eime)% =ay implementaciones del compilador de Java que convierten el cdigo fuente directamente en cdigo o!jeto nativo* como G(J% Esto elimina la etapa intermedia donde se genera el !ytecode* pero la salida de este tipo de compiladores slo puede ejecutarse en un tipo de arquitectura% +a licencia so!re Java de Sun insiste que todas las implementaciones sean Pcompati!lesQ% Esto dio lugar a una disputa legal entre Microsoft y Sun* cuando /ste 8ltimo aleg que la implementacin de Microsoft no da!a soporte a las interfaces CM? y J9? adem,s de 'a!er aadido caractersticas STdependientesTT de su plataforma% Sun demand a Microsoft y gan por daos y perjuicios (unos 12 millones de dlares) as como una orden judicial for.ando la acatacin de la licencia de Sun% (omo respuesta* Microsoft no ofrece Java con su versin de sistema operativo* y en recientes versiones de Kindo4s* su navegador ?nternet E&plorer no admite la ejecucin de applets sin un conector (o plugin) aparte% Sin em!argo* Sun y otras fuentes ofrecen versiones gratuitas para distintas versiones de Kindo4s% +as primeras implementaciones del lenguaje usa!an una m,quina virtual interpretada para conseguir la porta!ilidad% Sin em!argo* el resultado eran programas que se ejecuta!an comparativamente m,s lentos que aquellos escritos en ( o ())% Esto 'i.o que Java se ganase una reputacin de lento en rendimiento% +as implementaciones recientes de la J-M dan lugar a programas que se ejecutan considera!lemente m,s r,pido que las versiones antiguas* empleando diversas t/cnicas* aunque sigue siendo muc'o m,s lento que otros lenguajes% +a primera de estas t/cnicas es simplemente compilar directamente en cdigo nativo como 'acen los compiladores tradicionales* eliminando la etapa del !ytecode% Esto da lugar a un gran rendimiento en la ejecucin* pero tapa el camino a la porta!ilidad% tra t/cnica* conocida como

compilacin J?E (Just ?n Eime* o STTcompilacin al vueloTTT)* convierte el !ytecode a cdigo nativo cuando se ejecuta la aplicacin% tras m,quinas virtuales m,s sofisticadas usan una STTrecompilacin

din,micaTTT en la que la -M es capa. de anali.ar el comportamiento del programa en ejecucin y recompila y optimi.a las partes crticas% +a recompilacin din,mica puede lograr mayor grado de optimi.acin que la compilacin tradicional (o est,tica)* ya que puede !asar su tra!ajo en el conocimiento que de primera mano tiene so!re el entorno de ejecucin y el conjunto de clases cargadas en memoria% +a compilacin J?E y la recompilacin din,mica permiten a los programas Java aprovec'ar la velocidad de ejecucin del cdigo nativo sin por ello perder la ventaja de la porta!ilidad en am!os% +a porta!ilidad es t/cnicamente difcil de lograr* y el /&ito de Java en ese campo 'a sido dispar% 5unque es de 'ec'o posi!le escri!ir programas para la plataforma Java que act8en de forma correcta en m8ltiples plataformas de distinta arquitectura* el gran n8mero de estas con pequeos errores o inconsistencias llevan a que a veces se parodie el eslogan de Sun* 0Krite once* run any4'ere0 como 0Krite once* de!ug every4'ere0 (o PEscr!elo una ve.* ejec8talo en cualquier parteQ por PEscr!elo una ve.* dep8ralo en todas partesQ) El concepto de independencia de la plataforma de Java cuenta* sin em!argo* con un gran /&ito en las aplicaciones en el entorno del servidor* como los Servicios Ke!* los Servlets* los Java Jeans* as como en sistemas empotrados !asados en SGi* usando entornos Java empotrados%

El recolec"or de #a$ura;editar F editar cdigo<


+,ase tam-i,n. Cecolector de !asura

En Java el pro!lema fugas de memoria se evita en gran medida gracias a la recoleccin de !asura (o automatic gar-age collector)% El programador determina cu,ndo se crean los o!jetos y el entorno en tiempo de ejecucin de Java (Java runtime) es el responsa!le de gestionar el ciclo de vida de los o!jetos% El programa* u otros o!jetos pueden tener locali.ado un o!jeto mediante una referencia a /ste% (uando no quedan referencias a un o!jeto* el recolector de !asura de Java !orra el o!jeto* li!erando as la memoria que ocupa!a previniendo posi!les fugas (ejemploI un o!jeto creado y 8nicamente usado dentro de un m/todo slo tiene entidad dentro de /steR al salir del m/todo el o!jeto es eliminado)% 5un as* es posi!le que se produ.can fugas de memoria si el cdigo almacena referencias a o!jetos que ya no son necesariosMes decir* pueden a8n ocurrir* pero en un nivel conceptual superior% En definitiva* el recolector de !asura de Java permite una f,cil creacin y eliminacin de o!jetos y mayor seguridad%

Sinta&is;editar F editar cdigo<


+a sinta&is de Java se deriva en gran medida de ())% 7ero a diferencia de /ste* que com!ina la sinta&is para programacin gen/rica* estructurada y orientada a o!jetos* Java fue construido desde el principio para ser completamente orientado a o!jetos% Eodo en Java es un o!jeto (salvo algunas e&cepciones)* y todo en Java reside en alguna clase (recordemos que una clase es un molde a partir del cual pueden crearse varios o!jetos)%

'plicacione$ au"noma$;editar F editar cdigo<


Este ejemplo necesita una pequea e&plicacin%

Eodo en Java est, dentro de una clase* incluyendo programas autnomos% El cdigo fuente se guarda en arc'ivos con el mismo nom!re que la clase que contienen y con e&tensin P%javaQ% :na clase (c!ass) declarada p8!lica (pu#!ic) de!e seguir este convenio% En el ejemplo anterior* la clase es -o!a* por lo que el cdigo fuente de!e guardarse en el fic'ero P=ola%javaQ

El compilador genera un arc'ivo de clase (con e&tensin P%classQ) por cada una de las clases definidas en el arc'ivo fuente% :na clase annima se trata como si su nom!re fuera la concatenacin del nom!re de la clase que la encierra* el sm!olo PUQ* y un n8mero entero%

+os programas que se ejecutan de forma independiente y autnoma* de!en contener el m/todo .main ".%

+a pala!ra reservada .void. indica que el m/todo main no devuelve nada% El m/todo main de!e aceptar un array de o!jetos tipo String% 7or acuerdo se referencia como .args.* aunque puede emplearse cualquier otro identificador%

+a pala!ra reservada .static. indica que el m/todo es un m/todo de clase* asociado a la clase en ve. de una instancias de la misma% El m/todo main de!e ser est,tico o TTde claseTT%

+a pala!ra reservada public significa que un m/todo puede ser llamado desde otras clases* o que la clase puede ser usada por clases fuera de la jerarqua de la propia clase% tipos de acceso son .private. o .protected.% tros

+a utilidad de impresin (en pantalla por ejemplo) forma parte de la !i!lioteca est,ndar de JavaI la clase STTSystemTTT define un campo p8!lico est,tico llamado STToutTTT% El o!jeto out es una instancia de STT7rintStreamTTT* que ofrece el m/todo STTprintln (String)TTT para volcar datos en la pantalla (la salida est,ndar)%

+as aplicaciones autnomas se ejecutan dando al entorno de ejecucin de Java el nom!re de la clase cuyo m/todo main de!e invocarse% 7or ejemplo* una lnea de comando (en :ni& o Kindo4s) de la forma /ava 0cp . -o!a ejecutar, el programa del ejemplo (previamente compilado y generado P=ola%classQ)% El nom!re de la clase cuyo m/todo main se llama puede especificarse tam!i/n en el fic'ero PM59?>ESEQ del arc'ivo de empaquetamiento de Java (%jar)%

'pple"$;editar F editar cdigo<

+as applet Java son programas incrustados en otras aplicaciones* normalmente una p,gina Ke! que se muestra en un navegador% // Hello.java import /avax.swing.1App!et+ import /ava.awt.2rap3ics+ public class -e!!o extends 1App!et ) public void paint 2rap3ics g" ) g.drawString 4-o!a5 mundo645 785 98"+ , , <!-- Hola.html --> 'html( 'head( 'title(App!et -o!a Mundo':title( ':head( 'body( 'applet code;4-o!a.c!ass4 widt3;4<==4 3eig3t;4<==4( ':applet( ':body( ':html( 5ctualmente =EM+ $ 'a eliminado el uso de la etiqueta VappletW% 7ero todava e&iste la forma de usarlo en =EM+$% (Ee&to en ingl/s) Java 5pplets in =EM+$% +a sentencia import indica al compilador de Java que incluya las clases java.apple". 'pple" y java.a(". )rap*ic$* para poder referenciarlas por sus nom!res* sin tener que anteponer la ruta completa cada ve. que se quieran usar en el cdigo fuente% +a clase Hola e&tiende (extends) a la clase App!et* es decir* es una su!clase de /sta% +a clase App!et permite a la aplicacin mostrar y controlar el estado del applet% +a clase App!et es un componente del 5KE (5!stract Kindo4 EoolHit)* que permite al applet mostrar una interfa. gr,fica de usuario o G:? (Grap'ical :ser ?nterface)* y responder a eventos generados por el usuario% +a clase -o!a so!recarga el m/todo pain" +)rap*ic$, 'eredado de la superclase contenedora (App!et en este caso)* para acceder al cdigo encargado de di!ujar% El m/todo paint " reci!e un o!jeto Graphics que contiene el conte&to gr,fico para di!ujar el applet% El m/todo paint() llama al m/todo dra4String (String* int* int) del o!jeto -5.

Servle"$;editar F editar cdigo<


Art/culo %rinci%al. Java Servlet

+os servlets son componentes de la parte del servidor de Java EE* encargados de generar respuestas a las peticiones reci!idas de los clientes%

// Hola.java import /ava.io.I>Exception+ import /avax.serv!et.?+ public class -o!a extends 2enericServ!et ) public void service Serv!etRe@uest re@uest5 Serv!etResponse response" throws Serv!etException5 I>Exception ) response.set$ontentT%pe 4text:3tm!4"+ Arint&riter pw ; response.get&riter "+ pw.print!n 4-o!a5 mundo64"+ pw.c!ose "+ , , +as sentencias import indican al compilador de Java la inclusin de todas las clases p8!licas e interfaces de los paquetes java.io y java/.$ervle" en la compilacin% +a clase Hola e&tiende (extends)* es 'eredera de la clase )enericServle"% Esta clase proporciona la interfa. para que el servidor le pase las peticiones al servlet y el mecanismo para controlar el ciclo de vida del servlet% +a clase -o!a so!recarga el m/todo $ervice +Servle"0e1ue$"2 Servle"0e$pon$e,* definido por la interfa. $ervle" para acceder al manejador de la peticin de servicio% El m/todo service " reci!e un o!jeto de tipo Servle"0e1ue$" que contiene la peticin del cliente y un o!jeto de tipo Servle"0e$pon$e* usado para generar la respuesta que se devuelve al cliente% El m/todo service " puede lan0ar (throws) e&cepciones de tipo ServletE&ception e ? E&ception si ocurre alg8n tipo de anomala% El m/todo $e"3on"en"45pe +S"ring, en el o!jeto respuesta esta!lece el tipo de contenido M?ME a 0te&tN'tml0* para indicar al cliente que la respuesta a su peticin es una p,gina con formato =EM+% El m/todo ge"6ri"er+, del o!jeto respuesta devuelve un o!jeto de tipo 7rin"6ri"er* usado como una tu-er/a por la que viajar,n los datos al cliente% El m/todo prin"ln +S"ring, escri!e la cadena 0=ola* mundoX0 en la respuesta y finalmente se llama al m/todo clo$e+, para cerrar la cone&in* que 'ace que los datos escritos en la "u#er8a o stream sean devueltos al cliente%

'plicacione$ con ven"ana$;editar F editar cdigo<


S4ing es la !i!lioteca para la interfa. gr,fica de usuario avan.ada de la plataforma Java SE% // Hola.java import /avax.swing.?+ public class -o!a extends 1Brame ) -o!a " ) setDefau!t$!ose>peration &indow$onstants.DISA>SEC>NC$L>SE"+ add new 1La#e! 4-o!a5 mundo64""+

pacD "+ , public static void main StringEF args" ) new -o!a ".setGisi#!e true"+ , , +as instrucciones import indican al compilador de Java que las clases e interfaces del paquete java/.$(ing se incluyan en la compilacin% +a clase Hola e&tiende (extends) la clase java/.$(ing.J9rame* que implementa una ventana con una !arra de ttulo y un control para cerrarla% El constructor Hola() iniciali.a el marco o frame llamando al m/todo $e"De&aul"3lo$e!pera"ion +in", 'eredado de J>rame para esta!lecer las operaciones por defecto cuando el control de cierre en la !arra de ttulo es seleccionado al valor Kindo4(onstants%G?S7 SEY 9Y(+ SE% Esto 'ace que se li!eren los recursos tomados por la ventana cuando es cerrada* y no simplemente ocultada* lo que permite a la m,quina virtual y al programa aca!ar su ejecucin% 5 continuacin se crea un o!jeto de tipo J+a!el con el te&to 0=ola* mundoX0* y se aade al marco mediante el m/todo add +3omponen",* 'eredado de la clase 3on"ainer% El m/todo pac:+,* 'eredado de la clase6indo(* es invocado para dimensionar la ventana y distri!uir su contenido% El m/todo main() es llamado por la J-M al comien.o del programa% (rea una instancia de la clase Hola y 'ace la ventana sea mostrada invocando al m/todo $e";i$i#le +#oolean, de la superclase (clase de la que 'ereda) con el par,metro a true% -/ase que* una ve. el marco es di!ujado* el programa no termina cuando se sale del m/todo main()* ya que el cdigo del que depende se encuentra en un 'ilo de ejecucin independiente ya lan.ado* y que permanecer, activo 'asta que todas las ventanas 'ayan sido destruidas%

Entornos de funcionamiento;editar F editar cdigo<


El diseo de Java* su ro!uste.* el respaldo de la industria y su f,cil porta!ilidad 'an 'ec'o de Java uno de los lenguajes con un mayor crecimiento y amplitud de uso en distintos ,m!itos de la industria de la inform,tica%

En di$po$i"ivo$ mvile$ 5 $i$"ema$ empo"rado$;editar F editar cdigo<


Gesde la creacin de la especificacin J1ME (Java 1 7latform* Micro Edition)* una versin del entorno de ejecucin Java reducido y altamente optimi.ado* especialmente desarrollado para el mercado de dispositivos electrnicos de consumo se 'a producido toda una revolucin en lo que a la e&tensin de Java se refiere% Es posi!le encontrar microprocesadores diseados para ejecutar !ytecode Java y soft4are Java para tarjetas inteligentes (Java(ard)* tel/fonos mviles* !uscapersonas* set3top3!o&es* sintoni.adores de E- y otros pequeos electrodom/sticos%

El modelo de desarrollo de estas aplicaciones es muy semejante a las a%%lets de los navegadores salvo que en este caso se denominan M?Glets% -/ase Sun Mo!ile Gevice Eecnology

En el navegador (e#;editar F editar cdigo<


Gesde la primera versin de java e&iste la posi!ilidad de desarrollar pequeas aplicaciones (5pplets) en Java que luego pueden ser incrustadas en una p,gina =EM+ para que sean descargadas y ejecutadas por el navegador 4e!% Estas mini3aplicaciones se ejecutan en una J-M que el navegador tiene configurada como e&tensin (%lug1in) en un conte&to de seguridad restringido configura!le para impedir la ejecucin local de cdigo potencialmente malicioso% El /&ito de este tipo de aplicaciones (la visin del equipo de Gosling) no fue realmente el esperado de!ido a diversos factores* siendo qui.,s el m,s importante la lentitud y el reducido anc'o de !anda de las comunicaciones en aquel entonces que limita!a el tamao de las applets que se incrusta!an en el navegador% +a aparicin posterior de otras alternativas (aplicaciones 4e! din,micas de servidor) dej un reducido ,m!ito de uso para esta tecnologa* quedando 'oy relegada fundamentalmente a componentes especficos para la intermediacin desde una aplicacin 4e! din,mica de servidor con dispositivos u!icados en la m,quina cliente donde se ejecuta el navegador% +as a%%lets Java no son las 8nicas tecnologas (aunque s las primeras) de componentes complejos incrustados en el navegador% tras tecnologas similares pueden serI5ctiveO de

Microsoft* >las'* Java Ke! Start* etc%

En $i$"ema$ de $ervidor;editar F editar cdigo<


En la parte del servidor* Java es m,s popular que nunca* desde la aparicin de la especificacin de Servlets y JS7 (Java Server 7ages)% =asta entonces* las aplicaciones 4e! din,micas de servidor que e&istan se !asa!an fundamentalmente en componentes (G? y lenguajes interpretados% 5m!os tenan diversos inconvenientes (fundamentalmente lentitud* elevada carga computacional o de memoria y propensin a errores por su interpretacin din,mica)% +os servlets y las JS7s supusieron un importante avance ya queI

El 57? de programacin es muy sencilla* fle&i!le y e&tensi!le% +os servlets no son procesos independientes (como los (G?s) y por tanto se ejecutan dentro del mismo proceso que la J-M mejorando nota!lemente el rendimiento y reduciendo la carga computacional y de memoria requeridas%

+as JS7s son p,ginas que se compilan din,micamente (o se pre3compilan previamente a su distri!ucin) de modo que el cdigo que se consigue una ventaja en rendimiento su!stancial frente a muc'os lenguajes interpretados%

+a especificacin de Servlets y JS7s define un 57? de programacin y los requisitos para un contenedor (servidor) dentro del cual se puedan desplegar estos componentes para formar aplicaciones 4e! din,micas completas% =oy da e&isten multitud de contenedores (li!res y comerciales) compati!les con estas especificaciones% 5 partir de su e&pansin entre la comunidad de desarrolladores* estas tecnologas 'an dado paso a modelos de desarrollo muc'o m,s ela!orados con frame4orHs (pe Struts*Ke!4orH) que se so!reponen so!re los servlets y las JS7s para conseguir un entorno de tra!ajo muc'o m,s poderoso y segmentado en el que la especiali.acin de roles sea posi!le (desarrolladores* diseadores gr,ficos*%%%) y se facilite la reutili.acin y ro!uste. de cdigo% 5 pesar de todo ello* las tecnologas que su!yacen (Servlets y JS7s) son su!stancialmente las mismas% Este modelo de tra!ajo se 'a convertido en uno de los est,ndar e1facto para el desarrollo de aplicaciones 4e! din,micas de servidor%

En aplicacione$ de e$cri"orio;editar F editar cdigo<


=oy en da e&isten multitud de aplicaciones gr,ficas de usuario !asadas en Java% El entorno de ejecucin Java (JCE) se 'a convertido en un componente 'a!itual en los 7( de usuario de los sistemas operativos m,s usados en el mundo% 5dem,s* muc'as aplicaciones Java lo incluyen dentro del propio paquete de la aplicacin de modo que se ejecuten en cualquier 7(% En las primeras versiones de la plataforma Java e&istan importantes limitaciones en las 57?s de desarrollo gr,fico (5KE)% Gesde la aparicin de la !i!lioteca S4ing la situacin mejor su!stancialmente y posteriormente con la aparicin de !i!liotecas como SKE 'acen que el desarrollo de aplicaciones de escritorio complejas y con gran dinamismo* usa!ilidad* etc% sea relativamente sencillo%

7la"a&orma$ $opor"ada$;editar F editar cdigo<


:na versin del entorno de ejecucin Java JCE (Java Cuntime Environment) est, disponi!le en la mayora de equipos de escritorio% Sin em!argo* Microsoft no lo 'a incluido por defecto en sus sistemas operativos% En el caso de 5pple* /ste incluye una versin propia del JCE en su sistema operativo* el Mac S% Eam!i/n es un producto que por defecto aparece en la mayora de las

distri!uciones de G9:N+inu&% Ge!ido a incompati!ilidades entre distintas versiones del JCE* muc'as aplicaciones prefieren instalar su propia copia del JCE antes que confiar su suerte a la aplicacin instalada por defecto% +os desarrolladores de applets de Java o !ien de!en insistir a los usuarios en la actuali.acin del JCE* o !ien desarrollar !ajo una versin antigua de Java y verificar el correcto funcionamiento en las versiones posteriores%

7rogramacin;editar F editar cdigo<


E/pre$ione$;editar F editar cdigo<
+as e&presiones son un conjunto de elementos o toHens junto con literales que son evaluados para devolver un resultado% +os toHens son elemento m,s pequeo de un programa que es significativo* e interpretado o entendido por el compilador* en java los toHens se dividen en cinco categoras que sonI 2 entifica ores. Son las representaciones que se les da a los nom!res que se asignan a las varia!les* clases* paquetes* m/todos y constantes en el cdigo de java para que el compilador los identifique y el programador pueda entenderlos% En java los identificadores pueden diferenciar entre may8sculas o min8sculas por ser case sensitive* por lo que la varia!le cuyo nom!re sea PMivaria!leQ* no es igual a Pmivarial!leQ* ya que java identifica estas como varia!les diferentes por el case sensitive* tam!i/n se puede utili.ar n8meros* o el signo PYQ para asignar un identificador% Pala-ras claves. Son los identificadores reservados por java para cumplir con un o!jetivo especfico en el cdigo y el compilador* se usan de forma limitada y en casos especficos% +as pala!ras claves que usa java son las siguientesI

abstract

boolean

brea8

byte

case

catc-

c-ar

class

continue

de9ault

do

double

else

e>tends

9alse

9inal

9inally

9loat

9or

i9

implements import

instanceo9 int

inter9ace

long

native

ne?

null

pac8age

private

protected public

return

s-ort

static

super

s?itc-

syncroniced t-is

t-ro?

t-ro?s

transient

true

try

void

volatile

?-ile

var

rest

b&value

cast

const

future

generic

goto

inner

operator outer

+as pala!ras que se encuentran en negrilla* son pala!ras claves para java aunque actualmente no se utilicen en la versin de java* pero se pretenden integrar en las siguientes versiones de java% +as pala!ras como true* false o null tam!i/n son pala!ras claves pero son pala!ras reservadas en java por lo cual no pueden ser utili.adas como un identificador% 'iterales y constantes.+os literales son sinta&is para asignar valores a una varia!le* es decir el valor que puede tomar una varia!le* tam!i/n es un valor constante que puede ser de tipo num/rico% +as constantes son varia!les que tienen un valor fijo y no puede ser modificado en el trascurso de la ejecucin del cdigo* estas se declaran por medio de los modificadores final y static% final static double pi; H.IJI7+ O%era ores. Son los que nos indican una evaluacin que se aplica a un o!jeto o un dato* so!re un identificador o constante% :n ejemplo de operadores puede ser la suma* resta o multiplicacin% $e%ara ores. Se utili.an para indicarle al compilador de java donde se u!ican los elementos del cdigo* los separadores que admite java sonI Z [*IR Eam!i/n el compilador de java identifica y elimina los comentarios* retornos de carros espacios vacos y de ta!ulacin a la 'ora de compilar por lo que no son considerados parte de un toHens% +as e&presiones pueden ser una com!inacin en secuencia de varia!les* operadores y m/todos% +as e&presiones son utili.adas para reali.ar c,lculos* para asignar valores a varia!les* o para controlar la ejecucin del flujo del programa%

!peradore$;editar F editar cdigo<


+os operadores son aquellos que tras reali.ar una operacin devuelven un resultado* estos se puede caracteri.ar por el n8mero de operadores* el tipo de operandos* y el resultado que generan% 98mero de operandos% 7ueden ser de dos tipos unarios* y !inarios% +os unarios son aquellos que solo necesitan de un operando para devolver un valor* mientras que los !inarios necesitan de dos o m,s operandos% peradores unarios%

'perador

Descripcin

$ambio de signo

Operador ;OA

$omplemento a

peradores !inarios%

'peradores

Descripcin

76C=D

Operadores aritmEticos

FF @F G H GF HF

Operadores relacionales

&& II J

Operadores booleanos

J GG HH HHH

Operadores a nivel de bit

$oncatenacin de cadenas

!peradore$ a nivel de #i";editar F editar cdigo<


+os operadores a nivel de !it nos permiten reali.ar operaciones so!re n8meros !inarios% 3 4om%lemento a 5* este operador invierte los dgitos* cam!iando los 2 por " y los " por 2* un ejemplo puede serI

II==I=II K II==I=II resu!tado ==II=I==


(omo se puede ver se cam!ian los valores de 2 a " y de " a 2% 6 A7* a nivel e -it* este operador reali.a una operacin 59G o suma entre dos n8meros de !it* en donde si dos !it son igual a " el resultado ser, "* de lo contrario ser, 2* un ejemplo puede serI

situacion =I==II=I

L I==II=II CCCCCCCCCCCCCC ====I==I

8 Or a nivel e -it* este operador reali.a una operacin es " el resultado ser, "* un ejemplo puede serI

C en donde si alguno de los dos n8meros

II==II=I M =I=III=I CCCCCCCCCCCCCC II=III=I

9 :OR a nivel e -it* este operador reali.a la operacin O C en donde si los dos n8meros son iguales el resultado ser, 2 de lo contrario ser, "* un ejemplo puede serI

==I=I==I< N =II=II=I< CCCCCCCCCCCCCC =I===I==

;; *es%la0amiento a la i0&uier a* este operador despla.a n cantidad de espacios a la i.quierda un !it* un ejemplo puede serR

=II=III= =II=III= '' < ; II=III==

(omo se puede ver al reali.ar el despla.amiento se reali.a una insercin de un dgito 2 a la derec'a

7recedencia de operadore$;editar F editar cdigo<


+os operadores son una parte principal en las e&presiones* el tipo y forma de uso es fundamental a la 'ora de programas* pero para su uso se tiene que tener en cuenta una serie de normas* como lo son la precedencia de los operadores% +os operadores son ejecutados seg8n su precedencia* si cuentan con una precedencia mayor ser,n evaluados primero que los de precedencia menor* si por casualidad se llegase a presentar operadores con el mismo nivel de precedencia* estos se evaluaran de derec'a a i.quierda* si son operadores !inarios (menos los operadores de asignacin) se evaluaran de i.quierda a derec'a% 5 Java se le puede indicar que operadores de!e evaluar primero sin importar su precedencia por medio de par/ntesis ( )* de esta forma el compilador de java interpreta que primero ejecutara las operaciones que se encuentran dentro de los par/ntesis* y luego continuara con los dem,s

operadores% +a siguiente ta!la indicara en nivel de precedencia de los operadores utili.ados en java* teniendo en cuenta que el nivel de precedencia est, indicado de arri!a a a!ajo* siendo arri!a el nivel m,s alto% 7recedencia de los operadores en java%

"ipo de operadores

'peradores

Operadores pos9ijos

K L . # parmetros% e>pr77 e>pr66

Operadores unarios

77e>pr Me>pr 7e>pr 6e>pr B @

$reacin o conversin ;e? #tipo% e>pr

Multiplicacin

C=D

Suma

76

1espla5amiento

GG HH HHH

$omparacin

G H GF HF instanceo9

Ngualdad

FF @F

O;1 a nivel bit

&

OP a nivel bit

QOP a nivel bit

O;1 lgico

&&

OP lgico

II

$ondicional

RS

Osignacin

F 7F 6F CF =F DF &F JF IF GGF HHF HHHF

:n ejemplo de la precedencia de los operadores en java podra ser el siguiente* en donde tenemos un cdigo que se encargara de reali.ar una serie de operaciones aritm/ticas% int numeroI ; H+ int numero<; J+ int resu!tado+ resu!tado; numeroI O numero< ? H+ S%stem.out.print!n resu!tado"+ //esto imprime el valor de 15

seg8n la precedencia de los operadores la multiplicacin \ tiene mayor prioridad que la suma )* por lo que primero se ejecuta la multiplicacin y luego se reali.a la suma% int numeroI ; H+ int numero<; J+ int resu!tado+ resu!tado; numeroI O numero<" ? H+ resu!tado"+ //esto imprime el valor de 21 S%stem.out.print!n

En este caso el resultado cam!ia ya que primero se eval8an los par,metros que est,n dentro del par/ntesis y luego se eval8a el resto de par,metros% :na de las recomendaciones que da java para el desarrollo es el uso de los par/ntesis en las operaciones con m,s de @ operandos* as de esta forma el cdigo se 'ace m,s legi!le y se evitan errores al momento de compilar%

Sen"encia$;editar F editar cdigo<


+as sentencias son una representacin de una secuencia de acciones que se reali.an en java* la clave fundamental de las sentencias es su punto final que indica que 'a finali.ado la sentencia y puede continuar con la siguiente* el indicador utili.ado es el signo de punto y coma (R )% (ontamos en java con sentencias que pueden ir desde sentencias de asignacin* de !ucles* condicionales* y de salto% +as sentencias se conforman com8nmente por una instancia* y un operador* un ejemplo es la sentencia de asignacin que se conforma por una instancia de una varia!le* el signo de asignacin y una e&presin* un ejemplo esI int varia#!e; I<O<+ +as sentencias de asignacin son aquellas en las que se asigna un valor a una varia!le o constante% +as sentencias condicionales son las que e&presan una condicin para definir el flujo de ejecucin del programa* entre ellas tenemos if3else y s4itc'% +as sentencias de !ucles se encargar de reali.ar una accin cierta cantidad de tiempo dado* o 'asta que se cumpla con una condicin* entre ellas tenemos el 4'ile* do34'ile* y for% +as sentencias de salto llevan al compilador a un punto especfico

del programa o 'acia la siguiente sentencia de ejecucin* entre ellas tenemos !reaH* continue* y return%

3onver$in de "ipo$;editar F editar cdigo<


En algunos casos suele ser necesario convertir un tipo de dato a otro* esto se le conoce como conversin de tipos* modelado* o tipado* as de esta forma poder reali.ar las operaciones necesarias so!re el valor que se desea convertir% Se de!e tener en cuenta el tipo de dato que se va a convertir* ya que si se convierte un dato que tenga una cantidad menor de !it al anterior este tendr, perdida de informacin* un ejemplo de tipado puede ser un n8mero long que se desea convertir a int* el compilador eliminara los primeros @1!it del long para ajustarlo al int ya que el int es de @1!it y el long de BA% Si la conversin se reali.a a un tipo de datos de menos !it a un tipo de datos con mayor !it* la conversin se reali.a autom,ticamente llamada conversin implcita* pero si se reali.a de un tipo de datos con mayor !it a menor !it se tiene que reali.ar una conversin e&plicita* la cual se reali.a con un casting* al usar este m/todo se o!liga a reali.ar la conversin por lo cual puede 'a!er perdida de datos en la conversin% 7ara reali.ar una conversin e&plicita se tiene que poner el tipo de dato que se desea reali.ar la conversin entre par/ntesis* luego el valor o la varia!le que se desea convertir% :n ejemplo de conversin de tipo e&plicito puede serI Int numeroI ; H<+ byte numero<+ numero< ; byte" numeroI+

:n ejemplo de una conversin de tipo implcita puede serI int numeroI ; H<+ long numero<+ numero< ; numeroI+ +as siguiente ta!la muestra la los tipos de datos que se pueden reali.ar una conversin implcita desde el dato origen* 'asta el dato destino que es el dato en el que se va a convertir%

"ipo origen

"ipo destino

byte

double, 9loat, long, int, c-ar, s-ort

s-ort

double, 9loat, long, int

c-ar

double, 9loat, long, int

int

double, 9loat, long

long

double, 9loat

9loat

double

+os tipos de datos !ooleanos no pueden ser convertidos a otro tipo de datos* por ning8n m/todo mencionado anteriormente% tro tipo de conversin que no se encuentre en esta ta!la desde el

origen al destino* tiene que reali.arse por medio de una conversin e&plcita por casting% (uando se desea reali.ar una conversin de un tipo string como origen a otro tipo* es necesario utili.ar una funcin que se encarga de convertir el tipo de dato* la funcin necesaria se compone de la varia!le que va almacenar el resultado* y dependiendo de la varia!le se usa el par,metro que inicia con el tipo de dato a convertir* ?nteger* Jyte* S'ort* o +ong* seguida de punto P% P* el cual indica que se cargar,n los atri!utos del par,metro* en donde cargaremos el parse?nt si queremos convertir a interger o parseJyte si queremos convertir a !yte* o dependiendo del tipo de dato* seguido de par/ntesis en donde se agregara el valor de string a convertir% 5lgunos ejemplos puede serI int numeroI+ long numero<+ byte numeroH+ String texto; P<=IH.+ numeroI ; Interger.parseInt numero< ; Long.parseLong numeroH ; Q%te.parseQ%te texto "+ texto"+ texto "+

esto suele ser usado para reali.ar una conversin de te&to cuando se ingresan valores num/ricos por una entrada a java* la cual los detecta como string* as de esta forma puede convertir el te&to que se ingresa a un n8mero para reali.ar operaciones* como una calculadora%

?ndustria relacionada;editar F editar cdigo<


Sun Microsystem* como creador del lenguaje de programacin Java y de la plataforma JGL* mantiene fuertes polticas para mantener una especificacin del lenguaje $ as como de la m,quina virtualB a trav/s del J(7% Es de!ido a este esfuer.o que se mantiene un est,ndar de facto% Son innumera!les las compaas que desarrollan aplicaciones para Java yNo est,n volcadas con esta tecnologaI

+a industria de la telefona mvil est, fuertemente influenciada por la tecnologa Java% +os entornos de desarrollo 9et!eans y Eclipse 'a tomado un lugar importante entre la comunidad de desarrolladores Java%

+a fundacin 5pac'e tiene tam!i/n una presencia importante en el desarrollo de !i!liotecas y componentes de servidor !asados en Java%

?JM* JE5* ? 95* para Java%

racle*%%% son empresas con grandes intereses y productos creados en y

(rticas;editar F editar cdigo<


En "##$ alguien dijo que Java fue creado para a!rir una nueva va en la gestin de soft4are complejo* y es por regla general aceptado que se 'a comportado !ien en ese aspecto% Sin em!argo no puede decirse que Java no tenga grietas* ni que se adapta completamente a todos los estilos de programacin* todos los entornos* o todas las necesidades%

)eneral;editar F editar cdigo<

Java no 'a aportado capacidades est,ndares para aritm/tica en punto flotante% El est,ndar ?EEE 6$A para PEst,ndar para 5ritm/tica Jinaria en 7unto >lotanteQ apareci en "#D$* y desde entonces es el est,ndar para la industria% ] aunque la aritm/tica flotante de Java <cosa &ue cam-i= es e el 5> e noviem-re e ?@@A, cuan o se a-ri= el c= igo fuente y se a o%t= la licencia GP', a%arte e la ya eBistenteC;cita re&ueri
a<

se !asa en gran medida en la norma del ?EEE*

no soporta a8n algunas caractersticas% M,s informacin al respecto puede encontrarse en la seccin final de enlaces e&ternos%

El lenguaje;editar F editar cdigo<

En un sentido estricto* Java no es un lenguaje a!solutamente orientado a o!jetos* a diferencia de* por ejemplo* Cu!y o SmalltalH% 7or motivos de eficiencia* Java 'a relajado en cierta medida el paradigma de orientacin a o!jetos* y as por ejemplo* no todos los valores son o!jetos%

El cdigo Java puede ser a veces redundante en comparacin con otros lenguajes% Esto es en parte de!ido a las frecuentes declaraciones de tipos y conversiones de tipo manual (casting)% Eam!i/n se de!e a que no se dispone de operadores so!recargados* y a una sinta&is relativamente simple% Sin em!argo* J1SE $%2 introduce elementos para tratar de reducir la redundancia* como una nueva construccin para los !ucles STTforeac'TTT%

5 diferencia de ())* Java no dispone de operadores de so!recarga definidos por el usuario% +os diseadores de Java tomaron esta decisin puesto que considera!an que* !ajo ciertas circunstancias* esta caracterstica poda complicar la lectura y mantenimiento de los programas%

'pariencia;editar F editar cdigo<


+a apariencia e&terna (el SSSlooH and feelTTT) de las aplicaciones G:? (Grap'ical :ser ?nterface) escritas en Java usando la plataforma S4ing difiere a menudo de la que muestran aplicaciones nativas% 5unque el programador puede usar el juego de 'erramientas 5KE (5!stract Kindo4ing

EoolHit) que genera o!jetos gr,ficos de la plataforma nativa* el 5KE no es capa. de funciones gr,ficas avan.adas sin sacrificar la porta!ilidad entre plataformasR ya que cada una tiene un conjunto de 57?s distinto* especialmente para o!jetos gr,ficos de alto nivel% +as 'erramientas de S4ing* escritas completamente en Java* evitan este pro!lema construyendo los o!jetos gr,ficos a partir de los mecanismos de di!ujo !,sicos que de!en estar disponi!les en todas las plataformas% El inconveniente es el tra!ajo e&tra requerido para conseguir la misma apariencia de la plataforma destino% 5unque esto es posi!le (usando GEL) y el +ooH3and3>eel de Kindo4s)* la mayora de los usuarios no sa!en cmo cam!iar la apariencia que se proporciona por defecto por aquella que se adapta a la de la plataforma%

0endimien"o;editar F editar cdigo<


El !ytecode de Java puede ser interpretado en tiempo de ejecucin por la m,quina virtual* o !ien compilado al cargarse el programa* o durante la propia ejecucin* para generar cdigo nativo que se ejecuta directamente so!re el 'ard4are% Si es interpretado* ser, m,s lento que usando el cdigo m,quina intrnseco de la plataforma destino% Si es compilado* durante la carga inicial o la ejecucin* la penali.acin est, en el tiempo necesario para llevar a ca!o la compilacin% 5lgunas caractersticas del propio lenguaje conllevan una penali.acin en tiempo* aunque no son 8nicas de Java% 5lgunas de ellas son el c'equeo de los lmites de arrays* c'equeo en tiempo de ejecucin de tipos* y la indireccin de funciones virtuales% El uso de un recolector de !asura para eliminar de forma autom,tica aquellos o!jetos no requeridos* aade una so!recarga que puede afectar al rendimiento* o ser apenas aprecia!le* dependiendo de la tecnologa del recolector y de la aplicacin en concreto% +as J-M modernas usan recolectores de !asura que gracias a r,pidos algoritmos de manejo de memoria* consiguen que algunas aplicaciones puedan ejecutarse m,s eficientemente% El rendimiento entre un compilador J?E y los compiladores nativos puede ser parecido* aunque la distincin no est, clara en este punto% +a compilacin mediante el J?E puede consumir un tiempo aprecia!le* un inconveniente principalmente para aplicaciones de corta duracin o con gran cantidad de cdigo% Sin em!argo* una ve. compilado* el rendimiento del programa puede ser compara!le al que consiguen compiladores nativos de la plataforma destino* inclusive en tareas num/ricas% 5unque Java no permite la e&pansin manual de llamadas a m/todos* muc'os compiladores J?E reali.an esta optimi.acin durante la carga de la aplicacin y pueden aprovec'ar informacin del entorno en tiempo de ejecucin para llevar a ca!o transformaciones eficientes durante la propia ejecucin de la aplicacin% Esta recompilacin din,mica* como la que proporciona la m,quina virtual =otSpot de Sun* puede llegar a mejorar el resultado de compiladores est,ticos tradicionales* gracias a los datos que slo est,n disponi!les durante el tiempo de ejecucin% Java fue diseado para ofrecer seguridad y porta!ilidad* y no ofrece acceso directo al 'ard4are de la arquitectura ni al espacio de direcciones% Java no soporta e&pansin decdigo ensam!lador*

aunque las aplicaciones pueden acceder a caractersticas de !ajo nivel usando !i!liotecas nativas (J9?* Java 9ative ?nterfaces)%

Cecursos;editar F editar cdigo<


J0E;editar F editar cdigo<
El J0E (Java Cuntime Environment* o Entorno en Eiempo de Ejecucin de Java) es el soft4are necesario para ejecutar cualquier aplicacin desarrollada para la plataforma Java% El usuario final usa el JCE como parte de paquetes soft4are o plugins (o conectores) en un navegador Ke!% Sun ofrece tam!i/n el SGL de Java 1* o JGL (Java Gevelopment Lit) en cuyo seno reside el JCE* e incluye 'erramientas como el compilador de Java* Javadoc para generar documentacin o el depurador% 7uede tam!i/n o!tenerse como un paquete independiente* y puede considerarse como el entorno necesario para ejecutar una aplicacin Java* mientras que un desarrollador de!e adem,s contar con otras facilidades que ofrece el JGL%

3omponen"e$;editar F editar cdigo<

Ji!liotecas de Java* que son el resultado de compilar el cdigo fuente desarrollado por quien implementa la JCE* y que ofrecen apoyo para el desarrollo en Java% 5lgunos ejemplos de estas !i!liotecas sonI

+as !i!liotecas centrales* que incluyenI :na coleccin de !i!liotecas para implementar estructuras de datos como listas* arrays* ,r!oles y conjuntos%

Ji!liotecas para an,lisis de OM+% Seguridad% Ji!liotecas de internacionali.acin y locali.acin% Ji!liotecas de integracin* que permiten la comunicacin con sistemas e&ternos%

Estas !i!liotecas incluyenI


directorio%

+a 57? para acceso a !ases de datos JGJ( (Java GataJase (onectivity)% +a interfa. J9G? (Java 9aming and Girectory ?nterface) para servicios de

CM? (Cemote Met'od ?nvocation) y ( CJ5 para el desarrollo de aplicaciones distri!uidas%

Ji!liotecas para la interfa. de usuario* que incluyenI

El conjunto de 'erramientas nativas 5KE (5!stract Kindo4ing EoolHit)* que ofrece componentes G:? (Grap'ical :ser ?nterface)* mecanismos para usarlos y manejar sus eventos asociados%

+as Ji!liotecas de S4ing* construidas so!re 5KE pero ofrecen implementaciones no nativas de los componentes de 5KE%

57?s para la captura* procesamiento y reproduccin de audio%

:na implementacin dependiente de la plataforma en que se ejecuta de la m,quina virtual de Java (J-M)* que es la encargada de la ejecucin del cdigo de las !i!liotecas y las aplicaciones e&ternas%

7lugins o conectores que permiten ejecutar applets en los navegadores Ke!% Java Ke! Start* para la distri!ucin de aplicaciones Java a trav/s de ?nternet% Gocumentacin y licencia%

'7%$;editar F editar cdigo<


Sun define tres plataformas en un intento por cu!rir distintos entornos de aplicacin% 5s* 'a distri!uido muc'as de sus 57?s (5pplication 7rogram ?nterface) de forma que pertene.can a cada una de las plataformasI

Java ME (Java 7latform* Micro Edition) o J1ME M orientada a entornos de limitados recursos* como tel/fonos mviles* 7G5s (7ersonal Gigital 5ssistant)* etc% Java SE (Java 7latform* Standard Edition) o J1SE M para entornos de gama media y estaciones de tra!ajo% 5qu se sit8a al usuario medio en un 7( de escritorio%

Java EE (Java 7latform* Enterprise Edition) o J1EE M orientada a entornos distri!uidos empresariales o de ?nternet%

+as clases en las 57?s de Java se organi.an en grupos disjuntos llamados paquetes% (ada paquete contiene un conjunto de interfaces* clases y e&cepciones relacionadas% +a informacin so!re los paquetes que ofrece cada plataforma puede encontrarse en la documentacin de /sta% El conjunto de las 57?s es controlado por Sun Microsystems junto con otras entidades o personas a trav/s del programa J(7 (Java (ommunity 7rocess)% +as compaas o individuos participantes del J(7 pueden influir de forma activa en el diseo y desarrollo de las 57?s* algo que 'a sido motivo de controversia%

E/"en$ione$ 5 ar1ui"ec"ura$ relacionada$;editar F editar cdigo<

+as e&tensiones6 de Java est,n en paquetes que cuelgan de la ra. java&I /avax.?% 9o se incluyen en la JGL o el JCE% 5lgunas de las e&tensiones y arquitecturas ligadas estrec'amente al lenguaje Java sonI

Java EE (Java 7latform* Enterprise EditionR antes J1EE) Mpara aplicaciones distri!uidas orientadas al entorno empresarial

Java en cdigo a!ierto;editar F editar cdigo<


Java se 'a convertido en un lenguaje con una implantacin masiva en todos los entornos (personales y empresariales)% El control que mantiene Sun so!re /ste 'a generado reticencias en la comunidad de empresas con fuertes intereses en Java (?JM* de desarrolladores de soft4are li!re% +a evolucin !asada en un comit/ en el que participen todos los implicados no es suficiente y la comunidad demanda!a desde 'ace tiempo la li!eracin de las 57?s y !i!liotecas !,sicas de la JGL% En diciem!re de 122B* Sun Microsystems comen. el relan.amiento de su plataforma JavaD !ajo la licencia G7+ de G9:% En a!ril de 122# racle adquiri Sun Microsystems* lo que gener temor en la comunidad ante la racle) y o!viamente en la comunidad

posi!le mercantili.acin del lenguaje de programacin orientado a o!jetos m,s popular actualmente% 7or a'ora control% Se instala una versin 'ome!re4 de 7S7L-M (2%$%$) para emular la plataforma de Java en 7S7% Esto permite usar programas J5-5 en esta videoconsola% racle 'a seguido manteniendo Java* estando las versiones posteriores a la B !ajo su

'l"erna"iva$ li#re$;editar F editar cdigo<


E&isten alternativas para el entorno de ejecucin y de desarrollo de Java con una gran co!ertura de funcionalidades con respecto a las implementaciones comerciales de Sun* ?JM* Jea* etc%

3r8"ica$ re&eren"e$ a Java 5 el $o&"(are li#re;editar F editar cdigo<



>ree Jut S'acHled M E'e Java Erap* de Cic'ard Stallman* "1 de a!ril de 122A% (respuesta de James Gosling) Eraduccin al espaol de este artculoI +i!re pero encadenado% +a trampa del Java% (9tese que 'ay una nota en un recuadro amarillo que 'a!la de la situacin actual con respecto a lo que se dice en ese artculo) 9otar que este artculo fue escrito antes de la li!eracin del cdigo fuente de Java% En la actualidad la postura de la >ree Soft4are >oundation y de Cic'ard Stallman 'an cam!iado;cita re&ueri a<* mostr,ndose partidarios am!os de su uso en soft4are li!re%

Você também pode gostar