openxava
博客

2022年9月21号

OpenXava 7.0 已发布

在享受了四年的 OpenXava 6 之后,我们将进入一个新的时代,第 7 代。虽然 OpenXava 6 在用户体验和视觉设计的角度来看是一个巨大的变化,但这变化对您的一些用户来说并不是很和善。OpenXava 7 针对于开发人员的部分,OpenXava 7 对开发人员做了许多改进,尤其是对 Java 开发人员。

年复一年,您一直要求 OpenXava 支持您最喜欢的 Java 技术,一直向我们询问 Maven、Maven 和 Maven,其中也有 IntelliJ,有些人也提到 NetBeans、Java 17 或 Tomcat 10。

别担心,我们也会以增量的方式在第 7 代中改进用户体验和视觉风格。我们会在每个新版本都做一点改进,让您的用户不会觉得他们的应用程序被换成另一个,但同时也保持您应用程序现代化且在每个新版本都更加容易使用。

您一直要求的 OpenXava 就在这里。我们希望您能享受。

下载 OpenXava Studio 7.0 以创建新的 OpenXava 7.0 项目,或按照迁移指南将当前项目迁移到 7.0

Maven, IntelliJ, Java 17 和 Tomcat 10

OpenXava 7 新特性主要是对 Maven 的支持。现在 OpenXava 项目具有 Maven 结构,我们对每个任务使用 Maven 命令,并使用 Maven 存储库来获取第三方库。如果您没有 Java 背景,Maven 在 Java 世界中是工作的标准方式。因此,支持 Maven 代表您可以轻松使用任何可用于 Java 的库或工具。结果就是现在您可以在您最喜欢的 IDE 使用 OpenXava,您可以使用 IntelliJ、NetBeans、Eclipse 或 Visual Studio Code 开发 OpenXava 7.0 应用程序。

与 Maven 兼容的另一个优点是,如果您聘请 Java 开发人员来帮助您开发应用程序,他们已经知道项目中的内容位于何处、如何将其部署到 Tomcat 或如何添加新的依赖项。因为他们处于熟悉的环境中。

另外 OpenXava 7.0 已兼容 Java 17 和 Tomcat 10,但仍支持 Tomcat 8 和 9 以及 Java 8 和 11。

向旧的说再见

旧的不去,新的不来。

我们已经:

  • 停止对 XML 组件的支持,包括所有相关的代码。
  • 停止对 Liferay、WebSphere Portal、JetSpeed、portals 和 portlets 的支持。
  • 停止对 Tomcat 7 的支持。
  • 停止对 Servlet 3.0 的支持,现在 Servlet 3.1 将是最低规范版本。
  • 删除所有与 EJB 相关的代码。
  • 删除 ModuleTestBase 中的 AnnotatedPOJO() 和 isPortalEnabled() 方法 。
  • 删除 IPropertyCodeGenerator 接口。
  • 不再支持文档模块,现在它们会直接被忽略。
  • 移除 IPadStyle,自 5.0 起就默认无法使用。
  • 删除了使用 styles.properties 来注册样式。
  • 从 xava.properties 中删除 emailAsUserNameInPortal 和 portletLocales。
  • MapFacade 和 MapFacadeBean 不再是 EJB 的 Session Beans。
  • 删除 IRemoteAction 接口和 Server 实用程序类。
  • 删除了使用 Liferay 文档库附加文档的 DocumentLibrary 编辑器。
  • 删除 XHibernate 和 HibernatePersistenceProvider,不过 Hibernate API 仍然可用。
  • 删除 JDBCTabProvider,用于通过 JDBC 获取列表数据,仅在 XML 组件中使用 。

您不用担心。您大有可能根本不使用上述的技术。例如,XML 组件在 OpenXava 3.0 中已过时,因为自 OpenXava 3.0 所有新的应用程序都是使用 POJOs 和 JPA 开发的。 OpenXava 3.0 于 2008 年发布,也就是说,直到今日我们都在维护一个 14 年前就弃用的功能。关于 Liferay 和门户支持,从 OpenXava 5.0 开始就包含导航和安全系统,而且从 OpenXava 5.0 开始只支持 Liferay 6.1。 OpenXava 5.0 于 2014 年发布,也就是从 Liferay 迁移经过 8 年。依此类推,我们放弃的其他东西。

