B3T6-JAVA Flashcards
JAVAC
Javac es el compilador de Java. Es una herramienta de línea de comandos que se utiliza para convertir el código fuente de Java (.java) en bytecode de Java (.class). Este bytecode puede ser ejecutado posteriormente por la Máquina Virtual de Java (JVM).
- Compilar el código fuent
Las principales funciones de javac incluyen:
Que es JDK
Java Development Kit
Concepto JRE
- JRE (Java Runtime Environment), incluye un interprete (mv) y librerías de clase base (rt.jar)
Concepto de VM
- Maquina Virtual
JIT, Just In Time compiler (compilador en tiempo de ejecución)
GC, Garbage Collector
ClassLoader, carga dinámicamente clases Java en la Java Virtual Machine
Heap, espacio de memoria dinámica único que se crea al inicio de la máquina virtual
Concepto de CLASSPATH
Concepto de CLASSPATH
Classpath, variable de entorno que sirve a la maquina virtual para localizar y cargar clases que se usen en tu programa.
CUANTAS CLASSPATH HAY?
- Variable de entorno CLASSPATH
- Property que establece cuando se llama al interprete
- En el fichero manifest.mf, en el campo llamado CLASS-PATH:ruta. Se modifica por comandos.
Modificadores de acceso DE JAVA
Modificadores de acceso
* public, se ve en cualquier parte del programa.
* protected, tendría visibilidad y acceso en las clases hijas de la clase padre que se herede(“extends”).
* private, solo se puede usar en el ámbito de la clase donde esta definido.
* “default”, Sino se especifica modificador de acceso para una clase, método o miembro de datos
Tratamiento de excepciones
- checked, heredan de exception y obligan al try/catch
- un-checked, heredan de RuntimeException, y no te obliga a tratarlas.
- try/catch/finally
- throw, palabra reservada nos permite lanzar una excepción propia
Concepto de Thread
- (interface Runnable), crear cuerpos de hilos implementando el interface Runnable
- Metodos wait/notify de Object,
unciones para los monitores para la concurrencia de los hilos.
wait()
notify()
Palabras reservadas
- final, aplica a:
clases: para que otras clases no puedan heredar.
atributos: para que funcione como una constante.
métodos: bloquea la sobreescritura. - static, método que se aplica a la clase y solo es visible en la clase definida.
- synchronized, gestión de la sincronización de los threads de los métodos para que solo se ejecute un único hilo.
- native, para codificar un método en un lenguaje diferente a Java.
- transient, indica al runtime que no serialice el objeto.
- abstract, método que definimos pero no sabemos implementar. Obliga a que la clase también sea abstract. No se pueden crear objeto de clases abstract.
- extends, herencia
- implements, para implementar un interface.
Concepto de:
* Anotacion
Elemento para configurar el código.
*COMIENZAN EN JAVA5. Se diferencia de interface
en la arroba antes de la palabra reservada interface.
public @interface Seguridad{
String rol():
}
Concepto de enum
- Enum, serie de valores definidos por el programador.
public enum Color{
rojo, blanco, negro;
}
Concepto de Clase
- Clase: conjunto de atributos y métodos.
public class ciudadano{
//atributos
//metodos
}
Concepto de INTERFACE
- Interface, declaración funcional (“plantilla”) que obliga a las clases a cumplir con un contrato (“interface”)
interface SATA{
public void escribir (int numSector, byte dato);
public byte leer (int numSector);
}
class SSD_IBM implements SATA{
}
Novedades:
API Java Time (1.8)
Modules (1.9)
Streams
Lamda
Optional
FunctionalInterface
Librerias de Terceros
- Log4j, logs
- Logback, logs
- Itext/PDFBox, generación de pdf
- Guava, propósito general.
- Junit+Mockito, pruebas unitarias.
- JMeter, pruebas de carga
- GSON/Jackson, manejo de información JSON.
- Tika, detección y extracción de contenido multiformato.
- BouncyCastle, criptografía.
- Array
asList(T….a) à List<T>
binerySearch (int[], int)
fill (…)
sort(…)</T> - Heredan del interface Collection
List
Set à SortedSet
Queue à DeQueue - Clases que representan colecciones completas
ArrayList
LinkedList (doblemente enlazada (lista,doble cola)
ArrayDeque
Vector à Stack
push(E)
pop() à E {si borra}
empty() {boolean}
search(Object) {int}
peek() à E {no borra}
Herramientas de la JDK
- java (interprete), ejecuta tú código en una máquina virtual java.
- javac (compilador), genera código en bitecode de los ficheros generados en .class
- jar (empaqueta clases compiladas),
- javadoc, generación de documentación html a partir del código fuente.
- jshell (interprete REPL (Read-Evaluate-Print-Loop)), a partir de v9
- jarsigner, firma y verificación de ficheros .jar
- keytool, módulo de criptografía.
- wsimport, generación de clases automáticas para los cliente web services (SOAP, REST….)
- xjc, compilador que genera clases java a partir de un XSD.
- javap, desensamblador de ficheros .class.
- jdb, depurador.
- jdeps, analizador de dependencias de clases o paquetes.
- jmc y jconsole, monitorización de JVM.
Herramienta java (interprete)
- java (interprete), ejecuta tú código en una máquina virtual java.
javac
- javac (compilador), genera código en bitecode de los ficheros generados en .class
jar
- jar (empaqueta clases compiladas),
javadoc
javadoc, generación de documentación html a partir del código fuente.
jshell
jshell (interprete REPL (Read-Evaluate-Print-Loop)), a partir de v9
*
jarsigner
jarsigner, firma y verificación de ficheros .jar
keytool
keytool, módulo de criptografía.
wsimport
- wsimport, generación de clases automáticas para los cliente web services (SOAP, REST….)
xjc
- xjc, compilador que genera clases java a partir de un XSD.
javap
- javap, desensamblador de ficheros .class.
jdb
- jdb, depurador.
jdeps
- jdeps, analizador de dependencias de clases o paquetes.
operadores aritméticos en JAVA
Operadores principales
* Operadores Aritméticos.
o Suma + .
o Resta - .
o Multiplicación * .
o División / .
o Resto de la División % .
Principal operador de asignación en JAVA
- Operadores de Asignación: El principal es ‘=’.
Operadores Unarios en Java
- Operadores Unarios: El más (+) y el menos (-). Para cambiar el signo del operando.
Instanceof
- Operador Instanceof: Nos permite saber si un objeto pertenece a una clase o no.
o NombreObjeto instanceof NombreClase
Operadores incrementales en java
- Operadores Incrementales: Son los operadores que nos permiten incrementar las variables en una unidad. Se pueden usar delante y detrás de la variable dependiendo de lo que queramos, es decir, si queremos que incremente o viceversa antes de utilizar o lo contrario.
o ‘++’
o ‘–’
- Operadores Relacionales: Permiten comparar variables según relación de igualdad/desigualdad o relación mayor/menor. Devuelven siempre un valor boolean.
o ‘>’: Mayor que
o ‘<’: Menor que
o ‘==’: Iguales
o ‘¡=’: Distintos
o ‘>=’: Mayor o igual que
o ‘<=’: Menor o igual que
Operadores lógicos en Java
- Operadores Lógicos: Nos permiten construir expresiones lógicas.
o ‘&&’ : devuelve true si ambos operandos son true.
o ‘||’ : devuelve true si alguno de los operandos son true.
o ‘!’ : Niega el operando que se le pasa.
o ‘&’ : devuelve true si ambos operandos son true, evaluándolos ambos.
o ‘|’ : devuelve true uno de los operandos es true, evaluándolos ambos.
Operador de concatenación con cadena de caracteres en JAVA
- Operador de concatenación con cadena de caracteres ‘+’:
o Por Ejemplo: System.out.println(“El total es”+ result +”unidades”);
*
Operadores que actúan a nivel de bits EN JAVA:
Son mucho menos utilizados.
o ‘»’: desplazamiento a la derecha de los bits del operando
o ‘«’: desplazamiento a la izquierda de los bits de operando
o ‘&’: operador and a nivel de bit.
o ‘|’: operador or a nivel de bit
Principales interfaces del API JDBC
- Connection, establecer conexiones con la base de datos.
- Statement, ejecutar sentencias SQL y enviarlas a la BBDD.
- Resultset, almacenar el resultado de la consulta.
- Driver, cargar driver para la conexión a la BBDD.
POJO
Es una clase que tiene atributos y métodos de consulta y actualización.
Una clase puede tener solo atributos?
Si a unas clases les das mucho comportamiento en otras se quedarán tan pobres que solo tendrán atributos (clases de datos)
Anemic domain model - segun Martin Fowler
pero el sobreuso de esas clases está mal
Que hacemos con un fichero .java
Nosotros o nuestro entorno de desarrollo
Se tiene que compilar con la herramienta javac
Y se generará un fichero .class
Dentro tienen codigo binario para la máquina virtual de java (se llama bytecode) - en caso de microsoft se llama SYL
Luego necesitamos un interprete de bytecode para convertirlo en codigo máquina, que entienda mi
El entorno nos genera automaticamente una estrucura de ficheros con ello
Que es bytecode
Es el codigo binario que se tiene que interpretar para convertirlo en codigo máquina.
Como se compila bytecode?
con javac