Todos los Sábados a las 8:00PM

Ahora a suscribirse y seguir el contenido de este blog.

jueves, 18 de octubre de 2018

Urgent: Disable pstack Called From Diagsnap After Applying PSU/RU released between October 2017 and July 2018 to Grid Infrastructure (GI) Home on 12.1.0.2 and 12.2.



Alerts

Alert
Product Area
Last Updated
Oracle Database Exadata Cloud Machine Oracle Database Exadata Express Cloud Service Oracle Database Cloud Service Oracle Database Cloud Exadata Service Oracle Cloud Infrastructure - Database Service Oracle Database - Enterprise Edition Oracle Database Cloud Schema Service Oracle Database Backup Service
Wed, 17 Oct 2018 16:46 GMT-06:00

Bugs

Bug
Product Area
Bug ID
Last Updated
Oracle Database - Enterprise Edition
28719804
Thu, 18 Oct 2018 06:29 GMT-06:00

Knowledge Articles

Knowledge Article
Product Area
Last Updated
Oracle Database Exadata Cloud Machine Oracle Database Exadata Express Cloud Service Oracle Database Cloud Service Oracle Database Cloud Exadata Service Oracle Cloud Infrastructure - Database Service Oracle Database - Enterprise Edition Oracle Database Cloud Schema Service Oracle Database Backup Service
Wed, 17 Oct 2018 16:46 GMT-06:00

Como solucionar ORA-01439 modificando el tipo o precisión de una columna en una tabla con datos

Veamos la siguiente situación:

"Tienes una tabla en donde el tipo de dato definido para una columna específica, no corresponde con el modelaje que habías hecho. La tabla ya tiene tiempo en producción y la columna en cuestión, ya tiene datos.

Problema: Requieres cambiar el tipo de dato obligatoriamente, pero al ejecutar la modificación sobre la tabla, obtienes el siguiente error:"

SQL> ALTER TABLE CND_FACTURA MODIFY CODIGO_SEGURIDAD VARCHAR2(8 byte);

MODIFY CODIGO_SEGURIDAD VARCHAR2(8 byte)
       *
ERROR at line 2:
ORA-01439: column to be modified must be empty to change datatype

Para resolver este inconveniente, puedes utilizar el siguiente método, para evitar cambiar el orden de las columnas en la tabla.

Pre-requisitos:
  1. La columna a modificar no posee un constraints de NOT NULL. Si fuera así, debe desactivarse inicialmente el mismo.
  2. La modificación en la tabla, puede ocasionar objetos inválidos en el esquema, por dependencias con el objeto. Si es posible, genere una ventana de mantenimiento para evitar errores con el usuario final.
Post-ejecución:
  1. Activar constraints en la tabla que hayan sido deshabilitados.
  2. Verifique que no existen objetos inválidos. Previamente sería adecuado validar las dependencias en el objecto y determinar, cuáles objetos podrían quedar inválidos con el cambio. Para obtener las dependencias en la tabla, puedes utilizar el paquete DBMS_UTILITY, como se detalla a continuación:
set serveroutput on;
exec dbms_utility.get_dependency('TABLE', '&Esquema','&TABLA');
Ahora si, vamos al problema. Nuestra tabla es la siguiente:

SQL> desc CND_FACTURA
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER(38)
 ....
 COD_MONEDA                                         VARCHAR2(3)
 IND_IMPRESA                                        VARCHAR2(1)
 COD_FONDO                                          NUMBER(3)
 NOM_INQUILINO                                      VARCHAR2(150)
 TERCERA_PERSONA                                    VARCHAR2(150)
 NUM_RECIBO_IMPRESO                                 NUMBER(38)
 IND_APROBACION                                     VARCHAR2(1)
 CODIGO_SEGURIDAD                                   NUMBER(8)
 NUM_FACTURA_ATV                                    NUMBER(38)

Paso 1: Vamos a agregar una nueva columna con el tipo de dato que necesito migrar.

SQL> alter table CND_FACTURA add codigo_seguridad_original varchar2(8);

Table altered.

Paso 2: Vamos a actualizar los valores ya existentes en la columna que necesito modificar en la columna que hemos agregado.

SQL> update CND_FACTURA set codigo_seguridad_original=codigo_seguridad;

3315 rows updated.

Paso 3: Ahora actualizamos a NULL los valores para la columna que necesito migrar.

SQL> update cnd_factura set codigo_seguridad=null;

3315 rows updated.

Paso 4: Modificar a la nueva precisión o tipo de dato la columna con el problema.

SQL> ALTER TABLE CND_FACTURA MODIFY CODIGO_SEGURIDAD VARCHAR2(8 byte);

Table altered.


Paso 5: Actualizar la columna modificada, con los valores originales que contenía la misma.

SQL> update CND_FACTURA set codigo_seguridad=codigo_seguridad_original;

3315 rows updated.

SQL> commit;

Commit complete.

SQL> select count(*) from  CND_FACTURA where codigo_seguridad is not null;

  COUNT(*)
----------
       132

Paso 6: Remover la columna que habíamos agregado al inicio del ejercicio.

SQL> alter table CND_FACTURA drop column codigo_seguridad_original;

Table altered.

