option
Cuestiones
ayuda
daypo
buscar.php

Desarrollo de Aplicaciones Web

COMENTARIOS ESTADÍSTICAS RÉCORDS
REALIZAR TEST
Título del Test:
Desarrollo de Aplicaciones Web

Descripción:
Trabajos Voluntarios 2026

Fecha de Creación: 2026/06/06

Categoría: Otros

Número Preguntas: 270

Valoración:(0)
COMPARTE EL TEST
Nuevo ComentarioNuevo Comentario
Comentarios
NO HAY REGISTROS
Temario:

¿Qué es Jakarta Faces (JSF) dentro del estándar empresarial de Java?. Un framework de persistencia de datos basado en mapeo objeto-relacional. Un framework de interfaz de usuario (UI) basado en componentes para el desarrollo de aplicaciones web empresariales. Un motor de búsqueda y optimización de bases de datos relacionales. Una biblioteca exclusiva para la gestión de seguridad perimetral y criptografía.

¿Cuál es la principal ventaja que aporta el plugin DaisyUI en comparación con el uso de Tailwind CSS puro?. Reemplaza por completo el motor de renderizado HTML de los servidores Java. Evita tener que instalar Node.js o cualquier dependencia de JavaScript en el entorno de desarrollo. Añade clases semánticas preconfiguradas (como btn o card), reduciendo drásticamente el número de clases necesarias por componente. Traduce automáticamente código Java directo a hojas de estilo en cascada.

En la maquetación de interfaces con DaisyUI, ¿qué sistema se utiliza principalmente para el "Posicionamiento Dinámico"?. Tablas HTML tradicionales (<table>). Flexbox (Flex), para organizar el espacio y alinear elementos de forma flexible. Posicionamiento absoluto mediante coordenadas fijas en píxeles. Marcos flotantes complejos basados exclusivamente en float: left.

¿Qué utilidad tiene el sistema de rejilla (Grid) en el desarrollo de la interfaz de este proyecto?. Almacenar datos en caché estructurada dentro del servidor JSF. Conectar la base de datos directamente con las etiquetas visuales. Estructurar el diseño bidimensional de la página en filas y columnas para organizar los componentes de forma simétrica. Validar los campos de texto obligatorios de un formulario.

¿Qué componente de DaisyUI se describe como ideal para lograr "Adaptabilidad" (Responsive) mediante un panel lateral desplegable?. Toast. Drawer. Modal. Navbar.

Al trabajar con formularios en JSF y DaisyUI, ¿dónde se deben aplicar las clases semánticas de diseño para mantener la lógica de servidor intacta?. En un archivo externo de configuración XML del servidor. Dentro de las propiedades de los Beans gestionados (@ManagedBean). Directamente en el atributo styleClass de las etiquetas nativas de JSF (como <h:inputText>). En la declaración inicial de la base de datos SQL.

¿Cómo responde visualmente la interfaz de usuario ("UI Reactiva al Error") cuando una validación falla en un formulario integrado con DaisyUI?. Deteniendo el servidor de aplicaciones de manera inmediata. Cambiando dinámicamente el estilo de los campos afectados (por ejemplo, aplicando clases de alerta o bordes rojos) para guiar al usuario. Redirigiendo siempre a una página externa de error general del sistema. Borrando por completo todos los datos introducidos por el usuario sin previo aviso.

¿Qué componente se utiliza para mostrar notificaciones flotantes temporales (Toasts) en la esquina de la pantalla?. <h:outputLabel>. El contenedor Toast combinando componentes de DaisyUI con la renderización condicional de JSF. Un cuadro de diálogo nativo del sistema operativo del cliente. Una etiqueta estática de cabecera <h1>.

¿Cuál es el "puente JavaScript" recomendado en el documento para controlar diálogos interactivos (Modals) de manera programática en eventos AJAX?. El uso del atributo oncomplete en las peticiones AJAX de JSF invocando funciones del cliente como my_modal.showModal(). Volver a cargar la página web completa desde el navegador utilizando PHP. Utilizar applets de Java antiguos incrustados en el explorador. Modificar los archivos del núcleo del framework Jakarta Faces.

¿De qué manera se puede cambiar la apariencia estética global de toda la aplicación JSF (por ejemplo, pasar de tema claro a modo oscuro u otros estilos temáticos)?. Reescribiendo todo el código CSS personalizado desde cero. Modificando dinámicamente el atributo data-theme en la etiqueta raíz <html> gracias al soporte nativo de más de 30 temas de DaisyUI. Reiniciando el servidor web de Jakarta EE con una configuración distinta. Cambiando de base de datos relacional.

¿Cuál es uno de los problemas principales del enfoque tradicional de maquetación con CSS en aplicaciones Jakarta Faces (JSF) según el documento?. Impide el uso de lógica Java en el backend. Provoca una duplicación frecuente de estilos y dificulta mantener un diseño consistente. Hace imposible que las páginas XHTML carguen en navegadores web modernos. Fuerza a los desarrolladores a utilizar herramientas de diseño gráfico externas.

¿Cuál es la filosofía fundamental que define al concepto de "Atomic CSS"?. Escribir clases CSS masivas que controlen múltiples componentes a la vez. Utilizar exclusivamente hojas de estilo en línea dentro del atributo style="..." de HTML. Emplear clases de utilidad pequeñas y de un único propósito que controlan una sola propiedad visual. Separar el código de diseño en función de la estructura atómica de los servidores Java.

Si aplicamos la clase de utilidad mt-4 en un elemento según el estándar de Tailwind CSS mostrado en la presentación, ¿qué efecto visual y medida exacta se está configurando?. Un padding superior de 0.5rem (8px). Un alineado de texto centrado. Un borde delgado alrededor del párrafo de 1px. Un margen superior de 1rem 16px.

¿Qué tecnología utiliza principalmente Jakarta Faces (JSF) para la definición y renderizado de sus vistas?. Páginas XHTML (Facelets). Archivos puramente JavaScript (JS). Scripts de configuración en formato JSON. Hojas de estilo estructuradas en Sass.

¿Por qué se afirma en el texto que Tailwind CSS "encaja perfectamente" (fits) con Jakarta Faces?. Porque reemplaza por completo el ciclo de vida de los componentes Java de JSF. Porque trabaja directamente dentro de las páginas XHTML sin interferir con el ciclo de vida de JSF. Porque obliga a que todos los formularios se guarden de manera asíncrona. Porque requiere que el backend de Java se reprograme bajo una arquitectura de microservicios.

Para una integración rápida en etapa de desarrollo o demostraciones de un proyecto DAW, ¿cómo se integra Tailwind CSS en la página según la presentación?. Descargando un archivo comprimido binario e instalándolo en el servidor de aplicaciones Java. Incluyendo la etiqueta <script src="https://cdn.tailwindcss.com"></script> dentro del <h:head> o plantilla. Configurando un archivo XML de extensión dentro del directorio WEB-INF. Creando una clase Java con la anotación @TailwindConfiguration.

Durante el desarrollo del proyecto DAW mencionado en la presentación, ¿en qué elementos clave de la aplicación se integró y aplicó Tailwind CSS?. Únicamente en los scripts de conexión a la base de datos SQL. En la configuración de seguridad del servidor y en las peticiones HTTP REST. En la plantilla principal (layout), en los formularios y en las tablas de datos. Exclusivamente en las imágenes de fondo del sitio web.

¿Cuál de las siguientes opciones se describe como una ventaja explícita de adoptar Tailwind CSS?. Que es la herramienta ideal para la producción final utilizando su CDN directa. Que tiene un diseño adaptable (responsive design) integrado de forma nativa. Que elimina la necesidad de conocer las propiedades de CSS por parte del desarrollador. Que genera automáticamente el código Java para los Beans del backend.

¿Qué inconveniente o desafío técnico se asocia al uso de Tailwind CSS en las páginas XHTML/HTML?. Que fragmenta las bases de datos relacionales vinculadas a JSF. La presencia de listas de clases excesivamente largas en las etiquetas HTML/XHTML. Que no permite el uso de bordes ligeros o colores de fondo personalizados. La total incompatibilidad con el uso de tablas de datos estructuradas.

Al comparar Tailwind CSS con Bootstrap, ¿cuál es la principal diferencia conceptual explicada por los autores?. Tailwind está basado en componentes predefinidos, mientras que Bootstrap es puramente atómico. Bootstrap ofrece un control mucho más detallado y flexible sobre cada propiedad visual que Tailwind. Tailwind está enfocado en utilidades ofreciendo más control, mientras que Bootstrap se basa en componentes listos para usar. Bootstrap no puede ser integrado bajo ningún concepto dentro de aplicaciones Jakarta Faces.

Según los datos de la OMS presentados en el documento, ¿qué impacto tiene la discapacidad a nivel global?. Afecta al 5% de la población mundial, alcanzando los 500 millones de personas. 1 de cada 6 personas vive con alguna discapacidad, lo que representa el 16% de la población mundial. Menos de 1.000 millones de personas dependen de las tecnologías de asistencia para navegar. La accesibilidad es un problema menor que afecta únicamente al 1% de los usuarios de internet.

¿Cuáles son las características principales del lector de pantalla NVDA?. Es un software comercial de pago exclusivo para MacOS. Es una extensión web que solo funciona dentro del navegador Google Chrome. Es un lector gratuito y open source, disponible para Windows y compatible con Chrome, Firefox y Edge. Es un sistema operativo alternativo diseñado para personas con ceguera.

¿De qué manera procesa NVDA una página web para permitir la navegación del usuario?. Convierte la estructura HTML leyendo el árbol del DOM y transformándolo en audio. Analiza visualmente la pantalla mediante inteligencia artificial para describir las imágenes. Modifica el código CSS de la página para simplificar los colores y contrastes. Reorganiza el orden de los elementos alfabéticamente antes de hablar.

Al utilizar la navegación mediante la tecla 'Tab', ¿qué elementos prioriza el lector NVDA?. Lee secuencialmente todos los párrafos de texto y encabezados de la página. Salta exclusivamente entre elementos interactivos como enlaces, botones y formularios. Ignora por completo los formularios y se enfoca únicamente en el menú principal. Se desplaza de forma aleatoria por las imágenes que contienen textos alternativos.

Si tenemos dos botones en una lista de ejercicios y los programamos simplemente con el valor value="Editar", ¿qué problema de accesibilidad reportará NVDA?. El lector de pantalla se colgará al no encontrar un enlace válido. NVDA ignorará por completo el botón y no lo anunciará al pasar con el Tabulador. Anunciará el botón de forma generalizada ("Editar, botón") perdiendo el contexto de a qué ejercicio se refiere. Forzará al usuario a utilizar el ratón obligatoriamente para poder activarlo.

¿Cuál es la forma correcta de codificar un botón interactivo (como "+ Añadir ejercicio") para asegurar que NVDA y el teclado puedan interactuar con él?. Emplear una etiqueta <a> sin atributos especiales porque estéticamente es más fácil de maquetar. Usar componentes nativos de formulario como <h:commandButton> o elementos con rol de botón bien estructurados que permitan el foco del Tabulador. Utilizar una etiqueta <div> con un evento de clic en JavaScript. Dejar el elemento como texto plano y esperar que el lector lo asocie automáticamente.

En el diseño de formularios accesibles, ¿qué ocurre si colocamos un encabezado de texto <h3>Días por semana:</h3> justo antes de un menú desplegable sin una etiqueta <label> asociada?. NVDA deduce inteligentemente que el texto del encabezado es la descripción del desplegable. El menú desplegable se vincula automáticamente con el contenedor superior mediante el DOM. Se produce un error de accesibilidad debido a que el desplegable queda huérfano de una etiqueta que lo describa formalmente. El navegador web bloqueará la renderización del formulario por seguridad.

Para que un lector de pantalla asocie correctamente un texto descriptivo con un elemento de entrada (como un checkbox), ¿qué atributo técnico es indispensable utilizar en la etiqueta del Label?. El atributo styleClass para darle el tamaño correcto. El atributo for, el cual debe coincidir exactamente con el id del elemento de entrada. El atributo value dentro de una etiqueta <h3>. El atributo requiredMessage para alertar al usuario de posibles errores.

Si implementamos un elemento <label class="fs-5">Incluir calentamiento</label> pero omitimos asociarlo formalmente al checkbox correspondiente, ¿cuál será el comportamiento de NVDA?. NVDA no sabrá que ese texto describe específicamente al checkbox al interactuar con el control. El lector leerá el texto al revés debido a la falta de dirección. El checkbox se marcará automáticamente de forma predeterminada. NVDA saltará directamente al final de la página ignorando todo el contenedor.

¿Qué organismos o plataformas web se listan de forma oficial en la bibliografía del documento como recursos clave de accesibilidad?. Microsoft, Apple, Google y la suite de Adobe. W3C WAI, MDN Web Docs, Nvaccess y WebAIM. OpenAI, StackOverflow y repositorios públicos de GitHub. Solamente la Universidad de Jaén como único referente de contenidos.

¿Cuál de las siguientes es una ventaja principal de utilizar PrimeFaces en un proyecto JSF según la presentación?. Obliga a escribir todo el código de los modales desde cero usando JavaScript manual. Ofrece componentes preparados "out of the box" que aceleran enormemente el desarrollo. Elimina por completo la necesidad de usar dependencias de Maven. Requiere una curva de aprendizaje muy alta y configuraciones manuales complejas.

Para integrar PrimeFaces en un proyecto mediante Maven, ¿en qué archivo se debe añadir la dependencia correspondiente?. faces-config.xml. web.xml. pom.xml. beans.xml.

Al declarar la dependencia de PrimeFaces en Maven para un entorno moderno, ¿qué valor debe llevar la etiqueta <classifier> para asegurar la compatibilidad con Jakarta EE?. jsf. primefaces. GlassFish. jakarta.

