Saltar a contenido

Documentación de cambios de API

Resumen

Este documento proporciona información detallada sobre los cambios de API y de stack introducidos en las últimas versiones de Etendo. Sirve como referencia para desarrolladores y administradores de sistemas para entender qué componentes se han actualizado, quedado obsoletos o eliminado, y cómo estos cambios pueden afectar a los desarrollos personalizados.

Si estás planificando actualizar tu entorno, asegúrate de revisar también la guía oficial de actualización: Actualizar Etendo a cualquier versión.

Etendo 26

Actualizar Etendo a cualquier versión

Actualización de la pila de plataforma

Java SE

  • Versión mínima requerida: 17.0.14Notas de la versión

    Cambio incompatible: Java 17 es ahora obligatorio

    A partir de Etendo 26.1.0, Java 17 es la única versión compatible de Java. El indicador de compatibilidad -Pjava.version=11 introducido en Etendo 25 ha sido completamente eliminado.

    Cualquier entorno que siga ejecutando Java 11 quedará bloqueado al compilar. Debes instalar y configurar Java 17 o superior antes de actualizar a Etendo 26.

    Acción requerida para desarrollos personalizados

    Si tienes módulos personalizados con clases BuildValidation o ModuleScript, recompílalos con Java 17 antes de actualizar. Estas clases se ejecutan durante update.database y fallan en tiempo de ejecución si se compilan con Java 11 debido a incompatibilidades de bytecode.

    Terminal
    ./gradlew compile.modulescript -Dmodule=<javapackage>
    ./gradlew compile.buildvalidation -Dmodule=<javapackage>
    

    Esto solo aplica a módulos personalizados. Los módulos núcleo de Etendo ya están compilados con Java 17.


PostgreSQL

PostgreSQL 17 es compatible a partir de esta versión. No es necesaria ninguna acción si te mantienes en una versión actualmente compatible. Si actualizas el motor de base de datos, revisa las notas de la versión de PostgreSQL 17 para ver los cambios incompatibles.


Etendo Gradle Plugin

  • Nueva versión requerida: 2.3.0 o superior — Notas de la versión
  • El indicador -Pjava.version=11 ha sido eliminado. Java 17 ahora se aplica sin posibilidad de omisión.

DBSourceManager

  • Nueva versión: 1.1.0 -> 1.2.0
  • Cambios:
    • El wrapper de Gradle se ha actualizado de 7.3.2 a 8.12.1.
    • Se ha añadido compatibilidad con la plataforma PostgreSQL 16 (PostgreSql16Platform).
    • Nuevo sistema ExcludedConstraint para gestionar tablas particionadas y esquemas de base de datos complejos.
    • Mejora en el manejo de tablas particionadas durante la exportación de la base de datos.
    • Se han eliminado todos los JAR incluidos en lib/; ahora las dependencias se resuelven desde el classpath del proyecto.

Bibliotecas de terceros

Actualizado

  • org.postgresql:postgresql 42.5.4 -> 42.7.8 — actualización compatible. Revisa el registro de cambios si utilizas funciones específicas del controlador.

  • org.mozilla:rhino 1.7.13 -> 1.8.0

  • org.mozilla:rhino-engine 1.7.13 -> 1.8.0Versiones de Rhino

    Warning

    Si tienes JavaScript personalizado ejecutado a través del motor Rhino, pruébalo para comprobar su compatibilidad con la versión 1.8.0. Esta actualización incluye cambios en la compatibilidad con ECMAScript y en las API internas.

  • org.antlr:antlr 2.7.7 -> org.antlr:antlr-complete 3.5.3Documentación de ANTLR 3

    Warning

    Esta es una actualización de versión mayor (ANTLR 2 a ANTLR 3). Si utilizas las API de ANTLR directamente en código personalizado, debes migrar. La estructura de paquetes y la API han cambiado significativamente.

  • org.codehaus.woodstox:wstx-asl 3.0.2 -> 4.0.6Versiones de Woodstox — actualización de versión mayor para la biblioteca de procesamiento de flujos XML. Revísalo si utilizas las API de Woodstox directamente.

  • com.etendoerp:dbsm 1.1.0 -> 1.2.0 — ver arriba DBSourceManager (DBSM).


