Diario

Como habilitar las pestanas verticales en Chrome

2 Mins read

Introduccion

Google Chrome cuenta con una funcion experimental de pestanas verticales (Vertical Tabs) que muestra las pestanas en una barra lateral izquierda en lugar de la barra superior. Microsoft Edge ha ofrecido esto como funcion estandar desde hace tiempo, y Chrome ahora permite habilitarla a traves de chrome://flags.

Para quienes mantienen muchas pestanas abiertas o usan un monitor panoramico, las pestanas verticales pueden mejorar significativamente la productividad. Este articulo explica como habilitarlas y usarlas.

Que son las pestanas verticales

En Chrome estandar, las pestanas se organizan horizontalmente en la parte superior de la ventana. A medida que se abren mas pestanas, cada una se estrecha y el titulo se vuelve ilegible. Con 20 o mas pestanas abiertas, apenas se puede ver mas alla del icono.

Habilitar las pestanas verticales resuelve este problema:

  • Las pestanas se organizan verticalmente en una barra lateral izquierda, por lo que los titulos permanecen visibles incluso con muchas pestanas
  • Los titulos siempre se muestran como texto, facilitando encontrar la pestana deseada
  • Se elimina la barra de pestanas superior, aumentando el espacio vertical para el contenido
  • La barra lateral se puede colapsar y expandir segun sea necesario

Requisitos

  • SO compatible: Mac, Windows, Linux, ChromeOS
  • Version de Chrome: Se recomienda la ultima version (como flag experimental, puede no existir en algunas versiones)

Pasos de configuracion

Paso 1: Abrir la pagina de Flags

Escriba lo siguiente en la barra de direcciones de Chrome y presione Enter:

chrome://flags/#vertical-tabs

La entrada «Vertical Tabs» aparecera resaltada en amarillo.

Pagina de flags de Chrome mostrando la configuracion de Vertical Tabs. El menu desplegable esta en Enabled.

Como se muestra en la captura de pantalla, «Vertical Tabs» esta resaltado y se puede cambiar la configuracion desde el menu desplegable de la derecha.

Paso 2: Cambiar a «Enabled»

Haga clic en el menu desplegable junto a «Vertical Tabs» y seleccione «Enabled» (el valor predeterminado es «Default»).

La descripcion del flag indica:

Enables an option for showing tabs to the side. – Mac, Windows, Linux, ChromeOS

Paso 3: Reiniciar Chrome

Despues del cambio, aparece un boton azul «Relaunch» en la parte inferior de la pagina. Haga clic para reiniciar Chrome y activar las pestanas verticales.

Uso de las pestanas verticales

Despues de reiniciar, las pestanas apareceran verticalmente en la barra lateral izquierda.

Alternar la barra lateral

  • Haga clic en el icono de alternancia de la barra lateral en la parte superior izquierda de la ventana para mostrar u ocultar la barra lateral
  • Alternativamente, haga clic derecho en la barra de pestanas y seleccione «Mostrar pestanas en el panel lateral»

Colapsar la barra lateral

Cuando la barra lateral estorbe, haga clic en el boton de flecha en el borde izquierdo para colapsarla (vista solo de iconos). Haga clic de nuevo para expandir.

Volver a las pestanas normales

Para deshabilitar las pestanas verticales, abra chrome://flags/#vertical-tabs nuevamente, configure el menu desplegable en «Default» y reinicie Chrome. Esto restaura la barra de pestanas horizontal estandar.

Diferencias con las pestanas verticales de Edge

Las pestanas verticales de Microsoft Edge son una funcion estandar pulida con soporte de anidamiento de grupos de pestanas y colapso automatico. Las pestanas verticales de Chrome son experimentales, por lo que existen algunas diferencias:

Caracteristica Chrome Edge
Disponibilidad Flag experimental Funcion estandar
Grupos de pestanas Soporte basico Vista anidada
Colapso automatico No Si
Estabilidad Puede cambiar con actualizaciones Estable

Dicho esto, las pestanas verticales de Chrome son perfectamente utilizables para la navegacion diaria.

Resumen

Las pestanas verticales de Chrome se pueden habilitar en menos de un minuto a traves de chrome://flags/#vertical-tabs. Para quienes mantienen muchas pestanas abiertas o desean la misma experiencia que las pestanas verticales de Edge en Chrome, es una funcion que vale la pena probar.