¿Qué biblioteca o espacio de nombres (namespace) debe declararse en la cabecera de la página XHTML para poder utilizar las etiquetas de PrimeFaces (prefijo p:)?. xmlns:p="http://primefaces.org/ui". xmlns:pf="http://java.sun.com/jsf/primefaces". xmlns:p="jakarta.faces.primefaces". xmlns:h="http://xmlns.jcp.org/jsf/html".

¿Cuál es el propósito principal del atributo header en el componente <p:dialog>?. Modificar el color de fondo de todo el modal. Definir de forma sencilla el texto del título que aparecerá en la parte superior del diálogo. Enlazar el diálogo con el botón que lo activa. Controlar si el diálogo bloquea o no la pantalla de fondo.

Si queremos que un componente <p:dialog> impida por completo que el usuario interactúe con el resto de la interfaz que queda de fondo mientras esté abierto, ¿qué atributo debemos activar?. widgetVar="true". dynamic="false". modal="true". resizable="true".

En PrimeFaces, ¿cuál es la función de la propiedad widgetVar dentro de un componente como <p:dialog>?. Guardar los datos introducidos por el usuario en una base de datos relacional. Definir el identificador único del componente del lado del servidor. Proporcionar un alias o nombre de variable en JavaScript para poder controlar el componente desde el cliente (por ejemplo, con .show() o .hide()). Configurar el estilo CSS personalizado del cuadro de diálogo.

¿Cuál es la diferencia fundamental entre el componente <p:dialog> y el componente <p:overlayPanel>?. <p:dialog> se renderiza siempre en el servidor y <p:overlayPanel> solo existe en la base de datos. El diálogo flota de manera independiente y requiere control manual de apertura/cierre, mientras que el overlay panel se posiciona de forma relativa y contextual respecto a otro componente específico (usando el atributo for). El diálogo solo admite texto simple, mientras que el overlay panel permite meter botones de comandos. <p:dialog> requiere obligatoriamente Maven y <p:overlayPanel> no.

Al trabajar con un <p:overlayPanel>, ¿para qué sirve configurar el atributo dynamic="true"?. Para que el panel se mueva continuamente por toda la pantalla de forma animada. Para cambiar los colores del panel aleatoriamente cada vez que se abre. Para optimizar la red cargando el contenido del panel de forma diferida (Lazy Load), es decir, solo cuando el usuario lo solicita en lugar de cargarlo todo al renderizar la página. Para deshabilitar todas las acciones y botones internos del panel.

¿Qué combinación de comandos en JavaScript utilizarías del lado del cliente para abrir un diálogo cuya propiedad es widgetVar="miVentana"?. miVentana.show();. open.miVentana();. miVentana.display=true;. PF('miVentana').show();.

¿Cuáles son las principales desventajas identificadas al probar aplicaciones web de forma puramente manual?. Requiere conocimientos avanzados de programación, es costoso de configurar y solo funciona en servidores locales. Es un proceso lento, repetitivo y propenso a errores de ejecución. No permite interactuar con formularios de inicio de sesión ni simular la escritura de contraseñas. Depende obligatoriamente del uso de un intermediario como WebDriver para registrar los clics.

¿Qué es fundamentalmente Selenium IDE y cómo se integra en el entorno de trabajo del usuario?. Es un compilador de código Java independiente que requiere un servidor dedicado. Es una base de datos encargada de almacenar registros de auditoría de seguridad web. Es una herramienta para automatizar pruebas en páginas web que se integra directamente en el navegador. Es un framework exclusivo de backend que sustituye por completo las interfaces gráficas de usuario.

Una de las mayores ventajas de usar Selenium IDE es que permite grabar y ejecutar acciones automáticamente sin necesidad de: Disponer de una conexión activa a internet. Programar código fuente de forma manual. Utilizar selectores HTML en el formulario. Contar con un navegador web instalado.

¿Cuáles son las cuatro funciones clave que permite realizar la herramienta de Selenium IDE según lo expuesto en el flujo de trabajo?. Diseñar interfaces web, compilar bases de datos, cifrar contraseñas y monitorizar servidores. Grabar código manual, depurar scripts de red, auditar estilos CSS y simular ataques de denegación de servicio. Graba la navegación, bloquea ventanas emergentes, optimiza imágenes y crea repositorios en la nube. Grabación automática, reproducción de pruebas, validar resultados y exportar código.

¿Cuál es el orden secuencial correcto del "Flujo Básico" de automatización descrito en el documento?. Guardar acciones en un test -> Ejecutar automáticamente -> Realizar acciones manuales en la web. Grabar (el usuario realiza acciones) -> Guardar (se almacenan como test) -> Ejecutar (se repiten automáticamente). Ejecutar pruebas -> Exportar a Java -> Grabar los errores del código en caliente. Buscar selectores -> Validar mensajes de error -> Modificar el código fuente de la página web.

¿Por qué se afirma que Selenium "no ve la pantalla" y qué requiere exactamente para interactuar con la página sin perderse?. Porque utiliza inteligencia artificial visual y requiere capturas de pantalla constantes en formato PNG. Porque lee directamente el código HTML y necesita identificadores únicos denominados selectores (como XPath, ID/Name o CSS). Porque trabaja exclusivamente en la línea de comandos de la máquina virtual de Java. Porque es un lector de pantalla diseñado únicamente para auditar la accesibilidad de usuarios con discapacidad.

En el ejemplo de automatización de código Java para la validación de campos vacíos (Test 3), ¿qué método se utiliza para recuperar el mensaje de alerta del navegador?. userField.getAttribute("validationMessage");. driver.findElement(By.cssSelector("button")).click();. wait.until(ExpectedConditions.urlContains("login.xhtml"));. driver.sendKeys("error123");.

¿Cómo funciona el mecanismo interno de comunicación de Selenium para controlar las acciones reales del usuario?. Controla el sistema operativo directamente inyectando comandos de teclado a nivel de hardware. Envía órdenes directamente al código HTML sin pasar por el navegador. No controla el navegador de forma directa; utiliza un componente intermediario llamado WebDriver que interpreta y comunica las órdenes. Traduce de manera inmediata los scripts visuales a sentencias SQL que procesa el servidor backend.

Al realizar modificaciones en una aplicación web, ¿cuál es el propósito principal de reutilizar y repetir automáticamente los tests previamente guardados?. Reducir el consumo de memoria RAM y el ancho de banda del servidor. Asegurar y comprobar que los cambios nuevos incorporados no rompan las funcionalidades que ya funcionaban de antes. Traducir automáticamente la interfaz de la página a otros idiomas de programación. Evitar tener que abrir el entorno de desarrollo integrado IntelliJ.

¿Cuál de las siguientes afirmaciones define correctamente las limitaciones de Selenium explicadas en la presentación?. No se puede utilizar bajo ningún concepto en páginas web que tengan formularios de Login. Requiere obligatoriamente que el código sea exportado a Java para poder ejecutarse por primera vez. Está limitado para casos muy complejos y no sustituye por completo al testing manual, debiendo combinarse ambos para asegurar la máxima calidad. No dispone de documentación oficial en internet ni guías de uso comunitarias para resolver dudas de desarrollo.

En las versiones clásicas de JSF (JSF 1.x), ¿cuál era el principal inconveniente de la navegación explícita en aplicaciones reales de gran tamaño?. Obligaba a almacenar todos los datos del usuario de forma estricta en el ámbito SessionScoped. Requería una dependencia total del archivo faces-config.xml, provocando un crecimiento insostenible y un mantenimiento complejo ("el infierno de XML"). No permitía el uso de componentes enriquecidos ni la actualización de vistas mediante tecnologías asíncronas. Forzaba el uso del patrón Post-Redirect-Get de manera automática sin control del desarrollador.

¿Qué principio o filosofía introduce la navegación implícita para mejorar el mantenimiento en JSF?. Configuración por encima de Convención (Configuration over Convention). Inyección de Dependencias Estricta (Strict Dependency Injection). Convención sobre Configuración (Convention over Configuration). Aislamiento de Capas Orientado a Aspectos (Aspect-Oriented Isolation).

En la navegación implícita, si un método de acción de un Bean devuelve directamente la cadena /comida/comida, ¿qué extensión de archivo buscará automáticamente JSF de acuerdo con las convenciones estándar del framework?. .jsp. .xhtml. .html. .jsf.

En el ejemplo de código de navegación implícita proporcionado en el documento, ¿qué sucede si el método Login() devuelve el valor null?. El usuario es redirigido de forma inmediata a la página de error por defecto del servidor. La sesión del usuario se invalida automáticamente por motivos de seguridad. El flujo se detiene y la aplicación arroja una excepción de puntero nulo (NullPointerException). El usuario permanece exactamente en la misma página en la que se encontraba.

Para evitar que el navegador reenvíe accidentalmente los datos de un formulario al pulsar el botón de actualizar (F5), ¿qué parámetro de redirección se añade en la cadena de retorno dentro del patrón Post-Redirect-Get?. ?faces-redirect=true. ?action-redirect=post. &implicit-nav=true. ?clear-form=true.

Al diseñar un proceso largo o de múltiples pasos (como el carrito de la compra de BurgerHub compuesto por elegir producto, añadir observaciones y confirmar pedido), ¿qué limitación presenta el uso exclusivo de RequestScoped?. Sobrecarga drásticamente la memoria del servidor de aplicaciones al retener objetos obsoletos. Es un ciclo de vida demasiado corto que olvida por completo los datos recopilados al cambiar de una vista a otra. Bloquea el uso de llamadas asíncronas mediante AJAX. Impide estructurar el proyecto en subcarpetas organizadas dentro del directorio webapp.

¿Cuál es el principal inconveniente de recurrir a un ámbito de sesión (SessionScoped) para almacenar los datos temporales de un asistente de múltiples pasos?. Los datos se borran inmediatamente en cuanto el usuario navega a la segunda pantalla del proceso. No permite interactuar con bases de datos relacionales ni usar inyección de dependencias de Jakarta. Es un ciclo de vida demasiado largo que llena la memoria RAM del servidor con datos redundantes ("basura") una vez finalizado el proceso. Exige configurar manualmente reglas de navegación explícitas obligatorias en el archivo web.xml.

¿Qué anotación específica se utiliza en las clases controladoras de Jakarta Inject para delimitar un Bean cuyo ciclo de vida está ligado única y exclusivamente a la duración de un Faces Flow activo?. @SessionScoped. @RequestScoped. @ViewScoped. @FlowScoped("nombre_del_flujo").

De acuerdo con la arquitectura de Faces Flows mostrada en el proyecto de demostración, ¿cómo se logra la liberación automática de recursos en el servidor?. El recolector de basura de Java elimina los datos al expirar la sesión global del navegador tras 30 minutos de inactividad. Al abandonar el flujo o finalizar el proceso, el framework destruye los Beans asociados y libera la memoria de forma desatendida. Se requiere invocar de manera obligatoria un método estructurado con la anotación @PreDestroy en todas las páginas. El archivo de configuración faces-config.xml destruye las instancias concurrentes cada vez que se ejecuta una petición AJAX.

Teniendo en cuenta la estructura de archivos de la aplicación "BurgerHub" expuesta en el PDF, ¿qué paquete e importación de Jakarta Faces proporciona soporte directo para definir la arquitectura de flujos en el código fuente?. import jakarta.faces.flow.FlowScoped;. import jakarta.enterprise.context.SessionScoped;. import jakarta.navigation.explicit.XMLRule;. import jakarta.faces.bean.ManagedBean;.

¿Cuál de las siguientes afirmaciones describe mejor una característica histórica y de diseño de la arquitectura de validación de Spring?. Se creó basándose estrictamente en las especificaciones del estándar Bean Validation de Java. Spring diseñó su propia arquitectura de validación para ser agnóstica antes de que existiera el estándar de Java. Obliga a que la lógica de validación esté acoplada directamente dentro del modelo de datos. Solo permite realizar validaciones mediante anotaciones como @NotBlank o @Size.

En la validación por anotaciones de Spring, si queremos asegurar que un campo de texto no se envíe vacío ni contenga únicamente espacios en blanco, ¿qué anotación es la más adecuada?. @Min. @Size. @Max. @NotBlank.

¿Cuál es la principal diferencia entre la invocación "Automática" y la "Manual" de las validaciones?. La automática requiere configurar un servidor externo y la manual se ejecuta en el navegador. La automática usa las anotaciones de Java Standard y la manual solo funciona con bases de datos. La automática utiliza anotaciones como @Valid o @Validated delegando la interceptación en Spring, mientras que la manual implica invocar directamente al método .validate() teniendo un control total del cuándo y cómo. La automática es exclusivamente de alcance global y la manual es de alcance local obligatoriamente.

Si se desea centralizar por completo un único validador compartido para toda la arquitectura del sistema, ¿qué tipo de alcance de validación se está aplicando?. Alcance Local. Alcance por Anotaciones. Alcance Global. Alcance Restringido.

¿Cuáles son los dos métodos core o fundamentales que define la interfaz Validator de Spring?. validate() y rejectValue(). supports() y validate(). supports() y rejectIfEmptyOrWhitespace(). initBinder() y validate().

¿Cuál es la función exacta del método supports(Class<?> clazz) dentro de un validador personalizado de Spring?. Ejecutar la validación lógica de los datos de negocio del formulario. Almacenar los errores detectados en la vista JSP. Determinar si el validador puede manejar o es compatible con la clase proporcionada. Vincular el validador de forma exclusiva a un controlador local.

Dentro de la implementación de la validación lógica, ¿para qué se utiliza la utilidad ValidationUtils.rejectIfEmptyOrWhitespace()?. Para comprobar de forma automática si un campo obligatorio está vacío o solo contiene espacios en blanco, registrando el error si se cumple. Para obligar a que un número entero sea estrictamente positivo o mayor que cero. Para limpiar los espacios en blanco de un texto antes de guardarlo en la base de datos. Para saltarse las validaciones locales de un controlador específico.