SQL> desc CND_FACTURA
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER(38)
 ID_CUOTA_CONDOMINAL                       NOT NULL NUMBER(38)
 FEC_FACTURA                               NOT NULL DATE
 FEC_VENCIMIENTO                           NOT NULL DATE
 FEC_CANCELACION                                    DATE
 IND_ESTADO                                NOT NULL VARCHAR2(1)
 MON_FACTURA                               NOT NULL NUMBER(38,2)
 SALDO_FACTURA                                      NUMBER(38,2)
 INT_MOROCIDAD                                      NUMBER(38,2)
 TIPO_FACTURA                              NOT NULL VARCHAR2(1)
 NUM_RECIBO_CANCELACION                             NUMBER(38)
 ID_USUARIO_MODIFICA                       NOT NULL VARCHAR2(35)
 FEC_MODIFICACION                          NOT NULL DATE
 IND_ENVIADO_CORREO                        NOT NULL VARCHAR2(1)
 OBS_FACTURA                                        VARCHAR2(255)
 ID_INQUILINO                                       NUMBER(38)
 COD_MONEDA                                         VARCHAR2(3)
 IND_IMPRESA                                        VARCHAR2(1)
 COD_FONDO                                          NUMBER(3)
 NOM_INQUILINO                                      VARCHAR2(150)
 TERCERA_PERSONA                                    VARCHAR2(150)
 NUM_RECIBO_IMPRESO                                 NUMBER(38)
 IND_APROBACION                                     VARCHAR2(1)
 CODIGO_SEGURIDAD                                   VARCHAR2(8)
 NUM_FACTURA_ATV                                    NUMBER(38)

SQL>

Estado resuelto.


miércoles, 17 de octubre de 2018

Java Continúa Siendo Libre (y Gratis)


Java Is Still Free


This is a repeat of the original Google Doc put together by the Java Champions community of independent Java leaders and experts
Portuguese translation by @leomrlima
Spanish translation by @aalmiray et al

Con los recientes cambios en la distribución y soporte de Oracle JDK, ha surgido una considerable incertidumbre sobre los derechos para utilizar la distribución Oracle JDK vs. Oracle OpenJDK vs. distribuciones OpenJDK de otros proveedores. También hay planes en torno a actualizaciones gratuitas y modelos de soporte pagado (nuevos y existentes) disponibles de varios proveedores para ser considerados. Este documento tiene una Versión Corta y una Versión Extendida con todos los detalles.

(Traducción por @aalmiray et al. de la versión 1.0.0 original en inglés)

Versión Corta

Todavía es posible obtener una distribución de Oracle JDK, Oracle OpenJDK y OpenJDK de otros proveedores de forma gratuita (la siguiente leyenda y el resto de la sección proporcionan los detalles sobre cada uno de estos términos). Esto se debe a que múltiples proveedores ofrecen implementaciones de la especificación Java SE.

Java SE / OpenJDK / Oracle OpenJDK / Oracle JDK

La comunidad OpenJDK crea y mantiene la implementación de referencia (RI) de código abierto (Open Source) (GPLv2 + CE) de la especificación Java SE gobernada por el Proceso de la Comunidad Java (Java Community Process o JCP por sus siglas en inglés) y definida a través de una solicitud de especificación Java (Java Specification Request o JSR por sus siglas en inglés) .

Existen otras implementaciones de Java SE de varios proveedores (como Azul, Eclipse, IBM, Red Hat, Oracle, SAP y otros), el más común entre ellas es Oracle JDK.

Oracle JDK 8 se está sometiendo al proceso de "Fin de actualizaciones públicas", lo que significa que ya no habrán actualizaciones gratuitas para uso comercial después de enero de 2019. Sin embargo, desde Java SE 9, Oracle también proporciona distribuciones de Oracle OpenJDK builds  que son gratuitas para uso comercial, así como también hay distribuciones gratuitas de OpenJDK por parte de otros proveedores como AdoptOpenJDK, Azul, IBM, Red Hat, distribuciones de Linux, etc.

Los proveedores aseguran que su implementación cumple con todos los requisitos de la especificación Java SE al pasar todas las pruebas del Kit de Compatibilidad Tecnológica (Technology Compatibility Kit o TCK por sus siglas en inglés) relevante.

En el futuro, hay varias opciones para obtener una distribución del JDK. Nos centramos en Java SE 8 (que está pasando por el final del proceso de actualizaciones públicas como lo fue así en versiones anteriores) y Java SE 11, que es la primera versión con Soporte de Tiempo Extendido (Long Term Support o LTS por sus siglas en inglés) bajo la nueva cadencia de publicaciones.

Continuar usando Java SE 8

Algunos prefieren continuar usando Java SE 8 por varios motivos.

  1. Oracle continuará ofreciendo actualizaciones públicas de Oracle JDK 8 al menos hasta diciembre de 2020 para computadoras de escritorio de uso personal y enero de 2019 para uso comercial. Después de éstas fechas, los usuarios podrán pagar por un plan de soporte o usar distribuciones de Java SE 8 / OpenJDK 8 de algún otro proveedor.
    1. En todo caso, puede continuar usando Oracle JDK 8 indefinidamente pero sin actualizaciones.

  1. Los usuarios que no utilicen Oracle JDK 8, podrán obtener con su proveedor de Java SE 8 / OpenJDK 8  las actualizaciones y/o planes de soporte comercial.

JAVA SE 8 GRATIS, CUÁL ESCOGER?

Si desea  tener actualizaciones de Java SE 8 después de enero de 2019, debe utilizar una distribución de OpenJDK de alguno de los proveedores de OpenJDK, como por ejemplo, AdoptOpenJDK, Azul, IBM, Oracle, Red Hat, entre otros.

Obtener Java SE 11 (LTS)

A continuación se describen las opciones para obtener JavaSE 11 (LTS), es importante remarcar que Oracle JDK cambiará a partir de Java SE 11.

    1. Oracle OpenJDK builds - Bajo la licencia de código abierto GPLv2+CE, y
    2. Oracle JDK - Bajo una licencia comercial (pero gratuita para desarrollo), para aquellos que no deseen hacer uso de la licencia GPLv2+CE, o que se encuentren usando Oracle JDK con algún otro producto o servicio de Oracle.

NOTA: Oracle planea proveer actualizaciones de Oracle OpenJDK durante dos trimestres y luego mover a los usuarios hacia la siguiente versión, cada 6 meses (esto incluye las versiones LTS).

  1. También se pueden obtener distribuciones de Java SE / OpenJDK de otros proveedores, como por ejemplo: distribuciones Linux, AdoptOpenJDK, Azul, IBM, Oracle, Red Hat, y otros. Esto incluye actualizaciones por algún tiempo, dependiendo si es una versión LTS o no.




