Java (lenguaje de programación)

Ir a: navegación, búsqueda de
"Lenguaje Java" vuelve a dirigir aquí. Para el lenguaje natural de la isla indonesia de Java, consulte Idioma Java.
Este artículo está sobre un lenguaje de programación. Para el paquete de software de java.com, ver Java SE.
No debe confundirse con JavaScript.
Java
Java programming language logo.svg
Paradigma de Multiparadigma: Orientado a objetos (basado en clases), estructurado, imperativo de, genérico, reflexivo, concurrente
Diseñado por James Gosling
Desarrollador Sun Microsystems (ahora propiedad de Oracle Corporation)
Apareció por primera vez 23 de mayo de 1995; hace 21 años)1995-05-23)[1]
Disciplina de mecanografía Estático, fuerte, seguro, nominativas, manifiesto de
Licencia de Licencia Pública General de GNU, Proceso de comunidad Java
Extensiones de nombre de archivo ., Java .Class, .jar
Sitio web Java.net
Principales implementaciones de
OpenJDK, Recopilador del GNU para Java (GCJ), muchos otros
Dialectos
Java genérica, Pizza
Influenciado por
ADA 83, C++,[2] C#,[3] Eiffel,[4] Java genérica, Mesa,[5] Modula-3,[6] Oberon,[7] Objective-C,[8] Pascal UCSD,[9][10] Object Pascal[11]
Influenciado
ADA 2005, BeanShell, C#, Capilla,[12] Clojure, ECMAScript, Fantom, Groovy, Hack,[13] HaXe, J#, JavaScript, Kotlin, PHP, Python, Scala, Seed7, Vala
  • Programación en Java en Wikilibros

Java es un propósito general lenguaje de programación de computadoras Es decir concurrente, basado en clases, orientado a objetos,[14] y específicamente diseñado a tener dependencias de aplicación como pocos como sea posible. Se pretende dejar que los desarrolladores de aplicaciones"escribir una vez, ejecutar en cualquier lugar"(WORA),[15] lo que significa que compilado Puede ejecutar código Java en todas las plataformas que soportan Java sin necesidad de recompilación.[16] Aplicaciones Java generalmente son compiladas a bytecode se puede ejecutar en cualquier Máquina virtual de Java (JVM) independientemente de arquitectura de computadores. A partir de 2016, Java es uno de los más lenguajes de programación populares en uso,[17][18][19][20] particularmente para aplicaciones de web cliente-servidor, con un desarrolladores 9 millones divulgado.[21] Java fue originalmente desarrollado por James Gosling en Sun Microsystems (que desde entonces ha sido adquirida por Oracle Corporation) y lanzado en 1995 como un componente esencial de Sun Microsystems Plataforma Java. El lenguaje deriva gran parte de su Sintaxis de De C y C++, pero tiene menos bajo nivel instalaciones que cualquiera de ellos.

El original y implementación de referencia Java compiladores de, máquinas virtuales, y bibliotecas de clases fueron lanzados originalmente por Sun bajo licencias propietarias. A partir de mayo de 2007, en cumplimiento de las especificaciones de la Proceso de comunidad Java, El sol cambiado la mayoría de sus tecnologías Java bajo la Licencia Pública General de GNU. Otros han desarrollado también implementaciones alternativas de estas tecnologías de Sun, tales como la Recopilador del GNU para Java (compilador de bytecode), GNU Classpath (bibliotecas estándar), y IcedTea-Web (plugin de navegador para applets).

La versión más reciente es Java 8, que es la única versión actualmente soportada gratis de Oracle, aunque es compatible con versiones anteriores tanto de Oracle y otras empresas sobre una base comercial.

Contenido

  • 1 Historia
    • 1.1 Principios
    • 1.2 Versiones
  • 2 Prácticas
    • 2.1 Plataforma Java
      • 2.1.1 Implementaciones de
      • 2.1.2 Rendimiento
    • 2.2 Gestión de memoria automática
  • 3 Sintaxis de
  • 4 Ejemplos
    • 4.1 ¡Hola, mundo! programa
    • 4.2 Ejemplo completo
  • 5 Clases especiales
    • 5.1 Applet
    • 5.2 Servlet
    • 5.3 Páginas de JavaServer
    • 5.4 Aplicación swing
    • 5.5 Medicamentos genéricos
  • 6 Crítica
  • 7 Uso en plataformas de software no oficial
    • 7.1 Google
  • 8 Bibliotecas de clases
  • 9 Documentación
  • 10 Ediciones
  • 11 Véase también
    • 11.1 Comparación de Java con otros lenguajes
  • 12 Notas
  • 13 Referencias
  • 14 Acoplamientos externos

Historia

Vea también: § Historia de Java (plataforma de software)
Duke, la mascota de Java
James Gosling, el creador de Java (2008)
El TIOBE Índice de popularidad de lenguaje programación gráfico de 2002 a 2015. En el transcurso de una década Java (azul) y C (negro) que compiten por la posición superior.

James Gosling, Mike Sheridan, y Patrick Naughton inició el proyecto de lenguaje Java en junio de 1991.[22] Java fue diseñado originalmente para la televisión interactiva, pero era demasiado avanzada para la industria de televisión por cable digital en el momento.[23] La lengua fue llamada inicialmente Roble después de un roble árbol que estaba oficina exterior Gosling. Más tarde el proyecto fue por el nombre Verde y finalmente fue retitulado JavaDe Café de Java.[24] Gosling había diseñado Java con una sintaxis de C/C++-style sistema y programadores de aplicaciones sería familiar.[25]

Sun Microsystems lanzado la primera aplicación pública como Java 1.0 en 1995.[26] Él prometió "Escribir una vez, ejecutar en cualquier lugar" (WORA), proporcionando tiempos de funcionamiento sin costo en popular plataformas. Bastante segura y con seguridad configurable, permite restricciones de acceso de red y de archivo. Principales navegadores web pronto incorporaron la posibilidad de ejecutar Applets de Java dentro de web páginas y Java rápidamente se convirtió en popular, mientras que en su mayoría fuera de los navegadores, que no era el plan original. En enero de 2016, Oracle anunció que entornos de tiempo de ejecución de Java basados en JDK 9 discontinuará el plugin del navegador.[27] El compilador de Java 1.0 fue reescrito en Java por Arthur van Hoff a cumplir estrictamente con la especificación del lenguaje Java 1.0.[28] Con el advenimiento de Java 2 (lanzado inicialmente como J2SE 1.2 en diciembre de 1998 – 1999), nuevas versiones tenían múltiples configuraciones para diferentes tipos de plataformas. J2EE incluye tecnologías y APIs para aplicaciones empresariales que normalmente se ejecutan en entornos de servidor, mientras que J2ME recomendados APIs optimizadas para aplicaciones móviles. Fue retitulada a la versión de escritorio J2SE. En 2006, para fines de marketing, el sol retitulado nuevo J2 versiones como Java EE, Java ME, y Java SE, respectivamente.

