Java LanguageEmpezando con el lenguaje Java

Download Java Language for free

Observaciones

El lenguaje de programación de Java es ...

  • Uso general : está diseñado para ser utilizado para escribir software en una amplia variedad de dominios de aplicación y carece de funciones especializadas para cualquier dominio específico.

  • Basado en clase : su estructura de objeto se define en clases. Las instancias de clase siempre tienen esos campos y métodos especificados en sus definiciones de clase (ver Clases y Objetos ). Esto contrasta con lenguajes no basados ​​en clases como JavaScript.

  • Escritura estática : el compilador verifica en el momento de la compilación que se respetan los tipos de variables. Por ejemplo, si un método espera un argumento de tipo String , ese argumento debe ser de hecho una cadena cuando se llama al método.

  • Orientado a objetos : la mayoría de las cosas en un programa Java son instancias de clase, es decir, paquetes de estado (campos) y comportamiento (métodos que operan sobre datos y forman la interfaz del objeto con el mundo exterior).

  • Portátil : se puede compilar en cualquier plataforma con javac y los archivos de clase resultantes se pueden ejecutar en cualquier plataforma que tenga una JVM.

El objetivo de Java es permitir que los desarrolladores de aplicaciones "escriban una vez, se ejecuten en cualquier lugar" (WORA), lo que significa que el código compilado de Java puede ejecutarse en todas las plataformas que admiten Java sin la necesidad de una recompilación.

El código Java se compila a un código de bytes (los archivos .class ) que, a su vez, son interpretados por la Máquina Virtual de Java (JVM). En teoría, el código de bytes creado por un compilador de Java debería ejecutarse de la misma manera en cualquier JVM, incluso en un tipo diferente de computadora. La JVM podría (y en los programas del mundo real) elegir compilar en comandos de máquina nativos las partes del código de bytes que se ejecutan a menudo. Esto se denomina "compilación Just-in-time (JIT)".

Ediciones y versiones de Java

Hay tres "ediciones" de Java definidas por Sun / Oracle:

  • Java Standard Edition (SE) es la edición que está diseñada para uso general.
  • Java Enterprise Edition (EE) agrega una gama de facilidades para crear servicios de "grado empresarial" en Java. Java EE se cubre por separado .
  • Java Micro Edition (ME) se basa en un subconjunto de Java SE y está diseñado para su uso en dispositivos pequeños con recursos limitados.

Hay un tema separado en las ediciones de Java SE / EE / ME .

Cada edición tiene múltiples versiones. Las versiones de Java SE se enumeran a continuación.

Instalando Java

Hay un tema separado sobre la instalación de Java (edición estándar) .

Compilación y ejecución de programas Java.

Hay temas separados sobre:

¿Que sigue?

Aquí hay enlaces a temas para continuar aprendiendo y entendiendo el lenguaje de programación Java. Estos temas son los conceptos básicos de la programación de Java para comenzar.

Pruebas

Si bien Java no tiene soporte para realizar pruebas en la biblioteca estándar, existen bibliotecas de terceros que están diseñadas para admitir pruebas. Las dos bibliotecas de pruebas de unidades más populares son:

Otro

  • Los patrones de diseño para Java están cubiertos en los patrones de diseño .
  • La programación para Android está cubierta en Android .
  • Las tecnologías Java Enterprise Edition están cubiertas en Java EE .
  • Las tecnologías Oracle JavaFX están cubiertas en JavaFX .

1. En la sección Versiones , la fecha de finalización de la vida útil (gratuita) es cuando Oracle dejará de publicar nuevas actualizaciones de Java SE en sus sitios públicos de descarga. Los clientes que necesitan acceso continuo a correcciones de errores críticos y correcciones de seguridad, así como el mantenimiento general de Java SE pueden obtener soporte a largo plazo a través del soporte de Oracle Java SE .

Versiones

Versión de Java SE Nombre clave Fin de la vida (libre 1 ) Fecha de lanzamiento
Java SE 9 (acceso temprano) Ninguna futuro 2017-07-27
Java SE 8 Araña futuro 2014-03-18
Java SE 7 Delfín 2015-04-14 2011-07-28
Java SE 6 Mustango 2013-04-16 2006-12-23
Java SE 5 Tigre 2009-11-04 2004-10-04
Java SE 1.4 Esmerejón antes del 2009-11-04 2002-02-06
Java SE 1.3 Cernícalo antes del 2009-11-04 2000-05-08
Java SE 1.2 Patio de recreo antes del 2009-11-04 1998-12-08
Java SE 1.1 Ninguna antes del 2009-11-04 1997-02-19
Java SE 1.0 Roble antes del 2009-11-04 1996-01-21

Creando tu primer programa Java

Cree un nuevo archivo en su editor de texto o IDE llamado HelloWorld.java . Luego pegue este bloque de código en el archivo y guarde:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
 

