我发现课堂重载会提高生产力。我认为重新定义课程非常有限。
多年来,我们发现了几种解决方法,可以不断更改某些领域特定语言(DSL)或更自由的形式(如XML或json或属性文件)或使用脚本语言(如javascript)重新定义来自字符串的function (){}
是可能的,并且很容易覆盖以前的函数定义。
我的想法:
可以使用注释来使类可重新加载,或者使类充当脚本,即.java文件可以被视为DSL。
@Reloadable
public SomeReloadableClass{
}
@Script
public SomeReloadableClass{
}
现在有人担心可重新加载的类的引用可能在其他地方有所帮助,这会在尝试卸载类时导致内存泄漏。
为了克服这个问题,应该强制执行一些约束。 虽然这部分很难,但我们可以有接口合同,也可以通过注释。 如果需要,可以与OSGi描述符一样强制执行导出和依赖关系,但在使用拦截器或接口的类中。它应该比OSGi更简单,因为OSGi关心版本依赖性匹配等,这是每个类不需要的。
@Reloadable (exports='..., ...')
public SomeReloadableClass{
public start(){ ...}
public stop() { ...}
}
我觉得这个功能非常方便,作为副产品,我们可以使用java作为配置文件,java作为DSL,而程序的大多数部分仍然是编译好的单块,以便充分发挥作用。
javascript程序总是使用javascript或json作为配置描述符,这也是一个javascript对象表示法。我们应该能够在java或任何jvm语言中做同样的事情。
java模块系统是否专注于此?
注意:我觉得这不是一个问题格式,而是一个提案,从这个意义上来说,它在错误的Q-A网站中。我不知道该搬到哪里,所以我在这里大声思考。建议移动它的位置。