¿Cuál es la diferencia conceptual entre los métodos rejectValue() y reject() al capturar errores con el objeto Errors o BindingResult?. rejectValue() borra el valor del campo y reject() cancela la petición HTTP. rejectValue() se utiliza para errores globales del formulario y reject() para errores específicos de un campo. Ambos métodos hacen exactamente lo mismo y se pueden intercambiar sin cambiar los parámetros. rejectValue() se emplea para registrar errores específicos de un campo, mientras que reject() registra errores globales del formulario.

¿Qué anotación de Spring permite aplicar una configuración de validación personalizada local, vinculando un validador específico a un único controlador individual sin afectar a otros formularios?. @Component. @InitBinder. @Valid. @Validated.

Durante la validación avanzada en el flujo de negocio (por ejemplo, en la creación de alquileres de vehículos), ¿qué ventaja clave ofrece utilizar la interfaz Validator en lugar de simples anotaciones individuales en los campos?. Permite comprobar relaciones complejas entre varios campos del formulario y mostrar errores personalizados. Permite prescindir por completo del uso del objeto BindingResult. Hace que la aplicación sea compatible únicamente con servidores basados en JSP antiguos. Ejecuta las validaciones directamente en el navegador del cliente antes de enviar la petición.

¿Qué es Apache JMeter y cuál es su principal propósito de diseño?. Una herramienta de desarrollo de software para programar aplicaciones web en Java. Un software de código abierto diseñado principalmente para realizar pruebas de carga y rendimiento. Un sistema operativo ligero que permite gestionar servidores simultáneos. Un entorno de desarrollo integrado (IDE) para la automatización de interfaces de usuario.

¿Para qué se utiliza específicamente la herramienta JMeter al evaluar una aplicación?. Para compilar el código fuente y verificar errores sintácticos antes del despliegue. Para simular la interfaz gráfica y asegurar que los colores sean correctos. Para llevar al sistema al límite e identificar fallos, caídas y evaluar tiempos de respuesta con usuarios simultáneos. Para cifrar las bases de datos bancarias contra accesos no autorizados.

¿Cuál de las siguientes es una característica y ventaja técnica clave de JMeter?. Funciona exclusivamente en entornos Windows debido a su arquitectura. Funciona en Windows, Linux y macOS gracias a que está basado en Java. Carece de una interfaz gráfica, operando únicamente por línea de comandos. Consume una cantidad mínima e insignificante de recursos en cualquier equipo.

Aunque JMeter es una herramienta muy potente y gratuita, ¿cuál de las siguientes opciones representa una limitación?. No permite ver gráficos ni métricas detalladas del rendimiento. Está limitado únicamente al protocolo HTTP, sin soportar otros protocolos. Puede consumir muchos recursos del equipo y requiere configuración avanzada para pruebas complejas. Es un software propietario de pago que requiere licencias costosas por usuario virtual.

Al trabajar en entornos Linux y macOS, ¿qué archivo se debe ejecutar desde la carpeta "bin" para iniciar la interfaz de JMeter?. jmeter.bat. jmeter.log. jmeter.properties. jmeter.sh.

Dentro de la interfaz y organización de pruebas en JMeter, ¿cómo se denomina el componente que representa al proyecto completo?. Thread Group. Test Plan. Sampler. Listener.

¿Cuál es la función principal del elemento denominado "Thread Group" en un Test Plan de JMeter?. Almacenar las contraseñas y credenciales de administración del servidor. Simular los usuarios virtuales que realizarán las peticiones simultáneas sobre la web. Mostrar los resultados de las métricas mediante gráficos interactivos. Definir el formato de cabecera y el tipo de contenido que se envía en una petición.

Dentro de los componentes principales de JMeter, ¿qué es un "Sampler"?. El elemento que recopila y resume las métricas finales de rendimiento. La variable reutilizable definida por el usuario para no repetir valores manualmente. La acción concreta que ejecutan los usuarios virtuales, como una petición HTTP. El archivo de configuración de propiedades internas del software.

Si deseas examinar detalladamente el resultado de cada una de las peticiones lanzadas de forma individual, ¿qué Listener específico deberías añadir?. Summary Report. Graph Results. View Results Tree. Header Manager.

Al realizar una prueba de rendimiento más avanzada que requiera un proceso de Login, ¿qué componente se encarga específicamente de mantener la sesión activa entre las peticiones?. User Defined Variables. Cookie Manager. ViewState de JSF. Summary Report.

En la integración de PrimeFaces en proyectos basados en JSF, ¿cuál es el propósito fundamental de esta biblioteca de componentes de interfaz de usuario?. Sustituir por completo el ciclo de vida estándar de los servlets de Java de forma aislada. Proveer un conjunto enriquecido de componentes visuales avanzados listos para usar que facilitan el desarrollo de interfaces ricas y dinámicas en aplicaciones JSF. Eliminar la necesidad de utilizar Beans administrados (Managed Beans) o controladores en el backend. Forzar el renderizado exclusivo de aplicaciones en entornos móviles sin compatibilidad con escritorio.

El componente p:carousel permite paginar y mostrar datos de forma cíclica o estática. ¿Para qué se utiliza el atributo responsiveOptions dentro de este componente?. Para definir de manera automática las consultas de bases de datos asociadas a los elementos del carrusel. Para especificar la velocidad en milisegundos con la que se desplazan los elementos del carrusel de forma automática. Para adaptar el número de elementos visibles (numVisible) y los que se desplazan (numScroll) en función del tamaño de la pantalla del dispositivo (breakpoints). Para alternar entre la orientación vertical y horizontal de los elementos de manera aleatoria.

En el uso avanzado del componente p:dataTable, se requiere implementar filtrados de datos. Si se desea realizar una comprobación flexible donde el valor contenga el texto introducido, ¿cuál es el filterMatchMode que se debe configurar por defecto?. exact. startsWith. contains. endsWith.

Al configurar un menú desplegable de filtrado dentro de una columna de p:dataTable mediante un componente como p:selectOneMenu, ¿qué atributo de la columna (p:column) es imprescindible asociar para que PrimeFaces sepa contra qué propiedad del bean realizar la validación del filtro?. sortBy. filterBy. styleClass. rendered.

El componente p:dataView es un elemento de visualización de datos avanzado. ¿Cuáles son los dos modos de visualización principales que integra nativamente y que pueden conmutarse mediante un botón de alternancia (toggle)?. Modo Formulario y Modo Gráfico de barras. Modo Lista (list) y Modo Cuadrícula/Tarjetas (grid). Modo Carrusel y Modo Desplazamiento Infinito. Modo Árbol járquico y Modo Tabla editable.

En la implementación del filtrado dentro de un p:dataView, se menciona el uso de un buscador con p:inputText combinado con el evento JavaScript onkeyup. ¿Cuál es la función del selector JS interno de PrimeFaces referenciado en este escenario?. Recargar completamente la página web mediante una petición síncrona HTTP GET. Localizar el cuadro de texto y disparar el filtrado de forma automática sobre el componente visual sin necesidad de invocar manualmente código Java complejo en el cliente. Encriptar el texto introducido antes de enviarlo a la base de datos subyacente. Limpiar el contenido de todos los formularios de la sesión del usuario de inmediato.

Cuando se utiliza un p:commandButton para realizar una acción de eliminación Ajax dentro de una fila de un componente de datos, ¿qué función cumple el atributo update="formDataView:dvFisiosmensajes"?. Redirigir al usuario hacia una nueva vista externa de confirmación. Modificar los estilos CSS de toda la aplicación web en tiempo de ejecución. Indicar a PrimeFaces qué componentes específicos de la interfaz deben actualizarse de forma asíncrona con la respuesta del servidor, evitando recargar toda la página. Forzar la descarga en segundo plano de un archivo PDF con el reporte de los datos.

El componente p:scroller (o mecanismos de scroll) se utiliza comúnmente para la carga dinámica de datos. ¿Cuál es el principal beneficio de usar una estrategia de "Lazy Loading" o carga perezosa en componentes que manejan grandes volúmenes de registros?. Descargar todos los registros del servidor de una sola vez para que el navegador los guarde en memoria caché local. Cargar únicamente los datos requeridos para la vista actual (por demanda) a medida que el usuario interactúa o hace scroll, optimizando el rendimiento y el consumo de memoria del servidor y la red. Cifrar las propiedades de los Beans administrados para evitar ataques de inyección SQL. Convertir automáticamente las tablas HTML en imágenes estáticas de alta resolución.

Al diseñar la maquetación de los elementos en el modo cuadrícula de un visor de datos (p:dataViewGridItem), ¿qué tipo de estructura visual se acostumbra a emplear para organizar la información de manera elegante y centrada?. Listas ordenadas HTML estándar sin estilos asociados. Marcos lógicos obsoletos (iframes) incrustados. Tarjetas de diseño estructurado (como las tarjetas Bootstrap u hojas de estilo adaptadas de PrimeFlex) que incluyen avatares, textos alineados y botones de acción en el pie. Tablas anidadas con bordes gruesos e imágenes en miniatura distorsionadas.

Dentro del ciclo de vida de una aplicación JavaServer Faces (JSF) que integra PrimeFaces, ¿cómo se comunican los componentes del frontend de PrimeFaces con la lógica de negocio del backend?. Mediante llamadas directas a procedimientos almacenados de la base de datos saltándose la capa de la aplicación. A través de expresiones de lenguaje de expresiones (EL) como #{miBean.metodo()} que enlazan las propiedades y métodos de los Managed Beans o Named Beans con los atributos de los componentes. Únicamente mediante la persistencia de archivos de texto plano en el servidor local. Usando scripts embebidos de PHP dentro del código fuente XHTML de las páginas.

¿Cuál es el propósito principal de la herramienta HtmlUnit en el desarrollo de aplicaciones web?. Servir como servidor web de producción para desplegar interfaces gráficas. Emular navegadores web (como Chrome o Firefox) para realizar pruebas automatizadas sobre páginas web. Diseñar las hojas de estilo CSS de las interfaces de usuario. Reemplazar por completo el uso de bases de datos relacionales en la fase de pruebas.

Qué significa que HtmlUnit funcione como un "Navegador Headless"?. Que requiere obligatoriamente una GPU de alta gama para renderizar los elementos en pantalla. Que es un navegador web que carece de interfaz gráfica de usuario (GUI) y procesa todo en segundo plano. Que bloquea automáticamente cualquier intento de navegación entre distintas páginas web. Que solo puede ejecutarse en ordenadores locales y nunca en servidores de integración continua.

¿Qué motor utiliza internamente HtmlUnit para procesar HTML, CSS y JavaScript en segundo plano?. V8 Engine. Gecko. Rhino. Blink.

¿Cuál de las siguientes ventajas operativas ofrece HtmlUnit en el entorno de pruebas E2E e Integración Continua (CI/CD)?. Ofrece una representación en píxeles exacta y en tiempo real para el diseño visual del usuario. Aumenta la popularidad de la aplicación en las tiendas de software. Su ejecución es rápida, invisible en servidores y elimina el coste de GPU y pantalla al no renderizar píxeles. Que solo puede ejecutarse en ordenadores locales y nunca en servidores de integración continua.

¿Qué método de HtmlUnit se utiliza para cargar una URL específica y devolver la página resultante en forma de objeto?. webClient.getCurrentWindow(). HtmlUnit.getPage(url). pagina.getForms().getFirst(). page.getHtmlElementById("login").

Si queremos capturar y manipular un elemento del DOM utilizando una expresión de ruta como "//div[@class='error']", ¿cuál es el mecanismo adecuado proporcionado por HtmlUnit?. Búsqueda por ID mediante getHtmlElementById. Búsqueda por Nombre mediante getElementByName. Búsqueda por XPath mediante getByXPath. Búsqueda automática mediante getFormByName.

Al automatizar un formulario web con HtmlUnit, ¿qué método se utiliza sobre un campo de texto (como HtmlTextInput) para introducir datos simulados?. click(). type("texto"). asXml(). setCssEnabled(true).

Durante la validación de mensajes en pantalla, ¿qué método se expone en el código para obtener el código de estado HTTP (como 200, 404 o 405) de la respuesta?. resultado.asNormalizedText(). resultado.getUrl(). resultado.getWebResponse().getStatusCode(). webClient.getCookieManager().

De acuerdo con las conclusiones del trabajo, ¿qué problema de compatibilidad obligó frecuentemente a los autores a deshabilitar CSS y JavaScript en los ejemplos de uso?. La falta de memoria RAM en los servidores Git. Problemas de compatibilidad interna en la simulación de estos elementos. Que el motor Rhino no soporta en absoluto el código HTML básico. Una imposición de la dependencia declarada en el archivo pom.xml.

¿Cuál es una de las desventajas o limitaciones señaladas de HtmlUnit al compararla con herramientas competidoras en el mercado actual?. Es una herramienta excesivamente pesada que consume demasiada GPU. No permite gestionar automáticamente el historial de navegación ni las cookies. Decrece en popularidad frente a otras alternativas consolidadas como Selenium. Requiere de forma obligatoria levantar ventanas gráficas de Chrome o Firefox para funcionar.

¿Cuál es el problema principal de utilizar una arquitectura con estado (Stateful) donde las imágenes se guardan en el disco local del servidor?. No se pueden renderizar las imágenes de forma directa en el navegador. Genera problemas de volatilidad y limita la escalabilidad horizontal cuando hay múltiples servidores. Obliga a que la base de datos almacene las imágenes en formato binario bin/blob de manera obligatoria. Requiere obligatoriamente de una cuenta de pago de alto coste en Google Cloud desde el primer día.

A diferencia de un disco duro tradicional, ¿cómo define el documento a Google Cloud Storage (GCS)?. Como un sistema de archivos jerárquico basado en carpetas físicas indexadas por Java. Como un almacenamiento de objetos que utiliza contenedores llamados "Buckets". Como una base de datos relacional optimizada para metadatos binarios. Como una extensión de red local conectada mediante protocolos SSH.