JAVA SE 11+ GRATIS, CUÁL ESCOGER?

  1. Oracle OpenJDK se puede utilizar bajo la licencia de código abierto (GPLv2+CE) y seguir el nuevo ciclo de lanzamientos de cada 6 meses O
  2. Se puede utilizar una distribución OpenJDK de algún proveedor de OpenJDK alterno, como por ejemplo: distribuciones Linux, AdoptOpenJDK, Azul, IBM, Red Hat, y otros.

Soporte Comercial

Oracle planea proveer soporte comercial de Oracle JDK 8 hasta al menos 2025 y de Oracle JDK 11 hasta al menos 2026 (detalles aquí). Hay un amplio rango de opciones de soporte comercial de Java SE / OpenJDK 8 y 11 por parte de Azul, IBM, Red Hat, y otros.
Esta página se ha dejado deliberadamente en blanco para separar la versión corta de la extendida.

La Versión Extendida

Esta sección contiene todos los detalles ampliados de la sección Versión Corta de este documento.

También nos gustaría agradecer a Simon Ritter, Stephen Colebourne, Hendrik Ebbers, Donald Smith, Jonas Konrad y muchos otros por sus publicaciones anteriores y el permiso para reutilizar su material. El Apéndice I: Signatarios, Agradecimientos y Referencias proporciona una lista completa de acreditaciones y personas que son signatarias de este documento.

¡Todos los comentarios son bienvenidos! Use este enlace donde puede hacer ediciones y comentarios sugeridos.

Bitácora de Cambios

Este documento será actualizado con el tiempo a medida que nueva información salga a la luz o si hay una corrección verificada a los datos presentados. Retorne a éste documento para ver las actualizaciones y / o siga nuestra cuenta en Twitter: @Java_Champions.

Version
Date
Comments
1.0.0
17 Sept 2018 1100 GMT
Publicación Inicial
TBD
TBD
TBD



Diseminación

La siguiente hoja rastrea la diseminación conocida de este documento. Se recomienda actualizar dicha hoja si el documento es compartido.

Tabla de Contenidos

Versión Corta
Continuar Usando Java SE 8

Apéndice I: Signatarios, Agradecimientos y Referencias

Introducción

Con los recientes cambios a la distribución y soporte de Oracle JDK, existe una considerable incertidumbre acerca del futuro de Java, acerca del ciclo de vida del software, y acerca del soporte provisto por los proveedores. Este documento resume los cambios que está realizando Oracle y las diferentes opciones disponibles para los usuarios de Java SE.

Estos cambios que han ocurrido en poco tiempo, han creado una tormenta de incertidumbre donde aquellos desarrolladores que no siguen de cerca las noticias de la industria, se ven atrapados en ella. Esto lleva a publicaciones objetivamente incorrectas como:


Que afortunadamente se compensan con publicaciones más precisas como:


Este artículo cubrirá las principales áreas de preocupación y lo que se está haciendo sobre éstas por parte del ecosistema. Al final de esta publicación, el lector estará  convencido de que Java SE sigue siendo bien cuidado y que tiene un futuro más fuerte que nunca.

La Nueva Cadencia de Lanzamientos Cada 6 Meses y LTS

Java SE ahora realiza lanzamientos cada 6 meses, utilizando un nuevo esquema de versiones que se anunció previamente en 2017. Gracias a las mejoras en los procesos del JCP, contribuidores a OpenJDK ahora pueden introducir cambios en las características de la especificación JavaSE (como var en Java SE 10) cada 6 meses.

QUE SIGNIFICA LTS RESPECTO A JAVA / OPENJDK?
El soporte a largo plazo (LTS) en OpenJDK es solo un acuerdo entre los diversos contribuidores (liderados por Oracle) de que la línea de código para Java SE 11/17/23, etc. se mantendrá durante un período de tiempo más largo de 6 meses.

Oracle liderará los primeros 6 meses de una línea de código OpenJDK LTS, proporcionando actualizaciones y produciendo Oracle OpenJDK builds, para después proporcionar solamente actualizaciones para Oracle JDK, bajo un plan de soporte comercial.

Sin embargo, Oracle trabajará con otros proveedores de OpenJDK haciendo el paso de estafeta del código OpenJDK LTS y les permitirá continuar trabajando juntos para proporcionar actualizaciones. Cada proveedor tiene entonces la opción de proporcionar actualizaciones y / o soporte comercial para los binarios que ellos mismos produzcan.

NOTA: Esto significa que el Oracle JDK podría diferir de los binarios basados en OpenJDK producidos por otros proveedores (este ha sido siempre el caso). Dicho esto, siempre que los binarios pasen el TCK puede estar seguro de que esos binarios son compatibles con el estándar Java SE.

Comprender el nuevo esquema de control de versiones (incluyendo lo que significa LTS) y cómo se introducen las nuevas características afecta la forma en que se mantiene cada versión. Por mantenimiento, nos referimos a la provisión de versiones de actualización con parches de seguridad e importantes correcciones de errores.

ACTUALIZACIONES vs SOPORTE

Las actualizaciones se refieren a los parches de código que se han incluido en OpenJDK y Oracle JDK. Por lo general, estos han sido gratuitos, hasta que los proveedores decidan que hay un Fin de Actualizaciones Públicas.

El soporte significa un compromiso para corregir errores y requiere que el personal responda a los problemas de los usuarios, y eso cuesta dinero. Siendo claros, nunca ha habido soporte gratuito para Oracle JDK o OpenJDK.

Hasta OpenJDK 8 / Oracle JDK 8 inclusive, Oracle y otros contribuidores de OpenJDK proporcionaron actualizaciones dentro de una "publicación feature". Dichas publicaciones, como 8u91, 8u111 y 8u131 (en una cadencia de 6 meses) fueron reemplazadas por cada publicación posterior. Por ejemplo, una vez que se lanzó 8u111 no se realizaron actualizaciones para 8u91.

