论坛首页 Java版 企业应用

Yan Container beta 1 发布

浏览 23504 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2006-09-12
暂时先放在原先申请的GPL的jfun project下供下载。
回头新申请的BSD的yan project批了就挪过去。(对了,是不是bsd的是对商业使用友好的?)

功能:
1。类似于pico,核心实现就是一个hash table。实现auto-wiring,自动分析依赖,组装组件实例。同时,也提供象spring那样的手工指定组件的组装(通过disable自动组装)

2。对组件0侵入。既不要求组件实现Startable, Stoppable等接口,也不要求组件必须用构造函数或者java bean的setter。
组件如何创建,是通过构造函数,静态工厂,setter,还是jndi都是组件自己的事,容器决不越俎代庖。

3。life cycle的支持更加模块化。系统缺省提供了简单的life cycle支持,有init, destroy, start, stop等。用起来和spring的"init-method", "destroy-method“类似。
根据需要,外围或者第三方库也可以扩展提供更加灵活复杂的life-cycle支持。

4。对部件级别的hint支持灵活。比如,对下面简单的java代码:
[code:1]X x = (X)container.getInstance("x");

new A(x.add(1), ...);
[/code:1]
要求只针对A的构造函数的第一个做定制,而其它参数仍然使用auto-wiring。

在pico中需要自己实现ComponentAdapter。

在Yan中,通过声明式的方法实现:

[code:1]final Component x = Components.useKey("x")
.map(new Map(){
    public Object map(Object x){
      return ((X)x).add(1);
    }
  });

container.registerComponent(
  Components.ctor(A.class)
  .withArgument(0, x)
);[/code:1]

如果跟jaskell这种函数式的脚本语言结合,配置文件也可以实现非常复杂的情况。
比如,对

[code:1]X x = container.getInstance("x");
A a = new A(x, x);
[/code:1]
要求两个参数共享一个实例。在pico中仍然是毫无例外地要自己实现ComponentAdapter。

在yan中,写在java里会是:
[code:1]Monad.bind(Components.useKey("x"),
  new Binder(){
    public Creator bind(Object x){
      final Component c = Components.value(x);
      return Components.ctor(A.class)
      .withArgument(0, c)
      .withArgument(1, c);
    }
  }
);[/code:1]

可以用monadic component。写在配置文件中,会是:


[code:1]do {x=useKey("x")} $
  ctor{class="A"}
    .withArgument[0, value(x)]
    .withArgument[1, value(x)]
[/code:1]


下载链接:
https://sourceforge.net/project/showfiles.php?group_id=122347&package_id=148936&release_id=317916


希望大家多提宝贵意见。

要是没人提,我可要宣称“中国最高水平”了
   
最后更新时间:2006-09-12
另:
欢迎有兴趣的朋友加入,一起开发。
   
0 请登录后投票
最后更新时间:2006-09-12
没人?唉

所以与你们争辩,就如同和小儿吵架,几乎没有对等讨论性,我真是非常孤独,偌大中国,在Java技术领域,如同红卫兵小将占据话筒。

本来我还想谦虚一些,现在我更可以理直气壮地宣称:
Yan Container是民族软件的骄傲,我在2005五一前夕勇敢地写下这段话,当你们“长大”后,也会会为之骄傲。

Yan Container是目前中国水平最高的框架之一。它几十个类不是普通Java程序员能在短时间内看懂的。
   
0 请登录后投票
最后更新时间:2006-09-12
啊啊,猪实在太不厚道了亚。
   
0 请登录后投票
最后更新时间:2006-09-12
ajoo 写道
没人?唉

所以与你们争辩,就如同和小儿吵架,几乎没有对等讨论性,我真是非常孤独,偌大中国,在Java技术领域,如同红卫兵小将占据话筒。

本来我还想谦虚一些,现在我更可以理直气壮地宣称:
Yan Container是民族软件的骄傲,我在2005五一前夕勇敢地写下这段话,当你们“长大”后,也会会为之骄傲。

Yan Container是目前中国水平最高的框架之一。它几十个类不是普通Java程序员能在短时间内看懂的。


希望这些赞扬来自tss....etc
   
0 请登录后投票
最后更新时间:2006-09-12
gigix,倒是有点问题请教呢。
关于open source。
1。是不是BSD的license就够好了?
2。是不是我必须在所有代码里包含那么大长段的copyright声明?
我原来没包括,现在一个一个类copy-paste想起来有点烦。
3。我的代码的注释是不是不能有公司名字?
4。你老兄批评jf那么犀利,也给俺来几斧子?放心,偶脸皮厚,要是不喜欢的,就装作没听见。




签名档无效,偶自己来:
javaey的id们狭隘粗野视听能力和表达能力都有严重障碍差不多都不可理喻无法无天精神世界几乎没有容量只能认知眼前的一丁点儿人和事所有行动近乎简单的条件反射一句话我认不出你们是谁看你们的帖子我没有产生任何有关人人群的联想一个人活了那么大岁数一辈子没吃过猪肉还没见过猪跑莫非发帖子就可以这么乱来
   
0 请登录后投票
最后更新时间:2006-09-12
轮子,不但是轮子,而且还是列车上的其中一个轮子,最重要的是列车并不会因为换了一个轮子就会跑的更快更稳。还是上次那个jaskell比较有意思。
   
0 请登录后投票
最后更新时间:2006-09-12
jdonframework不管怎么被骂,好歹还有人关注一把, Yan Container竟然连一点反响都没有,难怪ajoo急于使用激将法呢。

现在上不去sourceforge.net,还没有下载到jar,没有办法评论,只提几个问题:

1、好像没有文档呀?

2、Yan相比于其他IoC Container有什么突出优点?

3、你做Yan是为了fun,还是为了啥目标?
   
0 请登录后投票
最后更新时间:2006-09-12
看老兄信心十足,值得强烈打击。
   
0 请登录后投票
最后更新时间:2006-09-12
引用
final Component x = Components.useKey("x")
.map(new Map(){
    public Object map(Object x){
      return ((X)x).add(1);
    }
  });

可以控制Map map(Object x)所包装的实例为((X)x).add(1)调用的第一次结果的实例吗?
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛:
JavaEye推荐