Al ser un flag experimental, puede deshabilitarse con una actualizacion de Chrome. Si eso ocurre, simplemente siga los mismos pasos para volver a habilitarlo.

Read more
Diario

Lanzamiento de GPT-5.5: Estado Actual y Perspectivas Futuras

3 Mins read

Introduccion

En 2026, OpenAI lanzo GPT-5.5, el sucesor de GPT-5.4. Este articulo analiza las caracteristicas de GPT-5.5, su comparacion con modelos competidores, las consideraciones de migracion de API y su impacto en los sistemas empresariales, especialmente en Japon.

Posicionamiento de GPT-5.5

GPT-5.5 es la ultima evolucion del modelo insignia de OpenAI, basado en GPT-5.4. Mantiene su posicion como modelo base de proposito general para la comprension y generacion de lenguaje, abarcando generacion de texto, resumen, traduccion y asistencia en codigo.

Las principales mejoras respecto a GPT-5.4 incluyen:

  • Mayor precision en razonamiento
  • Soporte multimodal mejorado (integracion de entrada de imagen y audio)
  • Capacidades de agente avanzadas (invocacion de herramientas externas)
  • Limites de tokens ampliados

Tasa de uso de IA en los principales paises

La adopcion de modelos de IA, incluido GPT-5.5, varia significativamente segun el pais.

Tasa de uso de IA por pais principal (2025-2026). India 72 por ciento, China 65 por ciento en la cima. Japon en 32 por ciento.

Mientras que India y China muestran altas tasas de uso, Japon se mantiene en el 32%, una de las mas bajas entre las principales economias. Todavia existe un margen significativo para que las empresas japonesas integren la IA en sus operaciones.

Comparacion con modelos competidores

Los principales competidores de GPT-5.5 son la serie Claude de Anthropic y la serie Gemini de Google DeepMind.

Anthropic posiciona a Claude como «The AI for Problem Solvers», enfocandose en la resolucion de problemas. Gemini de Google DeepMind sigue el concepto de «Learn, build, and plan anything», equilibrando el uso general con dominios especializados (Veo para generacion de video, Imagen para generacion de imagenes, AlphaFold para ciencias de la vida).

Aspecto GPT-5.5 (OpenAI) Claude Opus 4.6 / 4.7 (Anthropic) Gemini 3.1 Pro (Google)
Fortaleza principal Madurez del ecosistema, integracion de plugins Procesamiento de contexto largo, diseno de seguridad Integracion multimodal, servicios de Google
Disponibilidad de API OpenAI API, Azure OpenAI Anthropic API Vertex AI, Gemini API
Soporte en japones Alto Alto Alto
Precio Medio-Alto Medio-Alto (Opus 4.7 mas caro) Medio

La diferenciacion funcional se esta reduciendo. Los criterios de seleccion se estan desplazando hacia la compatibilidad con sistemas existentes, la tolerancia al bloqueo de proveedor y la alineacion con las politicas internas de seguridad.

Consideraciones de migracion de API

Al migrar de GPT-5.4 o versiones anteriores a GPT-5.5, verifique lo siguiente:

  1. Cambio de nombre del modelo: Actualizar el parametro del modelo a gpt-5.5
  2. Formato de respuesta: Pueden haberse anadido nuevos campos de metadatos
  3. Limites de tokens: Los recuentos maximos de tokens de entrada/salida pueden haber cambiado
  4. Parametros obsoletos: Verificar si se han eliminado parametros

Lista de verificacion para la migracion:

  • Verificar los prompts existentes
  • Revisar el manejo de errores
  • Reconfirmar la configuracion de limites de tasa
  • Recalcular las estimaciones de costos

Impacto en los sistemas empresariales japoneses

Integracion con formularios y flujos de trabajo

El procesamiento vinculado a practicas comerciales especificas de Japon depende en gran medida de la precision del japones en el diseno de prompts. Con las capacidades mejoradas de japones de GPT-5.5, el esfuerzo dedicado a corregir manualmente particulas y frases podria reducirse.

Disponibilidad en Azure OpenAI

Para las organizaciones que no pueden enviar datos fuera de Japon, Azure OpenAI Service es la opcion principal. La disponibilidad de nuevos modelos en Azure suele retrasarse varias semanas o meses respecto a la plataforma de OpenAI. Los cronogramas de implementacion en produccion deben planificarse solo despues de confirmar las fechas de disponibilidad en Azure.

Consideraciones operativas