Comenzando con OpenJDK 9 / Oracle JDK 9, el nuevo ciclo de publicación semestral entró en vigencia y ahora las actualizaciones se producen entre "publicaciones feature", es decir, similares a 8u91 -> 8u111, una vez que se lanze 12, no se recibirán actualizaciones de 11 por parte de Oracle (Sin embargo, otros contribuidores de OpenJDK, probablemente liderados por Red Hat, los proporcionarán).

Plan de Actualizaciones de Oracle

Hasta Java 8, Oracle proporcionó actualizaciones de Oracle JDK para un ciclo de vida de más de 3 años, permitiendo el uso tanto en ambientes personales como comerciales. Las actualizaciones se proporcionaron sin soporte alguno, y el soporte requirió la compra de licencias explícitas de Oracle. El soporte comercial también conllevaba ciclos de actualización más largos.

A partir de Java 9, Oracle comenzó a usar una cadencia más rápida para lanzamientos Oracle JDK y también comenzó a producir Oracle OpenJDK builds. Las actualizaciones generalmente se proporcionarán durante 6 meses antes de que se detengan al momento de la publicación de la próxima versión. Si se requieren actualizaciones/soporte con una duración más larga, o para uso en producción, entonces debe comprarse una licencia de Oracle (es decir, debe estar en Oracle JDK). Periódicamente, las versiones se marcarán como "LTS". Estos lanzamientos serán soportadas por Oracle a través de sus licencias de soporte estándar por un período prolongado. Al momento de escribir este artículo, el plan de actualización de Oracle para Oracle OpenJDK builds, es el siguiente:

Versión Oracle OpenJDK Build
Fecha de Lanzamiento
8
Marzo 2014
Al menos hasta enero 2020 (uso personal de escritorio)
Uso comercial finaliza en enero 2019
9
Sept 2017
Reemplazado por Oracle OpenJDK build 10
10
Marzo 2018
Será reemplazado por Oracle OpenJDK build 11 en septiembre 2018
11
Sept 2018
Será reemplazado por Oracle OpenJDK build 12 en marzo 2019 (con posibilidad de extensión).
12
Marzo 2019
Para ser reemplazado por Oracle OpenJDK build 13
13
Sept 2019
Para ser reemplazado por Oracle OpenJDK build 14

La idea es simple. Tal como era el modelo de Java SE en la época de Sun, Oracle se centra en las nuevas innovaciones y en el avance de Java SE. Las organizaciones que desean permanecer en versiones antiguas pueden hacerlo a través de ofertas de soporte comercial. Por supuesto, para algunos usuarios de Java SE y empresas de desarrollo, dicha actualización rápida no es factible.

Plan de Actualizaciones de OpenJDK

La comunidad OpenJDK trabaja en una implementación gratuita y de código abierto del estándar Java SE. Oracle contribuye en gran medida a este proyecto, y es la base para Oracle JDK y Oracle OpenJDK builds. OpenJDK 11+ es intercambiable con Oracle JDK para las aplicaciones que se adhieren al estándar Java SE y utilizan una liberación que ha sido probada contra el TCK. Oracle continuará contribuyendo a OpenJDK mientras proporciona actualizaciones para la versión Oracle OpenJDK build correspondiente. Una vez que esa versión sea reemplazada, Oracle dejará de contribuir a esa versión y comenzará a actualizar la siguiente.

Oracle se ha comportado de manera muy receptiva a la idea de mantenimiento comunitario (para OpenJDK 6 y 7) y continuará apoyando el traspaso de OpenJDK a la comunidad a una entidad de voluntariado calificada una vez que Oracle comience a trabajar en la siguiente versión. Red Hat intervino para dirigir globalmente (y proporcionar actualizaciones regulares) los proyectos OpenJDK 6 y OpenJDK 7 después de que Oracle finalizó las actualizaciones para dichos proyectos. Después de que Red Hat dejó de actualizar OpenJDK 6, Azul Systems intervino para liderar el proyecto y continúan proporcionando actualizaciones hasta el día de hoy.

Red Hat tiene la intención de solicitar el liderazgo de OpenJDK 8 después de que Oracle deje de actualizarlo en enero 2019. Es importante tener en cuenta que, aunque Red Hat lidera los proyectos OpenJDK 6 y 7, no son los únicos contribuyentes. Otros proveedores también ofrecen parches y correcciones de vez en cuando. Con OpenJDK 8, habrá más contribuciones que nunca antes por parte de compañías como Amazon, Azul, IBM y otros.

Por coherencia, el ciclo de actualización de OpenJDK se extenderá para las mismas versiones que se consideren LTS de Oracle JDK. Al momento de escribir este artículo, el ciclo de soporte de OpenJDK es el siguiente:

NOTA: Las fechas propuestas están sujetas a cambios y dado que los proveedores presentan ligeras diferencias de tiempo en sus compromisos, usamos el término "Por lo menos".


Versión
Fecha de Lanzamiento
OpenJDK 6

Respaldado principalmente por Azul Systems
OpenJDK 7

Por lo menos hasta junio 2020 respaldado principalmente por Red Hat
OpenJDK 8
(LTS)
Marzo 2014
Por lo menos hasta septiembre 2023. Red Hat liderará después de enero 2019, y contará con el respaldo de Amazon, Azul Systems, IBM y otros.
OpenJDK 9
Sept 2017
Reemplazado por OpenJDK 10
OpenJDK 10
Marzo 2018
Será reemplazado por OpenJDK 11 en Septiembre 2018
OpenJDK 11 (LTS)
Sept 2018
Por anunciar, pero comparable a los ciclos de vida largos de OpenJDK 6/7/8
OpenJDK 12
Marzo 2019
Será reemplazado por OpenJDK 13
OpenJDK 13
Sept 2019
Será reemplazado por OpenJDK 14

