“AÑO DE LA UNIDAD, LA PAZ Y EL DESARROLLO”
ACTIVIDAD:
S05.s3 - Tarea Académica 1
⮚ ASIGNATURA: Taller de programación
⮚ DOCENTE: Aldo Rafael Robles Arana
⮚ ALUMNO:
Marcos Cajo, Piero Jesús U20233049
ICA – PERÚ
2023
ARQUITECTURA DEL JDK
1. ¿Qué es JAVA?
El sofware JAVA, siendo este un lenguaje de programación y una plataforma
informática comercializada por primera vez en 1995 por Sun Microsystems.
2. ¿Qué es el JDK?
El JDK “Java Development Kit”, es decir Kit de desarrollo de JAVA; se puede
definir como un conjunto de herramientas de desarrollo para la creación de
programa en JAVA
3. Componentes del JDK
a) Intérprete en tiempo de ejecución (JRE)
Permite la ejecución de los programas Java (*.class) no gráficos
(aplicaciones).
La sintaxis para su utilización es la siguiente:
java [Opciones] ClaseAEjecutar [Argumentos]
b) Compilador
Se utiliza para compilar archivos de código fuente Java (habitualmente
*.java), en archivos de clases Java ejecutables (*.class). Se crea un archivo
de clase para cada clase definida en un archivo fuente.
Este compilador es una utilidad en línea de comandos con la
siguiente sintaxis:
javac [Opciones] ArchivoACompilar
c) Visualizador de applets
Es una herramienta que sirve como campo de pruebas de applets,
visualizando cómo se mostrarían en un navegador, en lugar de tener que
esperar.
Al ser activado desde una línea de órdenes abre una ventana en la que
muestra el contenido de la applet.
Se activa con la sintaxis:
appletvie wer [Opciones] Applet
d) Depurador
Es una utilidad de línea de comandos que permite depurar aplicaciones
Java.
No es un entorno de características visuales, pero permite encontrar y
eliminar los errores de los programas Java con mucha exactitud. Es
parecido en su funcionamiento al depurador gdb que se incluye con las
distribuciones del compilador gcc/g++ para C/C++.
Se activa con la sintaxis:
jdb [Opciones]
e) Desensamblador de archivo de clase
Se utiliza para desensamblar un archivo de clase. Su salida por defecto
muestra los atributos y métodos públicos de la clase desensamblada, pero
con la opción -c también desensambla los códigos de byte, mostrándolos
por pantalla. Es útil cuando no se tiene el código fuente de una clase de la
que se quisiera saber cómo fue codificada.
La sintaxis es la siguiente:
javap [Opciones] [NombresClases]
f) Generador de cabecera y archivo de apéndice
Se utiliza para generar archivos fuentes y cabeceras C para implementar
métodos Java en C (código nativo). Esto se consigue mediante la
generación de una estructura C cuya distribución coincide con la
correspondiente clase Java.
El generador de cabeceras Java, crea los ficheros de cabecera C/C++ para
implementar en esos lenguajes los métodos nativos que presente un
programa Java.
La sintaxis es la siguiente:
javah [Opciones] NombreClase
g) Generador de documentación
Es una herramienta útil para la generación de documentación API
directamente desde el código fuente Java. Genera páginas HTML basadas
en las declaraciones y comentarios javadoc, con el formato
/** comentarios */: La documentación que genera es del mismo
estilo que la documentación que se obtiene con el JDK. El JDK incluye una
serie de applets de demostración, con su código fuente al completo. Las
etiquetas, que se indican con una arroba (@), aparecerán resaltadas en la
documentación generada.
Su sintaxis es:
javadoc Opciones NombreArchivo
h) Applets de demostración.
El JDK incluye una serie de applets de demostración, con su código fuente
al completo. El código fuente de la API se instala de forma automática,
cuando se descomprime el JDK, aunque permanece en formato comprimido
en un archivo llamado "scr.zip" localizado en el directorio Java que se creó
durante la instalación.
4. Uso del JDK
Ya se han visto las diferentes partes de que está compuesto el JDK, pero
para el desarrollo de una aplicación final Java (ya sea una aplicación o una
applet ), deberemos utilizar las diferentes herramientas que nos proporciona
el JDK en un orden determinado. En el siguiente diagrama podemos ver la
sucesión de pasos para generar un programa final Java:
5. Jerarquía de paquetes de JAVA
a) Creación de paquetes
Un paquete Java se genera sencillamente incluyendo
la palabra clave package al inicio de los módulos de
código en los que se definen las clases que formarán parte
del mismo. Trabajando en un proyecto con NetBean,
comprobaremos que en la ventana Projects los paquetes
se representan con un icono específico y actúan como
nodos contenedores, alojando los módulos .java con el
código fuente. El menú contextual del proyecto nos ofrece la
opción New>Java Package, que será el que usemos
habitualmente para crear un nuevo paquete:
Nota: Cada vez que se crea un nuevo proyecto con NetBeans se
propone la definición de un nuevo paquete, cuyo nombre sería el
mismo del proyecto, donde se alojarían los módulos de código. En
proyectos complejos, no obstante, puede ser necesaria la creación de
paquetes adicionales.
Un paquete puede contener, además de definiciones de tipos como las
clases e interfaces, otros paquetes, dando lugar a estructuras
jerárquicas de contenedores.
El diagrama siguiente representa el contenido de un paquete llamado
campusmvp, teóricamente correspondiente a un proyecto de aplicación
de contabilidad. En ese paquete de primer nivel tenemos un subpaquete
con utilidades, llamado campusmvp.util, no directamente
vinculadas con la aplicación de contabilidad. El
subpaquete campusmvp.conta contendría todos los elementos
asociados a dicha aplicación, distribuidos a su vez en un tercer nivel de
paquetes que contienen las clases correspondientes al modelo, la vista,
etc., siguiendo al patrón arquitectónico MVC. Cada uno de los módulos
de definición de clase, denominados Cuenta.java, Movimiento.java,
Vista.java, etc., comenzarían con una cláusula package indicando el
nombre completo del paquete al que pertenecen:
Nota: Todas las clases que pertenecen a un mismo paquete comparten un ámbito
común, al que pertenecerán aquellos miembros que no especifiquen explícitamente
otro tipo de visibilidad.
6. Importación de paquetes
Los paquetes Java son como cajas de herramientas, cada una de
ellas con una colección distinta de instrumentos útiles para
nuestro trabajo, a las que podemos necesitar acceder cada vez
que abordamos el desarrollo de un nuevo proyecto. Es en este
contexto donde recurriremos a la cláusula import, a fin de importar
en el ámbito actual las definiciones de otro paquete y poder
usarlas según el procedimiento habitual, creando objetos,
accediendo a los servicios de las clases, etc.
La cláusula import puede utilizarse para importar un elemento
concreto de un paquete, facilitando el nombre de este seguido de
un punto y el identificador de dicho elemento. Por ejemplo, para
importar la clase Math del paquete java.lang, pudiendo así
acceder a la constante PI y las funciones matemáticas que aporta,
bastaría con la siguiente línea:
✓ import java.lang.Math;
Es habitual que al importar un paquete nos interesen muchas
de las clases definidas en el mismo. En este caso podríamos
importarlas individualmente, usando la sintaxis anterior, o
bien podríamos recurrir a la siguiente alternativa. Esto nos
permitiría usar la clase Math, así como la clase System, la
clase Thread y muchas otras definidas en el paquete
java.lang:
✓ import java.lang.*;
En ocasiones, como ocurre con la clase Math, importamos
una clase para acceder directamente a sus miembros
estáticos, constantes y métodos, no para crear objetos a
partir de ellas, lo que nos fuerza a utilizar constantemente
la sintaxis Clase.miembro, por ejemplo Math.PI o
Math.sin(). Si tras importar la clase Math intentamos
referirnos a estos miembros simplemente por su nombre,
como se hace en la mitad superior de la siguiente imagen,
obtendremos un error. En estos casos podemos
recurrir a la sintaxis import static paquete.clase.*,
cuya finalidad es incluir en el ámbito actual los miembros
estáticos de la clase indicada. Es lo que se hace en la
mitad inferior de la siguiente imagen:
Ejemplo de import en Java
Vamos a suponer que al interior de nuestro proyecto hemos creado
cuatro clases diferentes en paquetes diferentes, cada clase se llamará
"Clase_1", "Clase_2", "Clase_3" y "Clase_4" respectivamente.
La clase número uno fue declarada en un el paquete "mis_clases.
clases_publicas.clase_1" por lo tanto quedará al interior de una carpeta
llamada "clase_1" la cual estará al interior de otra carpeta llamada
"clases_publicas" y esta a su vez estará dentro de la carpeta llamada
"mis_clases". La clase número dos se le declaró el paquete
"mis_clases.clase_2" por lo tanto ha quedado al interior de una carpeta
llamada "clase_2" la cual a su vez está al interior de la carpeta
"mis_clases". A la clase número tres se le impuso el paquete
"mis_clases", esto indica que esta estará al interior de la carpeta
"mis_clases". Por último, la clase número cuatro no tiene declarado
ningún paquete por lo tanto el paquete asignado será el paquete por
defecto, en otras palabras, esta clase se mantendrá siempre en la
carpeta raíz del proyecto (en netbeans y eclipse la carpeta raíz se llama
src).
7. LOS JARS
Los ficheros Jar (Java ARchives) permiten recopilar en un sólo fichero varios
ficheros diferentes, almacenándolos en un formato comprimido para que
ocupen menos espacio. Es por tanto, algo similar a un fichero .zip (de hecho
están basados en ficheros .zip).
Por ejemplo, si hemos recopilado todos los ficheros necesarios para ejecutar
una aplicación en un fichero "aplic.jar", podemos lanzar la aplicación desde una
terminal de texto mediante:
java -jar aplic.jar
a) Como distribuir una aplicación
a) Con solo un fichero
La máquina virtual de java es capaz de ejecutar el código
fuente de nuestro programa, también
conocido como java byte-code. Esta aplicación está formada
por un solo fichero y si quisiéramos distribuirla sólo
tendríamos que compilar el fichero obtener el “.class” y
distribuir ese fichero.
Java en su JDK nos ofrece un compilador que podemos usar
en la consola, compilaríamos nuestro fichero java y si no
tiene ningún tipo de error se genera el java “byte-code”, el
cual podríamos distribuir y cualquier persona que tuviese la
máquina virtual de java podría ejecutar el fichero con el
comando java y el nombre del fichero”.class”.
b) Con muchos ficheros
Si una aplicación está formada por más de un fichero que es
lo normal que dividamos nuestro código en múltiples clases,
por ende tendríamos que entregar todos los “.class” y
además si es que lo estructuramos en paquetes tendríamos
que entregar las carpetas que conforman esos paquetes,
teniendo que indicar cuál sería el fichero que contiene el
“main”, además de ejecutarse de una manera tediosa, si hay
cualquier cambio en las carpetas o se nos olvida alguna,
además de que no es una manera eficiente para solventar
este problema. Para evitar todos esos errores existen los
ficheros de tipo “.jar”.
b) Funcionalidad
Se puede utilizar los ficheros “,jar” como herramienta de
archivado general y también para distribuir programas Java de
todos los tipos, incluidos los applets. Los applets Java se
descargan en un navegador en solo HTTP, en lugar de hacerlo
abriendo una conexión nueva para cada componente.
El fichero “.jar” reduce el tamaño del archivo y disminuye el
tiempo de bajada al descargar. Además, el autor de un
applet puede firmar digitalmente las entradas individuales
de un archivo JAR para autenticar su origen.
c) Creación del JAR y ejecución de un JAR
a) PASOS PARA CREAR UN JAR USANDO LA CONSOLA
1. Nos situamos en la raíz donde estén todos los ficheros “.class”.
2. Creamos el directorio META-INF y el fichero MANIFEST.MF
3. Creamos el jar mediante este comando
4. jar cfm fichero.jar META-INF/MANIFEST.MF *.class
5. Podemos comprobar que el contenido del fichero es adecuado
escribiendo
6. jar tf fichero.jar
b) PASOS PARA CREAR UN JAR USANDO NETBEANS
1. Ubicar el icono de Clean and Build Proyect
2. Dar clic izquierdo al icono
3. Verificar si todo salió bien.
4. Buscar en “.jar” en el proyecto.
5. Abrir la ubicación de archivo
6. Tenemos nuestro “.jar”
c) COMO EJECUTAR UN “.jar”
Si la biblioteca Java contiene archivos ejecutables o es,
en sí misma, un archivo ejecutable,
necesitarás un programa especial para abrirla. El más
común es Java Runtime Environment (JRE. Una vez
instalado el programa, el archivo .jar puede ejecutarse
mediante un doble clic. El JRE es un entorno en tiempo
de ejecución que permite ejecutar archivos mediante una
máquina virtual –la Java Virtual Machine (JVM) – sea cual
sea el sistema operativo.
d) COMO EJECUTAR UN “.jar” USANDO LA CONSOLA
1. Abrimos la consola en la ubicación del archivo
2. Ubicar el archivo con el comando “dir”.
3. Ejecutar el comando “java -jar fichero.jar”
8. BENEFICIOS DE USAR EL FICHERO JAR
a) Seguridad:
Puedes firmar digitalmente el contenido de un fichero JAR. Los usuarios
que reconozcan tu
firma pueden permitir a tu software privilegios de seguridad que de otro
modo no tendría.
b) Disminuir el tiempo de descarga:
Si tus applets están empaquetados en un fichero JAR, los ficheros de clases y
los recursos asociados pueden ser descargados por el navegador en una sola
transacción HTTP sin necesidad de abrir una nueva conexión para cada
fichero.
c) Compresión:
El formato JAR permite comprimir tus ficheros para ahorrar
espacio.
d) Portabilidad:
El mecanismo para manejar los ficheros JAR son una parte
estándar del corazón del API de la plataforma Java.
9. CONCLUSIONES
Podemos concluir que este trabajo nos ha ayudado a comprender
las bases, el funcionamiento y organización de proyectos en Java,
desde el funcionamiento del JDK y todos los elementos que este
ofrece pasando por la organización de paquetes y la
modularización del Java. Finalizando con la exportación de un
proyecto formato “.jar”.
El jdk es la herramienta para desarrollar sofwares en Java o en
cualquier otro tipo de lenguaje.
El fichero .jar es la exportacion de el programa, con las
dependencias y archivos adicionales que se necesitan para poder
ejecutarse, eso se hace dado la complejidad que seria distribuir un
programa dividido en diferentes paquetes con todoas las clases
que compondrian este. Es importante conocer el funcionamiento
del fichero .jar para poder planear de antemado las estrategias
usada para la distribucion del proyecto.
10. REFERENCIAS BIBLIOGRÁFICAS
EL JDK (Java Development Kit)
https://www.usmp.edu.pe/publicaciones/boletin/fia/info49/too.html
JDK https://www.ecured.cu/JDK#Componentes_del_JDK
ProgramarYa https://www.programarya.com/Cursos/Java/Librerias
Paquetes en Java
https://www.campusmvp.es/recursos/post/paquetes-en-java-que-son-para-que-
se-utilizan-y-como-se- usan.aspx
Archivos.jar: Cómo abrirlos y ejecutarlos
https://www.ionos.es/digitalguide/servidores/know-how/archivos-jar/
JAR File Specification
https://docs.oracle.com/en/java/javase/16/docs/specs/jar/jar.html
Archivos JAR y de https://www.ibm.com/docs/es/i/7.4?topic=platform-java-jar-
class-files
Archivos JAR y de clase JAVA
http://gpd.sip.ucm.es/rafa/docencia/programacion/tema1/jar.html