¿Cuál es la diferencia fundamental entre el enfoque de uso de Google Drive y el de Google Cloud Storage (GCS)?. Google Drive solo acepta documentos de texto y GCS está reservado únicamente para archivos multimedia. Google Drive requiere obligatoriamente permisos IAM avanzados y GCS utiliza exclusivamente credenciales JSON públicas. Google Drive está pensado para que usuarios interactúen directamente (subir, compartir, editar), mientras que GCS está diseñado para la integración automática y masiva en aplicaciones. Google Drive no permite almacenamiento masivo y GCS es una herramienta de uso interactivo de escritorio.

Para gestionar la seguridad y los accesos en Google Cloud Storage, el sistema se basa en: IAM (Gestión de Identidades y Accesos) y el principio de menor privilegio. Cifrado manual por clave pública/privada gestionado desde el servidor Jakarta EE. El bloqueo estricto de cualquier petición HTTP externa que no provenga de Cyberduck. Un archivo de configuración XML guardado en la carpeta Web-INF del servidor local.

¿Qué herramienta externa se menciona en la presentación para conectarse de forma visual y gestionar los archivos de Google Cloud Storage de manera similar a un cliente FTP?. FileZilla Enterprise. Google Drive Sync. Cyberduck. Jakarta Explorer.

¿Cuál es el recorrido exacto que realiza la foto en el flujo de datos desde que se interactúa con ella en la aplicación web hasta su destino final?. Navegador -> Servicio Java -> API de Google -> Base de datos local. Navegador -> JSF -> Servicio Java -> API de Google (Cloud Storage) -> Google Cloud Storage (Bucket). JSF -> Cyberduck -> API de Google -> Navegador. Navegador -> Base de datos relacional -> JSF -> API de Google.

Dentro de la implementación técnica descrita, ¿cómo se logra una persistencia eficiente en la base de datos de la aplicación?. Las imágenes se guardan completas dentro de la base de datos en formato Base64. La base de datos almacena únicamente la URL del archivo, manteniéndose rápida y ligera. Se realiza una copia binaria exacta en el disco del servidor relacional. La base de datos se conecta directamente a Cyberduck de forma interna.

¿En qué consiste el mecanismo de "Renderizado directo" de las imágenes en el cliente?. El servidor Java debe descargar el archivo, procesarlo y enviarlo transformado en HTML al navegador. El navegador web del cliente descarga la imagen directamente desde el servidor de Google a través de su URL. Las imágenes se previsualizan de forma local usando Inteligencia Artificial generativa. Requiere la instalación de un plugin específico de Google Cloud en el navegador del usuario.

¿Qué modelo de costes aplica Google Cloud Storage (GCS)?. Una tarifa plana mensual fija independiente del almacenamiento. El uso es completamente gratuito sin importar el tráfico o espacio consumido. Un modelo de 'pago por uso' basado en los servicios y recursos consumidos. Cobro por número de usuarios registrados en la aplicación Java.

Como conclusión del proyecto, ¿qué beneficios aporta implementar una Arquitectura Stateless (Sin Estado) externalizando los archivos a GCS?. Desacopla el almacenamiento del servidor de aplicaciones, reduce la carga del servidor/base de datos y garantiza disponibilidad global con baja latencia. Obliga a que la aplicación dependa permanentemente de una conexión activa con Cyberduck. Permite sustituir por completo el servidor Jakarta EE y el framework JSF por Inteligencia Artificial. Elimina la necesidad de utilizar un navegador web para que los usuarios vean las imágenes.

¿Cuál es el propósito principal de MicroProfile OpenAPI?. Configurar la conexión directa con bases de datos relacionales de forma automatizada. Generar la documentación on-line de APIs REST en Jakarta REST de forma integrada. Crear pruebas unitarias automáticas para verificar la lógica de negocio de los endpoints. Cifrar los mensajes intercambiados a través del protocolo HTTPS para garantizar la seguridad.

¿Cómo funciona el proceso de generación de la documentación mediante MicroProfile OpenAPI?. Requiere que el programador transcriba manualmente el código fuente a un formato de texto enriquecido. Realiza un escaneo automático del código buscando anotaciones específicas para luego realizar la entrega. Compila la aplicación en un entorno aislado para medir el rendimiento de los tiempos de respuesta. Traduce de manera automática el código Java de los endpoints a procedimientos almacenados en SQL.

¿Bajo qué formatos se puede entregar el contrato generado por MicroProfile OpenAPI?. XML y HTML5 de manera exclusiva. YAML y JSON. Archivos binarios EXE y ficheros de texto plano TXT. CSV y hojas de cálculo de Excel (XLSX).

¿Qué herramienta se menciona para proporcionar la interfaz visual interactiva de la documentación?. Postman Enterprise Edition. Swagger UI. Jakarta Web Console. Apache Maven Reports.

¿Qué anotación se utiliza a modo de "portada de la documentación" para definir los metadatos generales de la API?. @Operation. @Schema. @OpenAPIDefinition. @Parameter.

Dentro de @OpenAPIDefinition, ¿qué elementos se emplean para declarar los datos generales del proyecto y las rutas de despliegue?. info (como @Info) y servers (con @Server). endpoints y databases. responses y queryParams. groupId y artifactId.

Si queremos describir la acción que realiza un endpoint GET o DELETE específico, ¿qué anotación debemos incorporar?. @Schema. @ApiResponse. @Operation. @Parameter.

¿Para qué sirve la anotación @ApiResponse en el contexto de la documentación de endpoints?. Para limitar el número de peticiones por minuto que un cliente puede hacer a la API. Para documentar "las expectativas" y los códigos de respuesta del servidor (ej. 200, 404, 204). Para formatear de manera forzada todos los datos de salida únicamente en formato XML. Para mapear las tablas de la base de datos con las respuestas HTTP de los métodos.

¿Qué anotación es idónea para detallar las propiedades individuales del modelo de datos, como las restricciones y ejemplos de un objeto "Producto"?. @Parameter. @OpenAPIDefinition. @Schema. @GET.

De acuerdo con la sección de implementación de las prácticas, ¿en qué archivo del proyecto se debe añadir la dependencia de Swagger para Jakarta?. web.xml. settings.gradle. beans.xml. pom.xml.

¿Cuál es el objetivo principal de la herramienta de automatización web Playwright desarrollada por Microsoft?. Sustituir completamente las pruebas unitarias por pruebas de carga masiva. Conseguir que las pruebas de interfaz de usuario (E2E) sean tan fiables y rápidas como las pruebas unitarias. Proveer un entorno exclusivo para ejecutar scripts únicamente en navegadores basados en Chromium. Automatizar únicamente aplicaciones de escritorio bajo licencias comerciales cerradas.

Dentro de la arquitectura básica de Playwright, ¿cuál es la principal ventaja de utilizar un 'BrowserContext'?. Permite recargar el motor del navegador completo en cada caso de prueba de forma económica. Es el punto de entrada que se instancia obligatoriamente múltiples veces por cada proceso de test. Representa una sesión aislada equivalente a un perfil nuevo de navegador, lo que permite un aislamiento total de forma muy barata/ligera. Sirve únicamente para renderizar pestañas físicas en entornos donde no existe una interfaz gráfica.

En el ecosistema de automatización web, ¿qué se entiende por la característica de 'Auto-espera' (Auto-wait) de Playwright?. La necesidad de añadir esperas manuales fijas (como Thread.sleep) antes de cada clic para que la web cargue. El mecanismo por el cual Playwright realiza comprobaciones previas automáticas (visibilidad, estabilidad, receptividad) antes de interactuar con un elemento. El bloqueo del hilo principal de ejecución durante un tiempo estándar de 30 segundos en cada instrucción. Un sistema que pausa la ejecución del código solo cuando detecta un fallo crítico en la red.

Al escribir pruebas con la API de Playwright en Java, ¿cuál es la sintaxis correcta para instanciar la herramienta y lanzar un navegador Chromium en modo 'Headless' de manera limpia?. Playwright playwright = Playwright.create(); Browser browser = playwright.chromium().launch();. Chromium ch = new Chromium(); ch.start(headless=true);. Playwright pw = new Playwright(); Browser b = pw.launch("chromium");. BrowserContext context = Playwright.getChromiumContext();.

De acuerdo con la sección de Adopción e Impacto en el Mercado, ¿por qué Playwright ha experimentado un crecimiento tan drástico frente a herramientas tradicionales como Selenium?. Porque Selenium ha dejado de ser una herramienta de código abierto y ahora requiere suscripción. Debido a la arquitectura moderna de Playwright que reduce drásticamente los falsos positivos (flakiness), ofreciendo mayor velocidad y herramientas nativas avanzadas. Porque Playwright es la única herramienta que soporta el lenguaje de programación Java. Debido a que Playwright está optimizado exclusivamente para aplicaciones web heredadas del año 2010.

¿Cuál de las siguientes herramientas integradas de Playwright permite grabar las acciones del usuario en el navegador para generar automáticamente el código de la prueba en Java?. Trace Viewer. Playwright Inspector. UI Mode. Codegen.

Si necesitas realizar una depuración post-mortem visual de un test que ha fallado en un servidor de Integración Continua (CI), ¿qué herramienta nativa de Playwright deberías utilizar para revisar capturas, red y la ejecución paso a paso?. Maven Surefire Plugin. Trace Viewer. JUnit 5 Console. GitHub Copilot.

¿Qué función cumple el 'UI Mode' dentro del flujo de trabajo de desarrollo con Playwright?. Ejecutar las pruebas en modo oculto (background) sin consumir recursos de la tarjeta gráfica. Convertir el código Java automáticamente a lenguaje Python de forma visual. Ofrecer una experiencia interactiva en tiempo real donde se pueden ver, ejecutar, filtrar y explorar el árbol de componentes (locators) mientras se escribe el test. Generar reportes estáticos exclusivamente en formato PDF para los directores de proyectos.

Al integrar Playwright con el framework de pruebas JUnit 5, ¿cuál es el propósito de utilizar las anotaciones '@BeforeEach' y '@AfterEach'?. Configurar que las pruebas se ejecuten únicamente si el servidor externo de base de datos está inactivo. Definir bloques de código para inicializar el entorno aislado (como crear el BrowserContext y la Page) antes de cada test, y cerrarlos limpiamente al finalizar. Indicarle a Maven qué plugins externos deben descargarse desde el repositorio central. Excluir de forma permanente la ejecución de un caso de prueba si este llega a fallar de manera intermitente.

En el apartado de conclusiones y comparativas del documento, ¿qué beneficio estratégico clave aporta el uso de Playwright a los estudiantes que se incorporan al sector tecnológico?. Les exime de tener que aprender cualquier lenguaje de programación formal. Permite un aprendizaje ágil y alcanzar un nivel profesional de pruebas sin una curva de aprendizaje compleja, gracias a herramientas visuales como Codegen y Trace Viewer. Les otorga una certificación automática avalada directamente por el consorcio W3C. Les obliga a especializarse únicamente en el desarrollo de interfaces móviles nativas de iOS.

¿Cuál de las siguientes opciones describe mejor a "simple-openai"?. Es la biblioteca oficial de OpenAI desarrollada en Python para la optimización de servidores. Es una biblioteca Java no oficial, idiomática y minimalista, diseñada para consumir la API de OpenAI con menos código repetitivo. Un framework de frontend reactivo empleado para diseñar interfaces de herbolarios. Una plataforma en la nube exclusiva para el almacenamiento de imágenes en formato Base64.

¿Qué versión mínima de Java se requiere para integrar la biblioteca "simple-openai"?. Java 8. Java 17. Java 11+. Java 21.

Desde el punto de vista arquitectónico, ¿cómo gestiona "simple-openai" las llamadas de red para evitar dependencias externas?. Utiliza un cliente personalizado basado en Apache HTTPClient de terceros. Emplea de manera nativa el HttpClient propio de Java. Depende obligatoriamente de librerías de red externas como Retrofit o OkHttp. Realiza consultas síncronas bloqueantes delegadas a un script externo de Node.js.

¿Qué ventaja ofrece el uso de "CompletableFuture" y el método ".join()" en la petición construida al backend del proyecto?. Transforma las respuestas de texto automáticamente en imágenes de catálogo. Permite realizar mapeos de JSON mediante la librería Jackson de forma síncrona y bloqueante. Permite una gestión eficiente de hilos mediante promesas nativas de Java, ejecutando llamadas asíncronas sin bloquear el servidor. Sirve para encriptar la SILICONFLOW_API_KEY en variables de entorno del sistema.

¿Cómo se logra la "neutralidad de proveedor" en el proyecto del herbolario online usando "simple-openai"?. Cambiando por completo el código de la aplicación de Java a Python según el modelo. Debido a que SiliconFlow ofrece una API 100% compatible con la de OpenAI, permitiendo usar el mismo cliente cambiando únicamente la URL base (baseUrl). Utilizando clientes totalmente diferentes e independientes para el procesamiento de texto y la generación visual. Mediante la desconexión total de internet y el uso exclusivo de modelos locales precargados en el frontend.

En el "Asistente Botánico" (Integración 1), ¿con qué propósito se introduce un "ChatMessage.SystemMessage" en la configuración de la IA?. Para almacenar el registro de compras previas y datos bancarios del usuario. Para establecer los roles del chat, dándole identidad al modelo (ej. experto herbolario) y acotando el tono, las restricciones y el dominio de respuesta. Para enviar la duda directa (petición AJAX) redactada por el cliente desde el frontend. Para ordenar de forma automatizada la toma de fotografías comerciales de estudio.

¿Cuál es el modelo de lenguaje de texto específico y la plataforma de inferencia utilizados en la petición del chat del asistente?. GPT-4o inferido directamente en los servidores locales de Herbonatura. Qwen/Qwen2.5-7B-Instruct a través de la plataforma SiliconFlow para una baja latencia. Claude 3.5 Sonnet mediante peticiones síncronas tradicionales. FLUX.1-schnell configurado para devolver el primer contenido de texto disponible.