Las actualizaciones de version del modelo pueden cambiar sutilmente el comportamiento de salida. Los sistemas empresariales japoneses a menudo esperan implicitamente salidas identicas para entradas identicas. Contramedidas recomendadas:

  • Automatizar las pruebas de regresion
  • Revisar periodicamente muestras de salida manualmente
  • Fijar versiones del modelo para operaciones criticas

Perspectivas futuras

El lanzamiento de GPT-5.5 ha intensificado aun mas la competencia en el mercado de LLM. Google DeepMind esta expandiendo la familia Gemini con modelos especializados como Veo (generacion de video) y Lyria (generacion de musica), y OpenAI esta siguiendo una especializacion similar.

En Japon, se espera que avancen la expansion de las regiones domesticas de Azure OpenAI, las opciones de ajuste fino especificas para japones y los servicios de soporte de integracion de los integradores de sistemas nacionales.

Resumen

GPT-5.5 es una evolucion solida desde GPT-5.4, manteniendo la posicion insignia de OpenAI en un mercado de LLM cada vez mas competitivo. Al considerar su adopcion, las empresas japonesas deben realizar evaluaciones integrales que vayan mas alla de simples comparaciones de rendimiento, incluyendo la viabilidad de integracion de sistemas, la disponibilidad en Azure OpenAI y la preparacion operativa.

Read more
DiarioiOS

Japón es un mercado de mayoría iOS — Por qué necesitas tanto iOS como Android

2 Mins read

Cuando lanzas una app, ¿tu primer impulso es «primero Android» o «solo iOS porque la empresa lo dice»? A nivel global eso puede funcionar, pero en el mercado japonés, esa decisión descarta entre el 40 y el 60 % de tus usuarios potenciales desde el día uno.

Cuota de mercado móvil: iOS vs Android (Japón vs Mundo, 2026)

Como muestra el gráfico, la distribución iOS/Android en Japón y en el resto del mundo está completamente invertida.

Japón vs. el mundo: el reparto al revés

A nivel mundial, Android domina la cuota de sistemas operativos móviles. Según datos de StatCounter (enero 2025 – marzo 2026), Android tiene el 72,1 % e iOS el 27,6 % — una proporción de casi 3 a 1, impulsada principalmente por terminales Android económicos en India, el sudeste asiático y África.

Japón, en cambio, está en iOS 60,7 %, Android 39,1 %. Es uno de los pocos mercados del planeta donde iOS es mayoría.

Región iOS Android
Mundo 27,6 % 72,1 %
Japón 60,7 % 39,1 %
EE.UU. (ref.) ~56 % ~44 %
R. Unido (ref.) ~52 % ~48 %

Fuente: StatCounter Global Stats (ene 2025 – mar 2026) / EE.UU. y R. Unido son estimaciones del mismo periodo

¿Por qué Japón se inclina tanto hacia iOS?

Factor Detalle
Oferta de operadores NTT docomo, au y SoftBank llevan años poniendo el iPhone como dispositivo estrella en sus tiendas
Adopción juvenil La proporción de iPhones es más alta entre adolescentes y veinteañeros, el mismo grupo que mueve LINE y TikTok
Cultura de «sin iPhone no entras» iMessage y AirDrop son parte integral de la comunicación escolar y laboral — no tenerlos equivale a quedarse fuera
Dispositivos corporativos Muchas empresas eligen iPhone por la facilidad de gestión MDM y las mejores valoraciones de seguridad

Estos factores están muy arraigados y no van a cambiar de la noche a la mañana. Este panorama va para largo.

Lo que pierdes si solo soportas un OS

Si lanzas una app para Japón solo en iOS, te pierdes aproximadamente el 39 % de usuarios en Android. Si vas solo con Android, te pierdes alrededor del 61 % en iOS.

OS soportado Usuarios alcanzables en Japón Usuarios que pierdes
Solo iOS 60,7 % 39,3 %
Solo Android 39,1 % 60,9 %
iOS + Android ~99,8 % Casi cero

En apps empresariales, herramientas B2B y sistemas internos, que «algunos empleados no puedan acceder» es un problema crítico. Incluso en apps de consumo, acabas dividiendo las reseñas en las tiendas y el boca a boca.

Entonces, ¿qué haces en la práctica?

Apuesta por nativo — en serio

