Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

Ecosistema Java SE (Standard Edition): conjunto de tecnologías, herramientas y prácticas diseñadas en torno al lenguaje de programación Java: Lenguaje de programación: Orientado a objetos Máquina virtual Java: Se encarga de ejecutar el código bytecode generado por el compilador de Ja...

Ecosistema Java SE (Standard Edition): conjunto de tecnologías, herramientas y prácticas diseñadas en torno al lenguaje de programación Java: Lenguaje de programación: Orientado a objetos Máquina virtual Java: Se encarga de ejecutar el código bytecode generado por el compilador de Java JDK/JRE ○ JDK:Es el kit de desarrollo de Java, que incluye herramientas como el compilador javac, la JVM y otras utilidades para desarrollar aplicaciones ○ JRE: Entorno de ejecución de Java, que incluye la JVM y las bibliotecas necesarias para ejecutar aplicaciones Java, pero no las herramientas de desarrollo Utiliza Bibliotecas y Frameworks Ecosistema Empresarial: Jakarta EE (anteriormente Java EE): Conjunto de especificaciones para el desarrollo de aplicaciones empresariales 1.- Infraestructura a) Herramientas que que facilitan el desarrollo, la compilación, el empaquetado y la depuración de aplicaciones javac (compilador): Traduce el código a bytecode(formato intermedio que no es legible directamente por el sistema operativo, pero sí por la Máquina Virtual de Java (JVM). ○ El código bytecode tiene extensión.class ○ Nota Los ficheros que tu desarrollas tienen terminación.java javap (Java Disassembler): Desensambla archivos.class para mostrar la información del bytecode java (Java Launcher): intérprete. ○ Ejecuta el bytecode contenido en los archivos.class utilizando la JVM. ○ También se usa para lanzar aplicaciones Java empaquetadas en archivos JAR. javadoc: genera documentación html a partir de comentarios del código fuentes ○ ○ Información adicional: @author, @see (Referencia a otro elemento de la documentación), @since (la versión desde la cual está disponible el elemento documentado) jar (Java Archive Tool): Empaqueta varios archivos.class y otros recursos en un archivo comprimido.jar (Se podría decir que es el equivalente a DDL) jdb (Java Debugger): depurador jstat(Java Virtual Machine Statistics Monitoring Tool): Monitorea el uso de recursos de la JVM jconsole y VisualVM: Herramientas gráficas para monitorear y gestionar aplicaciones Java en tiempo real (Ej: estado de los threads). jps (Java Virtual Machine Process Status Tool): Muestra información sobre los procesos Java en ejecución en la máquina, incluyendo el PID y los argumentos de inicio jmc: herramientas de monitorización de la JVM jcmd: Permite enviar comandos específicos a la JVM jshell: Consola Java que permite ejecutar un bloque de código de una forma rápida y directa. ( A partir de Java 9 ). jarsigner: firmar y verificar ficheros jar Keytool: Criptografía. Equivalente a openssl wsimport: generación de clases automáticas para los clientes de web services de tipo SOAP xjc: compilador que genera clases java a partir de un XSD rmic: es el compilador RMI de Java, utilizado para generar clases stub y skeleton necesarias para las comunicaciones remotas en aplicaciones que utilizan RMI. ○ Programación distribuida. Posibilidad de poner tu programa java en varios servidores. Nota RMI (Remote Method Invocation) es una tecnología en Java que permite que un objeto que se encuentra en una máquina virtual Java (JVM) invoque métodos en un objeto que reside en otra JVM, aunque estén en diferentes ubicaciones físicas (como en distintas máquinas de una red). ○ rmiregistry: un servicio de nombres utilizado para registrar y buscar objetos remotos en una red. ○ Este registro permite que los clientes localicen objetos remotos por su nombre. jdeps: analiza las dependencias de clases y módulos de Java b) Ejecución (JRE)=intérprete(máquina virtual java) + librerías de clases BASE (rt.jar) rt= runtime. Esta foto es hasta java 1.8 CLASSPATH: utilizada para indicar a la Máquina Virtual de Java (JVM) y al compilador (javac) dónde buscar los archivos de clase (.class) y los archivos JAR (Java Archive) que contienen las clases y paquetes necesarios para ejecutar o compilar un programa ○ Función de la Variable CLASSPATH i. Ubicación de Clases y Bibliotecas: Especifica los directorios y archivos JAR que contienen las clases que se utilizarán en la ejecución o compilación ii. Jerarquía de Búsqueda: Orden de búsqueda Directorios y archivos especificados en el argumento -classpath o -cp del comando java o javac (línea de comandos) Directorios y archivos especificados en la variable de entorno CLASSPATH. En el fichero META-INF\Manifest.mf existe un campo llamado Class-Path:ruta(s) ○ iii. Valores Predeterminados: Si no se establece un CLASSPATH, Java usa el directorio actual (.) Threads o Hilos: es una unidad de ejecución independiente que puede correr en paralelo con otros hilos dentro de un mismo proceso ○ Características Concurrencia: Compartición de Memoria ○ Recolector de Basura (Garbage Collector): Gestiona la memoria de los programas Java. Su principal tarea es identificar y eliminar objetos que ya no se utilizan, liberando así memoria para futuras asignaciones. En Java no es necesario el uso de punteros. En Java SE solo hay un thread en ejecución. En Java EE ya hay varios, y se necesitará utilizar sincronización… 2.- Lenguaje (orientado a objetos): Elementos de programación BÁSICOS: clase, objeto/encapsulación, herencia, sobrecarga y polimorfismo/ligadura dinámica) Clase: modelo o plantilla que define la estructura y el comportamiento de los objetos (atributos de datos, métodos y atributos de relación) ○ Modificadores principales: final, static, abstract, protected, private, public, native, volatile, transient, synchronized, default Final:para declarar constantes, métodos que no se pueden sobrescribir y clases que no se pueden extender final para una clase: ninguna otra clase podrá heredar de ella final para un método: no podrá ser sobrescrito (override) final para un atributo: funcionará como una constante static: Se utiliza para declarar clases y métodos que deben ser implementados por las subclases Abstract: clases muy generales que no están claras, pero luego en la herencia se completan Clase: Método ○ La encapsulación es el principio que permite ocultar los detalles internos de un objeto y exponer solo la interfaz necesaria para su uso. Se logra a través de modificadores de acceso: public: público: Accesible desde cualquier clase ○ private: El campo o método sólo es visible dentro de la clase donde se define ○ protected: permite que las variables y métodos sean accesibles dentro de su propia clase, en las clases del mismo paquete y en las subclases, incluso si están en paquetes diferentes: Alguien desde fuera no tiene acceso. ○ El campo o método es visible en la clase en donde se define y en cualquiera de sus subclases ○ default: sino tiene ni protected, public, private Resumen: Otras Modificador Misma Mismo Subclases clases de acceso clase paquete (herencia) (externas) public ✔ ✔ ✔ ✔ protected ✔ ✔ ✔ ✘ default ✔ ✔ ✘ ✘ private ✔ ✘ ✘ ✘ native: Se utiliza para declarar que un método está implementado en código nativo, generalmente en C o C++. volatile: Se usa para indicar que una variable puede ser modificada por diferentes hilos y que su valor debe leerse de la memoria principal cada vez transient: Para decirle al runtime de java que ciertos atributos no se deben serializar synchronized: Para que un método solo sea ejecutado por un thread a la vez. Si viene otro hilo se bloquea en una cola Objeto: es una instancia de una clase. Representa una entidad concreta con un estado y comportamiento específicos. ○ En el objeto es donde está la información Paquetes: Forma de agrupar clases e interfaces relacionadas en un namespace. Facilitan la organización del código, evitando conflictos de nombres y permitiendo un acceso controlado a las clases. ○ Forma de invocarlo: ○ Se organizan en carpetas/directorios Interfaces: definición de una serie de métodos. Puede no tener código/atributos, sino que pone las normas para que todo funcione ok y sea estándar. ○ ○ A nivel de Hw: Ejemplo copy paste de un disco duro a otro con interface SATA Enum. Es un Dominio de valores fijo. ○ Anotaciones: @Override,@deprecated,@safeVarargs: forma de agregar metadata (información adicional)/Configurar a las clases, métodos, variables y parámetros en Java ○ No afectan el comportamiento del programa por sí mismas, pero sirven para proporcionar información adicional a los compiladores, herramientas de desarrollo o incluso al propio programa en tiempo de ejecución. ○ ○ @Override: Indica que un método está sobrescribiendo un método de su clase base. ○ @Deprecated: Indica que un elemento de código (clase, método, etc.) está obsoleto y no debería ser utilizado. ○ @SuppressWarnings: Indica que el compilador debe ignorar ciertas advertencias en el código. ○ @FunctionalInterface: Indica que una interfaz es una interfaz funcional, es decir, que tiene un único método abstracto. Herencia: permite a una clase (subclase) heredar los atributos y métodos de otra clase (superclase), promoviendo la reutilización de código y la creación de jerarquías de clases. ○ Recordar: extends ○ Sobrecarga (overloading) permite definir múltiples métodos con el mismo nombre dentro de la misma clase, siempre que tengan diferentes parámetros (número, tipo o ambos) ○ Polimorfismo: El polimorfismo permite que una misma operación se comporte de diferentes maneras en distintas clases Ligadura dinámica: mecanismo por el cual la JVM determina en tiempo de ejecución cuál método invocar 3.- Herramientas/Librerías de terceros Herramientas IDE's (Entornos/Editores de desarrollo). Ej. Eclipse, IntelliJ, Netbeans, … ○ workspace: es un conjunto de proyectos Automatización del desarrollo: ○ Ant (build.xml), Maven (pom.xml), Gradle (build.gradle en Groovy or Kotlin DSL) , Ivy (extension de Ant para gestión de dependencias) ○ Jenkins (integración continua)... JDK's (OpenJDK, Amazon Corretto, IBM JDK,...) ○ “Java Virtual Machine Specification (Sun MicroSystem)”: Da las normas de cómo se debe crear una JDK, por eso cualquier empresa puede crear la suya propia. Librerías/Frameworks iText,PDFBox: Generacion de PDF's BouncyCastle: Criptografia Log4j, Logback, SLF4J: Logging Xerces, Xalan, Woodstox y Apache FOP: Parsers XML y Procesors XSL Apache Commons (lang,dbcp,crypto,fileupload,io,codec,etc) y Guava de Google: Proposito general Apache HttpComponents:Peticiones http a bajo nivel. Gson y Jackson: Manejo de información en formato JSON Apache POI: manejo de documentos de Office Apache Tika. Detección y extracción de contenido de multitud de formatos Pentaho Kettle: ETL para extracción de información, transformación y carga de ficheros Project Lombok: biblioteca que reduce la verbosidad del código Java mediante la generación automática de métodos comunes, como getters, setters, toString, y equals. ○ mockito-core: biblioteca de pruebas que permite la creación de objetos simulados (mocks) en pruebas unitarias JUnit+Mockito y JMeter: Pruebas unitarias y de carga TestNG: Un marco de pruebas que proporciona funcionalidades avanzadas como la ejecución de pruebas en paralelo y grupos de pruebas. Cucumber: Una herramienta para pruebas de aceptación que permite escribir pruebas en lenguaje natural (Gherkin). Herramientas de Automatización: Ant (Apache) Herramienta de automatización de compilación y construcción de software para Java Utiliza un archivo XML, típicamente llamado build.xml, para definir el proceso de construcción No hace gestión de dependencias Maven(Apache): Herramienta de gestión y construcción de proyectos de software, principalmente en Java. se basa en el concepto de un modelo de objeto de proyecto (POM) que describe la estructura del proyecto y sus configuraciones(pom.xml) Hace gestión de dependencias Estructura de directorios: src→main→ java (Obligatorio) ○ Ciclo de vida de construcción:validate, compile, test, package, verify, install, deploy ○ mvn clean: Limpia el directorio de construcción. ○ mvn compile: Compila el código fuente. ○ mvn test: Ejecuta las pruebas. ○ mvn package: Empaqueta el código en un archivo JAR o WAR. target/classes target/*.jar ○ mvn install: Instala el paquete en el repositorio local. ○ mvn deploy: Despliega el paquete en un repositorio remoto Directorio.m2: repositorio local de Maven donde se almacenan todos los artefactos descargados y construidos por Maven Cualquier artefacto de maven tiene 3 coordenadas: group Id - Artifact Id - Version ○ Zonas de la memoria de la jvm: Heap: Memoria dinámica donde se van almacenando los objetos java que se van creando Stack: Donde van a almacenar la información los diferentes hilos de ejecución Registros Sobre los hilos: JIT (Just In Time Compiler): es una técnica para mejorar el rendimiento de sistemas de programación que compilan a bytecode, consistente en traducir el bytecode a código máquina nativo en tiempo de ejecución (Sobre la marcha) GC(Garbage Collector): Java no tiene un “delete” de un objeto. El recolector es el único que puede borrar esos objetos

Use Quizgecko on...
Browser
Browser