更新的库

我们更新了以下第三方库:

  • JasperReports 更新至 6.20.
  • Apache POI 更新至 5.1.
  • Apache Commons IO 更新至 2.11.
  • HtmlUnit 更新至 2.63.
  • Hibernate 更新至 5.6.10.
  • Hibernate Envers 更新至 5.6.10.
  • HSQLDB embedded database 更新至 2.6.1.
  • Embedded Tomcat used in development 更新至 9.0.65.        
  • Hibernate Validator 更新至 6.0.23.        
  • Groovy 更新至 4.0.4.        
  • jsoup 更新至 1.15.3.
  • Apache PDFBox 更新至 2.0.26.        
  • Apache Commons Validator 更新至 1.7.        
  • JavaMail 更新至 1.6.7.                
  • JAXB 更新至 2.3.1.                
  • DWR 更新至 2.0.11.
  • Lombok 更新至 1.18.24.
  • Jersey (the JAX-RS implementation) 更新至 2.36.

此外,我们更改了库的更新政策。从现在开始,出于安全原因,我们将在每个新版本升级第三方库。

文档的改进

最近几个月,我们一直在努力改进文档和其他学习材料,如视频:

  • 每一章课程的英文、西文代码都会在 GitHub 。
  • 入门指南已翻译成中文。
  • 第 1 至 25 章课程翻译成中文。
  • 原本第 9 章和第 10 章分为几个较短的课程。
  • 在第 9 至 23 章的课程里增加了视频教学。
  • 使用 Maven 在生产环境中部署 Tomcat 的文档。
  • 使用 Maven 配置 MySQL、PostgreSQL、Oracle、MS SQL Server、AS/400、Informix、Db2 和 Firebird 的文档。
  • 删除了俄文、中文和法文已过时的文档。

我们一直不断更新文档和视频,沒等待代码正式发布後才做。所以您可能有段時間都在使用上述的資料,不過以所有的文档都在 GitHub 中的 7.0 标签裡。

其它改进

我们在其它方面做了很多改进:

  • Addons 和 OpenXava 项目合成一个项目 openxava。
  • 重构导航和安全性的代码以更具可插入性。
  • IMAGES_GALLERY 刻板印象使用 JPA 进行持久性而不是 Hibernate。
  • 在新项目中添加了注释(新数据库的配置):MS SQL Server、Informix、Db2 和 Firebird。
  • 新项目默认在 persistence.xml 将不包括默认 schema。
  • 新项目的 JDBC 驱动程序类将不包括在数据源和持久性单元定义中。
  • 新的 servlet 会话属性 xava.coreViaAJAX 以在第一次进入模块时禁用通过 AJAX 加载。
  • 在 Classes 实用程序类中新增新方法 getField()。
  • 在 Resources 实用程序类中新增新方法 getAsStreamInPrefixes()。

Bug 修复

虽然这不是维护版本,但我们还是做了一些修复:

  • 修复了依赖项中的 43 个潜在安全漏洞,现在我们有 0 个漏洞。
  • 修复:注解的编辑器不适用于使用继承的子类。
  • 修复:某些情况下,在 @DescriptionsList 中搜索不会忽略重音符号。
  • 修复:中文 MS950 编码显示简体中文时乱码。
  • 修复:页码的工具提示总是显示“第一页”。
  • 修复:从 i18n 文件中删除了重复条目。
  • 修复:列表模式下“隐藏”链接中的额外空格。
  • 修复:如果使用 Java headless,模块不会启动并会在浏览器显示错误,就像 Ubuntu 中的默认错误一样。
  • 修复:欢迎页面中的编码不正确,因此在某些语言会显示?而不是实际的字符。
  • 修复:第二章和第六章中的某些代码当然无法编译。
  • 更正:课程中一些不正确的语句
  • 更正:更正课程顶部导航菜单中的一些错误的链接。
  • 修复:生成自定义 PDF 时“找不到模板”的消息未翻译。

下载 OpenXava Studio 7.0按照迁移指南

blog comments powered by Disqus

English - Español