Flutter y React Native aparecen cada vez que alguien menciona multiplataforma, pero en cualquier proyecto serio el coste multiplataforma se acumula rápido: seguir el ritmo de las últimas APIs de cada OS, perseguir bugs específicos de plataforma y contratar ingenieros que puedan depurar ambas capas. Si estás construyendo una app de campaña desechable, vale, usa un framework. Para todo lo demás, nativo en iOS + nativo en Android sigue siendo la opción pragmática por defecto.

Lleva en paralelo las actualizaciones de iOS 26 y Android 16

2026 es un año clave para ambas plataformas.

  • iOS 26: A partir del 28 de abril de 2026, los envíos a App Store Connect requieren Xcode 26 + iOS 26 SDK (⚠️ aplicación en curso)
  • Android 16: La hoja de ruta de targetSdkVersion de Google Play exigirá targetSdkVersion 36 en algún momento de 2026

Un enfoque de «primero terminamos iOS, luego Android» no va a funcionar. Construye un proceso de equipo que gestione las actualizaciones de ambas plataformas en paralelo — esa es la jugada realista.

Los detalles de cada actualización de OS están en artículos separados:

Read more
Diario

Completa la migración a iOS 26 ya — Los requisitos del SDK de App Store cambian el 28 de abril de 2026

5 Mins read

Para subir compilaciones a App Store Connect se requerirá Xcode 26 y el SDK de iOS 26 a partir del 28 de abril de 2026. iOS 26 se lanzó en septiembre de 2025 — una actualización importante que incluye el diseño Liquid Glass y el framework Foundation Models anunciados en la WWDC25. iOS 27 se anunciará en la WWDC26 (del 8 al 12 de junio de 2026) y se espera que se publique en septiembre de 2026. Este artículo establece el orden de migración teniendo en cuenta ambas versiones.

Calendario de requisitos del SDK de App Store

Cada año, Apple eleva la versión mínima del SDK requerida para los envíos a App Store Connect.

Fecha de entrada en vigor Xcode requerido SDK requerido Estado
29 de abril de 2024 Xcode 15 SDK de iOS 17 En vigor
24 de abril de 2025 Xcode 16 SDK de iOS 18 En vigor
28 de abril de 2026 Xcode 26 SDK de iOS 26 ⚠️ Acción requerida
2027 (estimado) Xcode 27 SDK de iOS 27 Anuncio oficial después de la WWDC26

Fuente: <https://developer.apple.com/news/upcoming-requirements/>

Si no compilas con el SDK de iOS 26, no podrás subir actualizaciones de aplicaciones a App Store Connect. No se trata de nuevas funcionalidades — es un requisito obligatorio para seguir distribuyendo actualizaciones a los usuarios existentes.

Orden de prioridad para la migración a iOS 26

Prioridad Acción necesaria Motivo
🔴 Crítica Actualizar a Xcode 26 y verificar la compilación Directamente vinculado a la fecha límite del 28 de abril de 2026
🔴 Crítica Migrar a TLS 1.2+ si se conecta a endpoints con TLS 1.0/1.1 La versión mínima de TLS en URLSession cambió a 1.2
🟠 Alta Reemplazar el uso de UIScreen.mainScreen Marcado como obsoleto en el SDK de iOS 26
🟠 Alta Verificar los entitlements de apps Push to Talk El entitlement heredado ya no es compatible con el SDK de iOS 26
🟡 Media Adaptar al diseño Liquid Glass UIKit/SwiftUI estándar se adaptan automáticamente, pero la UI personalizada requiere verificación
🟡 Media Verificar el uso de claves Ubiquitous de CoreData Provoca errores de compilación con el SDK de iOS 26

Primero, pon en orden las herramientas

Ya sea que estés trabajando en el cumplimiento de iOS 26 o en la validación temprana de iOS 27, los primeros bloqueos suelen ser problemas con las herramientas de compilación, no con las APIs del sistema operativo. Asegura las herramientas primero.

Herramienta Versión recomendada Notas
Xcode 26.4.1 o posterior Requerido para envíos después del 28 de abril
Swift 6.0 (Swift 5.x aún soportado) Se recomienda concurrencia estricta de Swift 6
SwiftUI Versión incluida con el SDK de iOS 26 Nuevos componentes para soporte de Liquid Glass
iOS Deployment Target 16 o superior recomendado iOS 15 e inferiores están perdiendo cuota de mercado rápidamente

El problema más común al migrar al modo Swift 6 son los errores de concurrencia relacionados con CoreData. Acceder a NSManagedObject fuera de @MainActor ahora genera advertencias, por lo que la solución es envolver las operaciones dentro de bloques context.perform.