En 1997, Sun Microsystems se acercó a la ISO/IEC JTC 1 de normalización y más tarde la ECMA International para la formalización de Java, pero pronto se retiró del proceso.[29][30][31] Java sigue siendo un de hecho estándar, controlada a través de la Proceso de comunidad Java.[32] Al mismo tiempo, el sol a disposición la mayoría de sus implementaciones de Java sin cargo, a pesar de su software privativo Estado. El sol genera ingresos de Java a través de la venta de licencias para productos especializados como Java Enterprise System.

El 13 de noviembre de 2006, Sun liberó gran parte de su máquina virtual de Java (JVM) como software libre y código abierto, (FOSS), bajo los términos de la Licencia Pública General de GNU (GPL). En 08 de mayo de 2007, el sol terminado el proceso, haciendo todo base código de su JVM disponible bajo software libre/Open-Source términos de distribución, además de una pequeña porción de código que el sol no llevó a cabo el copyright.[33]

Vicepresidente de Sun Rich Green dice que el papel ideal del sol con respecto a Java como un "evangelista".[34] Después de Oracle Corporationde adquisición de Sun Microsystems en 2009 – 10, Oracle ha descrito a sí mismo como el "Administrador de la tecnología de Java con un incansable compromiso con fomentar una comunidad de participación y transparencia".[35] Esto no impidió que Oracle de presentar una demanda contra Google poco después de que para el uso de Java en el SDK de Android (ver sección de Google más abajo). Software de Java se ejecuta en todo, desde ordenadores portátiles Para centros de datos, consolas de juegos a científica superordenadores.[36] En 02 de abril de 2010, James Gosling renunció a Oracle.[37]

Principios

Había cinco metas principales en la creación del lenguaje Java:[16]

  1. Debe ser "simple, orientado a objetos y familiar".
  2. Debe ser "robusta y segura".
  3. Debe ser "arquitectura neutral y portátil".
  4. Debe ejecutar con "alto rendimiento".
  5. Debe ser "interpretado, roscado y dinámica".

Versiones

Artículo principal: Historial de versiones de Java

A partir de 2015, sólo Java 8 es compatible ("público"). Principales versiones de Java, junto con sus fechas de lanzamiento:

  • JDK 1.0 (21 de enero de 1996)
  • JDK 1.1 (19 de febrero de 1997)
  • J2SE 1.2 (08 de diciembre de 1998)
  • J2SE 1.3 (08 de mayo de 2000)
  • J2SE 1.4 (06 de febrero de 2002)
  • J2SE 5.0 (30 de septiembre de 2004)
  • Java SE 6 (11 de diciembre de 2006)
  • Java SE 7 (28 de julio de 2011)
  • Java SE 8 (18 de marzo de 2014)

Prácticas

Plataforma Java

Artículos principales: Java (plataforma de software) y Máquina virtual de Java
Panel de Control de Java, versión 7

Un objetivo de diseño de Java es portabilidad, lo que significa que programas escritos para la plataforma Java deben ejecutarse igualmente en cualquier combinación de hardware y sistema operativo con soporte de tiempo de ejecución adecuado. Esto se logra mediante la compilación el código de lenguaje de Java a una representación intermedia denominada Bytecode de Java, en vez de directamente al específico de la arquitectura código de máquina. Instrucciones de bytecode de Java son análogas a código máquina, pero están destinados a ser ejecutados por un máquina virtual (VM) diseñado específicamente para el hardware del host. Usuarios finales suelen utilizar un Java Runtime Environment (JRE) instalado en su máquina para las aplicaciones Java independientes o en un explorador web para Java applets de.

Bibliotecas estándar proporcionan una forma genérica para acceder a las funciones específicos tales como gráficos, Threading, y establecimiento de una red.

El uso de código de bytes de universal facilita portar. Sin embargo, la sobrecarga de interpretar el bytecode en instrucciones hace interpreta programas casi siempre se ejecutan más lentamente que el nativo archivos ejecutables. Sin embargo, Just-in-time Se introdujeron los recopiladores (JIT) que compilación los bytecodes a código máquina en tiempo de ejecución desde una etapa temprana. Java sí mismo es independiente de la plataforma y se adapta a la plataforma particular está a cargo un Máquina virtual de Java para él, que se traduce la Bytecode de Java en lenguaje de máquina de la plataforma.[38]

Implementaciones de

Vea también: Implementaciones libres de Java

Oracle Corporation es el actual propietario de la aplicación oficial de la Java SE plataforma, tras su adquisición de Sun Microsystems en 27 de enero de 2010. Esta implementación se basa en la implementación original de Java de Sun. La implementación de Oracle está disponible para Microsoft Windows (todavía funciona para XP, mientras que solamente más adelante versiones soportadas actualmente "público"), Mac OS X, Linux y Solaris. Debido a que Java carece cualquier normalización formal reconocido por ECMA International, ISO/IEC, ANSI u otra organización estándares de terceros, la implementación de Oracle es la estándar de facto.

La implementación de Oracle viene en dos diferentes distribuciones: el Java Runtime Environment (JRE) que contiene las partes de la plataforma de Java SE requiere para ejecutar programas en Java y está destinado a usuarios finales, y la Kit de desarrollo Java (JDK), que está destinado a desarrolladores de software e incluye herramientas de desarrollo tales como la Compilador de Java, Javadoc, Tarro dey un depurador de.

OpenJDK es otra notable implementación de Java SE que está licenciada bajo la GPL de GNU. La implementación comenzada cuando el sol comenzó a liberar el código fuente de Java bajo la GPL. A partir de Java SE 7, OpenJDK es la implementación de referencia oficial de Java.

El objetivo de Java es para que todas las implementaciones de Java compatible. Históricamente, licencia de marca comercial de Sun para el uso de la marca Java insiste en que todas las implementaciones sean "compatibles". Esto dio lugar a una disputa legal con Microsoft después de que Sun afirmó que no apoya la implementación de Microsoft RMI o JNI y había añadido características específicas de la plataforma propia. Sun demandó en 1997 y en 2001 ganó un establecimiento de US$ 20 millones, así como una orden judicial de hacer cumplir los términos de la licencia de Sun.[39] Como resultado, Microsoft ya no incluye Java con Windows.

Independiente de la plataforma Java es esencial para Java EE, y una validación más rigurosa es necesaria para certificar una aplicación. Este entorno permite a las aplicaciones de servidor portátiles.

Rendimiento

Artículo principal: Rendimiento de Java

Programas escritos en Java tienen una reputación por ser más lento y que requiere más memoria que los escritos en C++.[40][41] Sin embargo, la velocidad de ejecución de los programas Java mejorado significativamente con la introducción de compilación Just-in-time en 1997/1998 para Java 1.1,[42] la adición de características de lenguaje apoyo mejor análisis de código (por ejemplo, clases internas, la clase StringBuilder, afirmaciones opcionales, etc.) y optimizaciones en la máquina virtual de Java, tales como Punto de acceso convertirse en el valor predeterminado de sol JVM en el año 2000. Con Java 1.5, el rendimiento fue mejorado con la adición del paquete java.util.concurrent, incluyendo Bloqueo gratis implementaciones de la ConcurrentMaps y otras colecciones de multi-core y fue mejorado más a Java 1.6.