Proveedores de Java SE / OpenJDK

Ahora existe una gran cantidad de proveedores Java SE / OpenJDK que proporcionan actualizaciones y/o opciones de soporte comercial. Las siguientes secciones proporcionan muchos detalles, si prefiere una lectura más corta, la publicación Opciones para Java SE 11 (en inglés) de Stephen Colebourne ofrece un resumen.

ACTUALIZACIONES vs SOPORTE

Las actualizaciones se refieren a los parches de código que se han incluido en OpenJDK y Oracle JDK. Por lo general, estos han sido gratuitos, hasta que los proveedores decidan que hay un Fin de Actualizaciones Públicas.

El soporte significa un compromiso para corregir errores y requiere que el personal responda a los problemas de los usuarios, y eso cuesta dinero. Siendo claros, nunca ha habido soporte gratuito para Oracle JDK o OpenJDK.

Por qué Escoger Soporte Comercial?

Si necesita una solución de manera oportuna, alguien que responda a sus peticiones como usuario, o si desea la tranquilidad de que el binario que utiliza está respaldado por un proveedor, entonces Azul, IBM, Red Hat, Oracle y otros le ofrecen distintas opciones.

UNA RAZÓN FILOSÓFICA QUE JUSTIFICA EL PAGO POR CÓDIGO ABIERTO
La industria en general ha resuelto que el código abierto es el camino a seguir. Debido a su naturaleza de "libertad", las licencias de OSS permiten a las personas modificar y adaptar el software de otras personas sin temor a acciones punitivas.

Muchas personas también disfrutan de la naturaleza "gratuita" del software de código abierto, ¡Pero esto tiene un gran costo para los autores! Los desarrolladores de software, como cualquier otro, necesitan poner un techo sobre sus cabezas y comida en su mesa. Los proveedores como Oracle invierten grandes sumas de dinero en Java SE (alrededor de decenas de $ millones por año como mínimo) y de alguna manera tienen que pagar ese costo.

Así que, aunque ciertamente no está obligado a utilizar una opción de soporte comercial con uno de los proveedores, a veces vale la pena pensar en cómo usted, los usuarios finales, pueden respaldar el ecosistema Java SE para garantizar que tenga un futuro duradero.

Reseña de Proveedores

Construirlo Directo desde la Fuente

Implica crear una distribución por cuenta propia, basada en la fuente canónica de OpenJDK [OpenJDK, sin soporte comercial, requiere esfuerzo propio]:

Distribuciones Binarias Gratuitas

Distribuciones gratuitas para Linux, Windows, Mac, etc. [OpenJDK, sin soporte comercial]:

Distribuciones con Soporte Comercial

Incluye soporte comercial [cumplen con Java SE]:

Azul Systems [basado en OpenJDK]:
IBM [basado en OpenJDK + Eclipse OpenJ9 VM]:

Oracle JDK [basado en OpenJDK]:

Red Hat [basado en OpenJDK]:

Distribuciones Linux

Las diversas distribuciones de Linux continuarán proporcionando OpenJDK para sus respectivas distribuciones, que incluyen pero no se limitan a Debian, Ubuntu, CentOS, Fedora, Mint, Alpine et al.

Opciones de Soporte

Las distribuciones Linux normalmente no ofrecen soporte comercial (la excepción siendo Red Hat para OpenJDK en RHEL).

Enlaces Importantes

Por favor visite la página de inicio de la distribución particular para obtener más información.

AdoptOpenJDK

AdoptOpenJDK proporciona distribuciones binarias OpenJDK (HotSpot y Eclipse OpenJ9) para una amplia gama de plataformas (Linux, Mac, Windows 32/64, Arm 32/64, z / OS, Solaris, AIX, PPC, s390 y más).

Opciones de Soporte

  • AdoptOpenJDK no ofrece soporte comercial. Simplemente proporciona binarios creados bajo un riguroso procesos de pruebas (algunos de los cuales cubren el TCK) de los proyectos OpenJDK y Eclipse OpenJ9.
  • IBM ofrece soporte comercial para distribuciones binarias de OpenJDK (con Eclipse OpenJ9 VM) construídas en AdoptOpenJDK.

Enlaces Importantes

Azul

Azul proporciona distribuciones binarias de OpenJDK (Zulu), así como una plataforma especializada de Java (Zing).

Opciones de Soporte

Azul ofrece una opción para todas las empresas que no desean omitir todas las versiones de Java SE entre lanzamientos de LTS, pero que no pueden cambiar a la versión más nueva cada 6 meses. Adicionalmente al soporte de todas las versiones de LTS, donde Azul brinda un año más de soporte que Oracle, Azul ofrece soporte para las así llamadas versiones de Soporte de Mediano Plazo (Medium Term Support o MTS por sus siglas en inglés) para Zulu JDK. Puede obtener soporte comercial para cada segunda versión de Java SE independientemente de si es LTS o no. La duración de soporte de estas versiones es diferente. Azul intenta proporcionar un buen intervalo de tiempo para preparar una migración a la próxima versión y define 3 duraciones diferentes para el soporte de las versiones Java SE.

Debido a que Zulu es una distribución de Java SE que orientada a aplicaciones en servidores, Azul no proporciona ningún modelo compatible para Java SE en computadoras de escritorio. A diferencia de Oracle, el soporte comercial de Zulu no está definido por CPU, sino en función del número de sistemas. Un sistema se define como un servidor físico o virtual. La única diferencia entre el soporte estándar y premium es la disponibilidad del soporte. Al comprar soporte premium puede llamar a Azul 24x7.

Enlaces Importantes

IBM

IBM proporciona paquetes JDK nativos para AIX, Linux (en x86, Power, zSystems), z/OS e IBM i. IBM ofrece las versiones de IBM SDK para Java SE para uso con productos o plataformas de IBM y para el uso de desarrolladores de developerWorks. IBM también proporciona binarios OpenJDK (con Eclipse OpenJ9) creados y probados en AdoptOpenJDK.