actor DataProcessor {
    func process(context: NSManagedObjectContext) async {
        await context.perform {
            // CoreData operations go inside context.perform
        }
    }
}

Cambios de comportamiento en iOS 26 con los que es fácil tropezar

Cambio en la versión mínima de TLS

Para las apps compiladas con el SDK de iOS 26, la versión mínima de TLS para URLSession y el framework Network se ha elevado de 1.0 a 1.2.

Si los sistemas internos o las APIs externas todavía utilizan configuraciones TLS heredadas, las apps compiladas con el SDK de iOS 26 no podrán comunicarse con ellos.

// Example allowing legacy TLS (not recommended — temporary workaround only)
let config = URLSessionConfiguration.default
config.tlsMinimumSupportedProtocolVersion = .TLSv10 // triggers a warning
let session = URLSession(configuration: config)

La solución correcta es actualizar el lado del servidor a TLS 1.2 o superior. Asegúrate de verificar también las conexiones realizadas a través de SDKs de terceros.

Eliminación de UIScreen.mainScreen

UIScreen.mainScreen, que ya estaba previamente obsoleto, ha sido marcado como obsoleto en el SDK de iOS 26. Para compatibilidad con multiventana y soporte de escenas en iPadOS, el tamaño de pantalla ahora debe obtenerse desde UIWindowScene.

// Before (deprecated)
let screenWidth = UIScreen.main.bounds.width

// After (recommended)
if let scene = UIApplication.shared.connectedScenes
    .first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
    let screenWidth = scene.screen.bounds.width
}

Cambio en el entitlement de Push to Talk

El entitlement com.apple.developer.pushkit.unrestricted-voip.ptt ya no funciona con el SDK de iOS 26. Se requiere la migración al framework Push to Talk (iOS 16+).

Eliminación de la clave de sincronización iCloud de CoreData

Claves como NSPersistentStoreUbiquitousContentNameKey, que fueron marcadas como obsoletas hace más de 10 años para la sincronización ubicua de iCloud, ahora provocan errores de compilación con el SDK de iOS 26. Los destinos de migración son NSPersistentCloudKitContainer (iOS 13+) o SwiftData (iOS 17+).

Adaptación al diseño Liquid Glass

Los componentes estándar de UIKit / SwiftUI (barras de navegación, barras de pestañas, sheets, etc.) se adaptan automáticamente al nuevo diseño. Para UI personalizada con dibujo manual, vale la pena verificar visualmente en un dispositivo real cómo interactúa con el desenfoque de fondo y los efectos de cristal.

Adelantarse a iOS 27 (WWDC26: del 8 al 12 de junio de 2026)

La WWDC26 se celebrará del 8 al 12 de junio de 2026. Como es habitual, el nuevo sistema operativo se anunciará el primer día con la Beta 1 disponible de inmediato. Se espera que iOS 27 se publique en septiembre de 2026.

Elemento a verificar Prioridad Momento
Completar el cumplimiento del SDK de iOS 26 antes de iniciar las pruebas de la Beta de iOS 27 🔴 Crítica Antes del 28 de abril de 2026
Evaluar internamente la adopción del framework Foundation Models (LLM en dispositivo) 🟡 Media Después de la WWDC26
Evaluar los requisitos de la API Declared Age Range (si tienes contenido orientado a jóvenes) 🟡 Media Después de la WWDC26
Expansión de App Intents (integración más profunda con Siri y Spotlight) 🟡 Media Después de la WWDC26
Re-verificar la adaptación de Liquid Glass con los cambios de diseño de iOS 27 🟡 Media Después de la WWDC26

Prioridad de pruebas para soporte simultáneo de iOS 26 y 27

Área funcional Elementos de verificación de iOS 26 Elementos de verificación de la Beta de iOS 27
Redes Identificar y corregir todas las conexiones por debajo de TLS 1.2 Cumplir con los nuevos requisitos de seguridad para las APIs conectadas
Diseño y UI Verificar visualmente las vistas personalizadas que se superponen con Liquid Glass Aplicar los cambios de las nuevas directrices de diseño
Persistencia de datos Verificar el uso de claves ubiquitous de CoreData Confirmar que la migración a SwiftData / CloudKit está completa
Notificaciones push Verificar los certificados APNs y los entitlements de Push to Talk Comprobar problemas de renderizado de la UI de notificaciones en iOS 27
Tamaño de pantalla Verificar los cambios de diseño por el reemplazo de UIScreen.main Confirmar soporte completo de multiventana en iPadOS
SDKs de terceros Actualizar a versiones compatibles con iOS 26 Verificar la compatibilidad de cada SDK con la beta de iOS 27