Corre en vivo en Ideone

Nota: Para que Java reconozca esto como una public class (y no arroje un error de tiempo de compilación ), el nombre del archivo debe ser el mismo que el nombre de la clase ( HelloWorld en este ejemplo) con una extensión .java . También debe haber un modificador de acceso public antes de él.

Las convenciones de nomenclatura recomiendan que las clases de Java comiencen con un carácter en mayúscula y estén en formato de caja de camello (en el que la primera letra de cada palabra se escribe con mayúscula). Las convenciones recomiendan contra guiones bajos ( _ ) y signos de dólar ( $ ).

Para compilar, abra una ventana de terminal y navegue al directorio de HelloWorld.java :

cd /path/to/containing/folder/
 

Nota: cd es el comando terminal para cambiar el directorio.

Ingrese javac seguido del nombre del archivo y la extensión de la siguiente manera:

$ javac HelloWorld.java
 

Es bastante común que el error 'javac' is not recognized as an internal or external command, operable program or batch file. incluso cuando haya instalado el JDK y pueda ejecutar el programa desde IDE ej. eclipse etc. Dado que la ruta no se agrega al entorno de forma predeterminada.

En caso de que obtenga esto en Windows, para resolverlo, primero intente javac.exe su ruta javac.exe , es muy probable que esté en su C:\Program Files\Java\jdk(version number)\bin . A continuación, intente ejecutarlo con a continuación.

$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java
 

Anteriormente, cuando llamábamos a javac , era igual que el comando anterior. Solo en ese caso, su OS sabía dónde residía javac . Así que vamos a decirlo ahora, de esta manera no tienes que escribir todo el camino cada vez. Necesitaríamos agregar esto a nuestro PATH

Para editar la PATH entorno PATH en Windows XP / Vista / 7/8/10:

  • Panel de control ⇒ Sistema ⇒ Configuración avanzada del sistema
  • Cambie a la pestaña "Avanzado" ⇒ Variables de entorno
  • En "Variables del sistema", desplácese hacia abajo para seleccionar "RUTA" ⇒ Editar

No puedes deshacer esto así que ten cuidado. Primero copia tu ruta existente al bloc de notas. Luego, para obtener la ruta de acceso exacta a su javac busque manualmente la carpeta donde reside javac haga clic en la barra de direcciones y luego cópiela. Debería verse como c:\Program Files\Java\jdk1.8.0_xx\bin

En el campo "Valor variable", pegue este EN FRENTE de todos los directorios existentes, seguido de un punto y coma (;). NO BORRAR ninguna entrada existente.

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]
 

Ahora esto debería resolverse.

Para sistemas basados ​​en Linux intente aquí .

Nota: javac comando javac invoca el compilador de Java.

El compilador generará entonces un código de bytes archivo llamado HelloWorld.class que puede ser ejecutado en la máquina virtual de Java (JVM) . El compilador del lenguaje de programación Java, javac , lee los archivos de origen escritos en el lenguaje de programación Java y los compila en archivos de clase de código de bytecode . Opcionalmente, el compilador también puede procesar las anotaciones encontradas en los archivos de origen y de clase utilizando la API de Procesamiento de Anotación Pluggable . El compilador es una herramienta de línea de comandos, pero también se puede invocar utilizando la API del compilador de Java.

Para ejecutar su programa, ingrese java seguido del nombre de la clase que contiene el método main ( HelloWorld en nuestro ejemplo). Observe cómo se omite .class :

$ java HelloWorld
 

Nota: el comando java ejecuta una aplicación Java.

Esto saldrá a su consola:

¡Hola Mundo!

¡Has codificado y construido exitosamente tu primer programa Java!

Nota: Para que los comandos de Java ( java , javac , etc.) sean reconocidos, deberá asegurarse de que:

  • Se instala un JDK (por ejemplo, Oracle , OpenJDK y otras fuentes)
  • Sus variables de entorno están configuradas correctamente

Deberá usar un compilador ( javac ) y un ejecutor ( java ) proporcionado por su JVM. Para saber qué versiones tiene instaladas, ingrese java -version y javac -version en la línea de comandos. El número de versión de su programa se imprimirá en el terminal (por ejemplo, 1.8.0_73 ).


Una mirada más cercana al programa Hello World.

El programa "Hello World" contiene un solo archivo, que consiste en una definición de clase HelloWorld , un método main y una declaración dentro del método main .

public class HelloWorld {
 

La palabra clave de class comienza la definición de clase para una clase llamada HelloWorld . Cada aplicación Java contiene al menos una definición de clase ( Más información sobre clases ).

