Contenido Checked

Java (lenguaje de programación)

Temas relacionados: Programas de computadoras

Antecedentes de las escuelas de Wikipedia

SOS cree que la educación da una mejor oportunidad en la vida para los niños en el mundo en desarrollo también. Madres SOS cada aspecto después de un una familia de niños apadrinados .

Java
Java logo.svg
Paradigma (s) multi-paradigma: orientado a objetos, estructurado, imperativo, genérico, reflectante
Apareció en 1995 (1995)
Diseñado por James Gosling y
Sun Microsystems
Revelador Oracle Corporation
Última versión estable Java Standard Edition 7 Actualización 21 (07/01/21) (16 de abril de 2013 (16/04/2013))
Disciplina Typing Estática, fuerte, seguro, nominativas, manifiesto
Las principales implementaciones OpenJDK, muchos otros
Dialectos Generic Java, Pizza
Influenciado por Ada 83, C ++ , C #, Eiffel, Generic Java, Mesa, Modula-3, Oberon, Objective-C, UCSD Pascal, Smalltalk
Influenciado Ada 2005, BeanShell, C #, Clojure, D, ECMAScript, Groovy, J #, JavaScript PHP, Python , Scala, Seed7, Vala
Lenguaje de implementación C y C ++
OS Cruz-plataforma (multiplataforma)
Licencia Licencia Pública General de GNU, Java Community Process
Usual extensiones de archivos .java, .class, .jar
  • Para desarrolladores de Java
  • Programación Java en Wikilibros

Java es una propósito general, concurrente, basada en la clase, orientado a objetos lenguaje de programación que está diseñado específicamente para tener el menor número de dependencias de implementación como sea posible. Su objetivo es permitir a los desarrolladores de aplicaciones "escribir una vez, ejecutar en cualquier lugar" (WORA), lo que significa que el código que se ejecuta en una plataforma no necesita ser recompilado para funcionar en otro. Las aplicaciones Java están típicamente compilado para código de bytes ( archivo de clase) que puede funcionar en cualquier Máquina virtual Java (JVM), independientemente de arquitectura de computadores. Java es, desde 2012, uno de los lenguajes de programación más populares en uso, en particular para aplicaciones web cliente-servidor, con una reportado 10 millones de usuarios. Java fue desarrollado originalmente por James Gosling en Sun Microsystems (que desde entonces ha fusionado en Oracle Corporation) y lanzado en 1995 como un componente básico de Sun Microsystems Plataforma Java. El lenguaje se deriva gran parte de su sintaxis de C y C ++ , pero tiene menos instalaciones de bajo nivel que cualquiera de ellos.

El original y referencia Java aplicación compiladores, máquinas virtuales, y bibliotecas de clases fueron desarrollados por Sun a partir de 1991 y por primera vez en 1995. En mayo de 2007, en cumplimiento de las especificaciones de la Java Community Process, Sun relicensed la mayor parte de sus tecnologías Java bajo la Licencia Pública General GNU. Otros también han desarrollado implementaciones alternativas de estas tecnologías de Sun, como la Compilador GNU para Java y Classpath GNU.

Historia

James Gosling, Mike Sheridan, y Patrick Naughton inició el proyecto del lenguaje Java en junio de 1991. Java fue diseñado originalmente para la televisión interactiva, pero ya era demasiado avanzada para la industria de la televisión por cable digital en el momento. El lenguaje se llamó inicialmente Roble después de un roble árbol que se encontraba fuera de la oficina de Gosling; que fue por el nombre Verde después, y más tarde pasó a llamarse Java, desde Café de Java, dijo que se consume en grandes cantidades por los creadores del lenguaje. Gosling dirigido para implementar una máquina virtual y un lenguaje que tenía un familiar de C / C ++ estilo de notación.

Sun Microsystems lanzó la primera aplicación pública como Java 1.0 en 1995. Prometió " Escribir una vez, ejecutar en cualquier lugar "(WORA), ofreciendo sin costo-tiempos de ejecución en la popular plataformas. Seguridad configurable Bastante seguro y que ofrece, permitió que las restricciones de red y de acceso a archivos. Las principales navegadores web pronto incorporaron la posibilidad de ejecutar Applets de Java dentro de las páginas web y Java se convirtió rápidamente popular. Con la llegada de Java 2 (lanzado inicialmente como J2SE 1.2 en Diciembre de 1998 - 1999), las nuevas versiones tenían múltiples configuraciones creadas para diferentes tipos de plataformas. Por ejemplo, J2EE dirigida aplicaciones empresariales y la versión J2ME despojada gran medida para aplicaciones móviles (Mobile Java). J2SE designado la edición estándar. En 2006, con fines de marketing, Sun rebautizado nuevas versiones J2 como Java EE, Java ME, y Java SE, respectivamente.