Problemas comunes en apps empresariales japonesas

Elemento de riesgo Detalles Mitigación
Cifrado heredado en VPNs corporativas DES/3DES/SHA1-96/SHA1-160 ya no son compatibles con VPN IKEv2. Las apps que usan VPNs basadas en NetworkExtension necesitan verificación Actualizar a AES-256/SHA-256 + grupo DH 14 o superior
Versión de TLS en conexiones de intranet Servicios web internos heredados como sistemas de asistencia y gastos pueden seguir usando TLS 1.0/1.1 Auditar proactivamente la configuración TLS de los servidores internos
Cambios en el calendario japonés y el comportamiento de entrada El manejo de dirección natural de texto en TextKit 2 ha cambiado. Compilar con el SDK de iOS 26 puede alterar la lógica de resolución de dirección de texto en japonés Probar el texto vertical y la renderización de texto mixto en japonés en dispositivos reales
Disponibilidad de Apple Intelligence El framework Foundation Models solo funciona en dispositivos compatibles con Apple Intelligence. Algunas funcionalidades en japonés se están desplegando gradualmente Verificar la implementación de fallback para dispositivos no compatibles
MDM corporativo / gestión de dispositivos Las apps compiladas con Xcode 26 necesitan verificarse bajo perfiles MDM Coordinar con TI para ejecutar la distribución por TestFlight en tu entorno de despliegue corporativo de forma anticipada

Qué verificar antes de actualizar

El primer paso más rápido es hacer un escaneo general de APIs obsoletas.

grep -R "UIScreen.mainb|unrestricted-voip.ptt|UbiquitousContentName|UbiquitousContentURL" ./

Ejecutar una verificación similar para problemas relacionados con TLS ayuda a detectar cosas que podrías pasar por alto.

grep -R "TLSv10|TLSv11|tlsMinimumSupported|kCFStreamSSLLevel" ./
Read more
Diario

¿Deberías adoptar Java 26? Ventajas y precauciones explicadas para el día a día

6 Mins read

Java 26 alcanzó disponibilidad general el 17/03/2026.

Hay muchas funcionalidades en vista previa de nuevo, pero hay algunos cambios en HTTP/3, G1 GC y hilos virtuales que podrían marcar una diferencia real de forma silenciosa.

Por otro lado, si tu entorno todavía arrastra APIs heredadas o flags antiguos de JVM, hay puntos claros donde una actualización podría causarte problemas.

Especialmente viniendo desde Java 8, la brecha es lo suficientemente grande como para que sea mejor identificar dónde te vas a atascar antes de mirar las novedades de Java 26.

Diagrama general

Migration flow from Java 8 to Java 26
Antes de saltar directamente a Java 26 desde Java 8, haz una limpieza intermedia en una versión LTS primero

Java 8 in production
	|
	+-- Audit legacy APIs / libraries
	|      - javax.xml.bind
	|      - Thread.stop
	|      - sun.*
	|      - Old JVM flags
	|
	+-- Validate on an LTS first
	|      - Test on Java 17 or 21
	|
	+-- Then check Java 26 deltas
			 - HTTP/3
			 - G1 improvements
			 - Virtual thread changes
			 - Security default changes

Lo que pinta bien

java.net.http.HttpClient ahora soporta HTTP/3.

Poder usar HTTP/3 sin cambios importantes en el código del lado de la aplicación es directamente útil.

Más allá de eso, hay mejoras de rendimiento bastante sólidas: reducción de sincronización en G1 GC, mejor recuperación de objetos enormes, y AOT Object Cache ahora soporta cualquier GC.

Los hilos virtuales también se han mejorado — es menos probable que retengan el hilo portador mientras esperan la inicialización de clases, lo que debería reducir escenarios de bloqueo extraños.

Algunas adiciones menores pero bienvenidas:

  • Process ahora implementa AutoCloseable
  • Se añadió UUID.ofEpochMillis(), facilitando el manejo al estilo UUIDv7
  • ByteOrder ahora es un enum, lo que facilita su uso en sentencias switch

Por ejemplo, el HTTP Client te permite beneficiarte con cambios mínimos en el código:

var client = HttpClient.newBuilder()
	.version(HttpClient.Version.HTTP_3)
	.build();

var request = HttpRequest.newBuilder()
	.uri(URI.create("https://example.com/api/status"))
	.GET()
	.build();

var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());

Y dado que Process ahora implementa AutoCloseable, la limpieza después de ejecutar comandos externos es un poco más limpia:

try (var process = new ProcessBuilder("java", "-version").start()) {
	var exitCode = process.waitFor();
	System.out.println("exit=" + exitCode);
}

Cosas a tener en cuenta

Primero, Thread.stop() ha sido eliminado.

Si todavía persiste en código de mantenimiento heredado, directamente no compilará en JDK 26.

La API de Applet también ha sido eliminada, así que los entornos que utilizan documentación o ejemplos antiguos deben tener cuidado.

La limpieza de flags de JVM también ha avanzado — flags como -Xmaxjitcodesize, MaxRAM y AggressiveHeap que has estado usando por inercia pueden necesitar revisión.

RMI sobre TLS ahora impone la identificación de endpoints por defecto, por lo que los entornos con SANs de certificados descuidados pueden encontrar fallos de conexión.

HttpRequest.Builder.timeout() ahora cubre la recepción completa del cuerpo de la respuesta, no solo la conexión inicial. Dependiendo de tu diseño de timeout existente, esto podría causar diferencias de comportamiento notables.

Para los entornos que han estado ejecutándose en Java 8 durante mucho tiempo, esto es lo que debes tener en cuenta antes de saltar directamente a Java 26:

  • Java 8 se ejecutaba bajo el modelo classpath, pero a partir de Java 9, los límites de módulos y las dependencias de APIs internas se hacen visibles
  • Los módulos de Java EE / CORBA fueron eliminados en Java 11, así que si javax.xml.bind todavía está en tu código, necesitarás una corrección por separado
  • Los valores por defecto de reflexión y seguridad se han vuelto más estrictos — código que antes funcionaba silenciosamente ahora puede generar advertencias o fallar
  • Las configuraciones antiguas de TLS, almacenes de claves y conexiones RMI son propensas a romperse justo después de una actualización

Para los sistemas empresariales japoneses, la codificación de caracteres es también un campo minado silencioso.

Los sistemas bancarios y de negocio core en particular a menudo todavía asumen codificaciones de la familia Shift_JIS para las integraciones de back-office y sistemas host.

Si consolidas todo de forma ingenua diciendo «UTF-8 es el estándar ahora», puedes terminar con bugs insidiosos donde la interfaz funciona bien pero los informes o las integraciones externas producen texto ilegible.

En la era de Java 8, había mucho código que funcionaba casualmente porque el charset por defecto en Windows era windows-31j.

Pero desde JDK 18, el charset por defecto es UTF-8, por lo que patrones como new String(bytes) o FileReader que dependen del charset implícito se comportarán de manera diferente después de la migración.

En la práctica, tampoco deberías tratar Shift_JIS y windows-31j como intercambiables.
Ambos están disponibles en la lista de charsets de Java, pero windows-31j / MS932 incluye extensiones específicas de Windows, por lo que puede haber discrepancias con números encerrados en círculos, caracteres dependientes de plataforma y extensiones IBM/NEC.

Para transferencias de archivos bancarios y conexiones con sistemas host, es más seguro confirmar de antemano si la otra parte espera «Shift_JIS pero en realidad CP932», «estrictamente dentro del rango Shift_JIS», o «incluyendo páginas de código de host IBM».

Si estás analizando específicamente problemas con el idioma japonés, estos deberían ser parte de tu lista de verificación previa a la migración:

  • ¿Se especifica explícitamente el charset en las conversiones de arrays de bytes?
  • ¿Estás confundiendo Shift_JIS con windows-31j?
  • ¿Has verificado la corrección de ida y vuelta para números encerrados en círculos, wave dash, tilde de ancho completo, caracteres dependientes de plataforma y gaiji?
  • Para CSVs de informes, archivos de longitud fija y transmisiones a host: ¿estás confundiendo longitudes basadas en caracteres con longitudes basadas en bytes?
  • ¿Puedes detectar caracteres no mapeables en lugar de reemplazarlos silenciosamente?

Así que si vienes de Java 8, en lugar de saltar directamente a 26 en producción, es más realista primero conseguir que tu compilación y tests pasen en LTS 17 o 21, eliminar las dependencias antiguas allí, y después evaluar Java 26.