    public static void main(String[] args)  {
 

Este es un método de punto de entrada (definido por su nombre y firma de public static void main(String[]) ) desde el cual JVM puede ejecutar su programa. Cada programa de Java debería tener uno. Es:

  • public : lo que significa que el método también se puede llamar desde cualquier lugar desde fuera del programa. Ver Visibilidad para más información sobre esto.
  • static : significa que existe y se puede ejecutar por sí mismo (a nivel de clase sin crear un objeto).
  • void : significa que no devuelve ningún valor. Nota: Esto es diferente a C y C ++ donde se espera un código de retorno como int (la forma de Java es System.exit() ).

Este método principal acepta:

Casi todo esto es necesario para un método de punto de entrada de Java.

Piezas no requeridas:

  • El nombre args es un nombre de variable, por lo que puede llamarse como quieras, aunque normalmente se llama args .
  • Si su tipo de parámetro es una matriz ( String[] args ) o Varargs ( String... args ) no importa porque las matrices se pueden pasar a varargs.

Nota: una sola aplicación puede tener varias clases que contengan un método de punto de entrada ( main ). El punto de entrada de la aplicación está determinado por el nombre de clase pasado como un argumento al comando java .

Dentro del método principal, vemos la siguiente declaración:

        System.out.println("Hello, World!");
 

Vamos a desglosar esta declaración elemento por elemento:

Elemento Propósito
System esto denota que la siguiente expresión llamará a la clase System , desde el paquete java.lang .
. este es un "operador de puntos". Los operadores de puntos le brindan acceso a una clase de miembros 1 ; Es decir, sus campos (variables) y sus métodos. En este caso, este operador de punto le permite hacer referencia al campo estático de out dentro de la clase System .
out este es el nombre del campo estático del tipo PrintStream dentro de la clase System contiene la funcionalidad de salida estándar.
. este es otro operador de puntos. Este operador de puntos proporciona acceso al método println dentro de la variable out .
println este es el nombre de un método dentro de la clase PrintStream. Este método, en particular, imprime el contenido de los parámetros en la consola e inserta una nueva línea después.
( este paréntesis indica que se está accediendo a un método (y no a un campo) y comienza a pasar los parámetros al método println .
"Hello, World!" este es el literal de cadena que se pasa como parámetro al método println . Las comillas dobles en cada extremo delimitan el texto como una cadena.
) este paréntesis significa el cierre de los parámetros que se pasan al método println .
; este punto y coma marca el final de la declaración.

Nota: Cada declaración en Java debe terminar con un punto y coma ( ; ).

El cuerpo del método y el cuerpo de la clase se cierran.

    }  // end of main function scope
}      // end of class HelloWorld scope 
 

Aquí hay otro ejemplo que demuestra el paradigma OO. Vamos a modelar un equipo de fútbol con un miembro (¡sí, uno!). Puede haber más, pero lo discutiremos cuando lleguemos a los arreglos.

Primero, definamos nuestra clase de Team :

public class Team {
    Member member;
    public Team(Member member) {  // who is in this Team?
        this.member = member;  //  one 'member' is in this Team!
    }
}
 

Ahora, definamos nuestra clase de Member :

class Member {
    private String name;
    private String type;
    private int level; // note the data type here
    private int rank; // note the data type here as well

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
}
 

¿Por qué usamos private aquí? Bueno, si alguien desea saber su nombre, debe preguntarle directamente, en lugar de buscar en su bolsillo y sacar su tarjeta de Seguro Social. Este private hace algo así: impide que las entidades externas accedan a sus variables. Solo puede devolver miembros private través de las funciones de obtención (que se muestran a continuación).

Después de ponerlo todo junto, y de agregar los métodos de obtención y el método principal, como se mencionó anteriormente, tenemos:

public class Team {
    Member member;
    public Team(Member member) {  
        this.member = member;  
    }

    // here's our main method
    public static void main(String[] args) {
       Member myMember = new Member("Aurieel", "light", 10, 1); 
       Team myTeam = new Team(myMember); 
       System.out.println(myTeam.member.getName());
       System.out.println(myTeam.member.getType());
       System.out.println(myTeam.member.getLevel());
       System.out.println(myTeam.member.getRank());
    }
}

class Member {
    private String name;
    private String type;
    private int level;
    private int rank;

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
    
    /* let's define our getter functions here */
    public String getName() { // what is your name?
        return this.name; // my name is ...
    }
   
    public String getType() { // what is your type?
        return this.type; // my type is ...
    }
    
    public int getLevel() { // what is your level?
        return this.level; // my level is ...
    }
    
    public int getRank() { // what is your rank?
        return this.rank; // my rank is
    }
}
 

Salida:

Aurieel
light
10
1
 

Corre en ideone

Una vez más, el método main dentro de la clase de Test es el punto de entrada a nuestro programa. Sin el método main , no podemos decirle a la Máquina Virtual Java (JVM) desde dónde comenzar la ejecución del programa.


1 - Debido a que la clase HelloWorld tiene poca relación con la clase System , solo puede acceder a datos public .

Acceso nativo de Java