En 1997, Sun Microsystems se acercó a la Normas ISO / IEC JTC1 cuerpo y más tarde el Ecma Internacional para la formalización de Java, pero pronto se retiró del proceso. Java sigue siendo una estándar de facto, controlado a través de la Java Community Process. En un momento, Sun hizo la mayoría de sus implementaciones Java disponibles sin costo alguno, a pesar de su estado de software propietario. Sun generó ingresos de Java a través de la venta de licencias para productos especializados, como el Java Enterprise System. Sun distingue entre su Kit de Desarrollo de Software (SDK) y Runtime Environment (JRE) (un subconjunto del SDK); la distinción primaria implica la Falta de JRE del compilador, programas de utilidad, y los archivos de cabecera.

El 13 de noviembre de 2006, Sun lanzó la mayor parte de Java como software libre y de código abierto, (FOSS), en los términos de la GNU General Public License (GPL). El 8 de mayo de 2007, Sun terminado el proceso, por lo que todo el código del núcleo de Java disponible bajo términos de distribución de software / gratuitas de código abierto, aparte de una pequeña porción de código para que Sun no tienen los derechos de autor.

El vicepresidente de Sun Rich Green, dijo que el papel ideales de Sun con respecto a Java era como un "evangelista". A raíz de Oracle Corporation adquisición 's de Sun Microsystems en el período 2009-2010, Oracle ha descrito a sí mismo como el "administrador de la tecnología Java con un incansable compromiso con el fomento de una comunidad de la participación y la transparencia". Esto no sostuvo Oracle, sin embargo, a partir de la presentación de una demanda contra Google poco después de que por el uso de Java en el SDK de Android (ver sección de Google a continuación). Software de Java se ejecuta en ordenadores portátiles a centros de datos, consolas de juegos a científico supercomputadoras. Hay 930 millones Java Runtime Environment se descarga cada año y 3 mil millones de teléfonos móviles ejecutar Java. El 2 de abril de 2010, James Gosling dimitió de Oracle.

Principios

James Gosling, creador de Java

Había cinco objetivos principales en la creación del lenguaje Java:

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

Versiones

Versiones gran lanzamiento de Java, junto con sus fechas de estreno:

  • JDK 1.0 (21 de enero, 1996)
  • JDK 1.1 (19 de febrero, 1997)
  • J2SE 1.2 (8 de diciembre, 1998)
  • J2SE 1.3 (8 de mayo, 2000)
  • J2SE 1.4 (6 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)

Prácticas

Plataforma Java

Una característica de Java es la portabilidad, lo que significa que los programas informáticos escritos en el lenguaje Java deben ejecutarse de manera similar en cualquier plataforma hardware / sistema operativo. Esto se logra mediante la compilación del código del lenguaje Java a una representación intermedia llamada Bytecode de Java, en lugar de directamente a específico de la plataforma código de máquina. Instrucciones de código de bytes de Java son análogos a código de máquina, sino que se pretende que sean interpretado por una máquina virtual (VM) por escrito específicamente para el hardware del host. Los usuarios finales suelen utilizar un Java Runtime Environment (JRE) instalado en su propia máquina para aplicaciones Java autónomas, o en un navegador Web para Java applets.

Bibliotecas estandarizadas proveen una manera genérica para acceder a funciones específicas de servidor, tales como gráficos, roscado, y la creación de redes.

Un beneficio importante de usar el código de bytes está portando. Sin embargo, los gastos generales de la interpretación significa que los programas interpretados casi siempre se ejecutan con mayor lentitud que los programas compilados para ejecutables nativos haría. Just-in-Time (JIT) compiladores se introdujeron desde una etapa temprana que compile bytecodes a código máquina durante el tiempo de ejecución.

Implementaciones

Oracle Corporation es la propietaria actual de la aplicación oficial de la plataforma Java SE, tras su adquisición de Sun Microsystems, el 27 de enero de 2010. Esta aplicación se basa en la implementación original de Java de Sun. La aplicación está disponible para Oracle Mac OS X, de Windows y Solaris. Debido a que Java carece de normalización formal reconocido por Ecma Internacional, ISO / IEC, ANSI, u otra organización de estándares de terceros, la implementación de Oracle es la estándar de facto.

La implementación de Oracle se empaqueta en dos distribuciones diferentes: El Java Runtime Environment (JRE), que contiene las partes de la plataforma Java SE necesarios para ejecutar programas Java y está destinado a los usuarios finales, y la Java Development Kit (JDK), que está dirigido a los desarrolladores de software e incluye herramientas de desarrollo como el Compilador de Java, Javadoc, Jar, y un depurador.

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

El objetivo de Java es hacer que todas las implementaciones de Java compatible. Históricamente, la licencia de la marca registrada 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 la implementación de Microsoft no apoyó RMI o JNI y había añadido características específicas de la plataforma de los suyos. Sun demandó en 1997, y en 2001 ganó una compensación de US $ 20 millones, así como una orden de la corte hacer cumplir los términos de la licencia de Sun. Como resultado, Microsoft barcos ya no de Windows con Java.

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