Coordenadas de artefactos migradas al upstream

Varias bibliotecas anteriormente reempaquetadas bajo com.etendoerp ahora se resuelven desde sus coordenadas oficiales de Maven Central upstream. Si tus módulos declaran alguna de estas como dependencias explícitas, actualiza las coordenadas del artefacto. Sin cambios funcionales.

Anterior Nuevo Versión
com.etendoerp:yuiant 1.0 com.etendoerp:YUIAnt 1.0.0 Cambio de mayúsculas/minúsculas en el ID del artefacto
com.etendoerp:jettison 1.3 org.codehaus.jettison:jettison 1.3 Misma versión
com.etendoerp:wstx-asl 3.0.2 org.codehaus.woodstox:wstx-asl 4.0.6 Versión actualizada
com.etendoerp:slf4j-api 1.7.25 org.slf4j:slf4j-api 1.7.25 Misma versión
com.etendoerp:antlr 2.7.7 org.antlr:antlr-complete 3.5.3 Versión actualizada
com.etendoerp:rhino-engine 1.7.13 org.mozilla:rhino-engine 1.8.0 Versión actualizada

Nuevas

Las siguientes bibliotecas son nuevas incorporaciones al classpath de la plataforma. No es necesaria ninguna acción salvo que tus módulos personalizados declaren versiones en conflicto.


Eliminadas

  • org.apache.commons:commons-compress 1.27.1

    Warning

    Si tus módulos personalizados dependen de commons-compress, añádelo como dependencia explícita en el build.gradle de tu módulo.

  • org.eclipse.jdt:ecj 3.23.0 (Eclipse Compiler for Java)

  • com.etendoerp:ant-nodeps 1.0.0
  • com.etendoerp:catalina-ant 1.0.0
  • org.apache.poi:ooxml-schemas 1.4

Cambios en el esquema de base de datos

Los siguientes cambios se aplican automáticamente durante update.database:

Tabla Cambio Detalles
AD_HEARTBEAT_LOG Columnas eliminadas ACTIVITY_RATE, COMPLEXITY_RATE, ANT_VERSION
AD_HEARTBEAT_LOG Columna añadida STATUS
AD_SYSTEM_INFO Columnas añadidas License_Edition, Subscription_Type, Subscription_Start_Date, Subscription_End_Date, Concurrent_Global_System_Users, Instance_Number, WEB_Service_Access, Customer_Name

Otros cambios

  • Generación de claves de Secure Web Services: el objetivo de Ant generate.sws.keys ahora se ejecuta automáticamente durante install.source, reduciendo los pasos de configuración manual para los servicios web seguros.

Etendo 25

Actualizar Etendo a cualquier versión

Actualización de la pila de plataforma

Java SE


PostgreSQL


Gradle

Warning

Para actualizar el wrapper de Gradle en un entorno existente, debes ejecutar:

Terminal
    ./gradlew wrapper --gradle-version 8.12.1 

Para obtener directrices de migración más detalladas, consulta Actualización del wrapper de Gradle


Apache Tomcat


Etendo Gradle Plugin

  • Nueva versión compatible: 2.0.0 o superior
  • Notas de la versión:

    • Notas de la versión de Etendo Gradle Plugin
    • Nueva tarea del plugin de Gradle:

      Terminal
      ./gradlew cleanExpandCore
      
      Esta nueva tarea elimina los directorios creados por la tarea expandCore.

    • Marca de compatibilidad

      Terminal
      -Pjava.version=11
      
      Esta nueva marca fuerza el uso de Java 11 con la versión 25Q1.


Etendo ISO

Note

Las ISO de Etendo 25 se basan actualmente en la imagen amd64 de Ubuntu Live Server 22.04.5.
Para más información, visita Notas de la versión de Etendo ISO.

Bibliotecas de terceros

Todas las bibliotecas ubicadas anteriormente en /lib/runtime como archivos JAR se han actualizado a dependencias de Gradle, ahora definidas en el archivo artifacts.list.COMPILATION.gradle en la raíz del proyecto.

