Java es un lenguaje de programacin de propsito general orientado a
objetos desarrollado por Sun Microsystems. Tambin se puede decir !ue Java es una tecnologa !ue no slo se reduce al lenguaje sino !ue adem"s provee de una m"!uina virtual Java !ue permite ejecutar cdigo compilado Java# sea cual sea la plata$orma !ue e%ista por debajo& plata$orma tanto 'ard(are# como so$t(are )el sistema operativo !ue soporte ese 'ard(are*. +l apoyo a esta tecnologa viene dado por la gran cantidad de $abricantes !ue apoyan esta especi,cacin de m"!uina virtual. +l lenguaje se inspira en otros lenguajes- sentencias comunes de C y C.. )sinta%is parecida a dic'os lenguajes* concurrencia parecida a la de Mesa )un lenguaje de investigacin de /ero%* interrupciones parecidas a las de Modula01 tratamiento de enlace din"mico de cdigo nuevo parecido al de 2isp de,niciones de inter$aces parecidas a las de 3bjective C gestin de almacenamiento autom"tico parecida a la de 2isp Caractersticas. Sun describe al lenguaje Java de la siguiente manera- Simple 3rientado a 3bjetos Tipado est"ticamente 4istribuido 5nterpretado 6obusto Seguro de Ar!uitectura 7eutral Multi'ilo con 6ecolector de basura )8arbage Collector* Portable de Alto 6endimiento- sobre todo con la aparicin de 'ard(are especiali9ado y mejor so$t(are 4in"mico Sun admite !ue lo dic'o anteriormente son un montn de 'alagos por su parte# pero el 'ec'o es !ue todas esas caratersticas pueden servir para describir el lenguaje. Todas ellas son importantes# sin embargo cabe destacar tres# !ue son las !ue 'an propocionado tanto inters por el lenguaje- la portabilidad# el 'ec'o de !ue sea de ar!uitectura neutral y su simplicidad. Java o$rece toda la $uncionalidad de los lenguajes potentes# pero sin las caractersticas menos usadas y m"s con$usas de stos. Java elimina muc'as de las caractersticas de otros lenguajes como C..# para mantener reducidas especi,caciones del lenguaje y a:adir caractersticas muy ;tiles como el recolector de basura. 7o es necesario preocuparse de liberar memoria# el recolector se encarga de eliminar la memoria asignada. 8racias al recolector# slo te tienes !ue preocupar de crear los objetos relevantes de tu sistema ya !ue l se encarga de destruirlos en caso de no ser reutili9ados. Java reduce en un <=> los errores m"s comunes de programacin con lenguajes como C y C... +ntre las caractersticas m"s ?indeseables? de C. . !ue se 'an evitado en el dise:o de Java destacan- ,c'eros de cabecera# aritmtica de punteros# sobrecarga de operadores# estructuras# uniones# conversin implcita de tipos# clases base virtuales# pre0procesador# etc. algunas de las caractersticas m"s interesantes- Java es interpretado. +strictamente 'ablando# Java es interpretado# aun!ue en realidad Java es tanto interpretado como compilado. 4e 'ec'o# slo cerca del @=> del cdigo Java es interpretado por la JVM )Java Virtual Mac'ine*# pero es un @=> muy importante. Tanto la seguridad de Java como su 'abilidad para ser ejecutado en m;ltiples plata$ormas se deben a !ue los pasos ,nales de la compilacin se manejan localmente. +%isten ciertos entornos !ue para mejorar el rendimiento usan un pe!ue:o compilador para la ;ltima $ase de compilacin# de $orma !ue una ve9 !ue se tenga el bytecode# en ve9 de interpretarlo se compila generando cdigo nativo para esa plata$orma y se ejecuta# pero esta compilacin se reali9a cada ve9 !ue se !uiera ejecutar el programa. +l ;nico cdigo realmente independiente es el bytecode. +ste tipo de compiladores se conocen como AJust 5n TimeA o J5T. Sin embargo# el bytecode no se completa 'asta !ue se junta con un entorno de ejecucin# !ue en este caso ser" la m"!uina virtual Java de la plata$orma en la !ue estemos. Bn bro(ser puede proveer dic'a plata$orma desde el punto de vista del sistema operativo. Inconvenientes. +l bro(ser tiene !ue interpretar los ,c'eros de clases antes de !ue se ejecuten. Btili9ando un lenguaje de programacin tradicional como puede ser el C..# el ordenador puede ejecutar directamente el cdigo generado. Sin embargo# debido a la interpretacin !ue el bro(ser tiene !ue 'acer de los ,c'eros# los programas escritos en Java tienden a ejecutarse bastante m"s lentos !ue con otros lenguajes de programacin )p.e. C..*. CPor !u se considera un rasgo positivo el 'ec'o de combinar la compilacin y la interpretacinD Eacilita la seguridad y la estabilidad. 6educe los problemas de versiones. +l 'ec'o de !ue la ;ltima $ase de la compilacin se lleve a cabo por un dispositivo de una determinada plata$orma# releva al programador de la responsabilidad del mantenimiento de varios $uentes en varias plata$ormas. 2a interpretacin tambin admite !ue los datos se incorporen en tiempo de ejecucin# de a' el comportamiento din"mico !ue tambin caracteri9a a Java. La mquina virtual Java. Para establecer Java como parte integral de la red# el compilador Java compila su cdigo a un ,c'ero objeto de $ormato independiente de la ar!uitectura de la m"!uina en !ue se ejecutar". Cual!uier m"!uina !ue tenga el sistema de ejecucin )runtime* puede ejecutar ese cdigo objeto# sin importar en modo alguno la m"!uina en !ue 'a sido generado. +l cdigo $uente Java se ?compila? a un cdigo de bytes de alto nivel independiente de la m"!uina. +ste cdigo )bytecode* est" dise:ado para ejecutarse en una m"!uina 'ipottica !ue es implementada por un sistema runtime# !ue s es dependiente de la m"!uina. Por lo tanto# lo !ue verdaderamente es dependiente del sistema es la M"!uina Virtual Java )JVM* y las libreras $undamentales# !ue tambin nos permitiran acceder directamente al 'ard(are de la m"!uina. +l compilador Java genera bytecode !ue ser"n ejecutables donde!uiera !ue e%ista una JVM. Orientacin a objetos. Java implementa la tecnologa b"sica de C.. con algunas mejoras y elimina algunas cosas para mantener el objetivo de la simplicidad del lenguaje. Java trabaja con sus datos como objetos y con inter$aces a esos objetos. Soporta las tres caractersticas propias del paradigma de la orientacin a objetos- encapsulacin# enlace din"mico y polimor,smo. 2os modelos de objetos son llamados# como en C..# clases y sus copias# instancias. +stas instancias# como en C..# necesitan ser construidas y destruidas en espacios de memoria. Java incorpora $uncionalidades ine%istentes en C.. como por ejemplo# la resolucin din"mica de mtodos. +sta caracterstica deriva del lenguaje 3bjectiveC. +n C.. se suele trabajar con libreras din"micas )422s* !ue obligan a recompilar la aplicacin cuando se retocan las $unciones !ue se encuentran en su interior. Java resuelve este inconveniente mediante una inter$a9 espec,ca llamada 6TT5 )6un Time Type 5denti,cation* !ue de,ne la interaccin entre objetos e%cluyendo variables de instancias o implementacin de mtodos. 2as clases en Java tienen una representacin en el runtime !ue permite a los programadores interrogar por el tipo de clase y enla9ar din"micamente la clase con el resultado de la b;s!ueda. +n Java casi todo son objetos. 2a mayora de los lenguajes orientados a objetos permiten la 'erencia m;ltiple# lo !ue puede llevar a con$usiones yFo complicaciones innecesarias. Java no permite 'erencia m;ltiple# slo soporta ?Gerencia simple? en una estructura csmica )todas las clases Java derivan jer"r!uicamente de la clase ?3bject?*. 2a 'erencia simple signi,ca !ue en cada momento cada clase slo 'ereda de otra clase. +ste tipo de 'erencia evita problemas del tipo de 'erencias m;ltiples contradictorias o e%clusivas entre s. Java tambin permite la creacin de clases totalmente abstractas# a las !ue llama inter$aces con caractersticas similares a los inter$aces 542 de C36HA. 2as inter$aces permiten de,nir mtodos !ue pueden compartir con varias clases# sin tener en cuenta cmo las otras manejan los mtodos. Seguridad en JAA. +l cdigo Java pasa muc'os tests antes de ejecutarse en una m"!uina. +l cdigo se pasa a travs de un veri,cador de bytecodes !ue comprueba el $ormato de los $ragmentos de cdigo y aplica un probador de teoremas para detectar $ragmentos de cdigo ilegal 0cdigo !ue $alsea punteros# viola derec'os de acceso sobre objetos o intenta cambiar el tipo o clase de un objeto0. Si los bytecode pasan la veri,cacin sin generar ning;n mensaje de error# entonces sabemos !ue- +l cdigo no produce desbordamiento de operandos en la pila +l tipo de los par"metres de todos los cdigos de operacin son conocidos y correctos 7o 'a ocurrido ninguna conversin ilegal de datos# tal como convertir enteros en puntero +l acceso a los campos de un objeto se sabe !ue es legal- public# private# protected 7o 'ay nung;n intento de violar las reglas de acceso y seguridad establecidas +vitamos saltos a mitad de una instruccin# o direccionamientos de memoria de un objeto $uera de los lmites del mismo. +l cargador de clases tambin ayuda a Java a mantener su seguridad# separando el espacio de nombres del sistema de ,c'eros local# del de los recursos procedentes de la red. +sto limita cual!uier aplicacin del tipo Caballo de Troya# ya !ue las clases se buscan primero entre las locales y luego entre las procedentes del e%terior. !e"nicin de A#I. AP5 son las iniciales de Application Programmer 5nter$ace. Pensemoslo siguiente. Por muy completo !ue sea un lenguaje en cuanto a estructuras# tipos de datos y operadores# para !ue sea $uncional necesita 'acer +FS )procesar ,c'eros# pedir datos por teclado# leer el ratn o visuali9ar ventanas*. 2a +FS es dependiente del Sistema 3perativo. 2a AP5 es una capa de abstraccin !ue se pone encima del S.3. para permitir 'acer entradas y salidas de una manera estandari9ada. Se trata de una especi,cacin de una librera so$t(are# detallando las llamadas a $unciones# los argumentos# y los resultados !ue obtienes al utili9arlas. Bna AP5 slo e%iste en papel y no es m"s !ue dise:o. 4e 'ec'o# para usar una AP5 necesitas una librera !ue e%ista y !ue implemente esa AP5. Clasi"cacin de las A#Is 2as AP5s est"n clasi,cadas como AP5 Core )7;cleo* o como Standard +%tension )+%tensiones est"ndar*. Bna AP5 Core es a!ulla !ue viene incluida en el sistema J4I# es parte de la implementacin est"ndar de Sun y cual!uier sistema Java tiene !ue ser capa9 de soportarlas. Bna e%tensin est"ndar es una librera !ue los sistemas Java no tienen por !u soportar# pero de 'acerlo# lo tiene !ue 'acer siguiendo e%actamente la $orma est"ndar. $uente% &ttp%''personales.upv.es'rmartin'cursoJava'Java'Introduccion'#rincip alesCaracteristicas.&tm