You are on page 1of 9

Taller introduccin a Java

1. Qu es un paradigma?
Paradigma es un conjunto de compromisos compartidos dentro de los cuales
yacen supuestos que permiten crear un marco conceptual a partir del cual se le da
cierto sentido y significado al mundo. entro del paradigma se adquieren
generali!aciones sim"licas# criterios metodolgicos# compromisos ontolgicos y
ejemplares de solucin $e%perimentos satisfactorios&# los cuales ser'n integrados a
manera de c(ip para guiar la forma en que se resuelven los pro"lemas cient)ficos y
modelan nuestros marcos epistmicos# es decir# delimitan nuestro (ori!onte de
conocimiento. igamos que# cuando se (ace ciencia# no se parte de la nada# sino
que se parte de una serie de (erramientas que nos permiten tra"ajar y sin las
cuales ninguna ciencia podr)a tener lugar. *a cuestin es que nuestras
(erramientas +que podr)amos definirlas como (erramientas conceptuales+ ya
tienen una carga# una forma espec)fica conforme a la cual la"oramos. ,n otras
pala"ras# un paradigma es el conjunto de (erramientas conceptuales que
asumimos de antemano y ya est'n enfocadas a resolver los pro"lemas de cierta
manera y no de otra.
-omo ejemplo se puede afirmar que (oy en d)a el paradigma del sistema solar es
induda"le. las (erramientas conceptuales# as) como los e%perimentos y evidencias
que la tecnolog)a nos ofrece no dejan lugar de dudas que# en efecto# e%isten
planetas que giran alrededor del /ol con ciclos rotatorios "ien definidos. -uando
se (acen investigaciones so"re gala%ias lejanas# se (acen apoy'ndose en los
supuestos y compromisos que e%plican nuestro sistema solar. 0lguien no podr)a
de "uenas a primeras e%plicar el movimiento de gala%ias lejanas pasando por alto
las leyes m's fundamentales de la f)sica. tiene que conocerlas y utili!arlas para#
posteriormente# modificarlas de manera paulatina o dr'stica.
1. Paradigmas de programacin
2n paradigma de programacin representa un enfoque particular o filosof)a para la
construccin del soft3are. 4o es mejor uno que otro sino que cada uno tiene
ventajas y desventajas. Tam"in (ay situaciones donde un paradigma resulta m's
apropiado que otro. Tipos de programas de programacin m's comunes5
+,l paradigma imperativo o por procedimientos es considerado el m's com6n y
est' representado# por ejemplo# por el - o por 70/8-.
+,l paradigma funcional est' representado por la familia de lenguajes $en particular
sc(eme&# 9* o :0/;,**.
+,l paradigma lgico# un ejemplo es P<=*=>.
+,l paradigma orientado a o"jetos. 2n lenguaje completo orientado a o"jetos
/malltal?.
@. *a programacin orientada a o"jetos es una forma de programar que trata de
encontrar una solucin a los pro"lemas que ocasiona"a la programacin
estructurada. 8ntroduce nuevos conceptos# que superan y ampl)an conceptos
antiguos ya conocidos. ,ntre ellos destacan los siguientes5
+-lase5 definiciones de las propiedades y comportamiento de un tipo de o"jeto
concreto. *a instanciacin es la lectura de estas definiciones y la creacin de un
o"jeto a partir de ellas.
+:erencia5 $por ejemplo# (erencia de la clase a la clase -& ,s la facilidad
mediante la cual la clase (ereda en ella cada uno de los atri"utos y operaciones
de -# como si esos atri"utos y operaciones (u"iesen sido definidos por la misma
. Por lo tanto# puede usar los mismos mtodos y varia"les p6"licas declaradas
en -. *os componentes registrados como AprivadosA $private& tam"in se (eredan#
pero como no pertenecen a la clase# se mantienen escondidos al programador y
slo pueden ser accedidos a travs de otros mtodos p6"licos. ,sto es as) para
mantener (egemnico el ideal de ==P.
+="jeto5 entidad provista de un conjunto de propiedades o atri"utos $datos& y de
comportamiento o funcionalidad $mtodos& los mismos que consecuentemente
reaccionan a eventos. /e corresponde con los o"jetos reales del mundo que nos
rodea# o a o"jetos internos del sistema $del programa&. ,s una instancia a una
clase.
+9todo5 0lgoritmo asociado a un o"jeto $o a una clase de o"jetos&# cuya ejecucin
se desencadena tras la recepcin de un AmensajeA. esde el punto de vista del
comportamiento# es lo que el o"jeto puede (acer. 2n mtodo puede producir un
cam"io en las propiedades del o"jeto# o la generacin de un AeventoA con un
nuevo mensaje para otro o"jeto del sistema.
+,vento5 ,s un suceso en el sistema $tal como una interaccin del usuario con la
m'quina# o un mensaje enviado por un o"jeto&. ,l sistema maneja el evento
enviando el mensaje adecuado al o"jeto pertinente. Tam"in se puede definir
como evento# a la reaccin que puede desencadenar un o"jeto# es decir la accin
que genera.
+9ensaje5 una comunicacin dirigida a un o"jeto# que le ordena que ejecute uno
de sus mtodos con ciertos par'metros asociados al evento que lo gener.
+Propiedad o atri"uto5 contenedor de un tipo de datos asociados a un o"jeto $o a
una clase de o"jetos&# que (ace los datos visi"les desde fuera del o"jeto y esto se
define como sus caracter)sticas predeterminadas# y cuyo valor puede ser alterado
por la ejecucin de alg6n mtodo.
+,stado interno5 es una varia"le que se declara privada# que puede ser
6nicamente accedida y alterada por un mtodo del o"jeto# y que se utili!a para
indicar distintas situaciones posi"les para el o"jeto $o clase de o"jetos&. 4o es
visi"le al programador que maneja una instancia de la clase.
B. /imula $1CDE& es aceptado como el primer lenguaje que posee las caracter)sticas
principales de un lenguaje orientado a o"jetos. Fue creado para (acer programas
de simulacin# en donde los Ao"jetosA son la representacin de la informacin m's
importante. /malltal? $1CE1 a 1CGH& es posi"lemente el ejemplo cannico# y con el
que gran parte de la teor)a de la programacin orientada a o"jetos se (a
desarrollado.
,ntre los lenguajes orientados a o"jetos se destacan los siguientes5
+070P
+07* *enguaje de programacin de =pen,dge de Progress /oft3are
+0ction/cript
+0ction/cript @
+0da
+-II
+-J
+-larion
+-lipper $lenguaje de programacin& $Kersin L.% con li"rer)a de o"jetos -lass$y&&
+
+="ject Pascal $elp(i&
+>am"as
+:ar"our
+,iffel
+Java
+Java/cript $la (erencia se reali!a por medio de la programacin "asada en
prototipos&
+*e%ico $en castellano&
+="jective+-
+=caml
+=!
+<
+Perl $soporta (erencia m6ltiple. *a resolucin se reali!a en preorden# pero puede
modificarse al algoritmo lineari!ation -@ por medio del mdulo -lass55-@ en
-P04&
+P:P $a partir de su versin L&
+Po3er7uilder
+Pyt(on
+<u"y
+/malltal? $Proyecto investigativo. 8nfluenci a Java.&
+9agi? $/mallMorld&
+Kala
+K7.4,T
+Kisual Fo%Pro $en su versin D&
+Kisual 7asic D.H
+Kisual ="jects
+N7aseII
+*enguaje <P
+*enguaje de programacin /cala $lenguaje usado por T3itter& (ttp5OO333.scala+
lang.orgOpage.jsp
9uc(os de estos lenguajes de programacin no son puramente orientados a
o"jetos# sino que son ()"ridos que com"inan la P== con otros paradigmas.
0l igual que -II otros lenguajes# como ==-=7=*# ==*8/P# ==P<=*=> y
="ject <,NN# (an sido creados aPadiendo e%tensiones orientadas a o"jetos a un
lenguaje de programacin cl'sico.
2n nuevo paso en la a"straccin de paradigmas de programacin es la
Programacin =rientada a 0spectos $P=0&. 0unque es todav)a una metodolog)a
en estado de maduracin# cada ve! atrae a m's investigadores e incluso
proyectos comerciales en todo el mundo.
L. -0<0-T,<8/T8-0/ , *0 P==
,%iste un acuerdo acerca de qu caracter)sticas contempla la Aorientacin a
o"jetosA# las caracter)sticas siguientes son las m's importantes5
0"straccin5 enota las caracter)sticas esenciales de un o"jeto# donde se
capturan sus comportamientos.-ada o"jeto en el sistema sirve como modelo de
un AagenteA a"stracto que puede reali!ar tra"ajo# informar y cam"iar su estado# y
AcomunicarseA con otros o"jetos en el sistema sin revelar cmo se implementan
estas caracter)sticas. *os procesos# las funciones o los mtodos pueden tam"in
ser a"stra)dos y cuando lo est'n# una variedad de tcnicas son requeridas para
ampliar una a"straccin.
,ncapsulamiento5 /ignifica reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad# al mismo nivel de a"straccin. ,sto permite
aumentar la co(esin de los componentes del sistema. 0lgunos autores confunden
este concepto con el principio de ocultacin# principalmente porque se suelen
emplear conjuntamente.
Principio de ocultacin5 -ada o"jeto est' aislado del e%terior# es un mdulo
natural# y cada tipo de o"jeto e%pone una interfa! a otros o"jetos que especifica
cmo pueden interactuar con los o"jetos de la clase. ,l aislamiento protege a las
propiedades de un o"jeto contra su modificacin por quien no tenga derec(o a
acceder a ellas# solamente los propios mtodos internos del o"jeto pueden
acceder a su estado. ,sto asegura que otros o"jetos no pueden cam"iar el estado
interno de un o"jeto de maneras inesperadas# eliminando efectos secundarios e
interacciones inesperadas. 0lgunos 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. *a aplicacin entera se reduce a un agregado o
rompeca"e!as de o"jetos.
Polimorfismo5 comportamientos diferentes# asociados a o"jetos distintos# pueden
compartir el mismo nom"re# al llamarlos por ese nom"re se utili!ar' el
comportamiento correspondiente al o"jeto que se est usando. = dic(o de otro
modo# las referencias y las colecciones de o"jetos pueden contener o"jetos de
diferentes tipos# y la invocacin de un comportamiento en una referencia producir'
el comportamiento correcto para el tipo real del o"jeto referenciado. -uando esto
ocurre en Atiempo de ejecucinA# esta 6ltima caracter)stica se llama asignacin
tard)a o asignacin din'mica. 0lgunos lenguajes proporcionan medios m's
est'ticos $en Atiempo de compilacinA& de polimorfismo# tales como las plantillas y
la so"recarga de operadores de -II.
:erencia5 las clases no est'n aisladas# sino que se relacionan entre s)# formando
una jerarqu)a de clasificacin. *os o"jetos (eredan las propiedades y el
comportamiento de todas las clases a las que pertenecen. *a (erencia organi!a y
facilita el polimorfismo y el encapsulamiento permitiendo a los o"jetos ser definidos
y creados como tipos especiali!ados de o"jetos pree%istentes. ,stos pueden
compartir $y e%tender& su comportamiento sin tener que volver a implementarlo.
,sto suele (acerse (a"itualmente agrupando los o"jetos en clases y estas en
'r"oles o enrejados que reflejan un comportamiento com6n. -uando un o"jeto
(ereda de m's de una clase se dice que (ay (erencia m6ltiple.
<ecoleccin de "asura5 la <ecoleccin de "asura o >ar"age -ollector es la
tcnica por la cual el am"iente de ="jetos se encarga de destruir
autom'ticamente# y por tanto desasignar de la memoria# los ="jetos que (ayan
quedado sin ninguna referencia a ellos. ,sto significa que el programador no de"e
preocuparse por la asignacin o li"eracin de memoria# ya que el entorno la
asignar' al crear un nuevo ="jeto y la li"erar' cuando nadie lo est usando. ,n la
mayor)a de los lenguajes ()"ridos que se e%tendieron para soportar el Paradigma
de Programacin =rientada a ="jetos como -II u ="ject Pascal# esta
caracter)stica no e%iste y la memoria de"e desasignarse manualmente.
D. Java es un lenguaje de programacin de propsito general# concurrente#
orientado a o"jetos y "asado en clases que fue disePado espec)ficamente para
tener tan pocas dependencias de implementacin como fuera posi"le. /u intencin
es permitir que los desarrolladores de aplicaciones escri"an el programa una ve! y
lo ejecuten en cualquier dispositivo $conocido en ingls como M=<0# o A3rite
once# run any3(ereA&# 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
1H11# uno de los lenguajes de programacin m's populares en uso#
particularmente para aplicaciones de cliente+servidor de 3e"# con unos 1H millones
de usuarios reportados.
E. :istoria de Java
,l lenguaje de programacin Java fue originalmente desarrollado por James
>osling de /un 9icrosystems $la cual fue adquirida por la compaP)a =racle& y
pu"licado en 1CCL como un componente fundamental de la plataforma Java de
/un 9icrosystems. /u sinta%is deriva en gran medida de - y -II# pero tiene
menos utilidades 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 $JK9& sin importar la arquitectura de la
computadora su"yacente.
*a compaP)a /un desarroll la implementacin de referencia original para los
compiladores de Java# m'quinas virtuales# y li"rer)as de clases en 1CC1 y las
pu"lic por primera ve! en 1CCL. 0 partir de mayo de 1HHE# en cumplimiento con
las especificaciones del Proceso de la -omunidad Java# /un volvi a licenciar la
mayor)a de sus tecnolog)as de Java "ajo la *icencia P6"lica >eneral de >42.
=tros tam"in (an desarrollado implementaciones alternas a estas tecnolog)as de
/un# tales como el -ompilador de Java de >42 y el >42 -lasspat(.
G. Versiones de Java
J; 1.H $1@ de enero de 1CCD&
J; 1.1 $1C de fe"rero de 1CCE&. 2na reestructuracin intensiva del modelo de
eventos 0MT $0"stract Mindo3ing Tool?it&# clases internas $inner classes&#
Java7eans# J7- $Java ata"ase -onnectivity&# para la integracin de "ases de
datos# <98 $<emote 9et(od 8nvocation&.
J1/, 1.1 $G de dieciem"re de 1CCG + 4om"re clave Playground. ,sta y las
siguientes versiones fueron recogidas "ajo la denominacin Java 1 y el nom"re
AJ1/,A $Java 1 Platform# /tandard ,dition&# reempla! a J; para distinguir la
plataforma "ase de J1,, $Java 1 Platform# ,nterprise ,dition& y J19, $Java 1
Platform# 9icro ,dition&.
*a pala"ra reservada $?ey3ord& strictfp.
<efle%in en la programacin.
*a 0P8 gr'fica $ /3ing& fue integrada en las clases "'sicas.
*a m'quina virtual $JK9& de /un fue equipada con un compilador J8T $Just in
Time& por primera ve!.
Java Plug+in.
Java 8*# una implementacin de 8* $8nterfa! para escripcin de *enguaje& para
la interopera"ilidad con -=<70
-olecciones $-ollections&
1/, 1.@ $G de mayo de 1HHH& + 4om"re clave ;estrel.
*a inclusin de la m'quina virtual de :ot/pot JK9 $la JK9 de :ot/pot fue lan!ada
inicialmente en a"ril de 1CCC# para la JK9 de J1/, 1.1&
<98 fue cam"iado para que se "asara en -=<70.
Java/ound
/e incluy el Java 4aming and irectory 8nterface $J48& en el paquete de
li"rer)as principales $anteriormente disponi"le como una e%tensin&.
Java Platform e"ugger 0rc(itecture $JP0&
J1/, 1.B $D de fe"rero de 1HH1& + 4om"re -lave 9erlin.
,ste fue el primer lan!amiento de la plataforma Java desarrollado "ajo el Proceso
de la -omunidad Java como J/< LC. *os cam"ios m's nota"les fueron5
comunicado de prensalista completa de cam"ios.
Pala"ra reservada assert $,specificado en J/< B1.&
,%presiones regulares modeladas al estilo de las e%presiones regulares Perl.
,ncadenacin de e%cepciones Permite a una e%cepcin encapsular la e%cepcin
de "ajo nivel original.
4on+"loc?ing 48= $4e3 8nputO=utput& $,specificado en J/< L1.&
*ogging 0P8 $/pecified in J/< BE.&
0P8 8O= para la lectura y escritura de im'genes en formatos como JP,> o P4>
Parser N9* integrado y procesador N/*T $J0NP& $,specificado en J/< L y J/<
D@.&
/eguridad integrada y e%tensiones criptogr'ficas $J-,# J//,# J00/& Java Me"
/tart incluido $,l primer lan!amiento ocurri en 9ar!o de 1HH1 para J1/, 1.@&
$,specificado en J/< LD.&
J1/, L.H $@H de septiem"re de 1HHB& + 4om"re clave5 Tiger. $=riginalmente
numerado 1.L# esta notacin a6n es usada internamente.QBR& esarrollado "ajo
J/< 1ED# Tiger aPadi un n6mero significativo de nuevas caracter)sticas
comunicado de prensa. Plantillas $genricos& + provee conversion de tipos $type
safety& en tiempo de compilacin para colecciones y elimina la necesidad de la
mayor)a de conversion de tipos $type casting&. $,specificado por J/< 1B.&
9etadatos + tam"in llamados anotaciones# permite a estructuras del lenguaje
como las clases o los mtodos# ser etiquetados con datos adicionales# que puedan
ser procesados posteriormente por utilidades de proceso de metadatos.
$,specificado por J/< 1EL.&
0uto"o%ingOun"o%ing + -onversiones autom'ticas entre tipos primitivos $-omo los
int& y clases de envoltura primitivas $-omo 8nteger&. $,specificado por J/< 1H1.&
,numeraciones + la pala"ra reservada enum crea una typesafe# lista ordenada de
valores $como ia.*24,/# ia.90<T,/# etc.&. 0nteriormente# esto solo pod)a ser
llevado a ca"o por constantes enteras o clases construidas manualmente $enum
pattern&. $,specificado por J/< 1H1.&
Karargs $n6mero de argumentos varia"le& + ,l 6ltimo par'metro de un mtodo
puede ser declarado con el nom"re del tipo seguido por tres puntos $e.g. void
dra3te%t$/tring... lines&&. ,n la llamada al mtodo# puede usarse cualquier n6mero
de par'metros de ese tipo# que ser'n almacenados en un array para pasarlos al
metodo.
7ucle for mejorado + *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 8tera"le# como la clase est'ndar -ollection# de la siguiente forma5
void displayMidgets $8tera"le 3idgets& S for $Midget 3 5 3idgets& S 3.display$&. T T
,ste ejemplo itera so"re el o"jeto 8tera"le 3idgets# asignando# en orden# cada uno
de los elementos a la varia"le 3# y llamando al mtodo display$& de cada uno de
ellos. $,specificado por J/< 1H1.&
Java /, D $11 de diciem"re de 1HHD& + 4om"re clave 9ustang. ,stuvo en
desarrollo "ajo la J/< 1EH. ,n esta versin# /un cam"i el nom"re AJ1/,A por
Java /, y elimin el A.HA del n6mero de versin.QLR. ,st' disponi"le en
(ttp5OOjava.sun.comOjavaseODO. *os cam"ios m's importantes introducidos en esta
versin son5
8ncluye un nuevo marco de tra"ajo y 0P8s que (acen posi"le la com"inacin de
Java con lenguajes din'micos como P:P# Pyt(on# <u"y y Java/cript.
8ncluye el motor <(ino# de 9o!illa# una implementacin de Javascript en Java.
8ncluye un cliente completo de /ervicios Me" y soporta las 6ltimas
especificaciones para /ervicios Me"# como J0N+M/ 1.H# J0N7 1.H# /T0N y J0NP.
9ejoras en la interfa! gr'fica y en el rendimiento.
Java /, E + 4om"re clave olp(in. ,n el aPo 1HHD a6n se encontra"a en las
primeras etapas de planificacin. /e espera que su desarrollo d comien!o en la
primavera de 1HHD# y se estima su lan!amiento para 1HHG.
/oporte para N9* dentro del propio lenguaje
2n nuevo concepto de superpaquete
/oporte para closures
8ntroduccin de anotaciones est'ndar para detectar fallos en el soft3are.
0dem's de los cam"ios en el lenguaje# con el paso de los aPos se (an efectuado
muc(os m's cam"ios dram'ticos en la li"rer)a de clases de Java $Java class
li"rary& que (a crecido de unos pocos cientos de clases en J; 1.H (asta m's de
tres mil en J1/, L.H. 0P8s completamente nuevas# como /3ing y Java1# (an
sido introducidas y muc(os de los mtodos y clases originales de J; 1.H est'n
desapro"ados.
C. *a JK9 $Java Kirtual 9ac(ine& es la aplicacin donde corren los programas
(ec(os en Java# es nativa del sistema operativo y usualmente viene cargada por
default en este. -on esta (erramienta no es posi"le desarrollar# solo pude
desplegarse aplicaciones. $,l concepto de JK9 lo tacamos m's a fondo en
nuestro primer Por qu Java?&. <ecuerden UVMrite once# run any3(ereV esto se lo
de"emos a JK9 una m'quina virtual de proceso nativo# es decir# ejecuta"le en una
plataforma espec)fica# capa! de interpretar y ejecutar instrucciones e%presadas en
un cdigo "inario especial $el Java "ytecode&# el cual es generado por el
compilador del lenguaje Java.
*a JK9 es como un reproductor. Para que quede m's claro que tal si lo ponemos
as)# para Mindo3s es una cassetera# 9ac un tocadiscos y *inu% un reproductor de
cd#en todos se reproducir' m6sica pero cada uno necesita su fuente distinta
,l J<, $Java <untime ,nvironment& es un conjunto de utilidades de Java contiene
la JK9# imaginemos que este es el material necesario para configurar e instalar la
JK9. -on esta (erramienta tampoco es posi"le el desarrollo. Proceso del sistema
operativo que permite correr la aplicacin
,l J<, es el cassete de Mindo3s# el acetato de 9ac y el cd de *inu%# las
interfaces para reproducir la m6sica.
,l J; $Java evelopment ;it& es el ?it para desarrolladores# contiene entre otras
cosas el J<, y la JK9. l J<, actua como un UintermediarioV entre el sistema
operativo y Java. -uando utili!amos un 8, $Que como usualmente se empie!a a
programar& no vemos en que momento nuestra m'quina instalo el J;# esto se
de"e a que usualmente nuestro 8, descarga por si solo uno y se encarga de
instalarlo en muestra m'quina.
,l J; como nos permite gra"ar sonidos en nuestro dispositivo y escuc(arlos.
Por ejemplo si quisiramos desarrollar para 0ndroid tendr)amos que "ajar el /; y
configurarlo en nuestro 8, eclipse. ,l /; es para android lo que es el J; para
Java# solo que como e%plicamos arri"a estamos tan acostum"rados a que el 8,
lo descarga y configura por nosotros que usualmente no le ponemos atencin.

1H. +8ngresar a java.sun.com
+,n la seccin UTop do3nloadsV seleccionar java /,
+/eleccionar el cuadro Java Platform $J;& Gu1H
+0ceptar el acuerdo de licencia
+seleccionar el sistema operativo
+descargar e instalar siguiendo el asistente
11.