Opciones de Soporte

Para Java SE 7 y 8, IBM aún proporciona actualizaciones de seguridad y correcciones de errores. El Ciclo de Vida de Soporte IBM continuará siendo actualizado. Basado en el nuevo esquema de lanzamientos de Java SE, IBM ha anunciado que las versiones no LTS estarán disponibles como OpenJDK con los binarios OpenJ9 de AdoptOpenJDK.

Enlaces Importantes

Oracle

Oracle ahora produce dos binarios JDK: el tradicional Oracle JDK y el Oracle OpenJDK.

Opciones de Soporte

En junio de 2018, Oracle reemplazó su antiguo producto de soporte de licencia perpetua “Java SE Advanced” por una oferta basada en suscripción que incluye licencia y soporte. Una de estas ofertas se orienta a Java SE en el escritorio y la otra a Java SE en el servidor, la nube y Java SE en general. Si no utiliza Java SE en el escritorio, la “Java SE Subscription” será el modelo de soporte adecuado para usted. Si utiliza Java SE en el escritorio para aplicaciones cliente, el producto “Java SE Desktop Subscription” está disponible. Si su software utiliza un servidor Java SE y clientes basados en Java SE, puede suscribirse a ambas ofertas.
El soporte comercial para las aplicaciones Java SE en el escritorio puede ser bastante importante para algunas empresas ya que Oracle eliminará varias características importantes del JDK comenzando con Java SE versión 11. Si está utilizando Java SE en el escritorio, recomendamos ampliamente leer lo siguiente artículos:

Enlaces Importantes

Red Hat

Red Hat produce binarios OpenJDK para varias plataformas en las que se ejecuta Red Hat Enterprise Linux.

Opciones de Soporte

Red Hat no proporcionará versiones de Java SE 9 y 10. La próxima distribución que Red Hat planea lanzar es OpenJDK 11 para Red Hat Enterprise Linux 7 (RHEL por sus siglas en inglés.). Actualmente, Java SE 8 es la versión compatible para Red Hat Enterprise Linux y la compañía le dará soporte hasta el 2023.

Enlaces Importantes

Java Desktop / Java Web Start / JavaFX

Hay una serie de cambios con Desktop Java SE comenzando con Oracle JDK 11 que debe tener en cuenta.

JavaFX / OpenJFX

A partir de Java SE 11, tanto los binarios Oracle JDK y las Oracle OpenJDK builds no incluirán los binarios de JavaFX. Los componentes de JavaFX estarán disponibles como un SDK separado, o como artefactos que se pueden usar a través de herramientas de compilación (por ejemplo, Apache Maven, Gradle et al.). Como consecuencia positiva de este desacoplamiento, el desarrollo de JavaFX ahora puede tener su propio calendario de lanzamientos y plan de características.

JavaFX se sigue desarrollando en OpenJFX, que es un proyecto en auspicio de la comunidad OpenJDK. Oracle, otras empresas y personas de la comunidad están desarrollando activamente JavaFX. También se creó un repositorio espejo en GitHub sincronizado automáticamente, lo que reduce la barrera para que los desarrolladores contribuyan con código y reporte de problemas a JavaFX.

Por el momento, lanzamientos para OpenJFX solo las proporciona la empresa Gluon. Otras entidades e individuos pueden crear o distribuir binarios también dado que todo el código fuente OpenJFX es 100% abierto. En OpenJFX, se sigue un enfoque similar al de OpenJDK, donde después de lanzar JavaFX 11, el foco está en JavaFX 12, y así sucesivamente. Se recomienda a los desarrolladores y usuarios de JavaFX que utilicen la versión más reciente de OpenJFX.

Gluon proporciona un plan de soporte para empresas que desean soporte a largo plazo para JavaFX 11.

Java Packager

El binario javapackager, que permite agrupar aplicaciones y sus dependencias con un subconjunto de la JVM, ya no forma parte de OpenJFX y se elimina de Oracle JDK y Oracle OpenJDK builds a partir de Java 11. Se envió una Propuesta para Mejoras Java (Java Enhancement Proposal o JEP por sus siglas en inglés) para agregar una herramienta de empaquetado para OpenJDK. Si bien la nueva Java Packaging Tool no estará lista para la versión de Java 11, Gluon está trabajando en una herramienta que permita que las aplicaciones de Java 11 se empaqueten en imágenes nativas.

Java WebStart

Si está utilizando la tecnología Java Web Start para distribuir clientes de escritorio, debe ocuparse de la situación actual lo más rápido posible, ya que Oracle ha eliminado Web Start de Java.

FAQ

Reconocemos que la publicación anterior puede no tener la información explicada de manera que responda su pregunta de manera exacta. Por ello proporcionamos un FAQ (Frequently Asked Questions)

Variantes OpenJDK vs Cada Una vs Oracle JDK

Q. ¿Cuáles son las diferencias entre OpenJDK, Oracle OpenJDK y Oracle JDK?

Hablaremos sobre versiones de Java 11+ LTS solamente en este punto. Las versiones Oracle JDK y Oracle OpenJDK son idénticas, pero tienen licencia de diferentes maneras (comercial y GPLv2 + CE, respectivamente).

Oracle JDK / Oracle OpenJDK builds y OpenJDK builds de otros proveedores se construirán desde la misma fuente durante los primeros 6 meses de actualizaciones y deben ser intercambiables para ese período. Después de 6 meses, Oracle JDK / Oracle OpenJDK builds se construirán desde la propia copia (fork) de Oracle. Otros proveedores OpenJDK continuarán creando binarios del proyecto de actualizaciones OpenJDK. Oracle JDK / Oracle OpenJDK y OpenJDK builds de los otros proveedores pueden por lo tanto diferir en pequeñas formas. Los binarios de varias partes pueden, por supuesto, variar con el tiempo.

