¿Qué versión de activemq se puede utilizar con jdk1.5?
JDK1.6 agrega principalmente algunas API fáciles de usar, es decir, clases (interfaces), y el lenguaje en sí (modificación gramatical) no es importante. Lo principal es continuar aprovechando JDK1. Genéricos y anotaciones de 5. Esto no se puede simplificar porque estos puntos están muy fragmentados: 1: Clase Desktop y clase SystemTray En JDK6, AWT agregó dos nuevas clases: Desktop y SystemTray. El primero se puede usar para abrir el navegador predeterminado del sistema para explorar la URL especificada, abrir el cliente de correo predeterminado del sistema para enviar correos electrónicos al buzón especificado y usar la aplicación predeterminada para abrir o editar archivos (por ejemplo, usar el Bloc de notas para abrir archivos). con el sufijo txt), imprima el documento usando la impresora predeterminada del sistema; esta última se puede usar para crear un programa de bandeja en el área de la bandeja del sistema 2: Use JAXB2 para realizar el mapeo entre objetos y XML JAXB es la abreviatura de Java. Arquitectura para XML Binding, que puede convertir un objeto Java a formato XML y viceversa. Al mapeo entre objetos y bases de datos relacionales lo llamamos ORM. De hecho, también podemos llamar al mapeo entre objetos y XML OXM (ObjectXMLMapping). En JDK6, SUN lo puso en JavaSE. es también el enfoque coherente de SUN. La versión JAXB que viene con JDK6 es 2.0. En comparación con 1.0 (JSR31), JAXB2 (JSR222) utiliza la nueva característica Anotación de JDK5 para identificar las clases y atributos que se vincularán, lo que simplifica enormemente el trabajo de desarrollo. De hecho, en JavaEE5.0, EJB y WebServices también utilizan Anotaciones para simplificar el trabajo de desarrollo. Además, JAXB2 utiliza StAX (JSR173) en el nivel inferior para procesar documentos XML. Además de JAXB, también podemos lograr la misma función a través de XMLBeans y Castor. Tres: comprender StAXStAX (JSR173) es otra API para procesar documentos XML además de DOM y SAX en JDK6.0. El origen de StAX: hay dos métodos para procesar documentos XML en JAXP1.3 (JSR206): DOM (DocumentObjectModel) y SAX (SimpleAPIforXML) porque JAXB2 (JSR222) y JAX-WS2.0 (JSR224) en JDK6.0. Se utiliza StAX, por lo que Sun decidió agregar StAX a la familia JAXP y actualizar la versión JAXP a 1.4 (JAXP1.4 es la versión de mantenimiento de JAXP1.3. La versión JAXP en JDK6 es 1.4). StAX es la abreviatura de TheStreamingAPIforXML, una API que utiliza análisis de extracción para analizar documentos XML. StAX permite a los programadores controlar el proceso de análisis de documentos XML proporcionando una API basada en un iterador de eventos (Iterator), y el programa atraviesa este evento. procesa cada evento de análisis. Se puede considerar que el programa ha extraído el evento de análisis. Es decir, el programa solicita al analizador que genere un evento de análisis y luego procesa el evento y luego le solicita al analizador que genere el siguiente evento de análisis. Este ciclo continúa hasta que se encuentra el evento hasta el final del documento; SAX también procesa documentos XML en función de eventos, pero utiliza el análisis en modo push. Después de que el analizador analiza todo el documento XML, los eventos de análisis se generan y luego se envían al programa. para procesar estos eventos, DOM utiliza el método de Todo el documento XML se asigna a un árbol de memoria, de modo que los datos de los nodos principales, secundarios y hermanos se puedan obtener fácilmente. Sin embargo, si el documento es grande, el rendimiento disminuirá. verse gravemente afectado. Cuatro: usar CompilerAPI Ahora podemos usar CompilerAPI (JSR199) de JDK6 para compilar dinámicamente archivos fuente Java. CompilerAPI combinado con la función de reflexión puede generar dinámicamente código Java y compilar y ejecutar estos códigos, que es un lenguaje un poco dinámico.
Esta característica es muy útil para algunas aplicaciones que requieren compilación dinámica, como JSPWebServer. Después de modificar manualmente el JSP, no queremos reiniciar el servidor web para ver el efecto. En este momento, podemos usar CompilerAPI para implementar la dinámica. compilación de archivos JSP, por supuesto, el JSPWebServer actual también admite la implementación en caliente de JSP. El JSPWebServer actual compila el código llamando a javac a través de Runtime.exec o ProcessBuilder durante la operación. no es lo suficientemente elegante y fácil para hacer que el código dependa de un sistema operativo específico; CompilerAPI proporciona una forma más rica de realizar compilación dinámica a través de un conjunto de API estándar fáciles de usar y es multiplataforma. Cinco: HttpServerAPI ligero. JDK6 proporciona una HttpServerAPI simple, a partir de la cual podemos construir nuestro propio HttpServer integrado, que admite los protocolos Http y Https y proporciona una implementación parcial de HTTP1.1. La parte que no está implementada se puede ampliar mediante extensiones. En algunas API de HttpServer, los programadores deben implementar la interfaz HttpHandler ellos mismos. HttpServer llamará al método de devolución de llamada de la clase de implementación HttpHandler para manejar las solicitudes de los clientes. Aquí, llamamos a una solicitud Http y su respuesta como intercambio y la empaquetamos en la clase HttpExchange. es responsable de pasar HttpExchange al método de devolución de llamada de la clase de implementación HttpHandler. Seis: API de procesamiento de anotaciones conectable (API de procesamiento de anotaciones conectable) La API de procesamiento de anotaciones enchufable (JSR269) proporciona un conjunto de API estándar para procesar anotaciones (JSR175). De hecho, JSR269 no solo se usa para cuando se trata de anotaciones, creo que la función más poderosa es que establece un modelo del lenguaje Java en sí. Mapea elementos del lenguaje Java como método, paquete, constructor, tipo, variable, enumeración. y anotaciones en Tipos y Elementos (¿cuál es la diferencia entre los dos?), Mapeando así la semántica del lenguaje Java en objetos. Podemos ver estas clases en el paquete javax.lang.model para que podamos usar la API proporcionada. Por JSR269 para construir un entorno de metaprogramación rico en funciones, JSR269 usa AnnotationProcessor para procesar la anotación durante la compilación en lugar de durante el tiempo de ejecución. AnnotationProcessor es equivalente a un complemento del compilador, por lo que se llama procesamiento de anotaciones de complemento. Al procesar el código Java (ejecutar el método de proceso), el compilador llamará a AnnotationProcessor nuevamente. Si se genera un nuevo código durante el segundo procesamiento, se llamará a AnnotationProcessor nuevamente hasta que no se genere ningún código nuevo. Se llama "ronda", para que se pueda ver todo el proceso de procesamiento de anotaciones. La operación es una secuencia circular. JSR269 está diseñado principalmente como una API para herramientas o contenedores. Por ejemplo, queremos construir un marco de prueba unitario basado en anotaciones. TestNG) y use Anotación en la clase de prueba para identificar las necesidades durante la prueba. El método de prueba a ejecutar.
Siete: use la consola para desarrollar programas de consola. JDK6 proporciona la clase java.io.Console específicamente para acceder a dispositivos de consola basados en caracteres. Si su programa desea interactuar con cmd en Windows o Terminal en Linux, puede usar la clase Consola. pero no siempre obtenemos la consola disponible. Si una JVM tiene una consola disponible depende de la plataforma subyacente y de cómo se llama la JVM si la JVM se inicia en una línea de comando interactiva (como Windows cmd). e ingrese Si la salida no se redirige a otro lugar, puede obtener una instancia de consola utilizable Ocho: compatibilidad con lenguajes de secuencias de comandos como: Ruby, Groovy, JavaScript Nueve: Anotaciones comunes Las anotaciones comunes eran originalmente parte de JavaEE5.0 (. JSR244), y ahora SUN puso parte de ella en JavaSE6.0. A medida que se agrega la función de metadatos de anotación (JSR175) a JavaSE5.0, muchas tecnologías Java (como EJB, WebServices) utilizarán la parte de anotación en lugar de archivos XML. para configurar los parámetros de ejecución (o Se dice que admite programación declarativa (como las transacciones declarativas de EJB). Si estas tecnologías definen por separado sus propias anotaciones para fines generales, obviamente es un poco redundante. Por lo tanto, es necesario definir un común Conjunto de anotaciones para otras tecnologías Java relacionadas. La anotación es valiosa. Puede evitar construcciones repetidas y garantizar la coherencia de varias tecnologías en JavaSE y JavaEE. La siguiente es una lista de las 10 anotaciones en CommonAnnotations1.0 El código fuente ResourceRuntimeTYPE, METHOD. y FIELD utilizado para anotar los recursos generados se utilizan para anotar los recursos dependientes. El contenedor inyecta dependencias de recursos externos en consecuencia. Hay dos métodos: inyección basada en campos y inyección basada en métodos de establecimiento. ResourcesRuntimeTYPE anota múltiples dependencias externas al mismo tiempo. El contenedor inyectará todas estas dependencias externas en PostConstructRuntimeMETHOD, que se marca como un método que se ejecuta después de que el contenedor inyecta todas las dependencias. Se utiliza para la inicialización después de la inyección de dependencia. Solo se puede marcar un método como PostConstructPreDestroyRuntimeMETHOD. para eliminarlo del contenedor, debe ser El método de devolución de llamada ejecutado debe marcarse como PreDestroyRunAsRuntimeTYPE, que se usa para marcar qué rol de seguridad se usa para ejecutar el método de la clase marcada. Este rol de seguridad debe ser consistente con el rol de seguridad de. el Contenedor.
RolesAllowedRuntimeTYPE, METHOD se utiliza para marcar el rol de seguridad que puede ejecutar la clase o método marcado. Este rol de seguridad debe ser coherente con el rol de seguridad del contenedor. PermitAllRuntimeTYPE, METHOD permite que todos los roles ejecuten la clase o método marcado. no permite que ningún rol ejecute la clase o método marcado. La clase o método marcado indica que la clase o método no se puede ejecutar en el contenedor JavaEE. DeclareRolesRuntimeTYPE se usa para definir roles de seguridad que la aplicación puede verificar. se utiliza para verificar los roles de seguridad Nota: 1. RolesAllowed, PermitAll y DenyAll no se pueden aplicar al mismo tiempo en una clase o método. 2. RolesAllowed, PermitAll, DenyAll marcados en el método sobrescribirán RolesAllowed, PermitAll, DenyAll marcados en el. clase 3. RunAs, RolesAllowed, PermitAll, DenyAll y DeclareRoles no se han agregado a JavaSE6.0 4. Procesamiento El trabajo de anotaciones anterior lo realiza el contenedor JavaEE6.0 solo contiene las clases de definición de las primeras cinco anotaciones. en la tabla anterior y no incluye el motor para procesar estas anotaciones. Este trabajo se puede realizar mediante PluggableAnnotationProcessingAPI (JSR269)
.