¿Qué modelo de Inteligencia Artificial se utiliza en la "Integración 2" para el Generador Visual de imágenes del catálogo del herbolario?. Qwen2.5-7B-Instruct de Alibaba Cloud. DALL-E 3 integrado de forma externa sin uso de Java. black-forest-labs/FLUX.1-schnell. Gemini de soporte visual PechaKucha.

¿Cuáles son las formas de salida web que el generador de imágenes de la aplicación puede proporcionar para su uso práctico en e-commerce?. Exclusivamente impresiones físicas mediante periféricos conectados al backend. Generación en Base64 o acceso directo mediante una dirección URL lista para mostrar en el frontend. Archivos vectoriales pesados no aptos para visualización en navegadores convencionales. Scripts de bases de datos relacionales sin compatibilidad multimedia.

¿Cuál es uno de los principales impactos económicos y de negocio identificados al integrar estas herramientas de IA en el herbolario?. Un aumento masivo en los costos de licencias comerciales por dependencias de red externas. Mayor necesidad de contratar fotógrafos profesionales y agencias de marketing tradicionales. Reducción drástica de costes en fotografía comercial junto con asesoramiento experto e inmediato 24/7 para el cliente sin coste manual. La migración completa del backend ligero de Java hacia silos aislados de información de proveedores.

¿Cuál es la principal motivación para utilizar Web Components según el temario de desarrollo web?. Sustituir por completo a frameworks modernos como React, Vue o Angular. Solucionar de forma nativa la duplicación de código HTML y la colisión de estilos sin depender de abstracciones o frameworks externos. Habilitar el Server-Side Rendering (SSR) de forma avanzada y automática desde el servidor. Descargar de manera anticipada e inerte todas las imágenes y recursos multimedia de la página web.

¿Cuáles son los 3 pilares fundamentales que constituyen el estándar de los Web Components?. HTML Semántico, Virtual DOM y CSS Modules. Custom Elements, Shadow DOM y HTML Templates/Slots. JSX, Shadow Root y Event Listeners. Class Extends, Polyfills y Server-Side Rendering.

En la API de Custom Elements, ¿cuál es el método del ciclo de vida que se ejecuta automáticamente cuando el elemento se inserta por primera vez en el DOM?. disconnectedCallback(). attributeChangedCallback(). adoptedCallback(). connectedCallback().

Para que el método del ciclo de vida attributeChangedCallback() funcione correctamente, ¿qué requisito obligatorio se debe cumplir en la clase del componente?. Declarar los atributos que se desean observar mediante el método estático static get observedAttributes(). Invocar obligatoriamente la función this.attachShadow({ mode: 'closed' }) dentro del constructor. Clonar la estructura del nodo usando el método tpl.content.cloneNode(false). Ejecutar una limpieza previa de los event listeners utilizando disconnectedCallback().

¿Qué problema de la "Versión 1" (V1) de los componentes de PayoZapas se soluciona al introducir el pilar de Shadow DOM (V2)?. Que el código JavaScript se volvía excesivamente verboso y difícil de leer en el IDE. La vulnerabilidad ante estilos CSS globales del proyecto que pueden colarse y romper el diseño interno del componente. La imposibilidad de interactuar con el catálogo de zapatillas de la aplicación a través de botones. La descarga anticipada de imágenes inútiles que ralentizan la carga inicial en navegadores modernos.

Al instanciar Shadow DOM mediante this.attachShadow({ mode: 'open' }), ¿cuál es la función del selector CSS :host?. Hace referencia al elemento contenedor global <body> de toda la aplicación web. Selecciona y aplica estilos directamente al propio elemento personalizado (la etiqueta raíz del Web Component). Permite modificar los estilos de las etiquetas <h5> que se encuentren fuera del componente. Sirve para heredar automáticamente la reactividad avanzada de frameworks como Vue o React.

¿Cuál es la característica principal de la etiqueta <template> dentro del pilar de "Templates y Slots"?. Se renderiza de manera inmediata en la pantalla del usuario en cuanto el navegador lee el código HTML. Permite introducir lógica de programación reactiva y enlaces bidireccionales de datos (two-way data binding). Permanece inerte en el HTML (no se renderiza, sus imágenes no se descargan ni se ejecutan sus scripts) hasta que el JS la clona intencionadamente. Reemplaza la necesidad de escribir clases de JavaScript mediante la herencia directa de HTMLElement.

¿Qué permite conseguir la etiqueta <slot> en el diseño de un Web Component?. Encapsular de forma segura los scripts para que no interactúen con el DOM principal. Definir un hueco o marcador de posición dentro del componente para que el usuario pueda rellenarlo con contenido variable desde el HTML externo sin modificar la lógica interna. Monitorear de forma automática y reactiva los cambios en las propiedades de una base de datos distribuida. Forzar al navegador a renderizar estilos exclusivos en Safari debido a limitaciones de compatibilidad.

De acuerdo con la valoración y comparación frente a frameworks del temario, ¿en qué escenario es especialmente recomendable elegir Web Components?. Cuando se requiere desarrollar una aplicación compleja que necesite un estado global centralizado muy avanzado y Server-Side Rendering integrado de base. Cuando un equipo de desarrollo ya tiene toda su infraestructura consolidada y unificada bajo un único framework como Vue. Cuando se necesita construir una librería de componentes de interfaz de usuario (UI) compartida e interoperable entre proyectos que utilicen distintos frameworks o tecnologías. Únicamente en proyectos legacy de servidor donde no se disponga de acceso a archivos de JavaScript del lado del cliente.

Respecto al soporte y compatibilidad en navegadores modernos, ¿cuál es la recomendación del temario para asegurar la máxima compatibilidad (evitando las restricciones de Safari)?. Usar siempre librerías externas de renderizado y complementos de compilación en el servidor. Utilizar exclusivamente "Customized Built-in Elements" (is="") en todos los desarrollos. Implementar siempre "Autonomous Custom Elements" (crear etiquetas completamente nuevas que heredan de HTMLElement). Limitar el despliegue de los componentes a versiones de Google Chrome anteriores a 2018.

¿Cuál es el problema principal que se busca resolver en el proyecto ReservaUJA al introducir Chart.js?. Los datos de la base de datos están corruptos y necesitan ser reparados internamente. La gestión de datos en forma de listado no siempre permite una interpretación rápida por parte del administrador. El servidor de Jakarta Faces no es capaz de procesar peticiones asíncronas de los usuarios. El catálogo de alojamientos no es accesible desde navegadores móviles antiguos.

¿Cuál es la base técnica que utiliza la biblioteca Chart.js para renderizar las gráficas directamente en el navegador del cliente?. Servlets de Java y archivos CSS estáticos. Componentes nativos del servidor Jakarta Faces. El elemento HTML <canvas> combinado con JavaScript. Gráficos vectoriales SVG generados exclusivamente desde la base de datos SQL.

Entre las ventajas principales de Chart.js descritas en el trabajo, ¿qué significa que la biblioteca sea "Responsive"?. Que responde automáticamente enviando alertas al correo electrónico del administrador. Que restringe el acceso a las gráficas según el rol de la sesión del usuario. Que no requiere conectarse a bases de datos en tiempo real. Que se adapta de forma automática al tamaño de la pantalla del dispositivo.

Para mostrar la "distribución proporcional" de los tipos de alojamientos, ¿qué tipo específico de gráfica se seleccionó en el diseño?. Línea (Line chart). Barras (Bar chart). Radar (Radar chart). Doughnut (Gráfica de dónut).

¿Cuál es el orden secuencial correcto para la integración básica y flujo de trabajo de Chart.js según la arquitectura planteada?. 1. Crear new Chart(), 2. Cargar Chart.js, 3. Crear canvas. 1. Cargar Chart.js (CDN/local), 2. Crear canvas en la vista, 3. Crear new Chart() con JavaScript. 1. Consultar base de datos, 2. Descargar imagen PNG, 3. Enlazar script. 1. Crear canvas, 2. Validar con AdminGuardVM, 3. Modificar el archivo XHTML del servidor.

¿Cómo viajan los datos dinámicos desde el servidor (Java/JSF) hacia el cliente (JavaScript) en el archivo de la vista?. Mediante cookies cifradas generadas en el framework. Utilizando los atributos personalizados data-* dentro de la etiqueta <canvas>. A través de consultas directas SQL incrustadas en el archivo .js. Usando variables globales del sistema operativo del servidor.

¿Qué componente del backend se encarga específicamente de consultar los DAOs persistentes y calcular las estadísticas e indicadores?. El archivo de scripts estáticos admin-dashboard.js. El filtro de seguridad AdminGuardVM. El ViewModel denominado DashboardVM. La etiqueta HTML <canvas id="graficoTipos">.

¿Qué mecanismo se implementó para garantizar que solo los usuarios administradores puedan visualizar el dashboard analítico?. Un script del lado del cliente que oculta el elemento canvas mediante CSS. La protección de la ruta a través de AdminGuardVM verificando que sessionScope.rol == ADMIN. Una restricción a nivel de base de datos que borra las tablas si accede otro usuario. El uso del método toBase64Image() de manera forzada en el login.

De las siguientes funciones estadísticas integradas en el DashboardVM, ¿cuál de ellas calcula la métrica correspondiente a los servicios con mayor demanda?. getTotalHoteles(). getPrecioMedioGeneral(). getDatosCiudadesChart(). getDatosServiciosChart().

¿Qué método nativo de la API de Chart.js se aprovecha en el código JavaScript para implementar la funcionalidad de descarga de la gráfica como imagen PNG?. click(). toBase64Image(). download(). createElement().

¿A través de qué elemento del sistema operativo se muestran las notificaciones de la API de HTML5?. Exclusivamente en una ventana flotante interna del propio navegador web. A través del sistema de notificaciones del propio Sistema Operativo (SO). Mediante una alerta síncrona alert() de JavaScript. Requieren de una extensión externa instalada en el sistema de archivos.

¿Cuál de las siguientes opciones describe una ventaja clave del uso de las notificaciones web mencionada en el documento?. Permiten ejecutar código en segundo plano de manera indefinida sin el permiso del usuario. Bloquean la navegación del usuario hasta que este interactúe obligatoriamente con ellas. Captan la atención del usuario incluso si este no se encuentra mirando la página web actual. Reemplazan por completo las bases de datos de autenticación del servidor.

¿En qué tipo de situaciones o funcionalidades del proyecto expuesto se decidió implementar el uso de las notificaciones?. Para el renderizado de gráficos 3D en la página principal. Para sustituir los estilos CSS y mejorar los tiempos de carga visual. En el registro e inicio de sesión, confirmaciones de compra, borrado de administradores y alertas de productos nuevos. Únicamente para el envío masivo de correos electrónicos de marketing.

¿Cuál es el primer paso imprescindible y obligatorio antes de poder mostrar una notificación al usuario en el navegador?. Solicitar explícitamente el permiso del usuario mediante Notification.requestPermission(). Instalar un certificado de seguridad SSL específico en el sistema de archivos local. Forzar al usuario a registrarse con un correo institucional de la universidad. Instalar librerías complementarias de terceros como jQuery.

¿Qué valor devuelve la propiedad de lectura Notification.permission si el usuario ha rechazado explícitamente recibir notificaciones de nuestro sitio web?. granted. default. denied. false.

Al instanciar una notificación con la sintaxis new Notification(title, options), ¿qué representa el primer parámetro (title)?. Una cadena de texto opcional que define la URL del icono de la notificación. Una cadena de texto obligatoria que define el título principal que se mostrará en la notificación. Un objeto JSON con todas las propiedades de configuración avanzada. El tiempo en milisegundos que la notificación permanecerá visible en pantalla.

Dentro del objeto de opciones de una notificación, ¿cuál es la función de la propiedad icon?. Especificar el texto del cuerpo secundario del mensaje. Modificar la forma geométrica de la ventana emergente en el sistema operativo. Indicar la URL de la imagen o logotipo que aparecerá junto al título de la notificación. Enlazar un archivo de audio para que se reproduzca de fondo.

¿Qué evento de JavaScript se dispara de forma automática en el ciclo de vida de la notificación cuando el usuario hace clic sobre ella?. onshow. onerror. onclose. onclick.

De acuerdo con la implementación detallada en el proyecto para los formularios (ej. el registro), ¿qué restricción visual de diseño se autoimpuso el equipo de desarrollo para no saturar al usuario con las alertas?. Permitir la aparición indefinida de ventanas emergentes en cascada. Mostrar un número máximo de 3 errores simultáneos en el control visual del formulario. Deshabilitar por completo el teclado del usuario mientras dure la notificación. Emitir pitidos sonoros continuos a través de los altavoces del sistema.

¿Qué sucede si se intenta invocar o mostrar una notificación web cuando la propiedad Notification.permission se encuentra en estado denied?. El navegador ignora la petición de forma segura y la notificación simplemente no se muestra al usuario. El navegador web se cierra abruptamente lanzando un error fatal del sistema. El sistema operativo formatea la caché del navegador para restaurar los valores iniciales. Se fuerza la apertura de una ventana emergente nativa ignorando la decisión del usuario.

Según la presentación, ¿cuál de las siguientes opciones se describe como una ventaja de la autenticación con tokens para facilitar el escalado horizontal?. Almacenamiento de sesiones en la base de datos centralizada. No requerir estado en el servidor (stateless). El cifrado síncrono obligatorio de cada petición. La compatibilidad exclusiva con servidores locales.

¿Qué estándar define formalmente a JSON Web Token (JWT) según el documento?. RFC 6110. RFC 7519. RFC 2025. RFC 8080.

¿Cuál es la estructura exacta de un token JWT según se detalla en el texto?. Dos partes separadas por guiones: Header y Payload. Tres partes separadas por comas: Algoritmo, Datos y Clave. Tres partes separadas por puntos: Header (Algoritmo), Payload (Datos) y Signature (Firma). Cuatro partes separadas por barras: Emisor, Usuario, Expiración y Firma.

