热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大家瞧不起的国内开源(转php100)

有这样一种现象,只要是介绍国外开源技术如struts2、ext、spring的,不管文章质量如何,大家都叫好;而只要发现写介绍国内开源如jdon、springside、Operamasks、easyj
有这样一种现象,只要是介绍国外开源技术如struts2、ext、spring的,不管文章质量如何,大家都叫好;而只要发现写介绍国内开源如jdon、springside、Operamasks、easyjweb的文章,不管质量如何,都会被大家讽刺为“托”,或者是都被骂等。这是一个非常怪的现象,像开源社区这样提倡完全言论自由的社区都这样,大家可以想象对于开源社区那样由一小部份人主宰的“民•主”社区会怎样?从这里现象可以看出,在很多人骨子里就印着:“中国人不可能做出像样的开源,做出的开源都是垃圾”类似的标签。

  其实在我写的“第三只眼”系列文章中,都是在对这些框架进行较为细致的研究才得出的结论,而且所写的也完全是事实,至少到现在还没有哪一个当事人可以说我乱写了他们的东西吧。

  很多人都说我只是盲目地夸国内的开源同仁们,没看到他们的不足,不客观,但是大家是否又看过我文中指出的这些开源项目中不足方面的内容呢?比如下面一些摘要:

  “SpringSide的不足其实是很明显的,首先在软件界,没有真 正的最佳实践,各种技术都是可选的,一个看似笨拙的东西,只要跟上一个搭档,本来是缺点也会得到弥补,比如EJB之于Spring,对于一个企业来说,现 前最佳的肯定就是大家最熟悉而且又能解决问题的东西。“

  “可以说JFox只是实现了JPA1.0中的一小部分。JPA最核心的是什么?对象及关系映射,而难度最大的环节面向对象的查询(EJBQL)以及各种对 象关系及表关联的处理,比如OneToMany、ManyToMany。由于JFox是基于iBatis这样一个sql mapping的框架实现的 JPA容器,所以说功能上受到了一定限制。”

  “技术的进步是永无止尽的。Jdon框架的设计仍然还存在着很多的问题。比如,要求用户领域模型继承Jdon的Model类或实现ModelIF接口,添 删改查的业务实现类中要包含类似createXxx(EventModel em)这样的方法,导致整个框架对业务层的东西侵入性太严重,不符合实际应 用。另外,过多与Struts1.x紧密绑定的设计也不可取。”

  “虽然已经形成了江南、CAC、差沙等组成的核心团队,但代码及文档产出上却基本上仍然是一个人;代码是开源项目的生命所在,而这样的项目要做好,要做成中国的AppFuse决定了这是一个人不可能完成的任务,因此离成功就会很远。”

  “如果是开发Web应用,如果要用到EJB,而又不能支持分布式,我们又为何还选择EJB?Spring、Jdon、Guice甚至EasyJWeb 这 些框架里面都有包含了IOC容器。而且更加POJO,为何还要选择用EJB及JFox呢?因此,这一方面我不知道这样的设计及限制是对JNDI的创新,还 是因为JFox设计的局限性所导致。”

  “虽然Struts1.x的市场仍然还是很大,但我们应该清醒地看到,今天已经有很多正在逐渐取代Struts1.x的Web框架出现,比 如 webwork(或struts2)、easyjweb、operamasks(jsf)、grails等。Jdon作为一个应用框架,要能获得更多 的应用支持,必须支持与这些框架进行集成,提供更多的支持,让开发者有更多的选择权。”

  “SpringSide不善于合作,比如国内已经有很多优秀的开源项目或框架出现,比如operamasks、JFox、JDon、easyjweb 等,通过最近的深入研究,我发现他们都很不错。但在springside项目及文档里,没有一点与这些开源项目相关的!”

  我觉得,中国的开源要做好,不但需要很多像我文章中介绍的这些开源斗士们的坚持不懈,更需要更多的人来使用这些开源,尝试这些开源,把使用心得在开源社区中进行学习、交流,更需要能客观地指出这些开源项目技术上的不足、问题方面的文章,而不是一棒子打死。

  Simpleframework 经过多年的发展,选择开源,目的是对现有框架(如Struts)的业务性补充。利用Filter机制和XML格式的业务描述来实现请求的可配置扩展处理,并将Struts等框架中的一些公共功能以组件的形式提供(如AjaxRequest、Submit等),基于组件来实现UI和业务(逻辑)功能,逐步形成了一套基于Filter“后处理”技术的完整的MVC2和组件化的WEB应用开发模式 ,形成了核心组件库、基本组件库、业务组件库和扩展组件库。而这些功能,是一个做技术的心血积累。


推荐阅读
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • JavaWeb中读取文件资源的路径问题及解决方法
    在JavaWeb开发中,读取文件资源的路径是一个常见的问题。本文介绍了使用绝对路径和相对路径两种方法来解决这个问题,并给出了相应的代码示例。同时,还讨论了使用绝对路径的优缺点,以及如何正确使用相对路径来读取文件。通过本文的学习,读者可以掌握在JavaWeb中正确找到和读取文件资源的方法。 ... [详细]
  • 本文介绍了一种图片处理应用,通过固定容器来实现缩略图的功能。该方法可以实现等比例缩略、扩容填充和裁剪等操作。详细的实现步骤和代码示例在正文中给出。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • express工程中的json调用方法
    本文介绍了在express工程中如何调用json数据,包括建立app.js文件、创建数据接口以及获取全部数据和typeid为1的数据的方法。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
author-avatar
小白牛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有