Algunas plataformas ofrecen soporte de hardware directo para Java; hay microcontroladores que pueden ejecutar Java en hardware en lugar de una máquina virtual de Java de software, y BRAZO base procesadores pueden tener soporte de hardware para ejecutar bytecode Java a través de sus Jazelle opción (aunque su apoyo se cae sobre todo en las implementaciones actuales del brazo).

Gestión de memoria automática

Java utiliza un recolector de basura automático para administrar la memoria en la ciclo de vida del objeto. El programador determina cuándo se crean los objetos, y el runtime de Java es el responsable de la recuperación de la memoria una vez que los objetos ya no están en uso. Una vez que no permanecen referencias a un objeto, la memoria inalcanzable se convierte en elegible para ser liberado automáticamente por el recolector de basura. Algo similar a un pérdida de memoria todavía puede ocurrir si el código de un programador mantiene una referencia a un objeto que ya no es necesario, por lo general cuando los objetos que ya no son necesarios se almacenan en contenedores que todavía están en uso. Si se llaman métodos de un objeto inexistente, un "puntero nulo" es excepción.[43][44]

Una de las ideas detrás del modelo de gestión de memoria automática de Java es que programadores pueden salvarse la carga de tener que realizar la gestión de memoria manual. En algunas idiomas, memoria para la creación de objetos se asigna implícitamente en la pila de, o explícitamente asignada y desafectados de la montón de. En este último caso la responsabilidad de administrar la memoria reside con el programador. Si el programa no desasignar un objeto, un pérdida de memoria se produce. Si el programa intenta acceder o desasignar memoria que ya ha sido desasignado, el resultado es indefinido y difícil de predecir, y el programa corre el riesgo de ser inestable o crash. Esto puede ser remediado parcialmente con el uso de punteros inteligentes, pero estos añadir complejidad y sobrecarga. Tenga en cuenta que la recolección de basura no impide fugas de memoria "lógico", es decir, aquellos donde la memoria es aún referencia pero nunca utilizada.

Recolección de basura puede ocurrir en cualquier momento. Idealmente, se producirá cuando un programa está inactivo. Está garantizado para ser accionado si hay suficiente memoria libre en el montón para asignar un nuevo objeto; Esto puede causar un programa para detenerse momentáneamente. Gestión de memoria explícita no es posible en Java.

Java no soporta el estilo de C y C++ aritmética de puntero, donde direcciones de objeto y enteros sin signo (enteros largos generalmente) se pueden utilizar indistintamente. Esto permite que el recolector de basura reubicar objetos referenciados y garantiza la seguridad de tipos y seguridad.

Como en C++ y otro orientado al objeto idiomas, variables de Java tipos de datos primitivos se almacenan ya sea directamente en los campos (para objetos) o por la pila de (para métodos) en lugar de en el montón, como es comúnmente cierto tipos de datos no primitivos (pero ver Análisis de la fuga). Esto fue una decisión consciente por los diseñadores de Java por motivos de rendimiento.

Java contiene múltiples tipos de recolectores de basura. Por defecto,[citación necesitada] Punto de acceso utiliza el barrido paralelo recolector de basura. Sin embargo, hay también varios otros recolectores de basura que puede utilizarse para administrar el montón. 90% de aplicaciones en Java, el Marca-barrido simultáneo Recolector de basura (CMS) es suficiente.[45] Oracle pretende sustituir CMS con el Recolector de basura-primera (G1).[46]

Sintaxis de

Artículo principal: Sintaxis de Java

La sintaxis de Java es influenciada en gran medida por C++. A diferencia de C++, que combina la sintaxis para programación estructurada, genérica y orientada a objetos, Java fue construido casi exclusivamente como un lenguaje orientado a objetos.[16] Todo el código está escrito dentro de las clases, y cada elemento de datos es un objeto, con excepción de los tipos de datos primitivos, es decir números enteros, números de punto flotante, valores booleanosy los personajes, que no son objetos por razones de rendimiento. Java reutiliza algunos aspectos populares de C++ (como printf() método).

A diferencia de C++, Java no permite sobrecarga de operadores[47] o herencia múltiple para clases, aunque se admite herencia múltiple interfaces de.[48] Esto simplifica el lenguaje y ayuda en la prevención de posibles errores y patrón contra diseño.[citación necesitada]

