当我坐在这里修改PircBot时,我注意到整个后端都是为了支持Java 1.1而编写的.它有一个自定义队列实现,使用哈希表,基于wait()和notify()信令的自定义生产者/消费者实现等.即使Commons-lang也缺乏对Java 5带来的东西的支持,如泛型.你可以提供一些非常流行的框架的其他例子,尽可能地努力支持1.1.
我的问题是为什么?为什么Java社区的某些部分拒绝支持新版本?我遵循这个理论:旧版本使用旧版本的框架和较旧的JVM,较新的版本使用升级的框架和JVM.您使用该软件升级所有内容.
现在我可以部分理解仍在运行Java 1.5但是1.1的人?如果您之前运行任何东西,那么您显然不会因为愚蠢的策略/害怕未知而升级JVM,因此不会升级到更新版本的软件.那么我们为什么还要支持他们呢?
在相关的说明中,如果你正在编写一个新框架,你应该支持<1.5吗?您是否应该尝试将现有框架升级为1.5,然后与维护人员讨论使用它?
更具体的讨论(这是关于一般的支持): 是否还有充分的理由支持JDK 1.4?
我有一个概念性的问题,我希望有人可能有答案.
我有一个RESTful服务,它为单一类型的实体提供类似CRUD的操作.实体(让我们称之为命令)使用Jackson表示为JSON.Jackson注释直接附加到实体类,没有明确的数据传输层.实体类包含许多属性,一对一和一对多关系.
从技术上讲,它基于Wildfly 10,JAX-RS 2.0和JPA 2.1(使用Hibernate 5).
目前支持的操作是:
orders/123 读取实体EntityManager.findorders/123 创建或替换实体EntityManager.persistEntityManager.merge该实体的简化版本如下所示:
@Entity
@Table(name = "order")
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(Include.NON_EMPTY)
public class Order {
@Id
@SequenceGenerator(name = "order_id", sequenceName = "order_id_seq", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="order_id")
@Column(name = "id")
private long id;
@Version
private long version;
@Column(name = "correlation_id", unique = true)
private long correlationId;
@OneToOne(mappedBy = "order", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JsonManagedReference
private …Run Code Online (Sandbox Code Playgroud) 我有一个疑问,java是向后兼容还是向前兼容?另外,我们可以在具有 JDK 8 的 MAC 上运行在 JDK 11 Windows 中编写的 java 字节码吗?我试图理解平台独立性的概念。
我目前正在研究一种使用插件类型系统的C#产品.这不是什么新鲜事,我已经看到很多关于如何使用接口来轻松实现此功能的信息.
我还看到了通过更新接口名称来实现向后兼容性的方法,例如:版本之间的接口更改 - 如何管理?
对于主exe和插件之间的版本不匹配,我可以预见多种情况.
从信息我已经能够收集1和2工作就好了.但我无法弄清楚如何正确实现"前向"兼容性(3).
我们打算只对插件API添加ADD方法.
任何想法都会有很大的帮助.
我正在尝试重新引发异常,以便为用户提供有关实际错误的更好信息.Python 3.3包括PEP 409.它添加了raise NewException from None语法来抑制原始异常的上下文.
但是,我的目标是Python 3.2.Python脚本将解析,但在运行时如果遇到from None它将产生的语法 TypeError: exception causes must derive from BaseException.例如:
try:
regex_c = re.compile('^{}$'.format(regex))
except re.error as e:
e_msg = 'Regular expression error in "{}"'.format(regex)
e_reraise = Exception(e_msg)
# Makes use of the new Python 3.3 exception syntax [from None]
# to suppress the context of the original exception
# Causes an additional TypeError exception in Python 3.2
raise e_reraise from None
Run Code Online (Sandbox Code Playgroud)
封装raise e_reraise from None …
python exception forward-compatibility python-3.2 python-3.3
我想在我的Perl 5.8.9中安装File :: Fetch,它是Perl 5.12中的核心模块.一般来说,我想在我的后期Perl中编译和安装未来日期的模块,因为我无法升级我的Perl.
所以我下载了模块及其依赖项.依赖树之后非常痛苦,但我更关心的是它们中的一些是核心模块.如果我安装这些,我的Perl 5.8.9核心将有5.12的补丁.
我的问题是如何知道我是否可以安全地安装未来的模块,特别是核心模块.是否有一个教程用于测试Perl中的向后兼容性?
编辑:
我的模块是双重生命,但我无法使用cpan编译它.它说我的FTPsite.yaml有一个坏元素.但是,我遵循模块的META文件中的依赖项,我可以编译模块.这是cpan中的奇数位吗?谢谢.
我手动安装所有这些依赖项后无法重新创建该问题.但这是错误:
cpan[5]> install File::Fetch
Running install for module 'File::Fetch'
Running make for B/BI/BINGOS/File-Fetch-0.24.tar.gz
CPAN: Digest::SHA loaded ok (v5.48)
CPAN: Time::HiRes loaded ok (v1.9715)
CPAN: YAML loaded ok (v0.72)
Alert: While trying to 'parse' YAML file
'/Users/martin/.cpan/FTPstats.yml'
with 'YAML' the following error was encountered:
YAML Error: Invalid element in map
Code: YAML_LOAD_ERR_BAD_MAP_ELEMENT
Line: 3
Document: 1
at /opt/local/lib/perl5/site_perl/5.8.9/YAML.pm line 36
Run Code Online (Sandbox Code Playgroud) java ×2
c# ×1
compilation ×1
exception ×1
jax-rs ×1
jpa ×1
module ×1
perl ×1
plugins ×1
python ×1
python-3.2 ×1
python-3.3 ×1
rest ×1