En el flujo de uso habitual de JWT, ¿en qué cabecera (Header) de las peticiones posteriores debe enviar el cliente el token recibido?. Authentication. JWT-Token. Content-Type. Authorization.

¿Qué proyecto de código abierto de la Fundación Eclipse está diseñado para optimizar Enterprise Java para arquitecturas de microservicios?. Spring Boot Cloud. MicroProfile. OpenSSL Tools. Payara Expert.

¿Cuáles son algunas de las APIs estándar proporcionadas por MicroProfile mencionadas en el apartado de Estandarización?. Config, Fault Tolerance, Health, Metrics. Security, Database, JSON-Simple, GSON. OpenSSL, BaseKey, RSA, PKCS8. Localhost, App, Auth, Login.

En el script de desarrollo provisto para generar las claves de firma, ¿qué herramienta por línea de comandos se utiliza?. Maven (pom.xml). Microprofile API CLI. openssl. Nimbus JWT tool.

¿Qué dependencia general de MicroProfile se añade al archivo pom.xml en el "Proyecto 1" con un ámbito (scope) de tipo "provided"?. org.eclipse.microprofile.jwt / microprofile-jwt-auth-api (versión 2.1). org.eclipse.microprofile / microprofile (versión 6.1). com.google.code.gson / gson (versión 2.13.1). org.json / json (versión 20251224).

Al realizar una petición válida de inicio de sesión mediante POST al endpoint "auth/login", ¿qué tipo de token se devuelve en la respuesta JSON junto con la expiración y la cadena del token?. Basic. Bearer. Stateless. RSA-Key.

De acuerdo con la bibliografía del documento, ¿qué herramienta de Inteligencia Artificial Generativa se utilizó como asistencia en el desarrollo y diseño de las diapositivas?. ChatGPT. Payara Micro. Eclipse AI. Google Gemini.

En el modelo tradicional de Petición-Respuesta, ¿cuál es la función de la primitiva matemática o método 'sendReply(R, C)'?. Permite al cliente iniciar el envío de parámetros hacia el servidor. La utiliza el servidor para extraer y procesar de forma secuencial las peticiones pendientes. Es el mecanismo mediante el cual el servidor transfiere la respuesta procesada de vuelta al cliente. Cierra automáticamente la conexión TCP de forma asíncrona tras recibir un código HTTP.

Desde la perspectiva de la persistencia y la gestión del contexto, ¿cuál es una de las principales limitaciones de HTTP que dificulta el desarrollo de aplicaciones dinámicas complejas?. Es un protocolo que obliga a codificar los datos estrictamente en formato binario y no estructurado. Su naturaleza sin estado exige incluir cabeceras repetitivas en cada mensaje, lo que añade sobrecarga y dificulta el reconocimiento del contexto. Restringe la transferencia de archivos multimedia al no admitir la cabecera 'Content-Type'. Requiere obligatoriamente que el servidor comience la secuencia de transmisión antes que el cliente.

A diferencia del modelo unidireccional de HTTP, ¿cómo maneja el protocolo WebSocket el flujo y el inicio de la transferencia de datos?. El flujo es bidireccional, lo que capacita al servidor para enviar datos al cliente sin necesidad de recibir una petición previa. El servidor debe esperar a que el cliente solicite una actualización mediante una petición síncrona corta. La transferencia es unidireccional estricta pero alterna dinámicamente el nodo de inicio cada cinco segundos. Inhabilita por completo la capacidad del cliente para enviar tramas una vez establecido el canal.

Durante el proceso de establecimiento de conexión (handshake), ¿cuál es el código de estado HTTP que devuelve el servidor para confirmar que acepta el cambio a WebSocket?. 200 OK. 101 Switching Protocols. 301 Moved Permanently. 404 Not Found.

Una vez que se completa el intercambio de cabeceras en el 'handshake' y se establece la conexión WebSocket, ¿qué ocurre con el protocolo HTTP subyacente?. Sigue utilizándose en paralelo para validar las cabeceras de cada mensaje enviado. El protocolo HTTP deja de usarse y la comunicación pasa a basarse completamente en tramas binarias. Se reconfigura para forzar al cliente a enviar una petición tradicional por cada tres tramas del servidor. Se utiliza exclusivamente como un canal de copia de seguridad si la conexión principal falla.

¿Por qué el protocolo WebSocket logra ofrecer una latencia mínima en comparación con las conexiones HTTP tradicionales?. Porque fragmenta cada mensaje de texto plano en múltiples peticiones HTTP asíncronas separadas. Porque mantiene una única conexión TCP abierta y persistente, eliminando la necesidad de reenviar cabeceras HTTP repetitivas. Porque obliga al cliente a borrar el historial de su caché antes de enviar cualquier tipo de información. Porque utiliza una infraestructura de red física totalmente diferente e independiente de la de internet estándar.

Al implementar WebSockets en Jakarta EE mediante anotaciones, ¿cuál es la anotación obligatoria que se debe colocar a nivel de clase para declarar y definir el endpoint del servidor?. @OnOpen. @OnMessage. @ServerEndpoint. @WebSocketClient.

En el ciclo de vida de un WebSocket en Jakarta EE, ¿qué anotación se utiliza para marcar el método encargado de procesar la llegada de nuevos datos desde el cliente?. @OnOpen. @OnMessage. @OnClose. @ClientEndpoint.

¿Cómo se inicializa la conexión con el servidor desde el entorno del cliente utilizando la API nativa de JavaScript?. Invocando la función global 'HTTP.upgrade()' pasando las credenciales del servidor. Creando una nueva instancia del objeto 'WebSocket' y pasándole la URL del endpoint como parámetro. Ejecutando un método 'fetch()' tradicional configurado obligatoriamente con el método POST. Declarando una función callback anónima vinculada directamente al evento 'window.onload'.

De acuerdo con las aplicaciones comunes expuestas en el temario, ¿en cuál de los siguientes escenarios NO se justifica el uso de WebSocket como alternativa a HTTP?. En una plataforma de trading financiero o apuestas donde los precios cambian segundo a segundo. En una aplicación de chat en tiempo real o señalización para videoconferencias. En un blog estático donde el contenido solo se actualiza una vez al mes por el administrador. En un videojuego online multijugador que requiere actualizaciones inmediatas del estado de la partida.

¿En qué filosofía de diseño está inspirada directamente la biblioteca de componentes Vue-Bits?. Angular Material. React Bits. Tailwind UI. Bootstrap Blocks.

¿Cuál de los siguientes es un objetivo principal que persigue la integración de Vue-Bits en el desarrollo de una interfaz de usuario?. Minimizar el tamaño del bundle final reduciendo el código a la mitad. Proveer exclusivamente componentes lógicos de backend. Captar la atención de los usuarios instantáneamente mediante un despliegue visual impactante. Automatizar las bases de datos relacionales del servidor.

¿Cuáles son las dependencias externas principales necesarias para el correcto funcionamiento de los componentes animados de Vue-Bits según su documentación?. jQuery y Bootstrap CSS. Tailwind CSS y Lucide Vue Next / Framer Motion (o equivalentes de animación). Angular Core y RxJS. SASS y Webpack Vanilla.

¿Cuál es el comando estándar de npm empleado para instalar la biblioteca base de Vue-Bits en un proyecto existente?. npm install vue-bits. npm create vue-bits@latest. npm download vue-bits-ui. npm add vue-bits-components.

Al exportar una vista en formato HTML que hace uso de los componentes de Vue-Bits, ¿qué aspecto técnico crítico se debe asegurar para mantener la fidelidad visual fuera del entorno de desarrollo?. Convertir todo el código JavaScript a lenguaje C++. Compilar e incluir los estilos generados por Tailwind CSS para que los efectos y layouts no se rompan. Eliminar por completo las etiquetas de cierre de HTML. Guardar el archivo únicamente en un servidor local Apache sin conexión externa.

¿Qué característica define al componente "Electric Card" mencionado en la portada y descripción de la biblioteca?. Envía descargas eléctricas virtuales que apagan el monitor. Genera un borde electrificado y animado diseñado para impactar visualmente al usuario. Es un componente exclusivo para pasarelas de pago de facturas de luz. Sirve para medir el rendimiento de la batería del dispositivo del usuario.

Si un desarrollador necesita modificar de forma extremadamente minuciosa el comportamiento interno de un componente de Vue-Bits, ¿con qué inconveniente principal se encuentra según el veredicto técnico?. La biblioteca bloquea el ordenador si se intenta editar. Los componentes están encriptados y es imposible ver el código fuente. La personalización interna es muy limitada y requiere alterar directamente el código fuente del componente, rompiendo la capa de abstracción. Los componentes solo funcionan si se programan en Python.

¿Qué valoración se le otorga a la documentación inicial disponible para los usuarios que empiezan a utilizar Vue-Bits?. Es excelente, exhaustiva y contiene miles de ejemplos complejos avanzados. Es escasa y carece de ejemplos de uso para escenarios complejos. No existe ningún tipo de documentación ni repositorio. Está redactada únicamente en código binario.

¿Cuál es el Veredicto Final del análisis sobre el uso de la biblioteca Vue-Bits?. Totalmente desaconsejada por su bajo rendimiento gráfico. Muy recomendada para proyectos con despliegue visual impactante, siempre que no requieran personalización extremadamente minuciosa. Solo se recomienda para aplicaciones de consola de comandos de texto plano. Recomendada exclusivamente para grandes sistemas bancarios que no usan interfaz gráfica.

¿Qué asistentes de Inteligencia Artificial Generativa se listan explícitamente en el apartado de Referencias como apoyo para la resolución de dudas técnicas y depuración de código de este proyecto?. ChatGPT v3.5 y Siri. GitHub Copilot, Gemini Pro y Claude. Midjourney y Stable Diffusion. IBM Watson y Wolfram Alpha.

¿Bajo qué condiciones de seguridad funciona la API nativa navigator.mediaDevices.getUserMedia() en el navegador?. Funciona en cualquier tipo de conexión HTTP o HTTPS. Solo funciona bajo protocolos seguros HTTPS o en localhost. Requiere la instalación previa de un certificado SSL firmado por una entidad certificadora externa. Solo está disponible en aplicaciones de escritorio compiladas, no en páginas web abiertas.

¿Qué ocurre en un navegador de escritorio (PC/Laptop) si se utiliza el atributo capture="environment" en una etiqueta <input type="file">?. El navegador genera un error de ejecución en la consola y detiene la aplicación. Se fuerza la apertura de la cámara trasera del ordenador de manera obligatoria. El atributo capture se ignora en entornos de escritorio, pero el selector de archivos sigue funcionando con normalidad. Se bloquea el acceso a la galería local de archivos por motivos de seguridad.

Al interactuar con un elemento <input type="file"> en JavaScript, ¿qué tipo de objeto devuelve la propiedad input.files y cuál es la recomendación al trabajar con él?. Devuelve un Array nativo de JavaScript y se puede recorrer directamente con métodos como .map() o .filter(). Devuelve un objeto de tipo Blob que debe convertirse primero a Base64. Devuelve un FileList, que no es un Array real, por lo que se recomienda usar Array.from() para transformarlo si se requieren sus métodos. Devuelve un archivo único en texto plano con los metadatos binarios codificados.

De acuerdo con el flujo de captura de una imagen fija mediante código JS nativo empleando getUserMedia(), ¿cómo se extrae el fotograma de vídeo en tiempo real?. Guardando directamente el MediaStream en una base de datos indexada. Dibujando el elemento <video> sobre un elemento <canvas> mediante el contexto 2D (ctx.drawImage). Deteniendo el stream con track.stop() en el instante exacto en que se quiere la foto. Utilizando la API MediaRecorder configurada con códecs de imagen como PNG o JPEG.

Al finalizar el uso de la cámara o micrófono mediante la API MediaDevices, ¿cuál es la buena práctica indispensable para asegurar el rendimiento y privacidad del sistema?. Cerrar inmediatamente la pestaña del navegador del usuario. Invocar la función .stop() en cada una de las pistas (tracks) del MediaStream. Limpiar los fragmentos almacenados en el array local con chunks.length = 0. Eliminar el elemento <canvas> o <video> del árbol DOM de la página HTML.

Durante el proceso de grabación con la API MediaRecorder, ¿en qué momento y formato se reciben los fragmentos (chunks) de audio o vídeo capturados?. Se reciben al final de toda la grabación dentro de un archivo de texto codificado. Se capturan de forma síncrona como un array binario Uint8Array en el hilo principal. Se reciben de manera asíncrona a través del evento ondataavailable en forma de objetos Blob. Se envían de forma automática e inmediata al servidor en un objeto FormData.

¿Cómo se puede comprobar programáticamente si un formato de grabación específico (como un codec de audio determinado) está soportado por el navegador del cliente?. Evaluando mediante una estructura try-catch al instanciar el AudioContext. Mediante el método estático MediaRecorder.isTypeSupported(). Verificando si la propiedad navigator.mediaDevices es distinta de nulo. Revisando las cabeceras HTTP de la petición enviada por el servidor web.

¿Qué combinación de componentes de la Web Audio API permite realizar una visualización en tiempo real (por ejemplo, pintar una onda de sonido en un canvas) sin interferir en la grabación de audio?. MediaRecorder conectado simultáneamente a un servicio web externo. El uso conjunto de AudioContext y un nodo de análisis AnalyserNode. Un elemento FormData vinculado directamente con funciones matemáticas asíncronas. Verificando si la propiedad navigator.mediaDevices es distinta de nulo.

¿Cuál es la principal ventaja y el flujo de datos interno que ofrece el componente p:photoCam de la biblioteca PrimeFaces en entornos JSF?. Permite la grabación de audio de alta fidelidad integrando un visualizador de onda interactivo automáticamente. Encapsula internamente las APIs multimedia de JavaScript y envía directamente la imagen capturada al bean de Java (servidor) codificada en Base64 o array de bytes, minimizando el código JS manual. Duplica la velocidad del procesamiento gráfico delegando la conversión en la tarjeta de vídeo local del servidor Java. Permite forzar el acceso a la cámara omitiendo la solicitud de permisos explícitos al usuario en el navegador.