Java utiliza comentarios similares a los de C++. Hay tres estilos de Comentario: un estilo de línea marcada con dos barras (//), inauguró un estilo de línea múltiple con /* y cerrado con */y la Javadoc Comentario de estilo abierto con /** y cerrado con */. El estilo Javadoc de comentar permite al usuario ejecutar el ejecutable Javadoc para crear documentación para el programa.

Ejemplo:

Este es un ejemplo de un Comentario de línea usando dos barras

/ * Este es un ejemplo de un Comentario de línea múltiples usando la barra diagonal y asterisco.
 Este tipo de comentario puede utilizarse para sostener una gran cantidad de información o desactivar
 código, pero es muy importante recordar cerrar el comentario. */

paquete fibsandlies;
importación java.util.HashMap;

/**
 Trata un ejemplo de un Comentario de Javadoc; Javadoc puede compilar documentación
 de la este texto. Comentarios Javadoc deben preceder inmediatamente a la clase, método o campo está documentado.
 */
público clase FibCalculator se extiende Fibonacci implementa Calculadora {
    privado estática Mapa<Entero, Entero> memoized = Nuevo HashMap<Entero, Entero> ();

    /*
     * El método principal de escribir como sigue se utiliza por la JVM como punto de partida para el programa.
 */
    público estática vacío principal(Cadena[] args) {
        memoized.poner(1, 1);
        memoized.poner(2, 1);
        Sistema de.hacia fuera.println(Fibonacci(12)); Obtener el número 12 de Fibonacci e imprimir a consola
    }

    /**
     * Un ejemplo de un método escrito en Java, envuelto en una clase.
     * Dado un FIBINDEX número no negativo, devuelve
     * el Nth número de Fibonacci, donde N es igual a FIBINDEX.
     * @param fibIndex el índice del número de Fibonacci
 * @return el número de Fibonacci
 */
    público estática int Fibonacci(int fibIndex) {
        if (memoized.containsKey(fibIndex)) {
            volver memoized.Obtener(fibIndex);
        } otra cosa {
            int respuesta = Fibonacci(fibIndex - 1) + Fibonacci(fibIndex - 2);
            memoized.poner(fibIndex, respuesta);
            volver respuesta;
        }
    }
}

Ejemplos

¡Hola, mundo! programa

El tradicional ¡Hola, mundo! programa puede ser escrito en Java como:[49]

clase HelloWorldApp {
    público estática vacío principal(Cadena[] args) {
        Sistema de.hacia fuera.println("¡Hola mundo!"); Imprime la cadena en la consola.
    }
}

Archivos de origen deben ser nombrados después de la clase pública que contienen, anexando el sufijo . Java, por ejemplo, HelloWorldApp.java. Primero debe ser compilado en bytecode, utilizando un Compilador de Java, produciendo un archivo llamado HelloWorldApp.class. Sólo entonces puede ser ejecutado, o "lanzado". El archivo de origen Java sólo puede contener una clase pública, pero puede contener varias clases que no sean de acceso público y cualquier cantidad de público clases internas. Cuando el archivo de origen contiene múltiples clases, hacer una clase "public" y nombre el archivo de origen con ese nombre de clase.

A clase no está declarado público pueden almacenarse en cualquier archivo. java. El compilador generará un archivo de clase para cada clase definida en el archivo de origen. El nombre del archivo de clase es el nombre de la clase, con .Class en anexo. Para la generación de archivo de clase, clases anónimas son tratados como si su nombre fuese la concatenación del nombre de su clase envolvente, un $y un entero.

El palabra clave público denota que se puede llamar un método de código en otras clases, o que una clase puede ser utilizada por clases fuera de la jerarquía de clases. La jerarquía de clases se relaciona con el nombre del directorio en el que se encuentra el archivo. java. Esto se denomina un modificador de nivel de acceso. Otros modificadores de nivel de acceso incluyen las palabras clave privado y protegido.

La palabra clave estática frente a un método indica un método estático, que se asocia sólo con la clase y no con cualquier instancia específica de esa clase. Sólo métodos estáticos pueden ser invocados sin una referencia a un objeto. Métodos estáticos no pueden acceder a los miembros de clase que también no son estáticos. Métodos que no se designan estático son métodos de instancia y requieren una instancia específica de una clase para operar.

La palabra clave vacío indica que el principal método no devuelve ningún valor al llamador. Si un programa en Java es salir con un código de error, debe llamar explícitamente System.exit().

El nombre de método"principal"no es una palabra clave en el lenguaje Java. Es simplemente el nombre del método que se llama el lanzador de Java para pasar el control al programa. Clases de Java que se ejecutan en entornos administrados como applets y Enterprise JavaBeans No use o necesite un Main() método. Un programa en Java puede contener múltiples clases que tengan principal métodos, lo que significa que la VM debe ser explícitamente dijeron que la clase para el lanzamiento de.

El método main debe aceptar un arreglo de discos de Cadena objetos. Por Convención, se hace referencia como args Aunque puede usarse cualquier otro nombre de identificador legal. Desde Java 5, también puede utilizar el método principal argumentos variables, en la forma de público estático principal vacío (String... args), permitiendo que el método principal que se invoca con un número arbitrario de Cadena argumentos. El efecto de esta declaración alternativa es semánticamente idénticos (el args parámetro es todavía una matriz de Cadena objetos), sino que permite una sintaxis alternativa para la creación y pasando la matriz.

El lanzador de Java lanza Java por la carga de una clase dada (especificado en la línea de comandos o como un atributo en un TARRO DE) y a partir de su público estático main(String[]) vacío método. Programas independientes deben declarar explícitamente este método. El String [] args parámetro es una arreglo de discos de Cadena objetos que contienen los argumentos pasan a la clase. Los parámetros a principal a menudo se pasan por medio de un línea de comandos.

La impresión es parte de una biblioteca estándar de Java: el Sistema de clase define un campo público estático llamado hacia fuera. El hacia fuera objeto es una instancia de la Flujo de impresión clase y proporciona muchos métodos para datos de impresión salida estándar, incluyendo println(String) que también agrega una nueva línea a la cadena pasada.

La cadena "¡Hola mundo!" se convierte automáticamente en un objeto de cadena por el compilador.

Ejemplo completo

OddEven.java
importación javax.swing.JOptionPane;

público clase OddEven {

    privado int userInput; un número entero ("int" significa entero)

    /**
     * Este es el método de constructor. Se llama cuando un objeto del tipo OddEven
 * se está creando.
 */
    público OddEven() {
        /*
         * En la mayoría de Java constructores programas pueden inicializar objetos con valores predeterminados o crear
 * otros objetos que puede utilizar este objeto para realizar sus funciones. En algunos programas de Java, el
         * constructor puede ser simplemente una función vacía si nada necesita ser inicializado antes de la
 * funcionamiento del objeto. En el caso de este programa, bastaría con un constructor vacío.
         * Un constructor debe existir; sin embargo, si el usuario no pone uno en entonces el compilador
         * se creará un vacío.
         */
    }

    /**
     * Este es el método principal. Se llama cuando esta clase se ejecuta a través de un intérprete de Java.
     * @param args argumentos de línea de comandos (sin usar)
 */
    público estática vacío principal(final Cadena[] args) {
       /*
        * Esta línea de código crea una nueva instancia de esta clase llamada «número» (también conocido como un
        * Objeto) e inicializa llamando al constructor. La siguiente línea de código llamadas
        * el método "showDialog()", que trae un mensaje para pedir un número.
 */
       OddEven número = Nuevo OddEven();
       número.showDialog();
    }

    público vacío showDialog() {
        /*
         * "prueba" asegura de que nada va mal. Si algo hace,
         * el intérprete salta para "coger" para ver lo que debe hacer.
         */
        tratar de {
            /*
             * El código a continuación trae un JOptionPane, que es un cuadro de diálogo
             * La cadena devuelta por el método de "showInputDialog()" se convierte en
             * entero, que el programa lo tratan como un número en lugar de una palabra.
             * Después de eso, este método llama a un segundo método, calculate() que
             * Mostrar "Incluso" o "Impar".
 */
            userInput = Entero.parseInt(JOptionPane.showInputDialog("Introduce un número".));
            calcular();
        } captura (final NumberFormatException e) {
            /*
             * Que en el catch bloque significa que hubo un problema con el formato de
             * el número. Probablemente se ha escrito algunas letras en lugar de un número.
 */
            Sistema de.ERR.println("ERROR: Invalid de la entrada. Por favor, escriba un valor numérico.");
        }
    }

    /**
     Cuando se esta se llama, envía un mensaje a la intérprete.
     * El intérprete generalmente lo muestra en el símbolo del sistema (para usuarios de Windows)
     * el terminal o (para * nix usuarios). (Asumiendo que está abierta)
 */
    privado vacío calcular() {
        if ((userInput % 2) == 0) {
            JOptionPane.showMessageDialog(null, "Incluso");
        } otra cosa {
            JOptionPane.showMessageDialog(null, "Impares");
        }
    }
}
  • El importación Declaración de importación el JOptionPane clase de la javax.swing paquete.
  • El OddEven clase declara un solo privado campo de tipo int el nombre userInput. Cada instancia de la OddEven clase tiene su propia copia de la userInput campo. Los medios de declaración privada que ninguna otra clase puede acceder (leer o escribir) el userInput campo.
  • OddEven() es un público constructor de. Constructores tienen el mismo nombre que la clase que se declaran en, y a diferencia de un método, no tienen tipo de valor devuelto. Un constructor se utiliza para inicializar un objeto es una instancia de la clase recién creada.
  • El Calculate() método es declarado sin el estática palabra clave. Esto significa que se invoca el método con una instancia específica de la OddEven clase. (El referencia utilizado para invocar el método se pasa como un parámetro declarado de tipo OddEven el nombre Esto.) El método de pruebas de la expresión userInput % 2 == 0 uso de la if palabra clave para ver si el resto de dividir el userInput campo perteneciente a la instancia de la clase por dos es cero. Si esta expresión es verdadera, entonces se imprime Incluso; Si esta expresión es false, se imprime Extraño. (El calcular método se puede equivalente como this.Calculate y de la userInput campo se puede equivalente como this.userInput, que usan explícitamente el no declarado Esto parámetro.)
  • Número de OddEven = new OddEven(); declara un objeto local referencia variable en el principal método denominado número. Esta variable puede contener una referencia a un objeto de tipo OddEven. La declaración de Inicializa número primero crear una instancia de la OddEven clase, utilizando el Nuevo palabra clave y la OddEven() constructor y luego asignar la instancia a la variable.
  • La declaración de number.showDialog(); llama al método de cálculo. La instancia de OddEven objeto al que hace referencia el número variable local se utiliza para invocar el método y pasa como el ilegal Esto parámetro para la calcular método.
  • userInput = Integer.parseInt (JOptionPane.showInputDialog ("por favor ingrese un número")); es una declaración que convierte al tipo de Cadena a la tipo de datos primitivo int mediante una función de utilidad en la clase contenedora primitivo Entero.

Clases especiales

Applet

Artículo principal: Applet de Java

Applets de Java son programas incrustados en otras aplicaciones, normalmente en una página Web mostrada en el navegador web.

Hello.Java
importación javax.swing.JApplet;
importación java.awt.Graphics;

público clase Hola se extiende JApplet {
    público vacío paintComponent(final Gráficos g) {
        g.Lazo(¡Hola, mundo!, 65, 95);
    }
}

El importación declaraciones directas del Compilador de Java para incluir la javax.swing.JApplet y java.awt.Graphics clases de la compilación. La declaración de importación permite que las estas clases se hace referencia en el código fuente uso de la nombre de la clase simple (es decir JApplet) en lugar de la nombre de clase completamente calificado (FQCN, es decir, javax.swing.JApplet).

El Hola clase se extiende (subclases) la JApplet Clase (Java Applet); el JApplet clase proporciona el marco de la aplicación host Mostrar y controlar el ciclo de vida de la aplicación. El JApplet la clase es un JComponent (componente gráfica de Java) que proporciona el applet de la capacidad de mostrar un interfaz gráfica de usuario (GUI) y responder al usuario eventos.

El Hola clase reemplaza el paintComponent(Graphics) método (además indica con el anotación, apoyado a partir del JDK 1.5, Reemplazar) heredado de la Envase superclase proporcionar el código para mostrar el applet. El paintComponent() método se pasa un Gráficos objeto que contiene el contexto gráfico utilizado para mostrar el applet. El paintComponent() método llama el contexto gráfico drawString (String, int, int) método para mostrar la ¡Hola, mundo! la secuencia en un pixel offset de)65, 95) de la esquina superior izquierda de la pantalla del applet.