Rendimiento

Los programas escritos en Java tienen una reputación de ser más lento y que requiere más memoria que los escritos en C ++ . Sin embargo, la velocidad de ejecución de programas Java mejoró significativamente con la introducción de Compilación en 1997/1998 para Just-in-time Java 1.1, la adición de las características del lenguaje de apoyo mejor análisis de código (como clases internas, la clase StringBuffer, afirmaciones opcionales, etc.), y optimizaciones en la propia máquina virtual Java, como HotSpot convertirse en el valor predeterminado para la JVM de Sun en 2000. En diciembre de 2012, microbenchmarks muestran Java 7 es aproximadamente 44% más lento que C ++.

Algunas plataformas ofrecen apoyo directo al hardware para Java; hay microcontroladores que se pueden ejecutar Java en hardware en lugar de software Java máquina virtual, y Procesadores ARM basado pueden tener soporte de hardware para ejecutar bytecode de Java a través de su Opción Jazelle.

La gestión automática de memoria

Java utiliza una recolector de basura automático para la gestión de memoria en el ciclo de vida del objeto. El programador determina cuándo se crean los objetos, y el tiempo de ejecución de Java se encarga de recuperar la memoria una vez que los objetos ya no están en uso. Una vez no hay referencias a un objeto se mantienen, la memoria inalcanzable hace elegible para ser liberado automáticamente por el recolector de basura. Algo similar a una pérdida de memoria pueden producirse si el código de un programador contiene una referencia a un objeto que ya no se necesitan, por lo general cuando los objetos que ya no son necesarios se almacenan en recipientes que todavía están en uso. Si se llaman los métodos de un objeto inexistente, se emite una "excepción de puntero nulo".

Una de las ideas detrás de modelo de gestión automática de memoria de Java es que los programadores se puede ahorrar la carga de tener que llevar a cabo la gestión de memoria manual. En algunos idiomas, la memoria para la creación de objetos se asigna implícitamente en la pila, o asignado de forma explícita y cancela la asignación del montón. En este último caso la responsabilidad de la gestión de memoria reside en el programador. Si el programa no desasignar un objeto, una pérdida de memoria. Si el programa intenta acceder o liberar memoria que ya ha sido desasignado, el resultado es indefinido y difícil de predecir, y el programa es probable que se vuelva inestable y / o accidente. Esto puede remediarse en parte por el uso de punteros inteligentes, pero estos se suman los gastos generales y la complejidad. Tenga en cuenta que la recolección de basura no evita pérdidas de memoria "lógicas", es decir, aquellos en los que la memoria todavía está referenciada pero nunca utilizado.

La recolección de basura puede ocurrir en cualquier momento. Lo ideal es que se producirá cuando un programa está inactivo. Está garantizado que se activará si hay suficiente memoria libre en el montón de asignar un nuevo objeto; esto puede causar un programa para detener momentáneamente. Gestión de memoria explícita no es posible en Java.

Java no soporta C estilo / C ++ aritmética de punteros, donde las direcciones de objetos y enteros sin signo (enteros normalmente largas) se pueden utilizar indistintamente. Esto permite que el recolector de basura para reubicar objetos referenciados y garantiza la seguridad y la seguridad de tipo.

Al igual que en C ++ y otros lenguajes orientados a objetos, variables de Java tipos de datos primitivos no son objetos. Los valores de los tipos primitivos o bien se almacenan directamente en los campos (para objetos) o en el Stack (para los métodos) en lugar de en el montón, como comúnmente cierto para los objetos (pero véase Escapar de análisis). Esta fue una decisión consciente por parte de los diseñadores de Java por motivos de rendimiento. Debido a esto, Java no se considera que es un lenguaje de programación orientado a objetos puro. Sin embargo, a partir de Java 5.0, autoboxing permite a los programadores a proceder como si los tipos primitivos eran instancias de su clase contenedora.

Java contiene varios tipos de recolectores de basura. De forma predeterminada, utiliza el HotSpot Concurrente colector de barrido Marcos, también conocido como el Garbage Collector CMS. Sin embargo, también hay varios otros recolectores de basura que pueden ser utilizados para gestionar el Montón. Para el 90% de las aplicaciones en Java, el Garbage Collector CMS es lo suficientemente bueno.

Sintaxis

La sintaxis de Java se deriva en gran parte de C ++ . A diferencia de C ++, que combina la sintaxis estructurada, genérico, y la programación orientada a objetos, Java fue construido casi exclusivamente como un lenguaje orientado a objetos. Todo el código está escrito dentro de una clase, y todo es un objeto, con la excepción de los tipos de datos simples (por ejemplo, números enteros, números de coma flotante, valores booleanos y caracteres), que no son clases por razones de rendimiento.