Si se está desarrollando un proyecto basado en entornos JSF/PrimeFaces y se requiere añadir grabación de audio in-app, ¿cuál es el enfoque recomendado según el temario analizado?. Utilizar el componente nativo p:audioCam, el cual replica exactamente el comportamiento de p:photoCam. Importar librerías externas de Flash Player o complementos Java Applet para el navegador. Utilizar JavaScript puro para integrar MediaRecorder en la página .xhtml y enviar los datos mediante herramientas como p:remoteCommand o fetch(). Exigir que los usuarios graben siempre de forma externa y suban el archivo mediante un input básico de texto plano.

¿Cuál es la función principal de la interconexión mediante Jakarta REST Client en una aplicación Java EE?. Permitir la renderización directa de interfaces gráficas en el cliente web de forma local. Posibilitar que una aplicación Java EE consuma servicios web externos con la misma simplicidad que si fueran beans locales. Reemplazar por completo el uso de bases de datos relacionales locales mediante el uso de EntityManagers. Forzar a que todas las peticiones entrantes mantengan un estado persistente a través de un Load Balancer.

¿Qué significa que el Cliente REST sea "Type-Safe"?. Que las llamadas REST se definen mediante interfaces Java, lo que previene errores de tipado en tiempo de ejecución. Que el cliente cifra automáticamente todos los datos que viajan por la red mediante un algoritmo seguro. Que el DTO impide que se agreguen nuevos atributos dinámicos en los objetos JSON devueltos. Que las peticiones se procesan exclusivamente con métodos HTTP GET para evitar modificaciones accidentales.

Al implementar un Cliente REST con MicroProfile/Jakarta, ¿cómo se evita la necesidad de construir URIs o manejar clases como HttpURLConnection manualmente?. Escribiendo código estructurado directamente dentro del bloque "Boilerplate" del archivo persistence.xml. Creando una clase abstracta que extienda de Serializable y manejando los sockets de red. Anotando una interfaz Java con anotaciones específicas como @RegisterRestClient y @Path. Utilizando un script de JavaScript en el frontend para interceptar y reenviar las peticiones del DAO.

¿Qué anotaciones son necesarias en el DAO para inyectar y utilizar correctamente el cliente REST como si fuera un bean local?. @PersistenceContext y @Stateless exclusivamente. @Inject junto con @RestClient. @Produces y @Consumes aplicadas sobre el atributo del EntityManager. @Path y @PathParam en la declaración de la clase del DAO.

En la interfaz 'AlmacenRestClient', ¿cuál es el propósito de la anotación @Path("/{idAlmacen}/productos") colocada sobre un método?. Definir la URI base global del servidor externo al que se conectará el cliente. Especificar la ruta relativa del endpoint, mapeando dinámicamente el parámetro "{idAlmacen}" gracias a la anotación @PathParam. Indicar el formato de serialización (JSON) que el cliente debe producir obligatoriamente. Restringir el acceso para que solo los administradores locales puedan invocar dicho método.

¿Cuál es la función del Objeto de Transferencia de Datos (AlmacenProductoDTO) en esta arquitectura?. Representar la entidad de persistencia que se guarda directamente en la base de datos local mediante el EntityManager. Actuar como el puente de interfaz de usuario encargado de renderizar los datos del stock en la pantalla del navegador. Representar de manera fiel la estructura de datos que viaja por la red desde o hacia el servicio externo de almacenes. Balancear el tráfico entrante de las peticiones API sin estado entre los servidores backend.

Al recuperar el stock remoto empleando 'clienteRest.listarStockAlmacen(idAlmacen)', ¿qué técnica se utiliza en el código del DAO para transformar los DTOs en objetos de la clase de dominio 'Producto'?. Una consulta nativa SQL controlada por el EntityManager de la unidad de persistencia "tiendaPU". El procesamiento del flujo de datos con la API de Streams de Java, mapeando cada DTO a un nuevo 'Producto' mediante expresiones lambda. Un bucle de JavaScript asíncrono con la función 'fetch()' ejecutado en el backend. Una exclusión directa por medio de un bloque condicional que solo acepta cadenas de texto vacías.

Durante la prueba de concepto del traslado de un producto entre sedes ('moverProductoPrueba'), ¿qué operaciones lógicas se ejecutan secuencialmente?. Primero se verifica si el stock es suficiente localmente y luego se genera una excepción en el frontend. Se realiza un alta remota en el almacén de destino mediante 'registrarEnAlmacen' y posteriormente una baja en el almacén de origen con 'borrarProducto'. Se realiza una llamada asíncrona mediante un mapa unificado y se ordenan los elementos de mayor a menor precio. Se persiste el producto en la base de datos local y se suspende la conexión con el balanceador de carga.

¿Cómo se completa la cadena de datos desde la perspectiva del servidor para exponer estos servicios web y permitir que un cliente externo los consuma?. El recurso REST (anotado con @Path) inyecta el DAO, el cual a su vez utiliza el cliente REST de MicroProfile para comunicarse con los servicios remotos. El frontend en JavaScript inyecta directamente el EntityManager saltándose las capas del recurso REST y del DAO. El Load Balancer intercepta las peticiones de la base de datos local y las distribuye directamente a las interfaces Java "Type-Safe". Se eliminan por completo las anotaciones CDI de forma que los objetos se instancien manualmente con el operador 'new'.

En el método de consumo frontend 'cargarTablas()', ¿cuál es la estrategia utilizada para unificar la información de los productos locales y los de una sede remota como Madrid?. Se borran todos los datos locales y se reemplazan de forma asíncrona con un arreglo de strings del DTO. Se utiliza un 'java.util.Map' donde se introducen primero los productos locales y luego se insertan los remotos usando 'putIfAbsent' para evitar duplicados, ordenando finalmente el resultado por ID. Se realiza un reenvío inmediato de tráfico mediante un Load Balancer físico hacia tres Backend Servers independientes. Se invoca de manera recursiva al método 'fetch()' sin cabeceras de aceptación de tipo JSON.

¿Cuál es el postulado fundamental de la Arquitectura de Islas popularizada por Jason Miller en comparación con las SPAs tradicionales?. Empaquetar y renderizar la aplicación completa en un único árbol de componentes interactivos de JavaScript. La existencia de un "océano" de HTML puramente estático generado en el servidor, dentro del cual flotan "islas" interactivas independientes. Eliminar por completo el uso de JavaScript tanto en el servidor como en el navegador del cliente. Delegar el 100% de la construcción del marcado y el DOM al navegador del cliente utilizando archivos vacíos.

Durante el mecanismo interno de procesamiento en tiempo de compilación, ¿cómo gestiona Astro los componentes reactivos antes de enviarlos al navegador?. Genera un bundle masivo de JavaScript que bloquea la renderización inicial del HTML. Convierte la lógica a código de servidor exclusivo y prohíbe cualquier interacción posterior en el cliente. Procesa los componentes, genera su marcado HTML estático inicial y embebe un marcador de posición personalizado con las props serializadas en JSON. Recrea por completo los nodos del DOM desde cero utilizando únicamente la API del navegador.

¿Qué rol desempeña Node.js dentro de la infraestructura de compilación de este ecosistema técnico?. Actúa como motor de renderizado interactivo dentro del navegador del cliente. Ejecuta el compilador de Astro en tiempo de desarrollo o build para orquestar llamadas a APIs, resolver configuraciones y ejecutar motores de plantillas. Funciona como el empaquetador de producción final sustituyendo las tareas de Rollup. Se encarga de procesar las directivas CSS Media Query en tiempo real en el cliente.

¿Cuál es la innovación principal de Vite en el entorno de desarrollo y cómo implementa las actualizaciones de código?. Realiza un pesado pre-empaquetado (bundling) de todo el código fuente antes de servirlo al navegador. Obliga al navegador a recargar la página completa ante cualquier cambio de estado. Sirve el código fuente utilizando módulos ECMAScript nativos (ESM) en el navegador e implementa un Hot Module Replacement (HMR) instantáneo. Compila exclusivamente archivos con la extensión .astro sin admitir otros frameworks de UI.

¿Qué significa que Astro sea un optimizador "Agnóstico del Framework" y cuál es su comportamiento por defecto (Zero-JS)?. Que solo acepta componentes escritos en VueJS debido a su sistema de reactividad basado en Proxies. Que extrae el árbol de nodos de componentes de Vue, React o Svelte y procesa su salida inicial, eliminando por defecto el bundle de JavaScript en producción si no hay directivas especiales. Que obliga a mezclar el código de todos los frameworks en un mismo archivo de configuración global. Que no permite que ningún componente tenga interactividad ni código reactivo en el cliente.

¿En qué se fundamenta el sistema de componentización reactiva de VueJS seleccionado en este análisis técnico para gestionar el estado local?. En un mecanismo de hidratación diferida controlado por la API requestIdleCallback(). En la generación de un documento HTML vacío y un enorme bundle de JavaScript en el servidor. En su potente API de Composición y en un sistema de reactividad basado en Proxies de JavaScript. En la sustitución del Virtual DOM por un marcado estático inmutable que no consume memoria.

Al comparar las dicotomías de arquitectura, ¿cuál es el principal "punto de dolor" (pain point) y el comportamiento de las métricas en el Client-Side Rendering (CSR) tradicional?. Sufre de sobrecarga de cómputo en el servidor y optimiza radicalmente el First Contentful Paint (FCP). El "JavaScript Tax" (descarga de megabytes de código para partes estáticas) y un TTI tardío debido al cuello de botella en la CPU del cliente procesando scripts iniciales. La imposibilidad de ejecutar código interactivo y la pérdida absoluta de la indexación SEO en motores de búsqueda modernos. La dependencia exclusiva de APIs del navegador como window o localStorage en el 100% de la página.

¿Qué ocurre exactamente en el navegador del cliente durante el proceso denominado "Hidratación" llevado a cabo por Vue en una isla de Astro?. Vue recrea todos los nodos HTML del DOM desde cero para asegurar que la reactividad funcione de forma limpia. El navegador borra el HTML estructurado proveniente de Node.js y solicita un nuevo bundle completo al servidor. Vue mapea sus escuchadores de eventos sobre el marcado HTML preexistente generado por el servidor, transformando el documento estático en reactivo de forma quirúrgica. Se ejecuta la API Intersection Observer para evitar la descarga de cualquier script en segundo plano.

Si se requiere implementar un menú de navegación dinámico situado por encima del pliegue visual inicial (Above-the-Fold) que necesita responder de inmediato al clic del usuario, ¿qué directiva de hidratación es la adecuada y cómo actúa?. client:idle, porque retrasa la descarga utilizando requestIdleCallback() para no bloquear la página. client:visible, ya que espera a que el contenedor entre en el viewport mediante la API Intersection Observer. client:only, debido a que evita por completo el paso de renderizado en el servidor (SSR). client:load, porque fuerza la descarga del JavaScript y su hidratación asíncrona y simultánea al renderizado inicial de la página.

¿Qué directivas de hidratación se deben utilizar si queremos: 1) Condicionar la carga de JS a una regla de diseño responsivo mediante CSS Media Query, y 2) Evitar por completo el SSR porque el componente invoca objetos exclusivos del navegador como window?. 1) client:idle y 2) client:visible. 1) client:media y 2) client:only. 1) client:load y 2) client:media. 1) client:visible y 2) client:only.

¿Cuál es una característica fundamental de Vue según el temario?. Es un framework rígido diseñado exclusivamente para grandes aplicaciones empresariales. Es un framework progresivo diseñado desde cero para ser utilizado de forma incremental. Es una biblioteca de estilos obsoleta que no permite crear interfaces de usuario. Es un compilador de TypeScript estricto que reemplaza a los servidores web tradicionales.

¿Qué ventaja principal ofrece Pinia en comparación con su antecesor Vuex?. Requiere más líneas de código para garantizar la máxima seguridad del estado. Elimina por completo la necesidad de usar componentes reactivos en Vue. Simplifica la gestión de estados ya que requiere menos código y se integra mejor con TypeScript. Es una base de datos relacional externa que no se ejecuta en el navegador.

¿En qué consiste el problema conocido como "Prop Drilling"?. En un error crítico de compilación que borra los archivos del proyecto de forma accidental. En la duplicación masiva de funciones asíncronas dentro de una misma API externa. En tener que pasar un dato manualmente de padre a hijo en cadena cuando varios componentes lo necesitan. En la imposibilidad de conectar un componente de Vue con herramientas de desarrollo como DevTools.

¿Cómo se simplifica el código de un componente al utilizar Pinia en lugar de la arquitectura tradicional sin almacén?. Obliga al padre a interceptar todos los eventos mediante múltiples métodos personalizados. El componente hijo puede invocar directamente el almacén, funcionando sin emits, sin métodos en el padre y sin pasar props. Incrementa el uso de propiedades reactivas duplicadas de forma obligatoria en cada nivel de la cadena. Es necesario registrar obligatoriamente directivas de binding manuales dentro de un archivo de configuración global.

¿Qué es una "Store" en el ecosistema de Pinia?. Un servidor intermedio de base de datos que cobra comisiones por cada petición HTTP realizada. El contenedor global que almacena los datos de la aplicación y permite que cualquier componente acceda y los modifique de forma centralizada. Una tienda en línea integrada por defecto en Vue para la compraventa de plugins comerciales. Un método de renderizado que convierte código HTML directamente en imágenes estáticas.

¿Cuál es la función principal del "Estado" (State) en una Store de Pinia?. Ejecutar peticiones asíncronas exclusivamente hacia servidores externos. Intercepta las interacciones de los estilos visuales CSS en tiempo de ejecución. Es la parte central del almacén donde se guardan los datos de la aplicación para que cualquier componente pueda leerlos. Resetear la aplicación y limpiar la caché del navegador cada vez que se detecta un cambio menor.