<! HTML DE DOCTYPE PÚBLICO "-//W3C//DTD HTML 4.01 / / EN"
"https://www.w3.org/TR/html4/strict.dtd" >
<!----> Hello.html
<HTML>
    <cabeza>
        <Título>Hola mundo Applet< /Título>
    < /cabeza>
    <cuerpo>
        <applet Código="Hello.class" Ancho="200" altura="200">
        < /applet>
    < /cuerpo>
< /HTML>

Se coloca un applet en un HTML documento mediante el < subprograma > Elemento HTML. El applet Tag tiene tres atributos establecida: código = "Hola" especifica el nombre de la JApplet clase y width = "200" height = "200" establece el pixel ancho y altura del applet. Applets de también pueden ser embebidos en HTML mediante la objeto o Insertar elemento,[50] Aunque estos elementos por los navegadores web es inconsistente.[51] Sin embargo, la applet etiqueta está obsoleto, así que el objeto etiqueta es preferida en su apoyo.

Crea una instancia de la aplicación host, normalmente un navegador, el Hola applet y crea un AppletContext para el applet. Una vez que el applet se ha inicializado, se agrega a la jerarquía de visualización AWT. El paintComponent() método es llamado por el AWT hilo envía eventos cada vez que la pantalla necesita el applet para dibujar a sí mismo.

Servlet

Artículo principal: Java Servlet

Java Servlet la tecnología proporciona a los desarrolladores Web con un mecanismo simple y consistente para extender la funcionalidad de un servidor Web y para acceder a los sistemas empresariales existentes. Servlets son lado del servidor Componentes Java EE que generan respuestas (típicamente HTML páginas) a las solicitudes (por lo general HTTP solicita) clientes. Un servlet puede casi considerarse como un applet que se ejecuta en el servidor, sin una cara.

Hello.Java
importación Java.IO.*;
importación javax.servlet.*;

público clase Hola se extiende GenericServlet {
    público vacío servicio(final ServletRequest solicitud de, final ServletResponse respuesta)
    lanza ServletException, IOException {
        respuesta.setContentType("texto/html");
        final PrintWriter pw = respuesta.getWriter();
        tratar de {
            pw.println(¡Hola, mundo!);
        } Finalmente {
            pw.cerrar();
        }
    }
}

El importación declaraciones dirigen al compilador de Java que incluyen todas las clases públicas y interfaces de desde el Java.IO y javax.servlet paquetes de la compilación. Paquetes hacen Java adecuado para aplicaciones de gran escala.

El Hola clase se extiende el GenericServlet clase; el GenericServlet clase proporciona la interfaz para el servidor para reenviar las peticiones al servlet y el control del ciclo de vida del servlet.

El Hola clase reemplaza la Service (ServletRequest, ServletResponse) método definido por el Servlet interfaz de para proporcionar el código para el controlador de solicitudes de servicio. El Service() método: una ServletRequest objeto que contiene la petición del cliente y un ServletResponse objeto utilizado para crear la respuesta que se devuelve al cliente. El Service() método declara es lanza el excepciones ServletException y IOException Si un problema impide que responde a la solicitud.

El setContentType(String) se llama al método en el objeto respuesta para establecer la MIME tipo de contenido de los datos devueltos a "texto/html". El getWriter() método de la respuesta devuelve una PrintWriter objeto que se utiliza para escribir los datos que se envían al cliente. El println(String) se llama método para escribir el ¡Hola, mundo! cadena a la respuesta y luego la Close() se llama método para cerrar el impresión escritor, que hace que los datos que se ha escrito en la secuencia de ser devuelto al cliente.

Páginas de JavaServer

Artículo principal: Páginas de JavaServer

JavaServer Pages (JSP) son lado del servidor Componentes Java EE que generan respuestas, por lo general HTML páginas, a HTTP solicitudes de clientes. Las páginas JSP incrustar código Java en una página HTML utilizando el especial delimitadores de < % y % >. Una JSP se compila a un Java servlet, una aplicación de Java en la su propia derecha, la primera vez se accede. Después de eso, el servlet generado crea la respuesta.

Aplicación swing

Artículo principal: Swing (Java)

Oscilación es una interfaz gráfica de usuario Biblioteca para la plataforma Java SE. Es posible especificar una diferente apariencia a través de la con apariencia sistema de oscilación. Clones de Windows, GTK + y Motivo de vienen por el sol. Apple también proporciona un Aqua apariencia para Mac OS X. En implementaciones anteriores de estos se ve y se siente pueden se han considerado falta, Swing en Java SE 6 aborda este problema mediante el uso de más nativa Widget del GUI elaboración de rutinas de las plataformas subyacentes.