Q. ¿Cuáles son las diferencias entre la actualización de OpenJDK de proveedor A versus la de proveedor B?

Hablaremos sobre lanzamientos LTS solamente en este punto. Como ha sido el caso con los proyectos de actualizaciones de Java SE 6 y Java SE 7, varios proveedores trabajan juntos en la comunidad OpenJDK, la cual proporciona repositorios comunes, listas de correo e infraestructura diversa para compartir el trabajo. Esto significa que la diferencia entre los binarios basados en OpenJDK son en su mayoría funciones no esenciales, como monitoreo extendido y soporte de diagnóstico. Aunque puede haber pequeñas diferencias en los archivos binarios finales (tal vez una herramienta específica del proveedor, etc.) todos tendrán al menos la misma línea de base de seguridad y estabilidad, tal y como ha sucedido durante muchos años.


Oracle JDK / OpenJDK 8, 11 Fin de las actualizaciones públicas de Oracle


Con el fin de las actualizaciones públicas de Oracle JDK 8 y 11 que se realizarán próximamente, algunas personas no tienen claro el tema de las ramificaciones:

Q. Si permanezco en Oracle JDK 8 / 11, ¿ tengo que pagar para obtener seguridad y corrección de errores?

Con Oracle JDK 8, si es de uso personal, en escritorio, la respuesta es no. Para uso comercial después de enero de 2019, entonces sí. Para las compilaciones Oracle OpenJDK que comienzan con Java SE 11, después de los 6 meses iniciales de actualizaciones, la respuesta es sí.

Q. Si permanezco en OpenJDK 8/11, ¿tengo que pagar para obtener seguridad y corrección de errores?

No necesariamente. Como fue el caso de Java SE 6 y Java SE 7, Oracle trabaja con la comunidad OpenJDK para hacer la transición del liderazgo de los proyectos de actualización de OpenJDK a otros contribuyentes. Esto funcionó bien durante más de una década. Es muy probable que Red Hat continúe con este liderazgo en las actualizaciones de OpenJDK 8 y OpenJDK 11 con la ayuda de Oracle y otras partes. Esto significa que los parches importantes serán selectivamente respaldados. Luego se tiene la opción de tomar binarios basados en OpenJDK de una variedad de proveedores de forma gratuita, o como parte de una oferta de soporte pagado. En particular, existe un grupo de vulnerabilidad OpenJDK que se ocupa de exploits de 0 días así como Brechas y Vulnerabilidades Comunes (Common Vulnerabilities and Exposures o CVE for sus siglas en inglés), garantizando que las correcciones se eliminen lo más rápido posible.



Q. ¿La versión JDK 8 y 11 aún estarán disponibles para descarga (ultimo release público)? Por ejemplo, ¿qué pasa, si hay una compañía que tiene un software que se ejecuta solamente con Oracle JDK 8 y aprovisiona una nueva máquina después de Enero del 2019?

Aún se podrá descargar versiones antiguas del Oracle JDK hasta el punto cuando las  actualizaciones públicas sean detenidas. No hay razón para esperar que estas versiones sean eliminadas. Oracle JDK 8 seguirá siendo gratuito para uso personal de escritorio hasta al menos el 2020.

Q. ¿Se necesitará comprar una licencia de Oracle para descargar / ejecutar Oracle JDK 8/11 para uso comercial y actualizaciones después de Enero del 2019?

El Oracle JDK continuará siendo gratuito para descarga y se puede usar libremente para  desarrollo, pruebas, y demos. Sin embargo, si se desea desplegar este en un entorno de  producción, se necesitará pagar por una "Java SE Subscription".  Se seguirá como es usual el proceso de “Fin de las actualizaciones públicas” que ha estado en practica durantes más de una década. Además, hay que tener en cuenta que Oracle JDK 8 seguirá siendo gratuito para uso personal en escritorio por lo menos hasta el 2020.

Q. ¿Si alguien está usando Oracle JDK para ejecutar software comercial, después de Enero del 2019 necesitará comprar una licencia?

No. El usuario puede continuar usando Oracle JDK 8 indefinidamente sin  pago alguno. El único costo es si se desea obtener actualizaciones posteriores a enero del 2019, en cuyo caso se deberá comprar una “Oracle Java SE Subscription”.

Q. ¿Qué pasará con Oracle Java Web Start después de Enero del 2019? ¿Seguirá funcionando y/o en qué punto habrá que comprar una licencia?

Como Java Web Start es parte de Oracle JDK 8, este continuará funcionando y podrá ser usado indefinidamente sin costo. Como se indicó anteriormente, si se necesita actualizaciones (corrección de errores y parches de seguridad)  se deberá comprar una "Java SE Subscription". Si tus usuarios finales son consumidores, ellos estarán cubiertos de forma gratuita hasta el 2020, ya que Oracle JDK 8 seguirá siendo gratuito para uso personal en escritorio, al menos, hasta finales del 2020. Oracle ha declarado que continuará brindando soporte (es decir, proporcionará actualizaciones comerciales) para Java Web Start hasta marzo del 2025.

Apéndice I: Signatarios, Agradecimientos y Referencias


Un agradecimiento especial a las siguientes personas que abrieron camino con sus publicaciones anteriores en blogs y artículos en línea. Muchos de los enlaces y el material en este documento fueron copiados y cotejados (con permiso) de estas fuentes.

  1. Java Champions - Un cuerpo comunitario de expertos en Java
    1. Simon Ritter (Deputy CTO - Azul) - Eliminating Java Update Confusion
    2. Stephen Colebourne (autor Joda-Time) - Java is still available at Zero Cost and Java 11 Options.
    3. Hendrik Ebbers (Co-fundador Karakun) - Do I need to pay for Java now?
    4. Johan Vos (Co-fundador Gluon) - JavaFX Release and Support Plans
    5. Martijn Verburg - Autor Principal / Facilitador de éste documento
    6. Y muchos más!
  2. Oracle via Donald Smith (Director Senior de Product Management)
  3. Otras personas notables
    1. Jonas Konrad - Java Support