A diferencia de C ++, Java no soporta operador sobrecargar o herencia múltiple para las clases. Esto simplifica el lenguaje y ayuda en la prevención de errores potenciales y diseño anti-patrón.

Java utiliza métodos de comentarios similares a C ++. Hay tres estilos diferentes de observaciones: un solo estilo de la línea marcada con dos barras ( // ), un estilo de línea múltiple se abrió con /* y cierran con */ , y el Javadoc comentando estilo abierto con /** y cerró con */ . El estilo Javadoc de comentar permite que el usuario ejecute el archivo ejecutable Javadoc establecer una documentación para el programa.

Ejemplo:

 // Este es un ejemplo de una sola línea de comentario mediante dos barras
 
 / * Este es un ejemplo de un comentario de varias líneas usando la barra y asterisco. 
   Este tipo de comentario se puede utilizar para contener una gran cantidad de información o desactivar 
   código, pero es muy importante recordar para cerrar el comentario.  * /
 
 / ** 
   * Este es un ejemplo de un comentario Javadoc;  Javadoc puede establecer una documentación 
   * A partir de este texto. 
   * /
 
 / ** Finalmente, un ejemplo de un método escrito en Java, envuelto en una clase.  * /
 fibsandlies paquete;
 java.util.HashMap importación;
 
 public class FibCalculator extiende Fibonacci implementa Calculadora {
     HashMap estático privado <Integer, Integer> memoized = new HashMap <Integer, Integer> ();
 
     / ** Dado un número FIBINDEX no negativo, devoluciones, 
       * El número enésimo Fibonacci, donde N es igual FIBINDEX. 
       *param FibIndex El índice del número de Fibonacci 
       *return El propio número de Fibonacci 
       * /
     @ Override
     public static int fibonacci (int fibIndex) {
         si (memoized. contains (fibIndex)) {
             volver memoized conseguir (fibIndex).;
         } Else {
             int respuesta = fibonacci (fibIndex - 1) + fibonacci (fibIndex - 2);
             . memoized poner (fibIndex, respuesta);
             respondamos;
         }
     }
 }

Ejemplos

Hola mundo

El tradicional Hola mundo puede ser escrito en Java como:

 clase HelloWorldApp {
     main (String [] args) {static void públicos
         Sistema cabo println ("Hello World!");.. // Muestra la cadena.
     }
 }

Para comparar esto con otros lenguajes de programación ver la lista de hola ejemplos de programas mundo.

Los archivos de origen deberán llevar el nombre de la clase pública que contienen, añadiendo el sufijo .java , por ejemplo, HelloWorldApp.java . En primer lugar, debe ser compilado en bytecode, utilizando un Compilador Java, produciendo un archivo llamado HelloWorldApp.class . Sólo entonces puede ser ejecutado, o 'lanzó'. El archivo fuente de Java sólo puede contener una clase pública, pero puede contener varias clases con distintos de acceso público y cualquier número de público clases internas.

Una class que no se declara public puede ser almacenado en cualquier archivo .java. El compilador generará un archivo por cada clase que se define en el archivo de origen. El nombre del archivo de clase es el nombre de la clase, con .class adjuntas. Para la generación de archivo de clase, clases anónimas son tratados como si su nombre fuera la concatenación del nombre de su clase envolvente, a $, y un entero.

La palabra clave public indica que un método puede ser llamado desde código en otras clases, o que una clase puede ser utilizada por las clases fuera de la jerarquía de clases. La jerarquía de clases está relacionado con el nombre del directorio en el que se encuentra el archivo .java.

La palabra clave static delante de un método indica una método estático, que se asocia sólo con la clase y no con cualquier instancia específica de dicha clase. Sólo los métodos estáticos pueden invocarse sin una referencia a un objeto. Los métodos estáticos no pueden acceder a los miembros de la clase que no son también estática.

La palabra clave void indica que el método main no devuelve ningún valor a la persona que llama. Si un programa Java es para salir con un código de error, debe llamar System.exit () de forma explícita.

El nombre del método " main "no es una palabra clave en el lenguaje Java. Es simplemente el nombre del método, el lanzador Java llama a pasar el control al programa. Clases Java que se ejecutan en entornos administrados como applets y Empresa JavaBean no utiliza o necesita un main() método. Un programa Java puede contener varias clases que tienen main métodos, lo que significa que la máquina virtual tiene que ser explícitamente dicho qué clase de lanzar desde.

El método main debe aceptar una gama de String objetos. Por convención, se le hace referencia como args aunque cualquier otro nombre identificador legal podrá utilizarse. Desde Java 5, el principal método también se puede utilizar argumentos variables, en forma de public static void main(String... args) , lo que permite el método principal para ser invocados con un número arbitrario de String argumentos. El efecto de esta declaración alternativa es semánticamente idéntico (el args parámetro es todavía una serie de String objetos), pero permite una sintaxis alternativa para la creación y pasando la matriz.

El lanzador lanza Java Java mediante la carga de una clase determinada (especificado en la línea de comandos o como un atributo en una JAR) y comenzar su public static void main(String[]) método. Stand-alone programas deben declarar este método de forma explícita. El String[] args parámetro es un gama de String objetos que contienen los argumentos que se pasan a la clase. Los parámetros a main se pasan a menudo por medio de una línea de comando.

La impresión es parte de una librería estándar de Java: La System clase define un campo estático público llamado out . El out objeto es una instancia de la PrintStream clase y proporciona muchos métodos para la impresión de datos para la salida estándar, incluyendo println(String) que también añade una nueva línea a la cadena pasada.

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

Un ejemplo más amplia

 // OddEven.java
 javax.swing.JOptionPane importación;
 
 public class OddEven {
     / ** 
       * "Entrada" es el número que el usuario da a la computadora 
       * /
     entrada privada int; // un número entero ("int" significa entero)
 
     / ** 
       * Este es el método constructor.  Se obtiene la llamada cuando un objeto del tipo OddEven 
       Está siendo creado *. 
       * /
     OddEven público () {
         / * 
           * En la mayoría de los programas de Java constructores pueden inicializar objetos con valores por defecto, o crear 
           * otros objetos que este objeto podría utilizar para realizar sus funciones.  En algunos programas de Java, la 
           * Constructor puede ser simplemente una función vacía si no tiene que ser inicializado antes de la 
           * Funcionamiento del objeto.  En el caso de este programa, un constructor vacío sería suficiente. 
           * Un constructor debe existir;  Sin embargo, si el usuario no poner uno en el compilador 
           * Creará una vacía. 
           * /
     }
 
     / ** 
       * Este es el método principal.  Se pone llama cuando esta clase se ejecuta a través de un intérprete de Java. 
       * Argumentos de la línea de comandos argsparam (sin usar) 
       * /
     static void main (String final [] args) {público
        / * 
          * Esta línea de código crea una nueva instancia de esta clase que se llama "número" (también conocido como 
          * Object) y lo inicializa llamando al constructor.  La siguiente línea de código llamadas 
          * El "showDialog ()" método, que produce la solicitud para pedir por un número 
          * /
        Número OddEven = new OddEven ();
        . Número showDialog ();
     }
 
     public void showDialog () {
         / * 
           * "Tratar" se asegura de que nada salga mal.  Si algo hace, 
           * El intérprete salta para "atrapar" a ver de qué se debe hacer. 
           * /
         try {
             / * 
               * El código de abajo aparece un JOptionPane, que es un cuadro de diálogo 
               * La cadena devuelta por el método "showInputDialog ()" se convierte en 
               * Un entero, haciendo que el programa lo tratan como un número en lugar de una palabra. 
               * Después de eso, este método requiere un segundo método, calcular () que lo hará 
               * Mostrar "Incluso" o "impar". 
               * /
             .. esta entrada = entero parseInt (. JOptionPane showInputDialog ("Por favor, introduzca un número."));
             este cálculo (.);
         } Catch (e NumberFormatException final) {
             / * 
               * Conseguir en el bloque catch significa que hubo un problema con el formato de 
               * El número.  Probablemente algunas letras se escriben en lugar de un número. 
               * /
             . Sistema de errar println ("ERROR: Entrada no válida Por favor, escriba un valor numérico...");
         }
     }
 
     / ** 
       * Cuando esto se llama, envía un mensaje a la intérprete. 
       * El intérprete suele mostrar en el símbolo del sistema (para usuarios de Windows) 
       * O el terminal (para usuarios de * nix). (Asumiendo que está abierta) 
       * /
     private void calcular () {
         if ((esta entrada.% 2) == 0) {
             JOptionPane showMessageDialog (null, "incluso.");
         } Else {
             . JOptionPane showMessageDialog (null, "impar");
         }
     }
 }
  • La declaración de importación importa el JOptionPane clase desde el javax.swing paquete.
  • El OddEven clase declara una sola privado campo de tipo int nombrado input . Cada instancia de la OddEven clase tiene su propia copia de la input campo. La declaración privada significa que ninguna otra clase puede acceder (leer o escribir) la input campo.
  • OddEven() es un public constructor. Constructores tener el mismo nombre que la clase envolvente que se declaran en, ya diferencia de un método, no tienen el tipo de retorno. Un constructor se utiliza para inicializar un objeto que es una instancia recién creada de la clase.
  • El calculate() método se declara sin el static palabra clave. Esto significa que el método se invoca usando una instancia específica de la OddEven clase. (El de referencia utilizado para invocar el método se pasa como un parámetro no declarada de tipo OddEven llamado this ). El método de prueba la expresión input % 2 == 0 utilizando el if la palabra clave para ver si el resto de dividir la input campo perteneciente a la instancia de la clase por dos es cero. Si esta expresión es verdadera, entonces imprime Incluso; si esta expresión es falsa imprime impar. (La input campo se puede acceder de forma equivalente como this.input , que utiliza explícitamente la no declarado this parámetro.)
  • OddEven number = new OddEven(); declara un objeto local variable de referencia en el main método denominado number . Esta variable puede contener una referencia a un objeto de tipo OddEven . La declaración inicializa number creando primero una instancia de la OddEven clase, utilizando el new palabra clave y el OddEven() constructor y asignando a esta instancia a la variable.
  • La declaración number.showDialog(); llama al método de calcular. La instancia de OddEven objeto referenciado por el number variable local se utiliza para invocar el método y pasa como el no declarado this parámetro al calculate método.
  • input = Integer.parseInt(JOptionPane.showInputDialog("Please Enter A Number")); es una declaración que convierte el tipo de cadena a la tipo de datos primitivo int mediante el uso de una función de utilidad en el primitiva Entero clase contenedora.

Clases especiales

Applet

Applets Java son programas que están incrustados en otras aplicaciones, por lo general en una página Web que se muestra en un Navegador web.

 // Hello.java
 javax.swing.JApplet importación;
 java.awt.Graphics de importación;
 
 public class Hola extiende JApplet {
     pública paintComponent void (Gráficos última g) {
         g drawString ("¡Hola, mundo!", 65, 95).;
     }
 }

Los import declaraciones dirigen el Compilador de Java para incluir el javax.swing.JApplet y java.awt.Graphics clases en la compilación. La sentencia import permite estas clases para hacer referencia en el código fuente utilizando el nombre de clase simple (es decir JApplet ) en lugar del nombre completo de la clase (es decir javax.swing.JApplet ).

El Hello clase extends ( subclases) la JApplet (Java Applet) de clase; la JApplet clase proporciona el marco para la aplicación host para visualizar y controlar la ciclo de vida del applet. El JApplet clase es un JComponent (Java gráfica de componentes), que proporciona el applet con la capacidad de mostrar un interfaz gráfica de usuario (GUI) y responder a usuario eventos.

El Hello clase anula el paintComponent(Graphics) método (que se indica, además, con la anotación, acompañada, de JDK 1.5, Override ) heredada de la Contenedor superclase para proporcionar el código para mostrar el applet. El paintComponent() método se pasa un Graphics objeto que contiene el contexto gráfico utilizado para mostrar el applet. El paintComponent() método llama al contexto gráfico drawString(String, int, int) método para visualizar el "Hola, mundo!" cuerda a la pixel desplazamiento de ( 65, 95 ) de la esquina superior izquierda de la pantalla del applet.

 
  "Http://www.w3.org/TR/html4/strict.dtd"> 
  
  <Html> 
      <Head> 
          <Title> Hello World Applet </ title> 
      </ Head> 
      <Body> 
          <Applet code = "width Hello.class" = "200" height = "200"> 
          </ Applet> 
      </ Body> 
  </ Html> 
 

Un applet se coloca en una Documento HTML utilizando el Elemento HTML. El applet etiqueta tiene tres atributos establecidos: code="Hello" especifica el nombre del JApplet clase y width="200" height="200" establece el ancho de píxel y la altura del applet. Applets también pueden ser incrustados en HTML utilizando el object o embed elemento, aunque el apoyo a estos elementos por los navegadores Web es inconsistente. Sin embargo, el applet la etiqueta está en desuso, por lo que el object se prefiere etiqueta donde compatible.

La aplicación host, normalmente un navegador Web, una instancia del Hello applet y crea un AppletContext para el applet. Una vez que el applet se ha inicializado en sí, que se añade a la jerarquía de imágenes AWT. El paintComponent() método es llamado por el AWT despacho de eventos hilo cada vez que la pantalla necesita el applet para dibujarse a sí mismo.

Servlet

La tecnología Java Servlet proporciona a los desarrolladores Web con un mecanismo simple y consistente para ampliar la funcionalidad de un servidor Web y para acceder a los sistemas empresariales existentes. Los servlets son del lado del servidor Java EE componentes que generan respuestas (normalmente Páginas HTML) a peticiones (típicamente Peticiones HTTP) de clientes. Un servlet casi puede ser considerado como un applet que se ejecuta en el lado del servidor, sin una cara.

 // Hello.java
 import java.io. *;
 importar javax.servlet. *;
 
 public class Hola extiende GenericServlet {
     public void servicio (petición ServletRequest final, la respuesta ServletResponse final)
     lanza ServletException, IOException {
         . setContentType respuesta ("text / html");
         última PrintWriter pw = respuesta getWriter (.);
         try {
             . pw println ("¡Hola, mundo!");
         } Finally {
             . pw close ();
         }
     }
 }

Los import declaraciones dirigen el compilador de Java para incluir todas las clases públicas y las interfaces de la java.io y javax.servlet paquetes en la compilación.

El Hello clase extends la GenericServlet clase; la GenericServlet clase proporciona la interfaz para el servidor que transmita peticiones al servlet y el control del ciclo de vida del servlet.

El Hello clase anula el service(ServletRequest, ServletResponse) método definido por el Servlet interfaz para proporcionar el código para el controlador de solicitud de servicio. El service() método se pasa: un ServletRequest objeto que contiene la solicitud desde el cliente y una ServletResponse objeto utilizado para crear la respuesta de devuelve al cliente. El service() método declara que throws el excepciones ServletException y IOException si un problema le impide responder a la solicitud.

La setContentType(String) método en el objeto respuesta está llamada a establecer el Tipo de contenido MIME de los datos devueltos a "text / html". La getWriter() método en el que la respuesta vuelve a PrintWriter objeto que se utiliza para escribir los datos que se envía al cliente. La println(String) método se llama para escribir el "Hola, mundo!" cadena a la respuesta y luego la close() método se llama para cerrar el transcriptor de impresión, lo que hace que los datos que se han escrito en la corriente que se devuelve al cliente.

JavaServer Pages

JavaServer Pages (JSP) son componentes de EA en el servidor Java que generan respuestas, típicamente Páginas HTML, a Peticiones HTTP de clientes. JSP incrustar código Java en una página HTML utilizando el especial delimitadores <% y %> . Un JSP se compila a un servlet Java, una aplicación Java en su propio derecho, la primera vez que se accede. Después de eso, el servlet generado crea la respuesta.

Aplicación Swing

Swing es una interfaz gráfica de usuario biblioteca para la plataforma Java SE. Es posible especificar un aspecto diferente a través de la conectable mirar y sistema de oscilación sentir. Clones de Ventanas , GTK + y Motivo son suministrados por Sun. de Apple también ofrece una Aguamarina buscar y sentir Mac OS X. Cuando implementaciones anteriores de estos ve y se siente pudieron haber sido considerados carentes, Swing en Java SE 6 aborda este problema mediante el uso de más nativa Widget GUI dibujo rutinas de las plataformas subyacentes.

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

 // Hello.java (Java SE 5)
 importar javax.swing. *;
 
 public class Hola extiende JFrame {
     Hola pública () {
         super ("hola");
         súper setDefaultCloseOperation (WindowConstants EXIT_ON_CLOSE.).;
         . súper add (new JLabel ("¡Hola, mundo!"));
         paquete de super (.);
         . súper setVisible (true);
     }
 
     static void main (String final [] args) {público
         Hola nuevo ();
     }
 }

La primera import incluye todas las clases públicas y las interfaces de la javax.swing paquete.

El Hello clase extends la JFrame clase; el JFrame clase implementa un ventana con una barra de título y una estrecha control.

El Hello() constructor inicializa el cuadro por primera llamada al constructor de la superclase, pasando el parámetro "hello" , 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 se selecciona el control estricto sobre la barra de título para WindowConstants.EXIT_ON_CLOSE - esto hace que el JFrame que deban eliminarse cuando el marco está cerrado (en vez de simplemente oculta), que permite que la máquina virtual Java para salir y el programa para terminar. A continuación, una JLabel es creado para la cadena "Hola, mundo!" y el add(Component) método heredado de la Container superclase se llama añadir la etiqueta para el marco. La pack() método heredado de la Window superclase se llama al tamaño de la ventana y se quedó fuera de su contenido.

El main() método es llamado por la máquina virtual de Java cuando se inicia el programa. Ella instancia un nuevo Hello marco y hace que se visualiza mediante una llamada al setVisible(boolean) método heredado de la Component superclase con el parámetro booleano true . Una vez que se muestra el cuadro, que sale de la main método no hace que el programa de interrumpir porque el AWT despacho de eventos hilo permanece activo hasta que todas las ventanas de nivel superior de Swing se han dispuesto.

Genéricos

En el año 2004, genéricos se añadieron a el lenguaje Java, como parte de J2SE 5.0. Antes de la introducción de los genéricos, cada declaración de variables tenía que ser de un tipo específico. Para las clases de contenedores, por ejemplo, este es un problema porque no hay manera fácil de crear un recipiente que acepta sólo tipos específicos de objetos. O bien el recipiente opera en todos los subtipos de una clase o interfaz, por lo general Object , o una clase de contenedor diferente tiene que ser creado para cada clase contenidos. Los genéricos permiten la verificación de tipos en tiempo de compilación sin tener que crear un gran número de clases de contenedores, cada código casi idéntica que contiene. Además de permitir un código más eficiente, ciertas excepciones de tiempo de ejecución se convierten a compilar los tiempos de excepciones, una característica conocida como la seguridad de tipos.

Crítica

Las críticas dirigidas a Java incluyen la implementación de los genéricos, la velocidad, el manejo de números sin signo, la aplicación de la aritmética de punto flotante, y una historia de las vulnerabilidades de seguridad en las primarias de la ejecución de Java VMHotSpot.

El uso por empresas externas

Androidhace un uso extensivo de la tecnología relacionada con Java

Google

Google y Android, Inc. han optado por utilizar Java como un pilar clave en la creación del sistema operativo Android , una de código abierto del sistema operativo smartphone. Además del hecho de que el sistema operativo, construido en el kernel de Linux, fue escrito en gran parte en C, el SDK de Android utiliza Java para diseñar aplicaciones para la plataforma Android.

El 7 de mayo de 2012, un jurado de San Francisco encontró que si las API podrían derechos de autor, a continuación, Google había infringido los derechos de autor de Oracle por el uso de Java en los dispositivos Android. La postura de Oracle en este caso ha suscitado dudas sobre la condición jurídica de la lengua. Sin embargo, el Hon. William Haskell Alsup dictaminó el 31 de mayo de 2012, que las API no pueden ser propiedad.

Gaikai

Gaikai utiliza el navegador plug-in de Java para escuchar demos de juegos a cualquier PC. Gaikai (en japonés significa "mar abierto") es un servicio de juegos basado en la nube que permite a los usuarios jugar de gama alta para PC y consolas de juegos a través de la nube y al instante juegos de demostración y aplicaciones de una página web en cualquier ordenador o dispositivo conectado a Internet.

Las bibliotecas de clases

  • La Java Class Library son los compilados bytecodes de código fuente desarrollados por el implementador JRE para apoyar el desarrollo de aplicaciones en Java. Ejemplos de estas bibliotecas son:
    • Las bibliotecas del núcleo, que incluyen:
      • Bibliotecas Colección que implementanestructuras de datos tales comolistas,diccionarios,árboles,juegos,colas ycolas de dos extremos, opilas
      • Procesamiento de XML (de análisis, Transformación, validando) bibliotecas
      • Seguridad
      • Bibliotecas Internacionalización y localización
    • Las bibliotecas de integración, que permiten al escritor de aplicación para comunicarse con sistemas externos. Estas bibliotecas incluyen:
      • La Java Database Connectivity (JDBC)API para el acceso de base de datos
      • Jndi (JNDI) para la búsqueda y el descubrimiento
      • RMI yCORBA para el desarrollo de aplicaciones distribuidas
      • JMX para la gestión y el seguimiento de las aplicaciones
    • Bibliotecas de interfaz de usuario, que incluyen:
      • El (peso pesado, onativo)Abstract Window Toolkit (AWT), que proporcionacomponentes GUI, los medios para trazar los componentes y los medios para la gestión de eventos de los componentes
      • Los (ligero)bibliotecas de Swing, que se construyen en AWT pero proporcionan (no nativos) implementaciones del widgetry AWT
      • APIs para la captura de audio, el procesamiento y la reproducción
  • Una implementación dependiente de la plataforma de la máquina virtual de Java que es el medio por el que se ejecutan los códigos de bytes de las bibliotecas Java y aplicaciones de terceros
  • Plugins, que permiten alos applets que se ejecutan ennavegadores web
  • Java Web Start, que permite que las aplicaciones Java que se distribuye de manera eficiente alos usuarios finales a través de laInternet
  • Licencias y documentación.

Documentación

Javadoc es un sistema de documentación integral, creado por Sun Microsystems, utilizado por muchos desarrolladores de Java. Se proporciona a los desarrolladores un sistema organizado para documentar su código. comentarios Javadoc tienen un asterisco adicional al principio, es decir, las etiquetas son / ** y * /, mientras que los comentarios normales multilínea en Java son compensados ​​con las etiquetas / * y * /.

Ediciones

Sun ha definido y soporta cuatro ediciones de Java dirigidos a diferentes entornos de aplicación y segmentado muchos de sus APIs para que ellos pertenecen a una de las plataformas. Las plataformas son:

  • Java Card para tarjetas inteligentes.
  • Java Platform, Micro Edition (Java ME) - orientación entornos con recursos limitados.
  • Java Platform, Standard Edition (Java SE) - orientación entornos de estaciones de trabajo.
  • Java Platform, Enterprise Edition (Java EE) - dirigido grandes entornos empresariales o de Internet distribuidos.

La clases en las API de Java se organizan en grupos separados llamados paquetes. Cada paquete contiene un conjunto de relacionados interfaces, clases y excepciones. Consulte las plataformas separadas para una descripción de los paquetes disponibles.

El conjunto de APIs es controlado por Sun Microsystems en cooperación con los demás a través del programa Java Community Process. Las empresas o personas que participan en este proceso pueden influir en el diseño y desarrollo de las API. Este proceso ha sido un tema de controversia.

Sun también ofrece una edición llamadaPersonalJava que ha sido sustituida por tarde, basadas en estándares Java ME configuración de perfil emparejamientos.

Recuperado de " http://en.wikipedia.org/w/index.php?title=Java_(programming_language)&oldid=555476562 "