Este ejemplo Swing aplicación crea una ventana con "Hola, mundo!" en:

Hello.Java (SE de Java 5)
importación javax.swing.*;

público clase Hola se extiende JFrame {
    público Hola() {
        Super("Hola");
        Super.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Super.Añadir(Nuevo JLabel(¡Hola, mundo!));
        Super.Pack();
        Super.setVisible(true);
    }

    público estática vacío principal(final Cadena[] args) {
        Nuevo Hola();
    }
}

El primero importación incluye todas las clases públicas e interfaces de la javax.swing paquete.

El Hola clase se extiende el JFrame clase; el JFrame clase implementa un ventana con un barra de título y un cierre control.

El Hola() constructor de Inicializa el marco de la primera llamada al constructor de la superclase, pasando el parámetro "Hola", que se utiliza como título de la ventana. A continuación, llama la setDefaultCloseOperation(int) método heredado de JFrame para ajustar el funcionamiento por defecto cuando el cierre de control en la barra de título es seleccionada al WindowConstants.EXIT_ON_CLOSE– Esto hace que la JFrame para ser desechadas cuando se cierra el marco (como simplemente oculta), que permite que la máquina virtual de Java para la salida y el programa para terminar. Siguiente, un JLabel se crea la cadena de ¡Hola, mundo! y de la Add(Component) método heredado de la Envase se llama superclase para agregar la etiqueta al marco. El Pack() método heredado de la Ventana superclase se denomina tamaño de la ventana y colocar su contenido.

El Main() se llama método de la máquina virtual Java cuando se inicia el programa. Se crea una instancia de un nuevo Hola marco y hace que se muestren llamando la setVisible(boolean) método heredado de la Componente superclase con el parámetro booleano true. Una vez que el marco se visualiza, sale la principal método no hace el programa terminar porque el AWT hilo envía eventos permanece activo hasta que todas las ventanas de nivel superior del oscilación han sido eliminados.

Medicamentos genéricos

Artículo principal: Genéricos en Java

En 2004, medicamentos genéricos se agregaron a la lengua de Java, como parte de J2SE 5.0. Antes de la introducción de medicamentos genéricos, cada declaración de variable tenía que ser de un tipo específico. Para las clases de contenedor, por ejemplo, esto es un problema porque no hay ninguna manera fácil de crear un contenedor que admite sólo determinados tipos de objetos. Ya sea el envase funciona en todos los subtipos de una clase o interfaz, generalmente Objeto, o una clase de contenedor diferente tiene que ser creado para cada clase de contenido. Medicamentos genéricos permiten que a tipo de tiempo de compilación comprobación sin tener que crear muchas clases de contenedor, cada código casi idéntica que contengan. Además de permitir el código más eficiente, algunas excepciones de tiempo de ejecución se convierten en errores de tiempo de compilación, una característica conocida como tipo de seguridad.

Crítica

Artículo principal: Crítica de Java

Las críticas dirigidas a Java incluyen la implementación de genéricos,[52] velocidad,[53] el manejo de números sin signo,[54] la aplicación de la aritmética de punto flotante,[55] y una historia de vulnerabilidades de seguridad en la aplicación principal de Java VM Punto de acceso.[56]

Uso en plataformas de software no oficial

El lenguaje de programación Java requiere la presencia de una plataforma de software en orden para programas compilados ser ejecutados. Una plataforma de software de Java-como no oficial bien conocido es la plataforma de software Android, que permite el uso de Java 6 y algunos Java 7 características, utiliza una biblioteca estándar diferentes (Armonía de Apache reimplementación), lenguaje de código de bytes diferentes y diferentes máquinas virtuales y está diseñado para dispositivos de baja memoria como teléfonos inteligentes y computadoras tablet.

El Android sistema operativo hace uso extensivo de tecnologías relacionadas con Java.

Google

Vea también: Oracle America, Inc. v. Google, Inc.

El lenguaje Java es un pilar fundamental en Android, un código abierto sistema operativo para móviles. Aunque Android, construido el Kernel de Linux, fue escrito principalmente en C, la SDK de Android utiliza el lenguaje Java como la base para las aplicaciones de Android. Sin embargo, Android no utiliza el estándar Java virtual machine, en su lugar utilizando Java bytecode como un paso intermedio que se transforma en Dalvik bytecode. Dependiendo de la versión de Android, esto es ya sea interpretada por el Máquina virtual Dalvik, o compilado a código nativo por el Runtime de Android.

Android no disponen de la biblioteca estándar de Java SE completo, aunque la biblioteca de clases Android incluyen una implementación independiente de un gran subconjunto de él. Esto condujo a una disputa legal entre Oracle y Google. El 07 de mayo de 2012, un jurado de San Francisco encontró que si podrían ser propiedad de API, entonces Google había infringido los derechos de autor de Oracle por el uso de Java en dispositivos Android.[57] Juez de distrito William Alsup de Haskell falló el 31 de mayo de 2012, APIs no registrada,[58] pero esto fue invertido por la corte de Apelaciones de Estados Unidos para el circuito Federal en mayo de 2014.[59][60][61]

Bibliotecas de clases

Artículo principal: Biblioteca de clases de Java

El Biblioteca de clases de Java es el biblioteca estándar de, desarrollados para apoyar el desarrollo de aplicaciones en Java. Es controlado por Sun Microsystems en cooperación con otros a través de la Proceso de comunidad Java programa. Empresas o individuos que participan en este proceso pueden influir en el diseño y desarrollo de las APIs. Este proceso ha sido un tema de controversia.[¿Cuando?] La biblioteca de clase contiene características tales como:

  • Las bibliotecas centrales, que incluyen:
    • IO/NIO
    • Creación de redes
    • Reflexión
    • Concurrencia
    • Medicamentos genéricos
    • Scripting/compilador
    • Programación funcional (Lambda, Streaming)
    • Bibliotecas de colección implementar estructuras de datos tales como listas de, diccionarios, árboles, establece, colas de trabajos y doble cola, o pilas[62]
    • XML Bibliotecas de procesamiento (análisis, transformación, validación)
    • Seguridad[63]
    • Internacionalización y localización bibliotecas[64]
  • Las bibliotecas de integración, que permita que el escritor de aplicación para comunicarse con sistemas externos. Estas bibliotecas son:
    • El Java Database Connectivity (JDBC) API DE para el acceso de base de datos
    • Java Naming y Directory interfaz (JNDI) para la búsqueda y descubrimiento
    • RMI y CORBA para el desarrollo de aplicaciones distribuidas
    • JMX para la gestión y monitoreo de aplicaciones
  • Interfaz de usuario bibliotecas, que incluyen:
    • El (peso pesado, o nativo) Kit de herramientas de ventana abstracta (AWT), que proporciona INTERFAZ GRÁFICA DE USUARIO componentes, los medios para la colocación de los componentes y los medios para el manejo de eventos de los componentes
    • (Ligero) Oscilación bibliotecas, que están construidas sobre AWT pero ofrecen implementaciones (no original) del además AWT
    • APIs para captura de audio, procesamiento y reproducción
    • JavaFX
  • Una implementación dependiente de la plataforma de la máquina virtual de Java que es el medio por el cual se ejecutan los bytecodes de las bibliotecas de Java y aplicaciones de terceros
  • Plugins, que permiten applets de a ejecutarse en navegadores web
  • Java Web Start, que permite a las aplicaciones de Java para distribuirse eficazmente a usuarios finales a través de la Internet
  • Licencias y documentación