Las siguientes personas del ecosistema de Java respaldan este documento como un registro justo y equilibrado del estado de Java SE / OpenJDK y planes para actualizaciones gratuitas y / soporte comercial.

Person
Credentials
Martijn Verburg
AdoptOpenJDK co-lead, Java Champion, London JUG Leader, Member of JCP Executive Committee, Jakarta EE Steering Committee Member, CEO @ jClarity
Hendrik Ebbers
Java Champion, JUG Dortmund Leader, JSR EG member, Co-founder of Karakun
Ivar Grimstad
Java Champion, Malmö JUG Leader, JCP Executive Committee Member, EE4J PMC Lead, Jakarta EE WG Member
Markus Eisele
Java Champion
Heinz Kabutz
Java Champion, The Java Specialists’ Newsletter, JCrete Founder
Ivan St. Ivanov
Java Champion, Bulgarian JUG Leader, jPrime Conference Organizer, Virtual JUG Leader, VIDA Software co-founder and senior programmer
Stephen Colebourne
Java Champion, Creator Joda and ThreeTen projects
Trisha Gee
Java Champion, Sevilla Java User Group Leader, JCP Executive Committee Member, Java Developer Advocate for JetBrains
Josh Long
Java Champion, Spring Developer Advocate for Pivotal, best-selling book author and prolific speaker worldwide
Gail Anderson
Java Champion, Oracle Developer Champion, co-founder Anderson Software Group, Inc.
Justin Lee
Java Champion, JSR EG Member
Andres Almiray
Java Champion, JCP EC Member, Oracle Developer Champion, Hackergarten worldwide
Enrique Zamudio
Java Champion, JVMMX (Mexico City JUG), author of j8583, jAlarms, Ceylon to Javascript compiler
Alan Williamson
Java Champion, author, podcaster,  CTO of MacLaurin Group
Maurice Naftalin
Java Champion, Oracle Developer Champion, author
Mark Heckler
Java Champion, Spring Developer Advocate for Pivotal, conference speaker, & published author
Kirk Pepperdine
Java Champion, jCrete cofounder, Performance tuning advocate, co-founder jClarity
Matt Raible
Java Champion, Web Developer, and Developer Advocate at Okta. Classic VWs Enthusiast.
Henri Tremblay
Java Champion, Montréal JUG & Devoxx4kids Québec leader, EasyMock and Objenesis lead developer, conference speaker
Cay Horstmann
Java Champion, author of “Core Java”
David Heffelfinger
Java Champion, Apache NetBeans Committer, Technical Author, Jakarta EE Consultant and Instructor.
Josh Juneau
Java Champion, Apache NetBeans Committer, Jakarta EE Mojarra Committer, Technical Author, Podcaster
Jonathan Giles
Java Champion, Dukes Choice Award winner, Microsoft Cloud Developer Advocate, Co-founder Gluon
Ben Evans
Java Champion, former JCP EC Member, co-founder jClarity, author of “Java in a Nutshell” & “Optimizing Java”
Johan Vos
Java Champion, Oracle Developer Champion, Gluon co-founder
Thor Henning hetland
Java Champion, Principal at Capra Consulting. Community leader Cantara, javaBin, JavaZone, Oslo Software Architecture and more..  
Simone Bordet
Java Champion, JUG Torino co-leader, Jetty team member
Holly Cummins
Java Champion, Author of Enterprise OSGi in Action
Daniel Bryant
Java Champion, co-author of Continuous Delivery in Java, and leader within the LJC
Mohamed Taman
Java Champions, Oracle Developer Champions, JCP member, EGJUG leader, Sr. Enterprise Architect / Sr. Software Engineer @WebCentric Belgrade, Serbia. International speaker, Books Author of "JavaFX essentials", "Getting started with clean code, Java SE 9", and “Hands-On Java 10 Programming with JShell”. Won Duke’s choice 2015, 2014 awards, & JCP outstanding adopt-a-jar participant 2013 awards
Simon Maple
Java Champion, Oracle Developer Champion, Virtual JUG leader, Director of Developer Relations, Snyk.
Oliver Gierke
Java Champion, Spring Data Project Lead at Pivotal Software, Inc.
Jean-Michel Doudoux
Java Champion, author of “Développons en Java”
Michael Kölling
Java Champion, Creator of BlueJ and Greenfoot, author of ‘Objects First with Java’.
Mert Çalışkan
Java Champion, Director of OpsGenie Academy, Published Author, Speaker
Leonardo M R Lima
Java Champion, JSR Spec Lead
Cesar Hernandez
Java Champion, Senior Software Engineer at Tomitribe,  Eclipse Foundation Committer, Guatemala Java User Group member, Speaker and board member of Latin America Virtual JUG JEspañol.
Rustam Mehmandarov
Java Champion, Chief Engineer, Leader of JavaZone, board member and former leader of javaBin – Norwegian Java User Group.
Paul Bakker
Java Champion, Senior Software Engineer at Netflix
Geir Magnusson Jr
Java Champion, Member Apache Software Foundation, CTO at fuboTV
Jorge Vargas
Java Champion, JUG Leader JavaUP - Mexico -  Speaker and member of JUG JEspañol.
Bruno Souza
Java Champion, JUG Leader of SouJava
Ian F. Darwin
Java Champion, Developer, Author, Trainer, Mentor, Speaker. Author of O’Reilly Java Cookbook, Android Cookbook, etc.
Alexis López
Java Champion, Independent Consultant, Cali JUG Leader, Speaker and board member of Latin America Virtual JUG JEspañol. www.acelopez.com
Traducido a español por:

  • Andrés Almiray
  • Andrew Binstock
  • José Amadeo Díaz
  • César Hernández
  • Alexis López

Optimismo para una vida Mejor

Optimismo para una vida Mejor
Noticias buenas que comentar