Tantos JDK ... ¿Cuál usar y qué amenaza?

De un traductor: La decisión de traducir este artículo no fue por sí sola, sino que es una medida necesaria :). Nosotros, como proveedores del marco CUBA, somos abordados con este problema con una envidiable regularidad. Por supuesto, este también es un tema extremadamente importante para nosotros, y en respuesta a los últimos cambios, planteamos bancos de pruebas tanto en Oracle JDK como en OpenJDK: esta medida actualmente protege a nuestros usuarios de gastos imprevistos de licencia. Sin embargo, este tema aún no está cerrado, y continuamos monitoreando de cerca el desarrollo de eventos, y, quién sabe, tal vez tendremos que agregar stands para algunas otras asambleas de JDK el próximo año ...


El artículo debajo del gato cautiva por el hecho de que describe sucintamente los problemas y los JDK más populares con sus características.


Oracle anunció recientemente que la evolución de Java cambiará drásticamente gracias al cambio a "Release Train", un nuevo enfoque para la implementación de versiones. Este cambio también implicó cambios en términos de soporte de versiones, que ahora se implementarán no para todos, sino solo para las versiones LTS . La Comunidad de Campeones de Java ha aclarado las innovaciones que se están introduciendo, un documento detallado está disponible en línea .


Incluso con esta noticia, quedan preguntas: ¿qué compilaciones JDK están disponibles actualmente? ¿Serán gratis o comerciales? Antes de responder esta pregunta, es importante comprender cuáles son los requisitos para JDK como producto. De hecho, solo hay un código fuente JDK central. El esta aqui . Cualquiera puede usar el código fuente para construir su propio ensamblado y colocarlo en algún lugar de la red. Sin embargo, hay un procedimiento de certificación separado que debe completarse para que el ensamblaje JDK se considere válido. La certificación es proporcionada por Java Community Process (JCP), que proporciona el Kit de compatibilidad de tecnología (TCK). Si una organización crea un nuevo ensamblado OpenJDK que cumple con el TCK, se considera "compatible con Java SE".


Tenga en cuenta que un ensamblado no puede llamarse "Java SE" a menos que la empresa de ensamblaje haya adquirido una licencia comercial de Oracle. Por ejemplo, las compilaciones AdoptOpenJDK que pasan el TCK no son "Java SE", sino que son "compatibles con Java SE". También debe tener en cuenta que la certificación ahora se basa "en libertad condicional": los resultados no se envían a JCP / Oracle para su verificación y son información clasificada. En resumen, cada proveedor que toma el código fuente de OpenJDK y construye la versión genera otra compilación JDK por separado.


OpenJDKbilds


Por lo tanto, sin más preámbulos, le recomendamos que se familiarice con los siguientes JDK listos para usar:


Oracle JDK


Este es el principal proveedor de Java 11 (el lanzamiento ya se realizó). Esta es una versión comercial con soporte pagado. Se puede descargar de forma gratuita y usar solo directamente para el desarrollo. No puede usarlo en producción sin pagar Oracle (por lo que para muchos que no están interesados ​​en las licencias, esto es una trampa). Oracle planea proporcionar soporte pagado hasta 2026 y más allá. A diferencia del pasado, el ensamblaje de Oracle JDK no es de ninguna manera "mejor" que OpenJDK (siempre que ambos estén en el mismo nivel de parche de seguridad).


Oracle OpenJDK Build


Existen versiones gratuitas sin marca de OpenJDK distribuidas bajo la licencia GPL con la extensión Classpath (adecuada para uso comercial). Estas versiones de compilación solo están disponibles durante 6 meses después del lanzamiento. Se espera que Java 11 lance la versión 11.0.0 de Java y dos parches de seguridad, 11.0.1 y 11.0.2. Para continuar usando la versión OpenJDK y sus parches de Oracle, debe actualizar a Java 12 a más tardar un mes después del lanzamiento. Tenga en cuenta que el procedimiento para proporcionar parches de seguridad es diferente del procedimiento para proporcionar soporte, que incluye el pago por el procesamiento de informes de errores.


