Certificación Java
La siguiente colección de artículos tienen como objetivo formarte
y prepararte para lograr la certificación Java OCA (Oracle
Certified Associate Java) para la última versión disponible de JavaSE 8.
Las principales fuentes utilizadas para elaborar estos
artículos son los libros de referencia para la preparación de la certificación:
- Oracle Certified Associate Java SE 8 Programmer I Study Guide
- Oracle Certified Associate Java SE 7 Programmer I Study Guide
Si todavía no
conoces el lenguaje Java pero tienes algo de conocimiento de otros
lenguajes de programación, esta es tu oportunidad
de aprenderlo de una manera amena.
Si ya conoces el
lenguaje Java, pero nunca te has atrevido a preparar la certificación porque nunca has tenido el tiempo suficiente
para prepararlo, aquí te ayudaremos a reducir
el tiempo y consultar todas tus
dudas.
Si ya
dominas el lenguaje Java pero frecuentemente olvidas algunas de las
características del lenguaje o dudas a la hora de desarrollar un nuevo
programa. Estos artículos te servirán como guía
de referencia de las funcionalidades del lenguaje que necesitas recordar
para trabajar a diario y ser más
productivo.
Introducción
Java es
un lenguaje de programación sencillo y
orientado a objetos cuyo uso está extendido en todo el mundo siendo el
lenguaje más popular actualmente. Las características del lenguaje que le han
permitido llegar al éxito son:
Orientado a objetos: Proporcionan técnicas para el
desarrollo orientado a objetos, con lo que se consigue maximizar la reutilización
de componentes de software.
Portable y Multiplataforma: El compilador Java traduce cada
fichero fuente a código de bytes (Bytecode), este código es interpretado por cualquier
máquina que tenga instalado un intérprete conocido como JVM (Java
Virtual Machine).
Seguro: La máquina virtual al ejecutar
el código java realiza comprobaciones de seguridad, además el propio lenguaje
carece de características inseguras, como por ejemplo los punteros.
Tipado estático: Es necesario asignar un tipo a
cada variable en el momento de su declaración. Con esto se consigue eliminar
los errores al operar con variables de tipos incompatibles. El compilador
detecta estás incompatibilidades y no generará el código bytecode hasta que sean
corregidos.
Multihilo: Java puede aplicarse en aplicaciones
en las que es necesaria la ejecución de varias tareas de forma paralela.
Distribuido: Java se ha diseñado para
trabajar en ambiente de redes y contienen una gran biblioteca de clases para la
utilización del protocolo TCP/IP, incluyendo HTTP y FTP.
Estructura
En un
programa Java las clases son el elemento básico de construcción. Una clase nos
permite agrupar una serie de partes y características comunes.
Objetos: Son instancias en ejecución de
una determinada clase. La agrupación de
todos los objetos de todas las clases representan el estado de un programa.
Campos y Métodos: Son los elementos principales de
las clases en Java. Juntos son llamados los miembros de la clase. Los campos
mantienen el estado del programa y los métodos permiten operar con ellos.
Comentarios
Para
hacer más legible nuestro código es posible añadir comentarios. Estos pueden aparecer
en casi cualquier parte dentro de los ficheros fuente que definen nuestras
clases.
Para un comentario
de una única línea se utiliza el carácter “//” al comienzo de la línea.
// Comentario hasta fin de línea
Para comentario de múltiples líneas se utiliza el carácter “/*” al comienzo de la primera línea comentada y los caracteres “*/” al final de la última línea.
/*Comentario separado en múltiples líneas */
Clases vs Archivos
Lo más
común es que cada clase este definida en un archivo .java con el mismo nombre
que la clase.
Sin
embargo, es posible tener dos clases en el mismo archivo .java aunque solamente
una de ellas puede tener modificador de acceso public y el nombre del archivo .java debe coincidir con la clase
declarada public. En caso contrario
se producirá un error de compilación
Método Main
Un
programa Java comienza la ejecución en el método main(), en otras palabras, es
la puerta de entrada al inicio de un proceso java el cual será gestionado por
la JVM (Máquina Virtual de Java).
Reglas para la firma
del método principal (main) de la clase:
- El modificador de acceso del método debe ser public.
- El modificador de no acceso debe ser static.
- El método no debe retornar ningún valor, es decir, especifica tipo de retorno void.
- El nombre del método debe ser main.
- Debe aceptar un parámetro de tipo array de String que puede contener 0 o N parámetros.
- El nombre del parámetro puede ser cualquier identificador permitido según las reglas.
Reglas para
compilar una clase java:
- Utilizar el comando “javac” incluido en la JDK
(Java Development Kit).
- El archivo debe tener extensión .java
- El nombre del archivo debe coincidir con el
nombre de la clase pública.
- El resultado será un archivo de bytecode
(instrucciones que la JVM sabe ejecutar) con el mismo nombre y extensión
.class
Reglas para
ejecutar una clase java:
·
Utilizar
el comando “java” más el nombre de la clase sin extensión y la lista de
parámetros que queramos añadir.
·
Todos
los parámetros serán reconocidos de tipo String.
javac ClasePrueba.java java ClasePrueba Parametro0 Parametro1 … ParametroN
Declaración de package e imports
Dado que
existen miles de clases, es necesario organizarlas de algún modo. Java organiza
las clases en paquetes, que no son más que agrupaciones lógicas.
- Los nombres de los paquetes son jerárquicos y las reglas para nombrarlos son las mismas que aplican al nombrado de variables.
- Los import son sentencias que dicen al compilador en qué paquete buscar para encontrar una Clase que va a ser utilizada dentro de la clase que lo importa.
- Las clases en el mismo paquete son normalmente importadas juntas, para ello es necesario utilizar un sentencia import con comodín (wildcard).
El “*”
es un comodín que empareja todas las clases incluidas en el paquete indicado.
Reglas para usar import con comodines:
- Un comodín solo empareja nombres de clases, es
decir, no es recursivo.
- Solamente se puede usar un “*” comodín para
cada import y debe estar al final.
- Solamente se pueden emparejar clases, no es
válido para emparejar métodos ni campos.
Import redundantes
Hay un
paquete especial en Java “java.lang” que es automáticamente importado. Se puede
importar explícitamente porque no provoca ningún problema pero es innecesario.
También
es redúndate si una clase es importada y adicionalmente una sentencia import
con comodín también incluye a esa clase.
Otro
caso redundante es importar una clase que está en el mismo paquete que la clase
que estamos definiendo.
Conflictos de Nombres
En
ocasiones queremos utilizar clases con el mismo nombre pero que están ubicadas
en paquetes diferentes, la gestión de paquetes de Java nos permite hacerlo pero
con ciertas precauciones.
Cuando
dos import con comodín emparejan el mismo nombre de clase el compilador
devuelve un error indicando “El tipo es ambiguo”.
Para
corregirlo hay dos opciones:
- Importar explícitamente un nombre de clase
porque estas sentencias tienen prioridad sobre los sentencias import con
comodines.
- No añadir ninguna sentencia import y utilizar
los cualificadores completos de clases.
Creando Objetos
Nuestros
programas no serían capaces de hacer nada útil sin la posibilidad de crear
nuevos objetos. Un objeto es una instancia de una clase con un estado
independiente del resto de objetos.
Constructores
Son
utilizados para crear instancias de una clase. El propósito del constructor es
inicializar los campos.
Random r = new Random()
Random()
es un constructor de la clase, lo que es en realidad es un tipo de método
especial que utilizamos para crear nuevos objetos.
Reglas para definir un constructor:
- El nombre del constructor debe ser igual que el
nombre de la clase.
- El constructor no tiene tipo de retorno. Es
decir, si vemos un método con el mismo nombre de la clase y con tipo de
retorno, este será un método pero no un constructor.
Si no se
especifica ningún constructor el compilador proporcionará uno por defecto y sin
parámetros.
Bloques de inicialización
Son
bloques de código que aparecen entre corchetes {} fuera del ámbito de un método
y en cualquier parte de la clase.
Reglas para el orden de inicialización de los campos:
- Los campos y los bloques de inicialización son ejecutados en el orden que aparecen
- El constructor se ejecuta después de que todos los campos y bloques se han ejecutado.
Tipos primitivos
Las
aplicaciones Java contienen variables y datos de tipo Primitivos o Referencia.
Podemos
ver agrupados todos los tipos primitivos existentes en el siguiente gráfico.
Tipo
|
Descripción
|
Ejemplo
|
boolean
|
true
o false
|
true
|
byte
|
Número
Entero de 8 bit
|
123
|
short
|
Número
Entero de 16 bit
|
123
|
int
|
Número
Entero de 32 bit
|
123
|
long
|
Número
Entero de 64 bit
|
123
|
float
|
Número
Decimal de 32 bit
|
123.45f
|
double
|
Número
Decimal de 64 bit
|
123.456
|
char
|
Carácter
Unicode de 16 bit
|
‘a’
|
Para
números enteros el tipo por defecto es int. Para cambiar el tipo por defecto a
long se debe usar la letra ‘l’ o ‘L’. Ej: 123L
Para
números decimales el tipo por defecto es double. Para cambiar el tipo por
defecto a float se debe usar la letra ‘f’ o ‘F’. Ej: 123.45F
Por
defecto la base utilizada es decimal pero podemos utilizar otras alternativas:
- Base Decimal: Dígitos de 0 a 9. Es
la base por defecto. No utiliza prefijo.
- Base octal: Dígitos de 0 a 7. Usa el
número 0 como prefijo. Ej: 017.
- Base hexadecimal: Dígitos de 0 a 9 y
letras de A a F. Usa 0x o 0X como prefijo. Ej: 0xFF.
- Base binaria: Dígitos de 0 a 1. Usa
0b o 0B como prefijo. Ej: 0b10.
Adicionalmente
a partir de Java 7 es posible añadir “_”
guiones bajos a los literales numéricos para facilitar la lectura. Reglas
de usos de “_”:
- No pueden estar al principio de un
literal
- No pueden estar al final de un
literal
- No pueden estar justo antes del “.”
punto decimal
- No pueden estar justo después del
“.” punto decimal
Tipos Referencias
Un
tipo referencia se refiere a un objeto (una instancia de la clase)
A
diferencia de los tipos primitivos, las referencias apuntan a un objeto
almacenando en memoria, para ello guardan la dirección en la que el objeto está
localizado.
Regla
para asignar valor a una variable de tipo Referencia:
- Asignar un objeto del mismo tipo.
- Creando un nuevo objeto usando la
palabra reservada “new”.
Diferencias Tipos primitivos vs Tipo referencia
- Tipos Referencias pueden tener asignados un valor “null”. Significa que no están apuntando actualmente a ningún objeto.
- Tipos Primitivos dan un error de compilación si intentas asignar el literal “null”.
- Tipos Referencias se pueden usar para llamar a métodos cuando no tienen asociado el valor null.
- Tipos Primitivos no tienen métodos declarados a los que poder llamar.
- Todas las clases definidas con Java empiezan con mayúscula (es una convención aunque no es obligatoria para clases propias).
- Todos los tipos primitivos tienen nombres en minúsculas.
Práctica lo aprendido
¡La práctica hace al maestro! Es el momento de ponerse manos a la obra y probar todos aquellos conceptos que hemos estudiado. Para ello lo mejor es escribir tu propio código, de esta manera vas a asimilar los conceptos de una forma más amena y segura.
Para ayudarte a agilizar las pruebas de tus primeras líneas de código Java hemos seleccionado dos herramientas online para compilación y ejecución de código Java.
- Jdoodle: Herramienta sencilla e intuitiva que permite el auto completado del código (usando Ctrl + Space) y permite guardar código si estamos registrados.
- Ideone: Herramienta sencilla y potente que permite elegir la versión de Java más adecuada para nosotros además de tener disponibles otros lenguajes de programación. Además nos permite compartir código con otros usuarios sin necesidad de estar registrados y guardar código.
Comprueba tus conocimientos
Por último hemos preparado este test online que te servirá para evaluar objetivamente tu aprendizaje. El test consta de 10 preguntas tipo test con un tiempo límite de 10 minutos. A por ello!!
Buenas,
ResponderEliminarme encanta tu blog, estoy empezando a leer el libro de la certificación de Java 8 y me gustaría preguntarte si hay más temas además de éste. Porque me parece interesantísimo y muy bien explicado.
Un saludo
Muchas Gracias Rafael.
EliminarEste año el objetivo es tratar en el blog todos los temas incluidos en la certificación. ¿Te interesa algún tema en particular? Te agradezco tu feedback y te invito a que compartas el blog con tu circulo profesional. Un saludo.
Este comentario ha sido eliminado por el autor.
ResponderEliminar