Actualizado

  • dbsourcemanager.jar -> com.etendoerp.dbsm versión 1.1.0

    • Notas de la versión:

      • Cambios para usar la nueva versión de la biblioteca Apache Commons Lang 3.
      • Cambios para usar la nueva versión de la biblioteca Apache Commons Collections 4.
      • Cambios en características obsoletas o eliminadas usadas en Java 17.
      • Se añadió compatibilidad con PostgreSQL 16.
  • commons-collections.commons-collections 3.2.2 -> 4.4

    • Notas de la versión:

    • Cambios de API - Migración de Apache Commons Collections 3.2.2 a 4.4:

      A partir de Etendo 25.1.0, Apache Commons Collections se ha actualizado de 3.2.2 a 4.4. Esta versión introduce una nueva estructura de paquetes. Las clases importadas anteriormente desde org.apache.commons.collections ahora deben actualizarse a org.apache.commons.collections4.

    • Instrucciones de migración:

      Actualiza todas las sentencias de importación y referencias para reflejar la nueva estructura de paquetes:

      // Antes (Apache Commons Collections 3.2.2)
      import org.apache.commons.collections.CollectionUtils;
      
      // Después (Apache Commons Collections 4.4)
      import org.apache.commons.collections4.CollectionUtils;
      

      Además, revisa tu código en busca de métodos obsoletos, eliminados o modificados para garantizar la compatibilidad total con la biblioteca actualizada.

    Info

    Para obtener directrices de migración detalladas, consulta la documentación de Apache Commons Collections 4.4.

  • org.apache.commons:commons-lang3 2.6 -> 3.17.0

    • Notas de la versión:

    • Cambios de API - Migración de Apache Commons Lang 2.6 a 3.17

      A partir de Etendo 25.1.0, Apache Commons Lang se ha actualizado de la versión 2.6 a 3.17. Como parte de esta actualización, la estructura de paquetes ha cambiado. Las clases importadas anteriormente desde org.apache.commons.lang.* ahora deben actualizarse para usar org.apache.commons.lang3.*.

    • Instrucciones de migración

      Actualiza tus sentencias de importación para reflejar la nueva estructura de paquetes:

      // Antes (Apache Commons Lang 2.6)
      import org.apache.commons.lang.StringUtils;
      
      // Después (Apache Commons Lang 3.17)
      import org.apache.commons.lang3.StringUtils;
      

      Además, revisa tu código en busca de métodos obsoletos o modificados y asegúrate de que sea compatible con la biblioteca actualizada.

    • Notas adicionales

      La versión anterior de la biblioteca sigue disponible por compatibilidad hacia atrás, pero se eliminará en futuras versiones.

      Warning

      Recomendamos encarecidamente migrar todos los desarrollos personalizados a Apache Commons Lang 3.17 para garantizar soporte y compatibilidad a largo plazo.

      Info

      Para obtener directrices de migración detalladas, consulta las notas de migración de Apache Commons Lang 3.

  • org.hibernate.common.hibernate-commons-annotations 5.1.0.Final -> 5.1.2.Final

  • org.hibernate:hibernate-core 5.4.2.Final -> 5.6.15.Final

  • net.sf.jasperreports.jasperreports-fonts 6.0.0 -> 6.17.0

  • net.sf.jasperreports.jasperreports 6.0.0 -> 6.17.0

  • org.apache.poi.poi 3.10.1 -> 5.4.0

  • Guía de migración de Apache POI 5.x

    Esta guía describe los cambios necesarios para migrar proyectos que usan Apache POI 3.x/4.x a la versión 5.x, incluida la sustitución de clases, métodos y constantes obsoletos eliminados en versiones recientes.

    1. Sustitución de constantes obsoletas (CellType)

      En POI 5.x, las constantes Cell.CELL_TYPE_* se sustituyen por la enumeración CellType.

      Ejemplo:

      // Antes
      cell.getCellType() == Cell.CELL_TYPE_STRING;
      
      // Después
      cell.getCellType() == CellType.STRING;
      

      Correspondencias clave:

      Constante antigua Nueva constante
      Cell.CELL_TYPE_STRING CellType.STRING
      Cell.CELL_TYPE_NUMERIC CellType.NUMERIC
      Cell.CELL_TYPE_BOOLEAN CellType.BOOLEAN
      Cell.CELL_TYPE_FORMULA CellType.FORMULA
      Cell.CELL_TYPE_BLANK CellType.BLANK

      Importación requerida:

      import org.apache.poi.ss.usermodel.CellType;
      
    2. Actualización de estilos de celda

      Alineación

      Constante antigua Nueva constante
      CellStyle.ALIGN_LEFT HorizontalAlignment.LEFT
      CellStyle.ALIGN_CENTER HorizontalAlignment.CENTER
      CellStyle.ALIGN_RIGHT HorizontalAlignment.RIGHT
      // Antes
      style.setAlignment(CellStyle.ALIGN_CENTER);
      
      // Después
      style.setAlignment(HorizontalAlignment.CENTER);
      
      import org.apache.poi.ss.usermodel.HorizontalAlignment;
      

      Patrones de relleno

      // Antes
      style.setFillPattern(CellStyle.SOLID_FOREGROUND);
      
      // Después
      style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
      
      import org.apache.poi.ss.usermodel.FillPatternType;
      

      Bordes

      // Antes
      setBorderBottom((short) 1);
      
      // Después
      setBorderBottom(BorderStyle.THIN);
      
      import org.apache.poi.ss.usermodel.BorderStyle;
      
    3. Cambios en la API de fuentes

      El método Font.setBoldweight() está obsoleto.
      Ahora debes usar Font.setBold(boolean).

      Ejemplo:

      // Antes
      font.setBoldweight(Font.BOLDWEIGHT_BOLD);
      
      // Después
      font.setBold(true);
      
      // Antes
      font.setBoldweight(Font.BOLDWEIGHT_NORMAL);
      
      // Después
      font.setBold(false);
      
    4. Cambios en la API de evaluación de fórmulas:

      // Antes
      switch (cellValue.getCellType()) {
          case Cell.CELL_TYPE_NUMERIC:
      }
      
      // Después
      switch (cellValue.getCellType()) {
          case NUMERIC:
      }
      

      Evaluación de fórmulas:

      FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
      CellValue cellValue = evaluator.evaluate(cell);
      

      Ejemplo completo:

      CellValue cellValue = evaluator.evaluate(cell);
      switch (cellValue.getCellType()) {
          case STRING:
              return cellValue.getStringValue();
          // otros casos...
      }
      
    5. Buenas prácticas adicionales

      Evita crear XSSFWorkbook() innecesariamente. En su lugar, reutiliza:

      Workbook workbook = cell.getSheet().getWorkbook();
      

      Usa la API moderna de Map:

      // En lugar de containsKey + put
      map.computeIfAbsent(key, k -> new ArrayList<>());
      
    6. Ejemplo completo de migración

      // Antes
      cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
      style.setAlignment(CellStyle.ALIGN_RIGHT);
      style.setFillPattern(CellStyle.SOLID_FOREGROUND);
      
      // Después
      cellFont.setBold(true);
      style.setAlignment(HorizontalAlignment.RIGHT);
      style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
      
    7. Prueba cuidadosamente el código migrado. Pueden existir cambios sutiles de comportamiento en la evaluación de fórmulas y el estilo.

  • commons-beanutils.commons-beanutils 1.8.3 -> 1.9.4

  • commons-codec.commons-codec 1.1.1 -> 1.17.1
  • commons-digester.commons-digester 1.8.1 -> 2.1
  • commons-fileupload.commons-fileupload 1.4 -> 1.5
  • commons-io.commons-io 2.4 -> 2.16.1
  • com.sun.istack.istack-commons-runtime 3.0.7 -> 4.2.0

Info

Consulta las notas de la versión de cada biblioteca para obtener información más detallada sobre los cambios y cómo pueden afectar a tu sistema.


Nuevo


Eliminado

  • itext-pdfa-5.5.0.jar
  • itextpdf-5.5.0.jar
  • jcommon-1.0.15.jar
  • jxl-2.6.10.jar

Este trabajo está bajo licencia CC BY-SA 2.5 ES por Futit Services S.L..