Java 26 en sí es interesante, pero absorber el delta desde Java 8 es donde reside la mayor parte del trabajo real en la práctica.

Qué verificar antes de actualizar

El primer paso más rápido es hacer un escaneo general de APIs y flags obsoletos.

grep -R "Thread\.stop\|Xmaxjitcodesize\|AggressiveHeap\|MaxRAM" ./

Si quieres detectar también dependencias de la era de Java 8, ejecuta esto:

grep -R "javax\.xml\.bind\|javax\.activation\|CORBA\|sun\." ./

Para hacer un escaneo general de suposiciones de charset, esto ayuda a detectar cosas que podrías pasar por alto:

grep -R "Shift_JIS\|MS932\|windows-31j\|Cp943\|Cp930\|EBCDIC\|file.encoding" ./

En el lado de Java, es más seguro especificar explícitamente los charsets y detectar caracteres no mapeables en lugar de depender del charset por defecto:

var charset = Charset.forName("windows-31j");
var encoder = charset.newEncoder()
	.onMalformedInput(CodingErrorAction.REPORT)
	.onUnmappableCharacter(CodingErrorAction.REPORT);

var bytes = encoder.encode(CharBuffer.wrap("顧客コード①"));
System.out.println(bytes.remaining());

Una comparación aproximada:

  • Java 26 desde la perspectiva de Java 8: Brecha grande — esto es un proyecto de migración
  • Java 26 desde la perspectiva de Java 17: Principalmente evaluar nuevas funcionalidades y verificar cambios en valores por defecto
  • Java 26 desde la perspectiva de Java 21: El coste de migración es relativamente ligero

En términos más prácticos:

Perspectiva Java 8 Java 17 Java 21 Java 26
Posición en el campo Todavía común en sistemas heredados Sólido primer objetivo de migración Candidato principal actual Candidato para evaluación temprana y seguimiento
Dificultad de migración Punto de partida más difícil Buen punto de aterrizaje desde Java 8 Fácil de extender desde 17 Relativamente ligero desde 21 en adelante
Preocupaciones clave Eliminación de Java EE, dependencias de APIs internas Reflexión y límites de módulos Decisiones sobre adopción de hilos virtuales HTTP/3, mejoras de GC, cambios en valores por defecto
Enfoque recomendado Empezar con una auditoría Conseguir que CI pase primero El más fácil de estandarizar para producción Validar deltas en entornos de prueba

Para proyectos en Java 8, antes de entusiasmarse con las nuevas funcionalidades de Java 26, el tema real suele ser descubrir cómo despegar la deuda técnica de la era de Java 8.

Por el contrario, si ya estás en Java 17 o 21, Java 26 no es una «migración completa» — se trata más de evaluar cómo incorporar mejoras de rendimiento y cambios en valores por defecto.

Aquí hay algunas cosas que vale la pena verificar en CI para mayor tranquilidad:

  • Comportamiento de timeout y headers de HttpClient
  • Comunicación RMI / TLS que involucre validación de certificados
  • Creación de runtime con jlink
  • Dependencias de XML Signature y almacenes de claves heredados
  • Tests de ida y vuelta para archivos de integración con Shift_JIS / windows-31j / host

Las funcionalidades en vista previa / incubadora son interesantes, pero probablemente sea mejor considerarlas como objetivos de evaluación en lugar de listas para producción en este momento.

Resumen

Java 26 no es tanto un único gran cambio revolucionario como una acumulación de mejoras sólidas en rendimiento, APIs estándar y valores por defecto operativamente más seguros.

Para los sistemas empresariales típicos, las mejoras en HTTP/3, GC e hilos virtuales son avances positivos.

Por otro lado, cuanto más código heredado y flags de runtime antiguos tenga tu entorno, más importante es auditar primero y actualizar después.

Para los entornos japoneses, la codificación de caracteres en particular no debería posponerse.

En los entornos donde las codificaciones de la familia Shift_JIS o las integraciones con sistemas host todavía están en uso, corregir las dependencias del charset por defecto y los problemas de ida y vuelta del japonés tiene prioridad sobre evaluar las nuevas funcionalidades de Java 26.

Especialmente viniendo desde Java 8, hacer una limpieza intermedia en LTS 17 o 21 primero y después ir a por los beneficios de Java 26 es el camino más sensato.

Read more