Documentación

Artículo principal: Javadoc

Javadoc es un sistema de documentación integral, creado por Sun Microsystems, utilizado por muchos desarrolladores de Java[¿por quién?]. Proporciona a los desarrolladores con un sistema organizado para documentar su código. Comentarios Javadoc tienen asterisco adicional al principio, es decir, son los delimitadores /** y */, mientras que los comentarios de varias líneas normales en Java se fijan apagado con los delimitadores /* y */.[65]

Ediciones

Vea también: Libre de biblioteca de clases Java implementaciones §

El sol ha definido y es compatible con cuatro ediciones de Java dirigidos a diferentes entornos de aplicación y segmentado de muchos de sus APIs de por lo que pertenecen a una de las plataformas. Las plataformas son:

  • Tarjeta de Java para tarjetas inteligentes.[66]
  • Java Platform, Micro Edition Ambientes objetivos (Java ME) – con recursos limitados.[67]
  • Java Platform, Standard Edition Dirigida a entornos de estaciones de trabajo (Java SE) –.[68]
  • Java Platform, Enterprise Edition (Java EE) – dirigido a grandes distribuidos empresariales o en entornos de Internet.[69]

El clases en la API de Java se organizan en grupos llamados paquetes. Cada paquete contiene un conjunto de relacionados interfaces de, clases y excepciones. Se refieren a las plataformas separadas para obtener una descripción de los paquetes disponibles.[¿correspondiente a esta sección? ]

Sun también proporciona una edición llamada Personal Java ha sido reemplazada por emparejamientos de Perfil de configuración más adelante, basado en estándares Java ME.

Véase también

  • Dalvik – utilizado en versiones antiguas de Android, reemplazadas por JIT no Runtime de Android
  • JavaOne
  • Javapedia
  • Lista de máquinas virtuales Java
  • Lista de APIs de Java
  • Lista de idiomas JVM
  • Graal (compilador), un proyecto con el objetivo de implementar un intérprete y compilador dinámico de alto rendimiento Java
  • Spring Framework

Comparación de Java con otros lenguajes

  • Comparación de lenguajes de programación
  • Comparación de Java y C++
  • Comparación de C# y Java