AdoptOpenJDK


Estos también son ensamblados OpenJDK gratuitos y sin marca distribuidos bajo la GPL con la Extensión de Classpath, solo que a diferencia de las compilaciones OpenJDK de Oracle, estas versiones de compilación durarán más tiempo para las versiones principales como Java 11. Se lanzarán versiones de Java 11 durante 4 años, un año después del próximo lanzamiento importante. AdoptOpenJDK está orientado a la comunidad. Mientras otros equipos crean y publican correcciones de seguridad para el repositorio original de OpenJDK, lanzarán compilaciones. Tanto IBM como Red Hat han indicado que tienen la intención de lanzar dichos parches.


AdoptOpenJDK OpenJ9


Además de las compilaciones estándar de OpenJDK, AdoptOpenJDK también proporcionará versiones con OpenJ9 en lugar de HotSpot. OpenJ9 era originalmente un IBM JVM, pero OpenJ9 ahora es de código abierto. Y, por cierto, esta opción es la más digna de estudio.


Red Hat OpenJDK


Red Hat proporciona versiones de compilación de OpenJDK en Red Hat Enterprise Linux (RHEL), un producto comercial con soporte pagado. Red Hat hace un buen trabajo de correcciones de seguridad en OpenJDK. En el pasado, Red Hat era responsable de las actualizaciones de seguridad de Java 6 y 7. La compilación de Red Hat está más integrada con el sistema operativo, por lo que no se puede llamar una compilación típica de OpenJDK (no hay un usuario final JDK).


Azul zulu


Zulu es una versión de marca de OpenJDK con soporte comercial pagado. Además, aunque Azul proporciona algunos artículos zulúes de forma gratuita a través de la comunidad zulú, no tienen ninguna obligación especial de hacer que estas asambleas estén disponibles. Azul tiene un plan de soporte Zulu bastante grande, que incluye soporte para Java 9, 13 y 15 , a diferencia de otros proveedores.


Amazon corretto


Esta es la más nueva de todas las opciones descritas. Corretto es una versión gratuita de la compilación OpenJDK con soporte a largo plazo a través de TCK. Se distribuye bajo condiciones de licencia estándar para todas las versiones de OpenJDK: GPL + CE. Amazon creará sus propios parches y lanzará Corretto en AWS, por lo que se usará de manera bastante activa (y ya se agregará a algunos productos). El soporte para Java 8 está planeado al menos hasta junio de 2023.


En el proceso de convertir el OpenJDK original a diferentes versiones del ensamblaje, el fabricante puede agregar varias utilidades o marcar el producto si esto no impide la certificación (TCK). Por ejemplo, no puede agregar un nuevo método público a la API o nuevos recursos de idiomas.


Hay otras implementaciones de JDK como IBM y SAPMachine. Sin embargo, estas versiones del ensamblaje no se usan con tanta frecuencia, por lo que no se mencionan en este artículo. Se puede encontrar más información aquí y aquí .


Conclusión


Personalmente, no veo un problema particular en presencia de varias versiones del JDK, ya que todas ellas deben estar certificadas (TCK). Lo que realmente vale la pena preocuparse es el uso de uno de los JDK patentados y una versión gratuita del ensamblado de Oracle, para evitar un dolor de cabeza en el futuro. Si usa solo funciones básicas (por ejemplo, su negocio no depende particularmente de las actualizaciones de seguridad), las compilaciones OpenJDK de Oracle (NO OracleJDK) son más adecuadas para usted, porque se actualizan constantemente (dentro de los 6 meses posteriores al lanzamiento) y puede usar JDK en producción sin ningún problema. Si su empresa utiliza servicios en la nube (o con AWS), AWS Corretto, que ya se puede usar en Amazon Linux y Docker , es una buena opción.

Source: https://habr.com/ru/post/es434790/


All Articles