Compilación a bytecode mediante el comando javac:
javac Saludo.java
Genera el arrchivo Saludo.class con instrucciones para la JVM
Ejecución de Bytecode
Interpretación del bytecode usando la JVM:
java Saludo
Optimizaciones con Compilación JIT
La JVM detecta automáticamente código frecuente para compilación nativa:
java -XX:+PrintCompilation Saludo # Muestra compilaciones JIT
java -XX:CompileThreshold=1500 Saludo # Ajusta umbral de optimización
Implementación Modular
Definición de Contratos
public interface MensajeHandler {
void enviar(String contenido);
}
Implementaciones Específicas
public class EmailHandler implements MensajeHandler {
@Override
public void enviar(String contenido) {
// Lógica para envío por email
}
}
Registro de Componentes
public class RegistroHandlers {
private static final Map<string mensajehandler=""> handlers = new HashMap<>();
public static void registrar(String tipo, MensajeHandler handler) {
handlers.put(tipo, handler);
}
public static MensajeHandler obtenerHandler(String tipo) {
return handlers.get(tipo);
}
}
</string>
Carga Dinámica
public class CargadorDinamico {
public static void cargarHandlers(String paquete) {
// Escaneo reflexivo de clases
// Instanciación de implementaciones
}
}
Empaquetado
jar cvf mensajes-handlers.jar com/aplicacion/*.class
Configuración
# handlers.properties
email=com.aplicacion.EmailHandler
sms=com.aplicacion.SMSHandler
Ejemplo de Implementación
public interface MensajeHandler {
void enviar(String contenido);
}
public class SMSHandler implements MensajeHandler {
@Override
public void enviar(String contenido) {
System.out.println("Enviando SMS: " + contenido);
}
}
public class RegistroHandlers {
private static final Map<string mensajehandler=""> HANDLERS = new HashMap<>();
static {
HANDLERS.put("email", new EmailHandler());
HANDLERS.put("sms", new SMSHandler());
}
public static MensajeHandler obtener(String tipo) {
return HANDLERS.get(tipo);
}
}
public class AplicacionMensajeria {
public static void main(String[] args) {
String tipo = args.length > 0 ? args[0] : "sms";
String texto = args.length > 1 ? args[1] : "Mensaje predeterminado";
MensajeHandler handler = RegistroHandlers.obtener(tipo);
if (handler != null) {
handler.enviar(texto);
} else {
System.out.println("Handler no soportado: " + tipo);
}
}
}
</string>
Compilación y Ejecución
javac AplicacionMensajeria.java SMSHandler.java EmailHandler.java
java AplicacionMensajeria sms "¡Mensaje urgente!"