Notas

  1. ^ Binstock, Andrew (20 de mayo de 2015). "20 años de innovación de Java". Forbes. 18 de marzo 2016. 
  2. ^ Harry. H. Chaudhary (28 de julio de 2014). "agrietarse la entrevista de programación de Java:: 2000 + Java entrevista / Ans". 29 de mayo 2016. 
  3. ^ Java 5.0 ha añadido varias nuevas características de lenguaje (el mejorado para el lazo, autoboxing, varargs y anotaciones), después de que fueron introducidos en el similar (y competencia) C# idioma [1] [2]
  4. ^ Gosling, James; McGilton, Henry (mayo de 1996). "El entorno de la lengua de Java". 
  5. ^ Gosling, James; Joy, Bill; Steele, chico; Bracha, Gilad. "La Java Language Specification, 2ª edición". 
  6. ^ "la A la Z de lenguajes de programación: Modula-3". Computerworld.com.au. 2010-06-09. 
  7. ^ Niklaus Wirth afirmó en varias ocasiones públicas, por ejemplo, en una conferencia en el Museo Politécnico de Moscú en septiembre de 2005 (varias cuentas de primera mano independiente en ruso existen, por ejemplo, una con una grabación de audio: Filippova, Elena (22 de septiembre de 2005). "Conferencia de Niklaus Wirth en el Museo Politécnico de Moscú". ), que el equipo de diseño de Sun Java el compilador de Oberon fuentes varios años antes de la liberación de Java y examinó: una compacidad (relativa), tipo de seguridad, recolección de basura, no herencia múltiple de clases – todas estas características de diseño clave en general son compartidas por Java y Oberon.
  8. ^ Patrick Naughton cita Objective-C como una fuerte influencia en el diseño de Java lenguaje de programación, que derivados directos notables incluyen interfaces de Java (derivadas de Objective-C Protocolo) y clases de envoltura primitivas. [3]
  9. ^ Investigación de TechMetrix (1999). "Historia de Java" (PDF). Informe de servidores de aplicación Java. El proyecto siguió adelante bajo el nombre "verde" y la lengua se basaba en un viejo modelo de Pascal UCSD, que permite generar código interpretativo 
  10. ^ "Una conversación con James Gosling – ACM Queue". Queue.ACM.org. 2004-08-31. 2010-06-09. 
  11. ^ En el verano de 1996, Sun estaba diseñando el precursor de lo que hoy es el modelo de eventos de la AWT y la arquitectura de componentes JavaBeans TM. Borland contribuyó en gran medida a este proceso. Miró atentamente a Object Pascal de Delphi y construyó un prototipo de trabajo de referencias del método vinculado para comprender su interacción con el lenguaje de programación Java y su API.Libro blanco acerca "Delegados" de Microsoft
  12. ^ "Capilla spec (agradecimientos)" (PDF). Cray Inc. 2015-10-01. 2016-01-14. 
  13. ^ «Facebook Q & A: Hack trae mecanografiar estático al mundo PHP». InfoWorld. 2014-03-26. 2015-01-11. 
  14. ^ Gosling et al 2014, p. 1.
  15. ^ "Escribir una vez, ejecutar en cualquier lugar?". Ordenador semanal. 2002-05-02. 2009-07-27. 
  16. ^ a b c "1.2 diseño objetivos del lenguaje de programación de Java™". Oracle. 1999-01-01. 2013-01-14. 
  17. ^ McMillan, Robert (2013-08-01). "Java pierde su Mojo?". Wired.com. Java está en decadencia, al menos según un conjunto que mantiene el ojo en el mundo cambiante de la computadora lenguajes de programación. Durante más de una década, ha dominado la TIOBE Índice comunitario de programación y está de vuelta en la parte superior-una instantánea del entusiasmo de desarrollador de software que se ve en cosas como resultados de búsqueda de internet para medir cuánto buzz diferentes idiomas tienen. Pero últimamente, Java ha sido deslizarse. 
  18. ^ Índice de RedMonk en redmonk.com (Stephen O'Grady, de enero de 2015)
  19. ^ «Programación lengua Popularidad». langpop.com. 25 / 10 / 2013. 2015-04-02. Comparación normalizada: 1 C, Java 2 º, 3 º PHP 
  20. ^ "Índice comunitario de programación TIOBE". 2015. 2015-04-03. 
  21. ^ "JavaOne 2013 examen: lleva a Java en el Internet de las cosas". www.Oracle.com. 2016-06-19. 
  22. ^ Byous, Jon (c. 1998). "la tecnología de Java: los primeros años". Sun Developer Network. Sun Microsystems. Archivado de el original en 2005-04-20. 2005-04-22. 
  23. ^ Programación orientada a objetos "La historia de la tecnología Java". Sun Developer Network. c. 1995. 2010-04-30. 
  24. ^ "Así que ¿por qué decidieron llamarlo Java?", Kieron Murphy, JavaWorld.com, 04/10/96
  25. ^ Kabutz, Heinz; Una vez sobre un roble. Artima. Obtenido 29 de abril de 2007.
  26. ^ "La historia de la tecnología Java". 6 de octubre, 2012. 
  27. ^ https://blogs.Oracle.com/Java-Platform-Group/entry/moving_to_a_plugin_free
  28. ^ Programación orientada a objetos con Java: fundamentos y aplicaciones. Tata McGraw-Hill Education. p. 34. 
  29. ^ "JSG-grupo de estudio de Java". abrir-std.org. 
  30. ^ "por qué Java™ fue – no estandarizado dos veces" (PDF). 
  31. ^ "Qué es ECMA — y por qué Microsoft se preocupa". 
  32. ^ "Sitio de web del proceso de comunidad Java". JCP.org. 2010-05-24. 2010-06-09. 
  33. ^ "JAVAONE: el sol – la mayor parte de Java es abrir con". GrnLight.net. 2014-05-26. 
  34. ^ "Del sol evolucionando como evangelista de Java". O ' Reilly Media. 
  35. ^ "Oracle y Java". Oracle.com. Oracle Corporation. 2010-08-23. Oracle ha sido un partidario principal y Sustantivo de Java desde su aparición en 1995 y asume el nuevo rol como administrador de la tecnología de Java con un incansable compromiso con fomentar una comunidad de participación y transparencia. 
  36. ^ "Aprende sobre la tecnología de Java". Oracle. 21 de noviembre 2011. 
  37. ^ Gosling, James (9 de abril de 2010). "Tiempo para pasar...". En un nuevo camino. 2011-11-16. 
  38. ^ ¿"es la plataforma de la JVM (Java Virtual Machine) dependiente o independiente de la plataforma? ¿Cuál es la ventaja del uso de la JVM, y que Java sea un lenguaje traducido?". Entrevista de programador. 2015-01-19. 
  39. ^ Niccolai, James (23 de enero de 2001). «Sun, Microsoft resolver demanda de Java». JavaWorld. Grupo Internacional de datos. 2008-07-09. 
  40. ^ Jelovic, Dejan. por qué siempre será más lento que C++ Java". 2008-02-15. 
  41. ^ En Google. "lazo de reconocimiento en C + c++ / Java/Go/Scala" (PDF). 2012-07-12. 
  42. ^ "Compilador de Java Just-In-Time de Symantec para integrarse en Sun JDK 1.1". 
  43. ^ "NullPointerException". Oracle. 2014-05-06. 
  44. ^ "Las excepciones en Java". Artima.com. 2010-08-10. 
  45. ^ "Opciones de Java HotSpot VM". Oracle.com. 2010-09-07. 2012-06-30. 
  46. ^ https://docs.Oracle.com/javase/7/docs/TechNotes/Guides/VM/G1.html
  47. ^ "Sobrecarga del operador (C# contra Java)". C# para desarrolladores de Java. Microsoft. 10 de diciembre 2014. 
  48. ^ "Herencia múltiple del estado, la aplicación y el tipo". Los tutoriales de Java™. Oracle. 10 de diciembre 2014. 
  49. ^ «lección: un vistazo a la aplicación "¡Hola mundo!"». Los tutoriales de Java™ > para empezar. Oracle Corporation. 2011-04-14. 
  50. ^ "Usando el applet, object e incrustar etiquetas". Oracle.com. 2010-10-14. 
  51. ^ "Despliegue de Applets en un entorno mixto-Browser". Oracle.com. 2010-10-14. 
  52. ^ Arnold, Ken. "Medicamentos genéricos considerados dañinos". Java.net. 4 de julio 2011. 
  53. ^ Jelovic, Dejan. "por qué Java siempre será más lento que C++". www.jelovic.com. 17 de octubre 2012. 
  54. ^ Owens, Sean R. "Java y unsigned int, unsigned, unsigned byte, unsigned largo, etc. (o mejor dicho, la falta de ella)". Archivado de el original en el 2004-11-09. 2011-07-04. 
  55. ^ Kahan, Guillermo. "cómo Java de punto flotante lastima todos en todas partes" (PDF). Ingeniería eléctrica y Ciencias de la computación, Universidad de California en Berkeley. 4 de junio 2011. 
  56. ^ "Se ha comprobado el Java?". 
  57. ^ Mullin, Joe. «Google culpable de violación en el juicio de Oracle; telar de futuros dolores de cabeza legales". Ley y desorden. Ars Technica. 8 de mayo 2012. 
  58. ^ Joe Mullin (31 de mayo de 2012). "Google gana API crucial decisión, caso de Oracle diezmado". Ars Technica. 2012-06-01. 
  59. ^ https://www.CAFC.uscourts.gov/images/stories/opinions-Orders/13-1021.opinion.5-7-2014.1.pdf
  60. ^ Rosenblatt, Seth (09 de mayo de 2014). "Corte lados con Oracle sobre Android en apelación patentes de Java". CNET. 2014-05-10. 
  61. ^ "ORACLE AMERICA, INC., demandante-apelante, v. GOOGLE INC., demandado – Cruz – recurrente." (PDF). Corte de Apelaciones del circuito Federal. 09 de mayo de 2014. 2014-05-10. 
  62. ^ "Colecciones Resumen de marco". Documentación Java. Oracle. 18 de diciembre 2014. 
  63. ^ "Resumen de seguridad Java™". Documentación Java. Oracle. 18 de diciembre 2014. 
  64. ^ "Sendero: internacionalización". Los tutoriales de Java™. Oracle. 18 de diciembre 2014. 
  65. ^ "Cómo escribir comentarios para la herramienta Javadoc". Oracle Technology Network. Oracle. 18 de diciembre 2014. 
  66. ^ "Resumen de la tarjeta de Java". Oracle Technology Network. Oracle. 18 de diciembre 2014. 
  67. ^ "Java Platform, Micro Edition (Java ME)". Oracle Technology Network. Oracle. 18 de diciembre 2014. 
  68. ^ "Java SE". Oracle Technology Network. Oracle. 18 de diciembre 2014. 
  69. ^ "Java Platform, Enterprise Edition (Java EE)". Oracle Technology Network. Oracle. 18 de diciembre 2014. 

Referencias

  • Gosling, James; Joy, Bill; Steele, chico; Bracha, Gilad; Buckley, Alex (2014). La especificación del lenguaje Java® (PDF) (Java SE 8 ED.). 
  • Gosling, James; Joy, Bill; Steele, Guy L., Jr.; Bracha, Gilad (2005). La especificación del lenguaje Java (3ª Ed.). Addison-Wesley. ISBN 0-321-24678-0. 
  • Lindholm, Tim; Yellin, Frank (1999). La especificación de la máquina Virtual de Java (2ª ed.). Addison-Wesley. ISBN 0-201-43294-3. 

Acoplamientos externos

Otras Páginas

Obtenido de"https://en.copro.org/w/index.php?title=Java _ (programming_language) & oldid = 733965534"