栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否将Java 5/6功能反向移植到Java 1.4?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否将Java 5/6功能反向移植到Java 1.4?

感谢您的回答。这是所有相关答案和我自己的研究的摘要。

更改字节码:Retros
这是通过“复古”工具完成的:Retrotranslator,Retroweaver和JBossRetro。Retrotranslator似乎是其中最成熟,最活跃的工具。这些工具扫描所有类并更改字节码以删除Java
5和6功能。支持许多Java5功能,其中一些功能是通过使用第三方反向端口库实现的。此选项最受欢迎,并且得到了用户的积极反馈。实验表明它可以按预期工作。请参阅有关developerWorks的简短概述。

专业人士:您可以完全使用Java 5开发,构建模块和各种JAR。最后,您只需将所有类转换为Java
1.4并打包EAR。使用Retrotranslator的Maven集成(

org.prehaus.mojo:retrotranslator-maven-plugin
)可以轻松完成此操作。

缺点:保守的环境不允许部署更改的字节码。追溯结果对任何编码人员都不可见,因此无法通过。第二个问题是恐惧:可能存在一些隐秘的生产问题,而追溯代码可能是对此负有责任的另一步骤。应用服务器供应商可能会由于字节码更改而拒绝帮助。因此,没有人愿意承担将其用于生产的责任。因为这是一个政策问题,而不是技术问题,所以我认为没有解决方案。它发生在我们身上,所以我正在寻找其他选择:-(

将Java5编译为Java 1.4:jsr14
有一个不受支持的选项,

javac -source 1.5 and -target jsr14
它将Java5源代码编译为有效的Java
1.4字节码。无论如何,大多数功能(如varargs或Extended
for循环)都由编译器翻译。泛型和注释被剥离。不支持枚举,我也不了解自动装箱,因为这些
valueOf
方法大多数是在Java5中引入的。

缺点:仅翻译字节码,不改变库用法。因此,您必须注意不要使用Java5特定的API(但可以使用Backports)。此外,您还必须同时构建所有模块,因为在开发时,您可能希望Java5代码具有泛型和注释信息。因此,您必须从头开始为Java
1.4生产构建整个项目。

将源代码更改回Java 1.4:Declawer

优点:生成的源可用并且可以查看。在最坏的情况下,可以在此源中进行修复。没有“魔术”,因为源是有效的Java。有些人甚至使用JAD(Java反编译器)再次获得Java
1.4源。如果使用调试信息进行编译并且不使用内部类,则Jad可读的输出是可读的。

缺点:与相似

-target jsr14
,您需要在部署中执行额外的步骤。库也有同样的问题。

将Source更改回Java 1.4:手工完成
一些答案建议手工完成。对于自动的重复构建过程,这当然没有用,但是对于一次性更改,这是合理的。只是自动化一切。也许看一下Antlr来创建一个本地转换工具。

向后移植的库:
问题是Java5还提供了新的库,这些库在较旧的JRE中不可用,请参阅相关问题。幸运的是,有几个向后移植的库可以为您提供Java5的某些功能,但是不能模拟语言特性,例如泛型。

  • 注释,在TSS上讨论
  • 同时
  • com.sun.net.httpserver(Java 6至5)
  • Gif编写(Java 6至5)
  • 开始您自己的backport项目;-)
  • 您可以从JDK或其他库中复制所需的类,但是很可能它们与其他类相关。

在Java 1.4代码中模拟Java5功能:
我在考虑可能要做的一些事情,以使您的生活更轻松并仍然使用Java 1.4。最重要的功能是类型安全集合,以下是一些建议:

  • 可以使用某些模板来创建自己的类型安全容器,而不是使用泛型。
  • 添加一个类型安全的迭代器(不再是迭代器)。
  • 添加
    asList
    允许
    1,2,...,n
    参数和参数数组的方法(以模拟varargs)。
  • 用于varargs的方法(将
    1,...,n
    参数转换为数组),
    valueOf
    可以放在一些帮助器类中。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419257.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号