Java (Lenguaje de Programación)

download Java (Lenguaje de Programación)

of 25

Transcript of Java (Lenguaje de Programación)

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 1/25

    Java

    Desarrollador(es)

    James Gosling & Sun Microsystems

    Para desarrolladores de Java

    (http://www.oracle.com/technetwork/java/index.html)

    Informacin general

    Extensiones

    comunes

    .java, .class, .jar

    Paradigma Orientado a objetos, imperativo

    Apareci en 1995

    Diseado por Sun Microsystems (Oracle

    Corporation)

    ltima versin

    estable

    Java Standard Edition 8 (18 de

    marzo de 2014)

    Tipo de dato Fuerte, Esttico

    Implementaciones OpenJDK, HotSpot, muchas otras

    Dialectos Generic Java, Pizza

    Influido por Objective-C, C++, Smalltalk,

    Eiffel

    Ha influido a C#, D,1 J#, JavaScript, PHP,

    Python

    Sistema operativo Multiplataforma

    Licencia GNU GPL / Java Community

    Process

    Java (lenguaje de programacin)De Wikipedia, la enciclopedia libre

    El lenguaje de programacin Java fue originalmentedesarrollado por James Gosling de Sun Microsystems(la cual fue adquirida por la compaa Oracle) ypublicado en 1995 como un componente fundamentalde la plataforma Java de Sun Microsystems. Susintaxis deriva en gran medida de C y C++, pero tienemenos utilidades de bajo nivel que cualquiera de ellos.Las aplicaciones de Java son generalmente compiladasa bytecode (clase Java) que puede ejecutarse encualquier mquina virtual Java (JVM) sin importar laarquitectura de la computadora subyacente.

    Es un lenguaje de programacin de propsito general,concurrente, orientado a objetos y basado en clasesque fue diseado especficamente para tener tanpocas dependencias de implementacin como fueraposible. Su intencin es permitir que losdesarrolladores de aplicaciones escriban el programauna vez y lo ejecuten en cualquier dispositivo(conocido en ingls como WORA, o "write once, runanywhere"), lo que quiere decir que el cdigo que esejecutado en una plataforma no tiene que serrecompilado para correr en otra. Java es, a partir de2012, uno de los lenguajes de programacin mspopulares en uso, particularmente para aplicaciones decliente-servidor de web, con unos 10 millones de

    usuarios reportados.2 3

    La compaa Sun desarroll la implementacin dereferencia original para los compiladores de Java,mquinas virtuales, y libreras de clases en 1991 y laspublic por primera vez en 1995. A partir de mayo de2007, en cumplimiento con las especificaciones del Proceso de la Comunidad Java, Sun volvi a licenciar lamayora de sus tecnologas de Java bajo la Licencia Pblica General de GNU. Otros tambin han desarrolladoimplementaciones alternas a estas tecnologas de Sun, tales como el Compilador de Java de GNU y el GNUClasspath.

    ndice

    1 Historia

    2 Filosofa

    2.1 Orientado a objetos

    2.2 Independencia de la plataforma

    2.3 El recolector de basura

    3 Sintaxis

    3.1 Aplicaciones autnomas

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 2/25

    3.1 Aplicaciones autnomas

    3.2 Applets

    3.3 Servlets3.4 Aplicaciones con ventanas

    4 Entornos de funcionamiento

    4.1 En dispositivos mviles y sistemas empotrados

    4.2 En el navegador web

    4.3 En sistemas de servidor

    4.4 En aplicaciones de escritorio

    4.5 Plataformas soportadas

    5 Programacin

    5.1 Expresiones

    5.2 Operadores5.2.1 Operadores a nivel de bit

    5.3 Precedencia de operadores

    5.4 Sentencias5.4.1 Conversin de tipos

    6 Industria relacionada7 Crticas

    7.1 General

    7.2 El lenguaje7.3 Apariencia

    7.4 Rendimiento8 Recursos

    8.1 JRE8.2 Componentes

    8.3 APIs8.4 Extensiones y arquitecturas relacionadas

    9 Java en cdigo abierto9.1 Alternativas libres9.2 Crticas referentes a Java y el software libre

    10 Vase tambin11 Referencias

    12 Notas13 Enlaces externos

    13.1 Oracle - Sun13.2 Tutoriales

    13.3 Crticas

    Historia

    Java se cre como una herramienta de programacin para ser usada en un proyecto de set-top-box en unapequea operacin denominada the Green Project en Sun Microsystems en el ao 1991. El equipo (GreenTeam), compuesto por trece personas y dirigido por James Gosling, trabaj durante 18 meses en Sand HillRoad en Menlo Park en su desarrollo.

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 3/25

    Duke, la mascota de Java

    El lenguaje se denomin inicialmente Oak (por un roble que haba fuera de la oficina de Gosling), luego pas adenominarse Green tras descubrir que Oak era ya una marca comercial registrada para adaptadores de tarjetasgrficas y finalmente se renombr a Java.

    Es frecuentada por algunos de los miembros del equipo. Pero no est claro si es un acrnimo o no, aunquealgunas fuentes sealan que podra tratarse de las iniciales de sus creadores: James Gosling, Arthur VanHoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrnimo,Just Another Vague Acronym ("slo otro acrnimo ambiguo ms").La hiptesis que ms fuerza tiene es la de que Java debe su nombre aun tipo de caf disponible en la cafetera cercana, de ah que el iconode java sea una taza de caf caliente. Un pequeo signo que da fuerzaa esta teora es que los 4 primeros bytes (el nmero mgico) de losarchivos.class que genera el compilador, son en hexadecimal,0xCAFEBABE. A pesar de todas estas teoras, el nombre fue sacado

    al parecer de una lista aleatoria de palabras.4

    Los objetivos de Gosling eran implementar una mquina virtual y unlenguaje con una estructura y sintaxis similar a C++. Entre junio y juliode 1994, tras una sesin maratoniana de tres das entre John Gaga,James Gosling, Patrick Naughton, Wayne Rosing y Eric Schmidt, elequipo reorient la plataforma hacia la Web. Sintieron que la llegadadel navegador web Mosaic, propiciara que Internet se convirtiese enun medio interactivo, como el que pensaban era la televisin por cable.Naughton cre entonces un prototipo de navegador, WebRunner, quems tarde sera conocido como HotJava.

    En 1994, se les hizo una demostracin de HotJava y la plataforma Javaa los ejecutivos de Sun. Java 1.0a pudo descargarse por primera vezen 1994, pero hubo que esperar al 23 de mayo de 1995, durante lasconferencias de SunWorld, a que vieran la luz pblica Java y HotJava,el navegador Web. El acontecimiento fue anunciado por John Gage, el Director Cientfico de SunMicrosystems. El acto estuvo acompaado por una pequea sorpresa adicional, el anuncio por parte de MarcAndreessen, Vicepresidente Ejecutivo de Netscape, de que Java sera soportado en sus navegadores. El 9 deenero del ao siguiente, 1996, Sun fund el grupo empresarial JavaSoft para que se encargase del desarrollotecnolgico. [1] (http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960109.14048.html) Dos semanasms tarde la primera versin de Java fue publicada.

    La promesa inicial de Gosling era Write Once, Run Anywhere (Escrbelo una vez, ejectalo en cualquier lugar),proporcionando un lenguaje independiente de la plataforma y un entorno de ejecucin (la JVM) ligero y gratuitopara las plataformas ms populares de forma que los binarios (bytecode) de las aplicaciones Java pudiesenejecutarse en cualquier plataforma.

    El entorno de ejecucin era relativamente seguro y los principales navegadores web pronto incorporaron laposibilidad de ejecutar applets Java incrustadas en las pginas web.

    Java ha experimentado numerosos cambios desde la versin primigenia, JDK 1.0, as como un enorme

    incremento en el nmero de clases y paquetes que componen la biblioteca estndar.5

    Desde J2SE 1.4, la evolucin del lenguaje ha sido regulada por el JCP (Java Community Process), que usaJava Specification Requests (JSRs) para proponer y especificar cambios en la plataforma Java. El lenguaje ens mismo est especificado en la Java Language Specification (JLS), o Especificacin del Lenguaje Java. Loscambios en los JLS son gestionados en JSR 901 (http://www.jcp.org/en/jsr/detail?id=63).

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 4/25

    JDK 1.0 (23 de enero de 1996) Primer lanzamiento: comunicado de prensa

    (http://www.google.com)

    JDK 1.1 (19 de febrero de 1997) Principales adiciones incluidas: comunicado de prensa

    (http://www.sun.com/smi/Press/sunflash/1997-02/sunflash.970219.0001.html)

    una reestructuracin intensiva del modelo de eventos AWT (Abstract Windowing Toolkit)

    clases internas (inner classes)JavaBeans

    JDBC (Java Database Connectivity), para la integracin de bases de datos

    RMI (Remote Method Invocation)

    J2SE 1.2 (8 de diciembre de 1998) Nombre clave Playground. Esta y las siguientes versiones

    fueron recogidas bajo la denominacin Java 2 y el nombre "J2SE" (Java 2 Platform, Standard Edition),

    reemplaz a JDK para distinguir la plataforma base de J2EE (Java 2 Platform, Enterprise Edition) yJ2ME (Java 2 Platform, Micro Edition). Otras mejoras aadidas incluan: comunicado de prensa

    (http://www.sun.com/smi/Press/sunflash/1998-12/sunflash.981208.9.html)

    la palabra reservada (keyword) strictfp

    reflexin en la programacinla API grfica ( Swing) fue integrada en las clases bsicas

    la mquina virtual (JVM) de Sun fue equipada con un compilador JIT (Just in Time) por primera

    vezJava Plug-in

    Java IDL, una implementacin de IDL (Lenguaje de Descripcin de Interfaz) para la

    interoperabilidad con CORBA

    Colecciones (Collections)

    J2SE 1.3 (8 de mayo de 2000) Nombre clave Kestrel. Los cambios ms notables

    fueron:comunicado de prensa (http://www.sun.com/smi/Press/sunflash/2000-

    05/sunflash.20000508.3.html) lista completa de cambios(http://java.sun.com/j2se/1.3/docs/relnotes/features.html)

    la inclusin de la mquina virtual de HotSpot JVM (la JVM de HotSpot fue lanzada inicialmente en

    abril de 1999, para la JVM de J2SE 1.2)

    RMI fue cambiado para que se basara en CORBAJavaSound

    se incluy el Java Naming and Directory Interface (JNDI) en el paquete de bibliotecas principales

    (anteriormente disponible como una extensin)Java Platform Debugger Architecture (JPDA)

    J2SE 1.4 (6 de febrero de 2002) Nombre Clave Merlin. Este fue el primer lanzamiento de la

    plataforma Java desarrollado bajo el Proceso de la Comunidad Java como JSR 59(http://www.jcp.org/en/jsr/detail?id=59). Los cambios ms notables fueron: comunicado de prensa

    (http://www.sun.com/smi/Press/sunflash/2002-02/sunflash.20020206.5.html)lista completa de cambios

    (http://java.sun.com/j2se/1.4.2/docs/relnotes/features.html)

    Palabra reservada assert (Especificado en JSR 41 (http://www.jcp.org/en/jsr/detail?id=41).)Expresiones regulares modeladas al estilo de las expresiones regulares Perl

    Encadenacin de excepciones Permite a una excepcin encapsular la excepcin de bajo nivel

    original.non-blocking NIO (New Input/Output) (Especificado en JSR 51 (http://www.jcp.org/en/jsr/detail?

    id=51).)

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 5/25

    Logging API (Specified in JSR 47 (http://www.jcp.org/en/jsr/detail?id=47).)API I/O para la lectura y escritura de imgenes en formatos como JPEG o PNG

    Parser XML integrado y procesador XSLT (JAXP) (Especificado en JSR 5

    (http://www.jcp.org/en/jsr/detail?id=5) y JSR 63 (http://www.jcp.org/en/jsr/detail?id=63).)

    Seguridad integrada y extensiones criptogrficas (JCE, JSSE, JAAS)Java Web Start incluido (El primer lanzamiento ocurri en marzo de 2001 para J2SE 1.3)

    (Especificado en JSR 56 (http://www.jcp.org/en/jsr/detail?id=56).)

    J2SE 5.0 (30 de septiembre de 2004) Nombre clave: Tiger. (Originalmente numerado 1.5, estanotacin an es usada internamente.[2] (http://java.sun.com/j2se/1.5.0/docs/relnotes/version-5.0.html))

    Desarrollado bajo JSR 176 (http://www.jcp.org/en/jsr/detail?id=176), Tiger aadi un nmero

    significativo de nuevas caractersticas comunicado de prensa(http://www.sun.com/smi/Press/sunflash/2004-09/sunflash.20040930.1.html)

    Plantillas (genricos) 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 JSR 14 (http://www.jcp.org/en/jsr/detail?id=14).)Metadatos tambin 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. (Especificado por JSR 175

    (http://www.jcp.org/en/jsr/detail?id=175).)Autoboxing/unboxing Conversiones automticas entre tipos primitivos (Como los int) y clases

    de envoltura primitivas (Como Integer

    (http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html)).(Especificado por JSR 201 (http://www.jcp.org/en/jsr/detail?id=201).)

    Enumeraciones la palabra reservada enum crea una typesafe, lista ordenada de valores (como

    Dia.LUNES, Dia.MARTES, etc.). Anteriormente, esto solo poda ser llevado a cabo por

    constantes enteras o clases construidas manualmente (enum pattern). (Especificado por JSR 201(http://www.jcp.org/en/jsr/detail?id=201).)

    Varargs (nmero de argumentos variable) El ltimo parmetro de un mtodo puede ser

    declarado con el nombre del tipo seguido por tres puntos (e.g. void drawtext(String...

    lines)). En la llamada al mtodo, puede usarse cualquier nmero de parmetros de ese tipo, quesern almacenados en un array para pasarlos al mtodo.

    Bucle for mejorado La sintaxis para el bucle for se ha extendido con una sintaxis especial

    para iterar sobre cada miembro de un array o sobre cualquier clase que implemente Iterable(http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Iterable.html), como la

    clase estndar Collection

    (http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html), de la

    siguiente forma:

    void displayWidgets (Iterable widgets) { for (Widget w : widgets) { w.display(); } }

    Este ejemplo itera sobre el objeto Iterable widgets, asignando, en orden, cada uno de los elementos a la

    variable w, y llamando al mtodo display() de cada uno de ellos. (Especificado por JSR 201.)

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 6/25

    Java SE 6 (11 de diciembre de 2006) Nombre clave Mustang (https://mustang.dev.java.net/).

    Estuvo en desarrollo bajo la JSR 270 (http://www.jcp.org/en/jsr/detail?id=270). En esta versin, Sun

    cambi el nombre "J2SE" por Java SE y elimin el ".0" del nmero de versin.[3](http://www.java.com/en/about/brand/naming.jsp). Est disponible en http://java.sun.com/javase/6/. Los

    cambios ms importantes introducidos en esta versin son:

    Incluye un nuevo marco de trabajo y APIs que hacen posible la combinacin de Java con

    lenguajes dinmicos como PHP, Python, Ruby y JavaScript.Incluye el motor Rhino, de Mozilla, una implementacin de Javascript en Java.

    Incluye un cliente completo de Servicios Web y soporta las ltimas especificaciones para Servicios

    Web, como JAX-WS 2.0, JAXB 2.0, STAX y JAXP.

    Mejoras en la interfaz grfica y en el rendimiento.

    Java SE 7 Nombre clave Dolphin. En el ao 2006 an se encontraba en las primeras etapas deplanificacin. Su lanzamiento fue en julio de 2011.

    Soporte para XML dentro del propio lenguaje.

    Un nuevo concepto de superpaquete.

    Soporte para closures.

    Introduccin de anotaciones estndar para detectar fallos en el software.

    No oficiales:

    NIO2.Java Module System.

    Java Kernel.

    Nueva API para el manejo de Das y Fechas, la cual reemplazara las antiguas clases Date y

    Calendar.

    Posibilidad de operar con clases BigDecimal usando operandos.

    Java SE 8 lanzada en marzo de 2014. Cabe destacar:

    Incorpora de forma completa la librera JavaFX.Diferentes mejoras en seguridad.

    Diferentes mejoras en concurrencia.

    Aade funcionalidad para programacin funcional mediante expresiones Lambda.

    Mejora la integracin de JavaScript.

    Nuevas API para manejo de fechas y tiempo (date - time).

    En el 2005 se calcula en 4,5 millones el nmero de desarrolladores y 2.500 millones de dispositivos habilitadoscon tecnologa Java.

    Filosofa

    El lenguaje Java se cre con cinco objetivos principales:

    1. Debera usar el paradigma de la programacin orientada a objetos.2. Debera permitir la ejecucin de un mismo programa en mltiples sistemas operativos.

    3. Debera incluir por defecto soporte para trabajo en red.

    4. Debera disearse para ejecutar cdigo en sistemas remotos de forma segura.

    5. Debera ser fcil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 7/25

    Para conseguir la ejecucin de cdigo remoto y el soporte de red, los programadores de Java a veces recurrena extensiones como CORBA (Common Object Request Broker Architecture), Internet Communications Engineo OSGi respectivamente.

    Orientado a objetos

    La primera caracterstica, orientado a objetos (OO), se refiere a un mtodo de programacin y al diseo dellenguaje. Aunque hay muchas interpretaciones para OO, una primera idea es disear el software de forma quelos distintos tipos de datos que usen estn unidos a sus operaciones. As, los datos y el cdigo (funciones omtodos) se combinan en entidades llamadas objetos. Un objeto puede verse como un paquete que contiene elcomportamiento (el cdigo) y el estado (datos). El principio es separar aquello que cambia de las cosas quepermanecen inalterables. Frecuentemente, cambiar una estructura de datos implica un cambio en el cdigo queopera sobre los mismos, o viceversa. Esta separacin en objetos coherentes e independientes ofrece una basems estable para el diseo de un sistema software. El objetivo es hacer que grandes proyectos sean fciles degestionar y manejar, mejorando como consecuencia su calidad y reduciendo el nmero de proyectos fallidos.Otra de las grandes promesas de la programacin orientada a objetos es la creacin de entidades msgenricas (objetos) que permitan la reutilizacin del software entre proyectos, una de las premisasfundamentales de la Ingeniera del Software. Un objeto genrico cliente, por ejemplo, debera en teora tenerel mismo conjunto de comportamiento en diferentes proyectos, sobre todo cuando estos coinciden en ciertamedida, algo que suele suceder en las grandes organizaciones. En este sentido, los objetos podran verse comopiezas reutilizables que pueden emplearse en mltiples proyectos distintos, posibilitando as a la industria delsoftware a construir proyectos de envergadura empleando componentes ya existentes y de comprobadacalidad; conduciendo esto finalmente a una reduccin drstica del tiempo de desarrollo. Podemos usar comoejemplo de objeto el aluminio. Una vez definidos datos (peso, maleabilidad, etc.), y su comportamiento(soldar dos piezas, etc.), el objeto aluminio puede ser reutilizado en el campo de la construccin, delautomvil, de la aviacin, etc.

    La reutilizacin del software ha experimentado resultados dispares, encontrando dos dificultades principales: eldiseo de objetos realmente genricos es pobremente comprendido, y falta una metodologa para la ampliacomunicacin de oportunidades de reutilizacin. Algunas comunidades de cdigo abierto (open source)quieren ayudar en este problema dando medios a los desarrolladores para diseminar la informacin sobre el usoy versatilidad de objetos reutilizables y bibliotecas de objetos.

    Independencia de la plataforma

    La segunda caracterstica, la independencia de la plataforma, significa que programas escritos en el lenguajeJava pueden ejecutarse igualmente en cualquier tipo de hardware. Este es el significado de ser capaz de escribirun programa una vez y que pueda ejecutarse en cualquier dispositivo, tal como reza el axioma de Java, "writeonce, run anywhere".

    Para ello, se compila el cdigo fuente escrito en lenguaje Java, para generar un cdigo conocido comobytecode (especficamente Java bytecode)instrucciones mquina simplificadas especficas de la plataformaJava. Esta pieza est a medio camino entre el cdigo fuente y el cdigo mquina que entiende el dispositivodestino. El bytecode es ejecutado entonces en la mquina virtual (JVM), un programa escrito en cdigo nativode la plataforma destino (que es el que entiende su hardware), que interpreta y ejecuta el cdigo. Adems, sesuministran bibliotecas adicionales para acceder a las caractersticas de cada dispositivo (como los grficos,ejecucin mediante hebras o threads, la interfaz de red) de forma unificada. Se debe tener presente que, aunquehay una etapa explcita de compilacin, el bytecode generado es interpretado o convertido a instruccionesmquina del cdigo nativo por el compilador JIT (Just In Time).

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 8/25

    Hay implementaciones del compilador de Java que convierten el cdigo fuente directamente en cdigo objetonativo, como GCJ. Esto elimina la etapa intermedia donde se genera el bytecode, pero la salida de este tipo decompiladores slo puede ejecutarse en un tipo de arquitectura.

    La licencia sobre Java de Sun insiste que todas las implementaciones sean compatibles. Esto dio lugar a unadisputa legal entre Microsoft y Sun, cuando ste ltimo aleg que la implementacin de Microsoft no dabasoporte a las interfaces RMI y JNI adems de haber aadido caractersticas dependientes de su plataforma.Sun demand a Microsoft y gan por daos y perjuicios (unos 20 millones de dlares) as como una ordenjudicial forzando la acatacin de la licencia de Sun. Como respuesta, Microsoft no ofrece Java con su versinde sistema operativo, y en recientes versiones de Windows, su navegador Internet Explorer no admite laejecucin de applets sin un conector (o plugin) aparte. Sin embargo, Sun y otras fuentes ofrecen versionesgratuitas para distintas versiones de Windows.

    Las primeras implementaciones del lenguaje usaban una mquina virtual interpretada para conseguir laportabilidad. Sin embargo, el resultado eran programas que se ejecutaban comparativamente ms lentos queaquellos escritos en C o C++. Esto hizo que Java se ganase una reputacin de lento en rendimiento. Lasimplementaciones recientes de la JVM dan lugar a programas que se ejecutan considerablemente ms rpidoque las versiones antiguas, empleando diversas tcnicas, aunque sigue siendo mucho ms lento que otroslenguajes.

    La primera de estas tcnicas es simplemente compilar directamente en cdigo nativo como hacen loscompiladores tradicionales, eliminando la etapa del bytecode. Esto da lugar a un gran rendimiento en laejecucin, pero tapa el camino a la portabilidad. Otra tcnica, conocida como compilacin JIT (Just In Time, o"compilacin al vuelo"), convierte el bytecode a cdigo nativo cuando se ejecuta la aplicacin. Otras mquinasvirtuales ms sofisticadas usan una "recompilacin dinmica" en la que la VM es capaz de analizar elcomportamiento del programa en ejecucin y recompila y optimiza las partes crticas. La recompilacindinmica puede lograr mayor grado de optimizacin que la compilacin tradicional (o esttica), ya que puedebasar su trabajo en el conocimiento que de primera mano tiene sobre el entorno de ejecucin y el conjunto declases cargadas en memoria. La compilacin JIT y la recompilacin dinmica permiten a los programas Javaaprovechar la velocidad de ejecucin del cdigo nativo sin por ello perder la ventaja de la portabilidad enambos.

    La portabilidad es tcnicamente difcil de lograr, y el xito de Java en ese campo ha sido dispar. Aunque es dehecho posible escribir programas para la plataforma Java que acten de forma correcta en mltiplesplataformas de distinta arquitectura, el gran nmero de estas con pequeos errores o inconsistencias llevan aque a veces se parodie el eslogan de Sun, "Write once, run anywhere" como "Write once, debug everywhere"(o Escrbelo una vez, ejectalo en cualquier parte por Escrbelo una vez, depralo en todas partes).

    El concepto de independencia de la plataforma de Java cuenta, sin embargo, con un gran xito en lasaplicaciones en el entorno del servidor, como los Servicios Web, los Servlets, los Java Beans, as como ensistemas empotrados basados en OSGi, usando entornos Java empotrados.

    El recolector de basura

    Vase tambin: Recolector de basura

    En Java el problema fugas de memoria se evita en gran medida gracias a la recoleccin de basura (o automaticgarbage collector). El programador determina cundo se crean los objetos y el entorno en tiempo deejecucin de Java (Java runtime) es el responsable de gestionar el ciclo de vida de los objetos. El programa, uotros objetos pueden tener localizado un objeto mediante una referencia a ste. Cuando no quedan referenciasa un objeto, el recolector de basura de Java borra el objeto, liberando as la memoria que ocupaba previniendoposibles fugas (ejemplo: un objeto creado y nicamente usado dentro de un mtodo slo tiene entidad dentro

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 9/25

    de ste; al salir del mtodo el objeto es eliminado). Aun as, es posible que se produzcan fugas de memoria si elcdigo almacena referencias a objetos que ya no son necesarioses decir, pueden an ocurrir, pero en un nivelconceptual superior. En definitiva, el recolector de basura de Java permite una fcil creacin y eliminacin deobjetos y mayor seguridad.

    Sintaxis

    La sintaxis de Java se deriva en gran medida de C++. Pero a diferencia de ste, que combina la sintaxis paraprogramacin genrica, estructurada y orientada a objetos, Java fue construido desde el principio para sercompletamente orientado a objetos. Todo en Java es un objeto (salvo algunas excepciones), y todo en Javareside en alguna clase (recordemos que una clase es un molde a partir del cual pueden crearse varios objetos).

    Aplicaciones autnomas

    Este ejemplo necesita una pequea explicacin.

    Todo en Java est dentro de una clase, incluyendo programas autnomos.

    El cdigo fuente se guarda en archivos con el mismo nombre que la clase que contienen y con extensin

    .java. Una clase (class) declarada pblica (public) debe seguir este convenio. En el ejemploanterior, la clase es Hola, por lo que el cdigo fuente debe guardarse en el fichero Hola.java

    El compilador genera un archivo de clase (con extensin .class) por cada una de las clases definidas en

    el archivo fuente. Una clase annima se trata como si su nombre fuera la concatenacin del nombre de la

    clase que la encierra, el smbolo $, y un nmero entero.

    Los programas que se ejecutan de forma independiente y autnoma, deben contener el mtodo

    main().

    La palabra reservada void indica que el mtodo main no devuelve nada.

    El mtodo main debe aceptar un array de objetos tipo String. Por acuerdo se referencia como args,aunque puede emplearse cualquier otro identificador.

    La palabra reservada static indica que el mtodo es un mtodo de clase, asociado a la clase en vez

    de una instancias de la misma. El mtodo main debe ser esttico o de clase.

    La palabra reservada public significa que un mtodo puede ser llamado desde otras clases, o que la

    clase puede ser usada por clases fuera de la jerarqua de la propia clase. Otros tipos de acceso son

    private o protected.La utilidad de impresin (en pantalla por ejemplo) forma parte de la biblioteca estndar de Java: la clase

    System define un campo pblico esttico llamado out. El objeto out es una instancia de

    PrintStream, que ofrece el mtodo println (String) para volcar datos en la pantalla (la salida

    estndar).

    Las aplicaciones autnomas se ejecutan dando al entorno de ejecucin de Java el nombre de la clase

    cuyo mtodo main debe invocarse. Por ejemplo, una lnea de comando (en Unix o Windows) de la

    forma java cp . Hola ejecutar el programa del ejemplo (previamente compilado y generadoHola.class). El nombre de la clase cuyo mtodo main se llama puede especificarse tambin en el fichero

    MANIFEST del archivo de empaquetamiento de Java (.jar).

    Applets

    Las applet Java son programas incrustados en otras aplicaciones, normalmente una pgina Web que se muestraen un navegador.

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 10/25

    // Hello.javaimport javax.swing.JApplet;import java.awt.Graphics; public class Hello extends JApplet { public void paint(Graphics g) { g.drawString("Hola, mundo!", 65, 95); } }

    Applet Hola Mundo

    Actualmente HTML 5 ha eliminado el uso de la etiqueta . Pero todava existe la forma de usarlo enHTML5. (Texto en ingls) Java Applets in HTML5. (https://eyeasme.com/Shayne/HTML5_APPLETS/.)

    La sentencia import indica al compilador de Java que incluya las clases java.applet. Applet y java.awt.

    Graphics, para poder referenciarlas por sus nombres, sin tener que anteponer la ruta completa cada vez que sequieran usar en el cdigo fuente.

    La clase Hola extiende (extends) a la clase Applet, es decir, es una subclase de sta. La clase Applet

    permite a la aplicacin mostrar y controlar el estado del applet. La clase Applet es un componente del AWT

    (Abstract Window Toolkit), que permite al applet mostrar una interfaz grfica de usuario o GUI (GraphicalUser Interface), y responder a eventos generados por el usuario.

    La clase Hola sobrecarga el mtodo paint (Graphics) heredado de la superclase contenedora (Applet en

    este caso), para acceder al cdigo encargado de dibujar. El mtodo paint() recibe un objeto Graphics que

    contiene el contexto grfico para dibujar el applet. El mtodo paint() llama al mtodo drawString (String, int,

    int) del objeto [4] (http://java.sun.com/docs/books/tutorial/deployment/applet/mixedbrowser.html)

    Servlets

    Los servlets son componentes de la parte del servidor de Java EE, encargados de generar respuestas a laspeticiones recibidas de los clientes.

    // Hola.javaimport java.io.IOException; import javax.servlet.*; public class Hola extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { response.setContentType("text/html");

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 11/25

    PrintWriter pw = response.getWriter(); pw.println("Hola, mundo!"); pw.close(); }}

    Las sentencias import indican al compilador de Java la inclusin de todas las clases pblicas e interfaces de los

    paquetes java.io y javax.servlet en la compilacin.

    La clase Hola extiende (extends), es heredera de la clase GenericServlet. Esta clase proporciona la interfaz

    para que el servidor le pase las peticiones al servlet y el mecanismo para controlar el ciclo de vida del servlet.

    La clase Hola sobrecarga el mtodo service (ServletRequest, ServletResponse), definido por la interfaz

    servlet para acceder al manejador de la peticin de servicio. El mtodo service() recibe un objeto de tipo

    ServletRequest que contiene la peticin del cliente y un objeto de tipo ServletResponse, usado para generarla respuesta que se devuelve al cliente. El mtodo service() puede lanzar (throws) excepciones de tipo

    ServletException e IOException si ocurre algn tipo de anomala.

    El mtodo setContentType (String) en el objeto respuesta establece el tipo de contenido MIME a "text/html",para indicar al cliente que la respuesta a su peticin es una pgina con formato HTML. El mtodo getWriter()del objeto respuesta devuelve un objeto de tipo PrintWriter, usado como una tubera por la que viajarn losdatos al cliente. El mtodo println (String) escribe la cadena "Hola, mundo!" en la respuesta y finalmente sellama al mtodo close() para cerrar la conexin, que hace que los datos escritos en la tubera o stream seandevueltos al cliente.

    Aplicaciones con ventanas

    Swing es la biblioteca para la interfaz grfica de usuario avanzada de la plataforma Java SE.

    // Hola.java import javax.swing.*; public class Hola extends JFrame { Hola() { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); add(new JLabel("Hola, mundo!")); pack(); } public static void main(String[] args) { new Hola().setVisible(true); } }

    Las instrucciones import indican al compilador de Java que las clases e interfaces del paquete javax.swing se

    incluyan en la compilacin.

    La clase Hola extiende (extends) la clase javax.swing.JFrame, que implementa una ventana con una barra

    de ttulo y un control para cerrarla.

    El constructor Hola() inicializa el marco o frame llamando al mtodo setDefaultCloseOperation (int)

    heredado de JFrame para establecer las operaciones por defecto cuando el control de cierre en la barra dettulo es seleccionado al valor WindowConstants.DISPOSE_ON_CLOSE. Esto hace que se liberen losrecursos tomados por la ventana cuando es cerrada, y no simplemente ocultada, lo que permite a la mquina

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 12/25

    virtual y al programa acabar su ejecucin. A continuacin se crea un objeto de tipo JLabel con el texto "Hola,mundo!", y se aade al marco mediante el mtodo add (Component), heredado de la clase Container. Elmtodo pack(), heredado de la clase Window, es invocado para dimensionar la ventana y distribuir sucontenido.

    El mtodo main() es llamado por la JVM al comienzo del programa. Crea una instancia de la clase Hola y

    hace la ventana sea mostrada invocando al mtodo setVisible (boolean) de la superclase (clase de la quehereda) con el parmetro a true. Vase que, una vez el marco es dibujado, el programa no termina cuando sesale del mtodo main(), ya que el cdigo del que depende se encuentra en un hilo de ejecucin independiente

    ya lanzado, y que permanecer activo hasta que todas las ventanas hayan sido destruidas.

    Entornos de funcionamiento

    El diseo de Java, su robustez, el respaldo de la industria y su fcil portabilidad han hecho de Java uno de loslenguajes con un mayor crecimiento y amplitud de uso en distintos mbitos de la industria de la informtica.

    En dispositivos mviles y sistemas empotrados

    Desde la creacin de la especificacin J2ME (Java 2 Platform, Micro Edition), una versin del entorno deejecucin Java reducido y altamente optimizado, especialmente desarrollado para el mercado de dispositivoselectrnicos de consumo se ha producido toda una revolucin en lo que a la extensin de Java se refiere.

    Es posible encontrar microprocesadores diseados para ejecutar bytecode Java y software Java para tarjetasinteligentes (JavaCard), telfonos mviles, buscapersonas, set-top-boxes, sintonizadores de TV y otrospequeos electrodomsticos.

    El modelo de desarrollo de estas aplicaciones es muy semejante a las applets de los navegadores salvo que eneste caso se denominan MIDlets.

    Vase Sun Mobile Device Tecnology (http://developers.sun.com/mobility/index.jsp)

    En el navegador web

    Desde la primera versin de java existe la posibilidad de desarrollar pequeas aplicaciones (Applets) en Javaque luego pueden ser incrustadas en una pgina HTML para que sean descargadas y ejecutadas por elnavegador web. Estas mini-aplicaciones se ejecutan en una JVM que el navegador tiene configurada comoextensin (plug-in) en un contexto de seguridad restringido configurable para impedir la ejecucin local decdigo potencialmente malicioso.

    El xito de este tipo de aplicaciones (la visin del equipo de Gosling) no fue realmente el esperado debido adiversos factores, siendo quizs el ms importante la lentitud y el reducido ancho de banda de lascomunicaciones en aquel entonces que limitaba el tamao de las applets que se incrustaban en el navegador. Laaparicin posterior de otras alternativas (aplicaciones web dinmicas de servidor) dej un reducido mbito deuso para esta tecnologa, quedando hoy relegada fundamentalmente a componentes especficos para laintermediacin desde una aplicacin web dinmica de servidor con dispositivos ubicados en la mquina clientedonde se ejecuta el navegador.

    Las applets Java no son las nicas tecnologas (aunque s las primeras) de componentes complejos incrustadosen el navegador. Otras tecnologas similares pueden ser: ActiveX de Microsoft, Flash, Java Web Start, etc.

    En sistemas de servidor

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 13/25

    En la parte del servidor, Java es ms popular que nunca, desde la aparicin de la especificacin de Servlets yJSP (Java Server Pages).

    Hasta entonces, las aplicaciones web dinmicas de servidor que existan se basaban fundamentalmente encomponentes CGI y lenguajes interpretados. Ambos tenan diversos inconvenientes (fundamentalmente lentitud,elevada carga computacional o de memoria y propensin a errores por su interpretacin dinmica).

    Los servlets y las JSPs supusieron un importante avance ya que:

    El API de programacin es muy sencilla, flexible y extensible.

    Los servlets no son procesos independientes (como los CGIs) y por tanto se ejecutan dentro del mismoproceso que la JVM mejorando notablemente el rendimiento y reduciendo la carga computacional y de

    memoria requeridas.

    Las JSPs son pginas que se compilan dinmicamente (o se pre-compilan previamente a su distribucin)de modo que el cdigo que se consigue una ventaja en rendimiento substancial frente a muchos lenguajes

    interpretados.

    La especificacin de Servlets y JSPs define un API de programacin y los requisitos para un contenedor(servidor) dentro del cual se puedan desplegar estos componentes para formar aplicaciones web dinmicascompletas. Hoy da existen multitud de contenedores (libres y comerciales) compatibles con estasespecificaciones.

    A partir de su expansin entre la comunidad de desarrolladores, estas tecnologas han dado paso a modelos dedesarrollo mucho ms elaborados con frameworks (pe Struts, Webwork) que se sobreponen sobre los servletsy las JSPs para conseguir un entorno de trabajo mucho ms poderoso y segmentado en el que la especializacinde roles sea posible (desarrolladores, diseadores grficos,...) y se facilite la reutilizacin y robustez de cdigo.A pesar de todo ello, las tecnologas que subyacen (Servlets y JSPs) son substancialmente las mismas.

    Este modelo de trabajo se ha convertido en uno de los estndar de-facto para el desarrollo de aplicacionesweb dinmicas de servidor.

    En aplicaciones de escritorio

    Hoy en da existen multitud de aplicaciones grficas de usuario basadas en Java. El entorno de ejecucin Java(JRE) se ha convertido en un componente habitual en los PC de usuario de los sistemas operativos ms usadosen el mundo. Adems, muchas aplicaciones Java lo incluyen dentro del propio paquete de la aplicacin demodo que se ejecuten en cualquier PC.

    En las primeras versiones de la plataforma Java existan importantes limitaciones en las APIs de desarrollogrfico (AWT). Desde la aparicin de la biblioteca Swing la situacin mejor substancialmente y posteriormentecon la aparicin de bibliotecas como SWT hacen que el desarrollo de aplicaciones de escritorio complejas ycon gran dinamismo, usabilidad, etc. sea relativamente sencillo.

    Plataformas soportadas

    Una versin del entorno de ejecucin Java JRE (Java Runtime Environment) est disponible en la mayora deequipos de escritorio. Sin embargo, Microsoft no lo ha incluido por defecto en sus sistemas operativos. En elcaso de Apple, ste incluye una versin propia del JRE en su sistema operativo, el Mac OS. Tambin es unproducto que por defecto aparece en la mayora de las distribuciones de GNU/Linux. Debido aincompatibilidades entre distintas versiones del JRE, muchas aplicaciones prefieren instalar su propia copia del

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 14/25

    JRE antes que confiar su suerte a la aplicacin instalada por defecto. Los desarrolladores de applets de Java obien deben insistir a los usuarios en la actualizacin del JRE, o bien desarrollar bajo una versin antigua de Javay verificar el correcto funcionamiento en las versiones posteriores.

    Programacin

    Expresiones

    Las expresiones son un conjunto de elementos o tokens junto con literales que son evaluados para devolver unresultado. Los tokens son elemento ms pequeo de un programa que es significativo, e interpretado oentendido por el compilador, en java los tokens se dividen en cinco categoras que son:

    Identificadores: Son las representaciones que se les da a los nombres que se asignan a las variables, clases,paquetes, mtodos y constantes en el cdigo de java para que el compilador los identifique y el programadorpueda entenderlos. En java los identificadores pueden diferenciar entre maysculas o minsculas por ser casesensitive, por lo que la variable cuyo nombre sea Mivariable, no es igual a mivariable, ya que java identificaestas como variables diferentes por el case sensitive, tambin se puede utilizar nmeros, o el signo _ paraasignar un identificador.

    Palabras claves: Son los identificadores reservados por java para cumplir con un objetivo especfico en elcdigo y el compilador, se usan de forma limitada y en casos especficos. Las palabras claves que usa java sonlas siguientes:

    abstract boolean break byte case

    catch char class continue default

    do double else extends false

    final finally float for if

    implements import instanceof int interface

    long native new null package

    private protected public return short

    static super switch syncronized this

    throw throws transient true try

    void volatile while var rest

    byvalue cast const future generic

    goto inner operator outer

    Las palabras que se encuentran en negrilla, son palabras claves para java aunque actualmente no se utilicen en laversin de java, pero se pretenden integrar en las siguientes versiones de java.

    Literales y constantes: Los literales son sintaxis para asignar valores a una variable, es decir el valor que puedetomar una variable, tambin es un valor constante que puede ser de tipo numrico. Las constantes son variablesque tienen un valor fijo y no puede ser modificado en el trascurso de la ejecucin del cdigo, estas se declaranpor medio de los modificadores final y static.

    final static double pi= 3.1416;

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 15/25

    Operadores: Son los que nos indican una evaluacin que se aplica a un objeto o un dato, sobre un identificadoro constante. Un ejemplo de operadores puede ser la suma, resta o multiplicacin.

    Separadores: Se utilizan para indicarle al compilador de java donde se ubican los elementos del cdigo, losseparadores que admite java son: { },:;

    Tambin el compilador de java identifica y elimina los comentarios, retornos de carros espacios vacos y detabulacin a la hora de compilar por lo que no son considerados parte de un tokens.

    Las expresiones pueden ser una combinacin en secuencia de variables, operadores y mtodos. Lasexpresiones son utilizadas para realizar clculos, para asignar valores a variables, o para controlar la ejecucindel flujo del programa.

    Operadores

    Los operadores son aquellos que tras realizar una operacin devuelven un resultado, estos se puedecaracterizar por el nmero de operadores, el tipo de operandos, y el resultado que generan.

    Nmero de operandos. Pueden ser de dos tipos unarios, y binarios. Los unarios son aquellos que solonecesitan de un operando para devolver un valor, mientras que los binarios necesitan de dos o ms operandos.

    Operadores unarios.

    Operador Descripcin

    - Cambio de signo

    ! Operador NOT

    ~ Complemento a 1

    Operadores binarios.

    Operadores Descripcin

    + - * / % Operadores aritmticos

    == != < > = Operadores relacionales

    && || ^ Operadores booleanos

    ^ > >>> Operadores a nivel de bit

    + Concatenacin de cadenas

    Operadores a nivel de bit

    Los operadores a nivel de bit nos permiten realizar operaciones sobre nmeros binarios.

    ~ Complemento a 1, este operador invierte los dgitos, cambiando los 0 por 1 y los 1 por 0, un ejemplo puedeser:

    11001011

    ~ 11001011 resultado 00110100

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 16/25

    Como se puede ver se cambian los valores de 0 a 1 y de 1 a 0.

    & AND a nivel de bit, este operador realiza una operacin AND o suma entre dos nmeros de bit, en dondesi dos bit son igual a 1 el resultado ser 1, de lo contrario ser 0, un ejemplo puede ser:

    situacion

    01001101

    & 10011011

    ______________

    00001001

    | Or a nivel de bit, este operador realiza una operacin OR en donde si alguno de los dos nmeros es 1 elresultado ser 1, un ejemplo puede ser:

    11001101

    | 01011101

    ______________

    11011101

    ^ XOR a nivel de bit, este operador realiza la operacin XOR en donde si los dos nmeros son iguales elresultado ser 0 de lo contrario ser 1, un ejemplo puede ser:

    00101001

    ^ 01101101

    ______________

    01000100

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 17/25

    Precedencia de los operadores en java.

    Tipo de operadores Operadores

    Operadores posfijos [ ] . ( parmetros) expr++ expr--

    Operadores unarios ++expr expr +expr -expr ~ !

    Creacin o conversin New (tipo) expr

    Multiplicacin * / %

    Suma + -

    Desplazamiento > >>>

    Comparacin < > = instanceof

    Igualdad == !=

    AND a nivel bit &

    OR a nivel bit |

    XOR a nivel bit ^

    AND lgico &&

    OR lgico ||

    Condicional ? :

    Asignacin = += -= *= /= %= &= ^= |= = >>>=

    Un ejemplo de la precedencia de los operadores en java podra ser el siguiente, en donde tenemos un cdigoque se encargar de realizar una serie de operaciones aritmticas.

    int numero1 = 3;int numero2 = 4;int resultado;resultado = numero1 + numero2 * 3;System.out.println (resultado); //esto imprime el valor de 15

    segn la precedencia de los operadores la multiplicacin * tiene mayor prioridad que la suma +, por lo queprimero se ejecuta la multiplicacin y luego se realiza la suma.

    int numero1 = 3;int numero2 = 4;int resultado;resultado = (numero1 + numero2) * 3;System.out.println (resultado); //esto imprime el valor de 21

    En este caso el resultado cambia ya que primero se evalan los parmetros que estn dentro del parntesis yluego se evala el resto de parmetros. Una de las recomendaciones que da java para el desarrollo es el uso delos parntesis en las operaciones con ms de 3 operandos, as de esta forma el cdigo se hace ms legible y seevitan errores al momento de compilar.

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 18/25

    Sentencias

    Las sentencias son una representacin de una secuencia de acciones que se realizan en java, la clavefundamental de las sentencias es su punto final que indica que ha finalizado la sentencia y puede continuar con lasiguiente, el indicador utilizado es el signo de punto y coma (;). Contamos en java con sentencias que pueden irdesde sentencias de asignacin, de bucles, condicionales, y de salto. Las sentencias se conforman comnmentepor una instancia, y un operador, un ejemplo es la sentencia de asignacin que se conforma por una instancia deuna variable, el signo de asignacin y una expresin, un ejemplo es:

    int variable = 12+2;

    Las sentencias de asignacin son aquellas en las que se asigna un valor a una variable o constante. Lassentencias condicionales son las que expresan una condicin para definir el flujo de ejecucin del programa,entre ellas tenemos if-else y switch. Las sentencias de bucles se encargar de realizar una accin cierta cantidadde tiempo dado, o hasta que se cumpla con una condicin, entre ellas tenemos el while, do-while, y for. Lassentencias de salto llevan al compilador a un punto especfico del programa o hacia la siguiente sentencia deejecucin, entre ellas tenemos break, continue, y return.

    Conversin de tipos

    En algunos casos suele ser necesario convertir un tipo de dato a otro, esto se le conoce como conversin detipos, modelado, o tipado, as de esta forma poder realizar las operaciones necesarias sobre el valor que sedesea convertir. Se debe tener en cuenta el tipo de dato que se va a convertir, ya que si se convierte un datoque tenga una cantidad menor de bit al anterior este tendr perdida de informacin, un ejemplo de tipado puedeser un nmero long que se desea convertir a int, el compilador eliminara los primeros 32bit del long paraajustarlo al int ya que el int es de 32bit y el long de 64. Si la conversin se realiza a un tipo de datos de menosbit a un tipo de datos con mayor bit, la conversin se realiza automticamente llamada conversin implcita,pero si se realiza de un tipo de datos con mayor bit a menor bit se tiene que realizar una conversin explicita, lacual se realiza con un casting, al usar este mtodo se obliga a realizar la conversin por lo cual puede haberperdida de datos en la conversin. Para realizar una conversin explicita se tiene que poner el tipo de dato quese desea realizar la conversin entre parntesis, luego el valor o la variable que se desea convertir. Un ejemplode conversin de tipo explicito puede ser:

    Int numero1 = 32;byte numero2;numero2 = (byte) numero1;

    Un ejemplo de una conversin de tipo implcita puede ser:

    int numero1 = 32;long numero2;numero2 = numero1;

    Las siguiente tabla muestra la los tipos de datos que se pueden realizar una conversin implcita desde el datoorigen, hasta el dato destino que es el dato en el que se va a convertir.

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 19/25

    Tipo origen Tipo destino

    byte double, float, long, int, char, short

    short double, float, long, int

    char double, float, long, int

    int double, float, long

    long double, float

    float double

    Los tipos de datos booleanos no pueden ser convertidos a otro tipo de datos, por ningn mtodo mencionadoanteriormente. Otro tipo de conversin que no se encuentre en esta tabla desde el origen al destino, tiene querealizarse por medio de una conversin explcita por casting. Cuando se desea realizar una conversin de untipo string como origen a otro tipo, es necesario utilizar una funcin que se encarga de convertir el tipo de dato,la funcin necesaria se compone de la variable que va almacenar el resultado, y dependiendo de la variable seusa el parmetro que inicia con el tipo de dato a convertir, Integer, Byte, Short, o Long, seguida de punto . ,el cual indica que se cargarn los atributos del parmetro, en donde cargaremos el parseInt si queremosconvertir a interger o parseByte si queremos convertir a byte, o dependiendo del tipo de dato, seguido deparntesis en donde se agregara el valor de string a convertir. Algunos ejemplos puede ser:

    int numero1;long numero2;byte numero3;String texto= 2013;numero1 = Integer.parseInt ( texto );numero2 = Long.parseLong ( texto);numero3 = Byte.parseByte ( texto );

    esto suele ser usado para realizar una conversin de texto cuando se ingresan valores numricos por unaentrada a java, la cual los detecta como string, as de esta forma puede convertir el texto que se ingresa a unnmero para realizar operaciones, como una calculadora.

    Industria relacionada

    Sun Microsystem, como creador del lenguaje de programacin Java y de la plataforma JDK, mantiene fuertes

    polticas para mantener una especificacin del lenguaje6 as como de la mquina virtual7 a travs del JCP. Esdebido a este esfuerzo que se mantiene un estndar de facto.

    Son innumerables las compaas que desarrollan aplicaciones para Java y/o estn volcadas con esta tecnologa:

    La industria de la telefona mvil est fuertemente influenciada por la tecnologa Java.

    Los entornos de desarrollo Netbeans y Eclipse ha tomado un lugar importante entre la comunidad dedesarrolladores Java.La fundacin Apache tiene tambin una presencia importante en el desarrollo de bibliotecas y

    componentes de servidor basados en Java.IBM, BEA, IONA, Oracle,... son empresas con grandes intereses y productos creados en y para Java.

    Crticas

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 20/25

    En 1995 alguien dijo que Java fue creado para abrir una nueva va en la gestin de software complejo, y es porregla general aceptado que se ha comportado bien en ese aspecto. Sin embargo no puede decirse que Java notenga grietas, ni que se adapta completamente a todos los estilos de programacin, todos los entornos, o todaslas necesidades.

    General

    Java no ha aportado capacidades estndares para aritmtica en punto flotante. El estndar IEEE 754

    para Estndar para Aritmtica Binaria en Punto Flotante apareci en 1985, y desde entonces es elestndar para la industria. Y aunque la aritmtica flotante de Java (cosa que cambi desde el 13 de

    noviembre de 2006, cuando se abri el cdigo fuente y se adopt la licencia GPL, aparte de la ya

    existente)[cita requerida] se basa en gran medida en la norma del IEEE, no soporta an algunas

    caractersticas. Ms informacin al respecto puede encontrarse en la seccin final de enlaces externos.

    El lenguaje

    En un sentido estricto, Java no es un lenguaje absolutamente orientado a objetos, a diferencia de, por

    ejemplo, Ruby o Smalltalk. Por motivos de eficiencia, Java ha relajado en cierta medida el paradigma deorientacin a objetos, y as por ejemplo, no todos los valores son objetos.

    El cdigo Java puede ser a veces redundante en comparacin con otros lenguajes. Esto es en partedebido a las frecuentes declaraciones de tipos y conversiones de tipo manual (casting). Tambin se debe

    a que no se dispone de operadores sobrecargados, y a una sintaxis relativamente simple. Sin embargo,J2SE 5.0 introduce elementos para tratar de reducir la redundancia, como una nueva construccin paralos bucles foreach.

    A diferencia de C++, Java no dispone de operadores de sobrecarga definidos por el usuario. Losdiseadores de Java tomaron esta decisin puesto que consideraban que, bajo ciertas circunstancias,

    esta caracterstica poda complicar la lectura y mantenimiento de los programas.

    Apariencia

    La apariencia externa (el look and feel) de las aplicaciones GUI (Graphical User Interface) escritas en Javausando la plataforma Swing difiere a menudo de la que muestran aplicaciones nativas. Aunque el programadorpuede usar el juego de herramientas AWT (Abstract Windowing Toolkit) que genera objetos grficos de laplataforma nativa, el AWT no es capaz de funciones grficas avanzadas sin sacrificar la portabilidad entreplataformas; ya que cada una tiene un conjunto de APIs distinto, especialmente para objetos grficos de altonivel. Las herramientas de Swing, escritas completamente en Java, evitan este problema construyendo losobjetos grficos a partir de los mecanismos de dibujo bsicos que deben estar disponibles en todas lasplataformas. El inconveniente es el trabajo extra requerido para conseguir la misma apariencia de la plataformadestino. Aunque esto es posible (usando GTK+ y el Look-and-Feel de Windows), la mayora de los usuariosno saben cmo cambiar la apariencia que se proporciona por defecto por aquella que se adapta a la de laplataforma.

    Rendimiento

    El bytecode de Java puede ser interpretado en tiempo de ejecucin por la mquina virtual, o bien compilado alcargarse el programa, o durante la propia ejecucin, para generar cdigo nativo que se ejecuta directamentesobre el hardware. Si es interpretado, ser ms lento que usando el cdigo mquina intrnseco de la plataformadestino. Si es compilado, durante la carga inicial o la ejecucin, la penalizacin est en el tiempo necesario parallevar a cabo la compilacin.

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 21/25

    Algunas caractersticas del propio lenguaje conllevan una penalizacin en tiempo, aunque no son nicas de Java.Algunas de ellas son el chequeo de los lmites de arrays, chequeo en tiempo de ejecucin de tipos, y laindireccin de funciones virtuales.

    El uso de un recolector de basura para eliminar de forma automtica aquellos objetos no requeridos, aade unasobrecarga que puede afectar al rendimiento, o ser apenas apreciable, dependiendo de la tecnologa delrecolector y de la aplicacin en concreto. Las JVM modernas usan recolectores de basura que gracias arpidos algoritmos de manejo de memoria, consiguen que algunas aplicaciones puedan ejecutarse mseficientemente.

    El rendimiento entre un compilador JIT y los compiladores nativos puede ser parecido, aunque la distincin noest clara en este punto. La compilacin mediante el JIT puede consumir un tiempo apreciable, un inconvenienteprincipalmente para aplicaciones de corta duracin o con gran cantidad de cdigo. Sin embargo, una vezcompilado, el rendimiento del programa puede ser comparable al que consiguen compiladores nativos de laplataforma destino, inclusive en tareas numricas. Aunque Java no permite la expansin manual de llamadas amtodos, muchos compiladores JIT realizan esta optimizacin durante la carga de la aplicacin y puedenaprovechar informacin del entorno en tiempo de ejecucin para llevar a cabo transformaciones eficientesdurante la propia ejecucin de la aplicacin. Esta recompilacin dinmica, como la que proporciona la mquinavirtual HotSpot de Sun, puede llegar a mejorar el resultado de compiladores estticos tradicionales, gracias alos datos que slo estn disponibles durante el tiempo de ejecucin.

    Java fue diseado para ofrecer seguridad y portabilidad, y no ofrece acceso directo al hardware de laarquitectura ni al espacio de direcciones. Java no soporta expansin de cdigo ensamblador, aunque lasaplicaciones pueden acceder a caractersticas de bajo nivel usando bibliotecas nativas (JNI, Java NativeInterfaces).

    Recursos

    JRE

    El JRE (Java Runtime Environment, o Entorno en Tiempo de Ejecucin de Java) es el software necesario paraejecutar cualquier aplicacin desarrollada para la plataforma Java. El usuario final usa el JRE como parte depaquetes software o plugins (o conectores) en un navegador Web. Sun ofrece tambin el SDK de Java 2, oJDK (Java Development Kit) en cuyo seno reside el JRE, e incluye herramientas como el compilador de Java,Javadoc para generar documentacin o el depurador. Puede tambin obtenerse como un paqueteindependiente, y puede considerarse como el entorno necesario para ejecutar una aplicacin Java, mientras queun desarrollador debe adems contar con otras facilidades que ofrece el JDK.

    Componentes

    Bibliotecas de Java, que son el resultado de compilar el cdigo fuente desarrollado por quien implementa

    la JRE, y que ofrecen apoyo para el desarrollo en Java. Algunos ejemplos de estas bibliotecas son:Las bibliotecas centrales, que incluyen:

    Una coleccin de bibliotecas para implementar estructuras de datos como listas, arrays,rboles y conjuntos.Bibliotecas para anlisis de XML.Seguridad.

    Bibliotecas de internacionalizacin y localizacin.Bibliotecas de integracin, que permiten la comunicacin con sistemas externos. Estas bibliotecasincluyen:

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 22/25

    La API para acceso a bases de datos JDBC (Java DataBase Conectivity).La interfaz JNDI (Java Naming and Directory Interface) para servicios de directorio.RMI (Remote Method Invocation) y CORBA para el desarrollo de aplicaciones

    distribuidas.Bibliotecas para la interfaz de usuario, que incluyen:

    El conjunto de herramientas nativas AWT (Abstract Window Toolkit), que ofrececomponentes GUI (Graphical User Interface), mecanismos para usarlos y manejar sus

    eventos asociados.Las Bibliotecas de Swing, construidas sobre AWT pero ofrecen implementaciones nonativas de los componentes de AWT.APIs para la captura, procesamiento y reproduccin de audio.

    Una implementacin dependiente de la plataforma en que se ejecuta de la mquina virtual de Java

    (JVM), que es la encargada de la ejecucin del cdigo de las bibliotecas y las aplicaciones externas.Plugins o conectores que permiten ejecutar applets en los navegadores Web.Java Web Start, para la distribucin de aplicaciones Java a travs de Internet.Documentacin y licencia.

    APIs

    Sun define tres plataformas en un intento por cubrir distintos entornos de aplicacin. As, ha distribuido muchasde sus APIs (Application Program Interface) de forma que pertenezcan a cada una de las plataformas:

    Java ME (Java Platform, Micro Edition) o J2ME orientada a entornos de limitados recursos, como

    telfonos mviles, PDAs (Personal Digital Assistant), etc.Java SE (Java Platform, Standard Edition) o J2SE para entornos de gama media y estaciones detrabajo. Aqu se sita al usuario medio en un PC de escritorio.Java EE (Java Platform, Enterprise Edition) o J2EE orientada a entornos distribuidos empresariales ode Internet.

    Las clases en las APIs de Java se organizan en grupos disjuntos llamados paquetes. Cada paquete contiene unconjunto de interfaces, clases y excepciones relacionadas. La informacin sobre los paquetes que ofrece cadaplataforma puede encontrarse en la documentacin de sta.

    El conjunto de las APIs es controlado por Sun Microsystems junto con otras entidades o personas a travs delprograma JCP (Java Community Process). Las compaas o individuos participantes del JCP pueden influir deforma activa en el diseo y desarrollo de las APIs, algo que ha sido motivo de controversia.

    Extensiones y arquitecturas relacionadas

    Las extensiones8 de Java estn en paquetes que cuelgan de la raz javax: javax.*. No se incluyen en la JDK o

    el JRE. Algunas de las extensiones y arquitecturas ligadas estrechamente al lenguaje Java son:

    Java EE (Java Platform, Enterprise Edition; antes J2EE) para aplicaciones distribuidas orientadas alentorno empresarial

    Java en cdigo abierto

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 23/25

    Java se ha convertido en un lenguaje con una implantacin masiva en todos los entornos (personales yempresariales). El control que mantiene Sun sobre ste ha generado reticencias en la comunidad de empresascon fuertes intereses en Java (IBM, Oracle) y obviamente en la comunidad de desarrolladores de softwarelibre.

    La evolucin basada en un comit en el que participen todos los implicados no es suficiente y la comunidaddemandaba desde hace tiempo la liberacin de las APIs y bibliotecas bsicas de la JDK.

    En diciembre de 2006, Sun Microsystems comenz el relanzamiento de su plataforma Java9 bajo la licenciaGPL de GNU.

    En abril de 2009 Oracle adquiri Sun Microsystems, lo que gener temor en la comunidad ante la posiblemercantilizacin del lenguaje de programacin orientado a objetos ms popular actualmente. Por ahora Oracleha seguido manteniendo Java, estando las versiones posteriores a la 6 bajo su control.

    Se instala una versin homebrew de PSPKVM (0.5.5) para emular la plataforma de Java en PSP. Esto permiteusar programas JAVA en esta videoconsola.

    Alternativas libres

    Existen alternativas para el entorno de ejecucin y de desarrollo de Java con una gran cobertura defuncionalidades con respecto a las implementaciones comerciales de Sun, IBM, Bea, etc.

    Crticas referentes a Java y el software libre

    Free But Shackled The Java Trap (http://www.gnu.org/philosophy/java-trap.html), de RichardStallman, 12 de abril de 2004. (respuesta de James Gosling (http://today.java.net/jag/page7.html#59))

    Traduccin al espaol de este artculo: Libre pero encadenado. La trampa del Java.(http://www.gnu.org/philosophy/java-trap.es.html) (Ntese que hay una nota en un recuadroamarillo que habla de la situacin actual con respecto a lo que se dice en ese artculo)

    Notar que este artculo fue escrito antes de la liberacin del cdigo fuente de Java. En la actualidad la postura

    de la Free Software Foundation y de Richard Stallman han cambiado[cita requerida], mostrndose partidariosambos de su uso en software libre.

    Vase tambin

    Applet JavaDrupalJavaOne

    JavaOSJavapediaJava Community ProcessJava User GroupMquina virtual Java

    OpenJDKPlataforma Java

    Referencias

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 24/25

    Jon Byous, Java technology: The early years (http://java.sun.com/features/1998/05/birthday.html). SunDeveloper Network, sin fecha[ca. 1998]. Recuperado 21 de abril de 2005.

    James Gosling, A brief history of the Green project (http://today.java.net/jag/old/green/). Java.net, sinfecha [ca. Q1/1998]. Recuperado 22 abril de 2005.James Gosling, Bill Joy, Guy Steele, y Gilad Bracha, The Java language specification, tercera edicin.Addison-Wesley, 2005. ISBN 0-321-24678-0.Tim Lindholm y Frank Yellin. The Java Virtual Machine specification, segunda edicin. Addison-

    Wesley, 1999. ISBN 0-201-43294-3.

    Notas

    1. Overview - D Programming Language (http://dlang.org/overview.html)2. Programming Language Popularity (http://www.langpop.com/) (2009). Consultado el 16-01-2009.3. TIOBE Programming Community Index

    (http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) (2009). Consultado el 06-05-2009.4. Jonathan Schwartz's Blog: Different Isn't Always Better, But Better's Always Different

    (http://blogs.sun.com/jonathan/entry/better_is_always_different). Blogs.sun.com. Consultado el 24 deseptiembre de 2010.

    5. M. Domnguez-Dorado,. Todo Programacin. N 8. Pgs. 39-42. Editorial Iberprensa (Madrid). DL M-13679-2004. Febrero, 2005.. Dibujando sobre lienzos en Java..

    6. Especificacin del lenguaje Java (http://java.sun.com/docs/books/jls/)7. Especificacin de la mquina virtual Java (http://java.sun.com/docs/books/vmspec/)8. M. Domnguez-Dorado, Guillermo Som. Todo Programacin. N 11. Pgs. 10-20. Editorial Iberprensa

    (Madrid). DL M-13679-2004. Agosto, 2005.. Imprimir desde Java y .NET..9. Sun begins releasing Java under the GPL - Free Software Foundation (http://www.fsf.org/news/fsf-

    welcomes-gpl-java.html)

    Enlaces externos

    Wikilibros alberga un libro o manual sobre Programacin en Java.Programas hechos en java con cdigo fuente (http://torturo.com/programas-hechos-en-java/)

    Oracle - Sun

    Sitio oficial de Java para desarrolladores, etc (http://java.sun.com/)The Java Language Specification, Tercera edicin (http://java.sun.com/docs/books/jls/) Especificacinoficial del lenguaje Java

    Tutorial de Sun sobre el Lenguaje de programacin Java (http://java.sun.com/docs/books/tutorial/)Libro blanco original de Java (http://java.sun.com/docs/white/langenv/), 1996

    Tutoriales

    Thinking in Java (http://www.bruceeckel.com/), de Bruce Eckel (online)

    An introduction to Computer Science using Java (http://programmedlessons.org/java5) por Bradley Kjell.Java Course (http://www.vias.org/javacourse/), de A.B. Downey.Computer-Books.us (http://www.computer-books.us/java.php) Coleccin de libros sobre Javadisponibles para descarga gratuita.

    En castellano:

  • 19/8/2014 Java (lenguaje de programacin) - Wikipedia, la enciclopedia libre

    http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n) 25/25

    VideoTutoriales para aprender desde cero Empieza a Programar(https://www.youtube.com/playlist?list=PLw8RQJQ8K1yQDqPyDRzt-h8YlBj96OwMP)Coleccin Java a tope de libros electrnicos (http://www.lcc.uma.es/~galvez/) (Universidad deMlaga. Espaa)

    Curso de Java, de cero a hasta conexin a MYSQL, incluye PDF(http://www.cursodejava.com.mx/) (Mxico)Capacitacin en Java sobre Grandes Proyectos (http://www.nullbrainexception.blogspot.com/)Aprender programacin Java desde cero (http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188) (Portal web

    aprenderaprogramar.com, on-line y en formato pdf)Que es Java? (http://soft-mas.com/que-es-java/) (SoftMAS el blog para aprender a programar).

    Crticas

    Softpanorama Java Critique Page: Java vs Scripting Languages(http://www.softpanorama.org/Lang/java.shtml), de Nikolai BezroukovHow Javas Floating-Point Hurts Everyone Everywhere(http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf), de W. Kahan und Joseph D. Darcy en el ACM

    1998 Workshop on Java for HighPerformance Network Computing

    Obtenido de http://es.wikipedia.org/w/index.php?title=Java_(lenguaje_de_programacin)&oldid=76064849Categoras: Investigacin operativa Lenguaje de programacin Java

    Lenguajes de programacin de Oracle Corporation Lenguajes de programacin de Sun Microsystems

    Lenguajes de programacin orientada a objetos Optimizacin Programacin Imperativa

    Esta pgina fue modificada por ltima vez el 4 ago 2014, a las 17:09.El texto est disponible bajo la Licencia Creative Commons Atribucin Compartir Igual 3.0; podran seraplicables clusulas adicionales. Lanse los trminos de uso para ms informacin.Wikipedia es una marca registrada de la Fundacin Wikimedia, Inc., una organizacin sin nimo de

    lucro.