¿Qué utilidad tienen los "Getters" dentro de Pinia?. Se encargan de borrar de forma permanente las propiedades del estado cuando se produce un error. Permiten calcular datos derivados a partir del estado de la aplicación. Modifican directamente el estado mediante peticiones asíncronas con retraso de red. Conectan la interfaz gráfica con las herramientas de optimización del motor de búsqueda (SEO).

¿Qué son las "Acciones" (Actions) en Pinia y de qué tipos pueden ser?. Son variables estáticas no modificables que pueden ser de tipo local o de tipo de entorno global. Son selectores CSS que pueden ser de tipo ID o de tipo Clase para modificar el diseño. Son las funciones que modifican el estado, y pueden ser síncronas (inmediatas) o asíncronas (llamadas a una API). Son validadores exclusivos de TypeScript que comprueban de forma síncrona si hay errores ortográficos en el código.

¿Cuál de las siguientes opciones se menciona textualmente como uno de los beneficios de Pinia en el temario?. Compatibilidad exclusiva con bases de datos SQL y eliminación de JavaScript. Simplicidad, soporte integrado de TypeScript, cambios instantáneos y uso con DevTools. Generación automática de maquetas gráficas y diseño visual en alta definición. Reducción del rendimiento del navegador para ahorrar batería en dispositivos móviles.

De acuerdo con las conclusiones del documento, ¿qué impacto tiene Pinia en la arquitectura de un proyecto de Vue?. Complica el mantenimiento del código al descentralizar todos los datos lógicos de la aplicación. Incrementa notablemente el Prop Drilling, haciendo que la depuración sea un proceso mucho más tedioso. Aporta eficiencia y orden en el código, elimina el Prop Drilling y proporciona una mayor facilidad al realizar cambios en la aplicación. Obliga al desarrollador a reescribir toda la aplicación utilizando herramientas de Inteligencia Artificial de pago.

¿Cuál es el principal problema del ecosistema de IA que Spring AI busca resolver para los desarrolladores Java?. La falta de modelos de lenguaje de código abierto en el mercado. La necesidad de reescribir por completo el código y lidiar con formatos incompatibles al cambiar de proveedor de IA. El alto coste por token asociado al uso exclusivo de bases de datos vectoriales locales. La incompatibilidad de los modelos de IA con la persistencia de datos en bases de datos relacionales tradicionales.

¿Con qué patrón o tecnología consolidada de la historia de Spring se compara el propósito de abstracción de Spring AI?. Spring Security, por la encriptación obligatoria en llamadas a APIs remotas. Spring MVC, por la separación obligatoria de vistas HTML en la interfaz de usuario. Spring Data, que abstrajo JDBC de la misma forma que Spring AI abstrae las APIs de los modelos de IA. Spring Batch, por la necesidad de procesar los prompts en lotes masivos nocturnos.

¿Cuál es una ventaja clave de utilizar Ollama para ejecutar modelos como Llama 3 o Mistral según la presentación?. Reduce el consumo de memoria RAM del servidor local a cero. Permite cambiar automáticamente entre proveedores en la nube sin usar dependencias Maven. Elimina por completo la necesidad de estructurar salidas en formato de objetos Java (POJOs). Privacidad absoluta y coste cero, ya que los datos nunca salen del equipo y no hay cobro por token.

En la arquitectura de mensajes de un LLM expuesta en el temario, ¿qué elemento se utiliza para fijar el rol, las restricciones y el estilo de comportamiento de la IA en tiempo de ejecución?. User Message. System Prompt. Assistant Response. Maven Dependency.

¿Cómo se realiza el cambio de un proveedor de modelos de IA a otro (por ejemplo, de OpenAI a Ollama o Gemini) utilizando la arquitectura desacoplada de Spring AI?. Reescribiendo toda la lógica de los controladores y componentes del asistente conversacional. Modificando únicamente una dependencia en el archivo de configuración Maven. Reconfigurando por completo la base de datos vectorial de PGVector. Desactivando de forma obligatoria los Structured Outputs del ChatClient.

Dado que los LLMs son de naturaleza "stateless" (no recuerdan interacciones pasadas), ¿qué componente de Spring AI intercepta las llamadas para inyectar automáticamente el historial de mensajes en el prompt?. Vector Stores. Structured Outputs. Spring AI Advisors. ChatClient POJOs.

¿Qué técnica se implementa explícitamente en el proyecto "Shara" cuando el catálogo de productos es demasiado enorme para caber por completo dentro del prompt enviado al modelo?. Generación Aumentada por Recuperación (RAG) utilizando bases de datos vectoriales como PGVector. Mapeo estricto a través de archivos JSON locales sin procesamiento semántico. Incremento indefinido del tamaño de contexto hasta superar los 4096 tokens sin filtros. Migración forzosa de la ejecución local de Ollama hacia APIs 100% en la nube de forma exclusiva.

¿A qué concepto del temario se refiere la capacidad de Spring AI de mapear automáticamente las respuestas de texto libre del modelo directamente a clases y objetos Java (POJOs)?. System Prompts Dinámicos. Búsqueda Semántica de Sentido. Structured Outputs. Intercepción stateless de Advisors.

Dentro de la aplicación "Shara", ¿cuál de las siguientes opciones describe correctamente uno de los tres casos de uso implementados para el asistente conversacional interactivo (Sara)?. Generación automática de código fuente Java para los repositorios de Spring Data. Búsqueda de productos en el catálogo ofreciendo descripciones automáticas, combinaciones por estilo (Outfit Gen) y respuestas visuales con imágenes mediante HTML. Encriptación automática de contraseñas de usuarios en el servidor perimetral local. Gestión automatizada de la infraestructura de hardware y de la memoria RAM del servidor.

De acuerdo con las "Lecciones Aprendidas" del equipo de desarrollo, ¿cuál es un desafío técnico relevante al trabajar con Spring AI y modelos locales?. Spring AI ya no recibirá actualizaciones estables en el futuro tras la versión 1.0 GA. Las bases de datos vectoriales tradicionales no admiten lenguaje natural de ningún tipo. Gran parte de la lógica se desplaza hacia el System Prompt, las APIs Milestone cambian con frecuencia y Ollama exige una RAM considerable para garantizar fluidez. Las respuestas obtenidas de los modelos de IA son 100% deterministas en todos los entornos de hardware.

¿Qué ámbito (scope) de CDI se utiliza para la clase GeminiClientProvider con el fin de optimizar recursos en la aplicación?. @RequestScoped. @SessionScoped. @ApplicationScoped. @ViewScoped.

Dentro de la arquitectura tecnológica presentada, ¿qué ciclo de vida o propiedad define el comportamiento de los Controladores de la interfaz de usuario?. @ApplicationScoped. @RequestScoped. @NoneScoped. @ViewScoped.

¿Cuáles son los modelos específicos de Google GenAI utilizados en el servicio AiProductContentService para el procesamiento de texto y la generación visual respectivamente?. gemini-2.5-pro e imagen-2.0. gemini-2.5-flash e imagen-3.0. chatgpt-4o y dall-e-3. gemini-1.5-pro e imagen-1.0.

Al diseñar el Prompt Engineering para la generación de descripciones de productos, ¿cuál de las siguientes medidas se toma explícitamente para evitar "alucinaciones" de la IA?. Dejar que el modelo asuma las especificaciones técnicas para que sea más comercial. Dar un mandato explícito en el prompt indicando "NO inventes datos". Configurar el parámetro thinkingBudget al nivel máximo. Permitir descripciones genéricas que no dependan de las variables del stock.

En la integración de la vista crearProducto.xhtml, ¿qué etiqueta de JSF se utiliza para actualizar campos específicos del formulario (como la descripción) sin recargar la página completa?. <h:outputScript>. <f:ajax>. <h:messages>. <p:panelGrid>.

Para facilitar el procesamiento automático de las especificaciones técnicas generadas por la IA, ¿qué reto de formato y posterior solución en Java se implementa?. Se le pide un archivo JSON y se procesa mediante Jackson. Se le fuerza a devolver una lista separada por comas y en Java se usa un Parser con Streams para limpiar espacios y saltos de línea. Se devuelven viñetas HTML estándar y se incrustan directamente en la base de datos. Se procesa manualmente mediante una ventana emergente de confirmación.

¿Cómo maneja la aplicación la respuesta visual devuelta por la API de Vertex AI para poder renderizar la imagen directamente en una etiqueta estándar de HTML en JSF?. Guarda la imagen en el disco duro del servidor y genera una URL estática. Devuelve un enlace de Google Drive listo para compartir de forma pública. Convierte los bytes de la imagen a una cadena Base64 en el controlador construyendo una Data URL (data:image/jpeg;base64,...). Se renderiza mediante un applet de Java embebido que lee flujos binarios.

¿Qué propiedad de JSF se utiliza para ejecutar la función de JavaScript toggleIaLoading encargada de mostrar u ocultar el spinner de carga de Bootstrap durante las peticiones asíncronas?. El atributo onevent dentro de la etiqueta <f:ajax>. El atributo onclick del botón <h:commandButton>. El evento onload del cuerpo de la página XHTML. El atributo render que refresca de forma síncrona el bloque del spinner.

Durante la moderación de valoraciones mediante Prompt Engineering, ¿qué configuración técnica específica se realiza con el fin de obtener respuestas instantáneas y reducir la latencia de validación al mínimo?. Se habilita el uso de plantillas CSS complejas. Se configura el thinkingBudget a 0 dentro del objeto ThinkingConfig. Se obliga al modelo a redactar una justificación de 450 caracteres. Se delega la moderación a la fase de renderizado final de la página.

¿En qué fase específica del ciclo de vida de Jakarta Faces (JSF) actúa el validador personalizado encargado de interceptar y bloquear comentarios ofensivos antes de que lleguen al modelo de datos?. Phase 6: Render Response (Renderizado de la Respuesta). Phase 1: Restore View (Restauración de la Vista). Phase 3: Process Validations (Procesamiento de Validaciones). Phase 5: Invoke Application (Invocación de la Aplicación).

¿Cuál de las siguientes afirmaciones define correctamente a Javalin según la documentación?. Es un framework de persistencia de datos avanzado exclusivo para Kotlin. Es un framework web simple para Java y Kotlin. Es un servidor web corporativo diseñado únicamente para Java Enterprise Edition. Es una biblioteca de validación de esquemas JSON en entornos locales.

Si estás configurando un proyecto utilizando Gradle, ¿cómo se debe añadir la dependencia de Javalin versión 7.2.2?. <dependency> implementation("io.javalin:javalin:7.2.2") </dependency>. implementation("io.javalin:javalin:7.2.2"). import io.javalin.Javalin.7.2.2. dependency("io.javalin:javalin-7.2.2").

En la inicialización básica de una aplicación Javalin ("Hello World"), ¿qué método se utiliza para definir el puerto de escucha del servidor (por ejemplo, el 7070)?. config.routes.get(7070). ctx.status(7070). start(7070). listen(7070).

¿Cuál es el comportamiento característico de los manejadores de tipo "Before-handlers" en Javalin?. Se ejecutan únicamente si la ruta coincide de forma exacta y el recurso no genera un error 404. Se emparejan y ejecutan antes de cada solicitud, incluyendo la petición de archivos estáticos. Solo se ejecutan para las peticiones de tipo POST enviadas por el cliente. Reemplazan por completo a los endpoint handlers si se configuran globalmente.

Si deseas ejecutar un manejador previo solo en el caso de que la solicitud vaya a coincidir con una ruta real configurada (evitando solicitudes que resulten en un 404), ¿qué método debes emplear?. config.routes.before. config.routes.beforeMatched. config.routes.afterMatched. config.routes.exception.

¿Cuál es el orden en el que se evalúan y emparejan los manejadores de endpoints (Endpoint handlers) en Javalin?. En el orden en que están definidos en el código. Por orden alfabético de la ruta de la URL. Priorizando siempre las peticiones POST sobre las peticiones GET. De forma aleatoria según la disponibilidad de los hilos del servidor.

Al configurar parámetros de ruta en los Endpoint handlers, ¿cuál es la diferencia principal entre utilizar la sintaxis {name} y la sintaxis <name>?. La sintaxis {name} permite barras inclinadas ('/'), mientras que <name> las prohíbe de manera estricta. La sintaxis {name} no permite barras inclinadas ('/') como parte del parámetro, mientras que la sintaxis <name> sí las permite. La sintaxis {name} es obligatoria para Kotlin y la sintaxis <name> es exclusiva para Java. La sintaxis {name} es obligatoria para Kotlin y la sintaxis <name> es exclusiva para Java.

¿Qué ocurre con la ejecución de los "After handlers" si se produce una excepción durante el procesamiento de una solicitud HTTP?. Los "After handlers" se cancelan inmediatamente para proteger el estado de la aplicación. Se ejecutan únicamente si la excepción es de tipo NullPointerException. Se ejecutan únicamente si la excepción es de tipo NullPointerException. Se posponen y se ejecutan justo antes de cerrar el servidor web.

Dentro del API del validador (Validator API), ¿cuál es la función del método getOrDefault()?. Registra un ValidationError personalizado con argumentos para la localización de idiomas. Devuelve un mapa con todos los errores que han ocurrido en la validación por campo. Devuelve el valor por defecto si el valor analizado es nulo; de lo contrario, llama de forma interna al método get(). Lanza obligatoriamente una ValidationException si el valor no coincide con el tipo numérico esperado.

Al realizar el mapeo de excepciones en Javalin, si se define un mapeador para una excepción general (Exception::class.java), ¿bajo qué circunstancias NO se activará dicho mapeador general?. Cuando la solicitud HTTP se realice utilizando el comando curl. Cuando exista y se encuentre un mapeador de excepciones más específico para el error producido. Cuando el error ocurra dentro de un bloque de validación JSON. Cuando el servidor esté escuchando en un puerto distinto al puerto estándar.

Denunciar Test