昨晚与在ibm,现在在美国费城出差的哥们聊天
这小子,原来出国到加拿大混了一年多,没有找到什么什么好工作,最后回到上海,进了ibm,,,,,现在成了天天出国与客户谈需求,走的路线都是国际航班,,,,,
和我聊的全是全球形式,加拿大就业形式好了,北美的员工最暇逸,11点才到公司,,,,
说等等他在闯闯加拿大,他的女朋友好像在加拿大
看来,现在国际打工也渐渐成为一种道路了,国内的资深程序员已经积累了很多,走向国际,一缺英语,二缺改革思路了
成为一个优秀的架构师、职业经理人
昨晚与在ibm,现在在美国费城出差的哥们聊天
这小子,原来出国到加拿大混了一年多,没有找到什么什么好工作,最后回到上海,进了ibm,,,,,现在成了天天出国与客户谈需求,走的路线都是国际航班,,,,,
和我聊的全是全球形式,加拿大就业形式好了,北美的员工最暇逸,11点才到公司,,,,
说等等他在闯闯加拿大,他的女朋友好像在加拿大
看来,现在国际打工也渐渐成为一种道路了,国内的资深程序员已经积累了很多,走向国际,一缺英语,二缺改革思路了
前些日子对一些事情下断言,后来发现断言错的.突然想起原来一个公司cto给我说的话,不要随便下断语,对人对事情都一样.
对人对事情都不要下轻易断言,有时候为了表明立场而下断言,但心里的断言一定要谨慎.
doing the right thing and do the right things
今天由于实现一些东西,同事再本机开了两个同样的程序,每个程序15个线程 操作系统window
然后又在另外一台服务器上布置了两个同样的程序,每个程序15个线程 操作系统linux,
忽略了两台机器的配置:我的机器配置可能不如服务器,但两个程序用到的cpu只有百分之几;内存也只用到了一半
程序都用java开发的
结果:从运行的结果来看,linux的线程机制,使得程序运行的速度比window快10%-20%.
效率问题,个人觉得nuth对于中小搜索引擎系统的爬虫足够。个人测试如下:nutch一个小时爬虫解析8千-1万个左右的 blog网页(15个线虫,linux操作系统),这个速度应该可以提高,速度的提高应该可以从一下几个方面考虑:带宽是最重要的,呵呵;机器的配置;另外linux/unix上的爬虫是比window要快;采用低级语言实现爬虫,nutch是java实现的,在速度上肯定比c或脚本语言要慢一些。应该来说最终各种爬虫工具的速度极限是差不多的。
forward:nutch对于forward的处理,是默认一个网页只能转向三次,小于三次forward进行解析,这个可进行配置。
nutch的解析按照html的解析,具体的搜索精确与否与制定的解析策略和搜索策略有关,在解析策略方面估计都差不多,都是吧网页中的文本做成索引,另外考虑整体的效率可能对文本的大小有个限制。个人觉得nutch的html解析组够了,不过可能根据具体爬虫方向做一些修改,比如我如果要用nuthc爬wap或blog的网页,对html parser做一些修改,可以提高效率。
目前中小搜索系统的引擎技术已经非常成熟了,中文搜索技术最大的难题是中文分词,而现在公认的最好的中文分词是根据词义进行分词语,当然根据时间的推移,词义库应该要逐步丰富.比如当超女成为最时髦的词语,就要加入词义库里面
中小搜索引擎的开源技术,当仁不让应该是lucene技术,然后根据是网际搜索/内容搜索,本地搜索,配置相应的策略和前端技术支持.
对于网际搜索,nutch是个很好的开源系统,它的架构是非常好的,但对于实际的网络搜索,他的机制是不够的,对他的修改也是非常麻烦的事情.通常我的理解是借鉴里面好的爬虫机制,加以自制的搜索存储机制.
互联网的搜索门户已经出现了几个老大了,但对于wap搜索,这方面还是不够:是盈利模式大家都找不到好的;手机界面非常小,不能显示多的内容;wap资源不多. 把web内容显示到手机上不是很好的选择,wap百度做了wap搜索,实际上就是吧web搜索的内容转换成了wap.但这种转换的机制不好,造成了转换后的内容组织混乱,估计也很难做好.
当google,百度把web搜索门户做到极限时,就注定了以后的搜索系统不能在沿着他们的脚步走了,个人觉得无线搜索,行业搜索,专业领域搜索,资源搜索,是未来新兴搜索的市场.
JavaSpaces技术是进行分布式计算的一种简单机制,在分布式计算应用程序中,JavaSpaces 提供了对象的提供者和请求者可用来方便地进行通信的共享虚拟空间,这允许以Java对象的形式对任务、请求和信息进行简单的交换。Javaspaces提供了永久地建立和保存对象的能力,Javaspaces是建立在Jini之上的一种技术,它作为一种共享分布式通信的机制,还可作为一种存储对象的机制;JavaSpaces是一种Jini技术服务,这表示使用Javaspaces的开发人员也可以利用各种Jini服务比如说利用事务处理和通知等。JavaSpaces以一种非常简单的接口提供了这些功能,但是,有效地利用这种简单的接口需要大量的概念和工具。
在分布式系统中,对象之间应当能够相互通信、共享信息。JavaSpace服务(JavaSpace service)利用对象的分布式存储(distributed repository)和三个简单操作(读、写和取),实现了一个简单的、构建分布式系统的高层体系结构。JavaSpace服务通过Jini事务管理器和通知机制来支持事务,当与某个给定模板相匹配的条目写入JavaSpace服务时,通知机制能够通知某个对象。
二、JavaSpaces 概念及特性
1、JavaSpaces 概念
可以从以下几个方面来理解JavaSpace概念:纯对象风格;作为Jini服务;具有共享分布式通信的机制;对象存储机制。
从纯对象的观点,所有JavaSpace都是我们所说的JavaSpace接口的实现。它确实是得出那些有趣结果的一个非常小的接口。从Jini的观点来看,JavaSpace是一个利用Jini基础结构并向其他Jini客户机和服务提供其功能的一个Jini服务。JavaSpaces提供了一种完成共享分布式计算的机制。这可能是它所提供的一种最重要的功能了。JavaSpaces还提供了一个非常有趣且简单的对象存储机制。这并不是说它们是一种对象数据库,但这确实是一个非常有用的功能。
2、JavaSpace服务
JavaSpace服务为Java对象提供分布式的共享存储器。任何与Java兼容的客户端都可以将共享对象放进这个存储器中。然而,对于这些Java对象有几个限制条件。首先,保存在JavaSpace服务的对象都必须实现接口Entry(在net.jini.core.entry软件包中)。JavaSpace服务Entry附加到Jini Entry的方式定义在Jini核心规范中。一个Entry对象能够有多个构造函数并需要相当数量的方法。其他的需求包括 一个public的无参数的构造函数、public字段和非基本数据类型的字段。
JavaSpace服务代理使用无参数的构造函数在反串性化过程中实例化匹配的Entry对象。所有的用于模板对Entry对象进行匹配的字段都必须是public的。Jini核心规范中定义,一个Entry对象不能包含基本数据类型的字段。这个对象类型的字段要求简化了匹配的模板模型,因为基本的数据类型不能有null值,该值在模板中作为通配符。
同Jini一样,JavaSpace技术需要几个底层的服务。JavaSpace服务依赖于Jini查询服务,在需要事务时,必须启动Jini事务服务,JavaSpace服务还依赖于一个Web服务器和RMI活动守护程序rmid。
3、JavaSpace服务的属性
JavaSpace技术简化了分布式系统的设计与开发。一个JavaSpace服务有五个主要的属性:
1)JavaSpace服务是一种Jini服务。
2)一个条目将一直保存在JavaSpace服务中,除非它的合约到期,或是由某个程序从JavaSpace服务中取出。
3)JavaSpace服务定位对象的方法是将对象与模板进行比较。模板指定了JavaSpace服务比较各个条目的搜索条件。如果有一个或多个条目匹配模板,JavaSpace服务将返回其中的一个。
4)JavaSpace服务使用Jini事务管理器来支持操作执行的原子性。
5)JavaSpace服务的对象是共享的。程序可以从JavaSpace服务中读出或取得条目,改变这些条目的public字段,以及写回到JavaSpace服务供其他程序使用。
4、永久对象仓库
JavaSpaces的一个特点是对象数据仓库。写入一个空间的项都是正式的Java对象。 但请注意,JavaSpaces并不是一个对象数据库。Entry实例在位于JavaSpace中时并不是活动的,只是能够作为拷贝访问。这表示不能直接更改空间中的一个项。例如,如果在一个空间的某行中两次写相同的Entry实例,则此空间中将会有两个项。因此,空间中不存在维护项的对象标识的概念。
5、共享分布式计算
租用、事件和事务处理的产生是由分布式程序设计的特性所决定的。相对于一般的本地计算来说,分布式计算环境中的基础环境易出错。JavaSpaces引入了一种不同的模型。JavaSpace:提供了进行通信的一种中介模型。图1示出这种模型。
|
正如所见,程序清单1中列出的七个方法可用来提供某些非常复杂的行为的机制。不过,在遇到复杂问题时,最好从简单的地方入手。幸运的是,这些接口都很简单。
1)Entry
在学习实际的方法前,应该对Entry(项)类给予某种特殊的关注。下面是net.jini.core.entry.Entry的接口定义:
|
在建造一个实现项的类时,需要遵循以下几条规则:Entry子类的每个字段必须是公共的(字段可以是非公共的,但不能把它们保存在空间中);字段不能为简单字段,它们必须是对象;字段必须是可串行化的;必须提供一个公共的无参数的构造函数。
2)Read
read方法用于在JavaSpace中查找项。从本质上来说,它提供了一种搜索JavaSpace的方法。
|
第一个参数是一个项,用作执行搜索的模板,如果项的某个字段为空,则空间中相同类型的任意项内的同一个字段都将匹配,这里"类型"一词用来表示匹配项可以是与模板相同的类或者是模板的子类。如果模板中的一个字段不为空,则相同类中其他项内的字段必须精确匹配;如果找到一个匹配,就会返回匹配项;如果空间中有不止一个匹配项,则空间可以返回任意匹配项;至于返回哪个项不能保证,这表示不应该指望读项的顺序会有什么对应关系(如到达的顺序等);第二个参数提供了一个Transaction实例,应该在其下执行读操作; 最后一个参数为长整型,以毫秒为单位,此值说明在read方法中对于匹配项的出现在空间中要等待多久。这表示,如果一个匹配项在第一次调用read方法时不在空间中,则read方法将等待此项被添加到空间中,等待时间为此参数给出的超时值,如果等待时间超过超时值后还没有项匹配,则返回空。
3)readlfExists
readlfExists方法是一个非常类似于read的方法,它具有与read完全相同的参数和返回值;不过,readlfExists在这些参数的使用上稍有不同,它也是用来搜索空间的,而且使用相同的匹配模板实例的规则,read和readlfExists的不同之处在于超时值的处理。
readlfExists方法试图匹配作为第一个参数传入的模板项,如果未匹配,它立即返回,而不是像read方法那样等待匹配项。既然它立即返回,那么还要超时参数干什么呢? 这个问题涉及Javaspaces怎样处理事务,一个匹配项可能位于空间中,但可能在至今尚未完成的事务处理下写过,这表示此匹配项并不真正对readlfExists方法可见,超时参数指出readlfExists等待完成此未结束的事务处理要等多久。因此read方法要等待直至找到匹配项或超时期满,而readlfExists方法仅在恰好存在与未结束事务处理之下的匹配项相同的匹配项时等待。
4)take
take方法也具有与read方法相同的参数和返回值。它使用项模板的相同匹配规则,其超时值与read的超时值类似,即等待直到匹配项出现为止。但其重要的差别在于,如果找到一个匹配项,不仅返回给方法的调用者,而且还从空间中删除它。另外,如果多个客户机调用take方法且它们匹配空间中相同的项,则只有一个客户机取得该项,而其他客户机得到空返回值。
5)takelfExists
就像readlfExists方法对应于read方法一样,takelfExists方法对应于take方法,即它的超时参数指出等待具有一个匹配项的未结束的事务处理完成要等待多长时间。
6)write write方法用于把项放入空间。
|
write以希望放入空间的项作为第一个参数。请注意,任意种类的项都可以写入一个空间。write方法也使用write所属的Transaction实例以及一个租用参数,write方法的返回值为一个Lease实例。这允许调用者对将项保留在空间中有某些控制权。
7)notify
notfiy方法提供感兴趣的项被写入某个空间时到得通知的异步机制。
|
第一个Entry参数指出匹配空间中的项时使用的模板,匹配规则与read方法的相同,与read方法不同的是notify指出调用者对只要写匹配项就得到通知感兴趣,而不是对调用时在那里的项感兴趣。RemoteEventListener参数告诉空间送回事件给谁,在写一个新项到匹配模板的空间时,此空间发送一个事件到RemoteEventListener,以便它可以处理此事件;Handback参数作为事件数据的组成部分被发送到监听程序,这给notify方法的请求者提供了与Listener实例通信的一种途径;Lease参数指出调用者在接收通知时等待多长时间,时间以毫秒表示;EventRegistration返回的值为notify方法的调用者(如Lease实例)管理其注册提供某些信息。
8)snapshot 它是一种优化空间性能的方法。
|
在利用相同的模板项对一个空间重复调用方法时,snapshot方法有助于提高程序的性能。Snapshot工作的方式是你对传递希望优化性能的模板的空间调用它, 调用之后返回一个Entry实例,此Entry实例代表传入的项。基本上,空间会记住此新项实际上是旧项。在传递的这个新代表项调用空间时,避免了串行处理的大量开销。在模板项很大且串行化代价很高时,这样做可以极大地改善性能。
有一件需要注意的重要事情是,这仅对在其上调用snapshot方法的空间有效。如果在另一个不同的空间上调用某个方法并传递快照项,则新空间将不承认快照项代表原模板项。另一个要点是取回的项与传入的项根本不同。不应该将新项与已经拥有的任何项进行比较。
四、JavaSpaces技术的应用
Jini提供了在分散式环境中寻找( look-up)、注册( registration)、租借(leasing)等功能。而 JavaSpaces则负责管理分散式物件的处理程序( processing)、分享(sharing)、以及流通(migration )等。因此 Jini 与 JavaSpaces 彼此存在著相互合作的关系。简单的说,JavaSpaces就好像网路上的一个市场,它提供一个简单、快速、统一的介面,让网路上分散的资源可以被分享、协调与流通 。
对于要存储对象或使对象可被其他对象使用的很多应用,JavaSpaces技术具有立竿见影的效用。不过也可以通过其他方式使用JavaSpaces,它可以作为一种新的分布式系统编程范型的基础。这是Linda的最初目的,而Linda正是JavaSpaces的基础。尽管Linda可以用做简单的存储引擎,但它的真正目的是提供一种新的用于创建分布式应用的模型。在这种新模型中,分布式系统的创建将使对象在应用之间"流动",通过中心的Linda元组空间进行协同。这种思想不是为新的分布式应用创建定制的远程通信接口或协议,而是应用可根据它们写入元组空间及从元组空间中读出的对象集合来定义。如果用Java术语描述它,就是说不是为每个新任务定义或细化新的RMI远程接口,而是JavaSpaces接口将成为应用之间交互的公共API,应用将定义自己的Entry对象集,并给这些对象赋以自己的语义。
Javaspace是一个Jini服务,它提供一种共享分布式对象仓库。JavaSpaces是用 Java所发展的技术,并且以RMI实作其网路通讯的功能,一般应用在n-tiers 架构的中间层(middle tiers)。JavaSpaces虽然能提供求者与供应者之间查询与沟通的机制,但它并不是资料库,而是以简单的messaging system为基础,进而提供更强大的功能。除了在Jini应用之外,JavaSpaces技术也可被应用在其它系统与服务中,如:Workflow systems 、Customer management systems、Supply chain management 、Intelligent rich data distribution、 Trading services 、Auction systems 、Resource allocation and management systems、Agent Systems、以及 Publish and subscribe services等,现在我们来简要地介绍一下几个可以使用Javaspaces的领域:
1)信息共享
Javaspaces可以共享对象。因此,许多Javaspaces的应用程序可以做这个工作是不奇怪的。 可通过空间方便地交换信息。写到一个空间的每个项都可以从该空间的任一个客户机读出。 读取者和写入者不需要互相了解。所需知道的只是何种项放入了此空间。例如,空间可在聊天或通话系统中使用,这种系统已经变得非常流行了。其中,空间被用作共享的留言板,多个客户机可以写入和读取消息。
2)计算服务
除共享数据以外,Javaspaces的一个非常有意思的用途是共享分布式系统计算。 一般在这种用法中,计算一个(或多个)问题块的产生器可能很昂贵,但这种问题可以分成并行任务。产生器把问题块发送到某个JavaSpace。然后,运行在分离的机器上的该空间的客户机使用这些块,进行计算并将完成了的块返回给JavaSpace。然后再把这些完成的块装配起来。
3)工作流
JavaSpaces也很适合于管理工作流环境。可以把工作流环境与纯计算服务环境区分开来,在工作流环境中所调度的工作可以由人而不是纯计算完成。
Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务–如果你需要–还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。
WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。 Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。 Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。 WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层Action类), session(会话)application(应用程序)范围的映射,request请求参数映射。WebWork2支持多视图表示,视图部分可以使用JSP, Velocity, FreeMarker, JasperReports,XML等。
Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。
使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统 设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显 得别具意义。
这一高价值的商业应用程序,易于安装、易于实施、易于使用。只需要短短几个小时,您就可以使用申购-采购-发票-付款、报价-订单-发票-收款、产品与定价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了!功能未减,实施时间缩减到 4 小时。最重要的是:这一高价值的商业应用程序是免费的!可以自行安装和实施这套系统(如果您略懂 Oracle 和 Java 技术)。
中文站点:http://www.compiere-china.com/
这个weblogging 设计得比较精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS syndication,blogroll管理和提供一个XML-RPC 接口。
JFreeChart它主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
Eclipse平台是IBM向开发源码社区捐赠的开发框架,它之所以出名并不是因为IBM宣称投入开发的资金总数 —4千万美元,而是因为如此巨大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系结构。
代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts 框架技术,基于XML的portlet配置文件可以自由地动态扩展,使用了Web Services来支持一些远程信息的获取,使用 Apahce Lucene实现全文检索功能。
主要特点:
1、提供单一登陆接口,多认证模式(LDAP或SQL);
2、管理员能通过用户界面轻松管理用户,组,角色;
3、用户能可以根据需要定制个性化的portal layout;
4、能够在主流的J2EE应用服务器上运行,如JBoss+Jetty/Tomcat,JOnAS;
5、支持主流的数据库,如PostgreSQL,MySQL;
6、使用了第三放的开源项目,如Hibernate, Lucene, Struts;
7、支持包括中文在内的多种语言;
8、采用最先进的技术 Java, EJB, JMS, SOAP, XML;
Jetspeed是一个开放源代码的企业信息门户(EIP)的实现, 使用的技术是Java和XML. 用户可以使用浏览器, 支持WAP协议的手机或者其它的设备访问Jetspeed架设的信息门户获取信息. Jetspeed扮演着信息集中器的角色, 它能够把信息集中起来并且很容易地提供给用户.
Jetspeed具有如下的特征:
* 即将成为标准化的Java Portlet API
* 基于模板的布局, 包括JSP和Velocity
* 通过开放的内容同步技术支持远程XML内容交换
* 定制默认的主页
* 使用数据库进行用户认证
* 内存缓存技术, 加快页面的响应
* 通过Rich Site Summary技术, 支持同步内容
* 和Cocoon, WebMacro, Velocity集成.
* Wireless Markup Language (WML) 支持
* 使用XML格式的配置文件注册portlet.
* 完整的Web Application Archive (WAR) 支持
* Web应用程序开发的基础设施
* 可以在本地缓存远程内容
* 与Avantgo同步
* 可移植到所有支持JDK1.2和Servlet 2.2的平台
* 与Turbine模块和服务集成
* 可以根据用户, 安装媒体类型和语言的不同设定, 产生不同的个性化服务
* 持续化服务使得所由的portlet能够容易的存储每个用户的状态, 页面和portlet
* 使用皮肤技术使得用户可以选择portlet的颜色和显示属性
* 自定义功能是的管理员可以选择portlet以及定义个人页面的布局
* 在数据库中存储PSML
* 通过Jetspeed的安全portlets管理用户, 组,角色和权限
* 基于角色对访问portlet进行控制
JOnAS是一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保符合Servlet 2.3和JSP 1.2规范。JOnAS服务器依赖或实现以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。
Turbine是基于Servlet的框架包,也是开放源代码Jakarta项目。目前还没有关于Turbine的大量文档。它类似于Struts,但是有一些主要区别。突出的一点就是它并没有与JSP耦合。Turbine的特点是它提供了大量可重用的组件。此框架包中包含了大量组件,但是这些组件是离散的。它似乎应该给出更多的组件库,但是由于它缺少文档,所以很难掌握完整的体系结构。
Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。一个组件就是任意一个带有jwcid属性的html标记。其中jwc的意思是Java Web Component。Tapestry使得java代码与html完全分离,利用这个框架开发大型应用变得轻而易举。并且开发的应用很容易维护和升级。Tapestry支持本地化,其错误报告也很详细。Tapestry主要利用javabean和xml技术进行开发。
Apache Lucene是一个开放源程序的搜寻器引擎,利用它可以轻易地为Java软件加入全文搜寻功能。Lucene的最主要工作是替文件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高,Lucen提供一组解读,过滤,分析文件,编排和使用索引的API,它的强大之处除了高效和简单外,是最重要的是使使用者可以随时应自已需要自订其功能。
iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。
Beanshell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。它将脚本化对象看作简单闭包方法(simple method closure)来支持,就如同在Perl和JavaScript中的一样。 它具有以下的一些特点:使用Java反射API以提供Java语句和表达式的实时解释执行;可以透明地访问任何Java对象和API;可以在命令行模式、控制台模式、小程序模式和远程线程服务器模式等四种模式下面运行;与在应用程序中一样,可以在小程序中(Applet)正常运行(无需编译器或者类装载器);非常精简的解释器jar文件大小为175k
OpenCms是一个J2EE的产品,它是用Java写成的。它和Tomcat捆绑在一起。但是也能够使用ATG Dynamo、WebLogic和WebSphere。OpenCms支持多种RDBMS来保存内容,包括Oracle、SQL Server、Sybase和mySQL。新版本提供了一个新的模板引擎,JSP支持,一种新的连接管理系统,提高了稳定性。
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
opencrx很容易与你现存的系统集成 (ERP, IVR, CTI, …)是你对你以前投资的最大保护而且openCRX支持大多数通用技术,例如 RMI, CORBA, JMS, SOAP, 以及 JCA; openCRX也包括了支持典型插件的智能前台,例如文档管理,库存跟踪, 设备管理,等. openCRX 可以运行于任意J2EE兼容的应用服务器 (e.g. JBoss, BEA WebLogic or IBM WebSphere) 和主流数据库 (e.g. MaxDB, Firebird, PostgreSQL, MS SQL, Oracle, or IBM DB2). 容易定制 基于 XML 的定制:径直的,迅速的以及可行的(包括多语言特性) 容易扩展写下你自己的工作流,或者发展可扩展的—得益于openCRX的基于组件的体系和像 J2EE,MDA 等的开放标准,这是一个很简单的任务。(摘自http://www.opencrx.com.cn/crx/)
XWiki是一个强大的Java开源的Wiki引擎。它支持一些受欢迎的特性如:
* 内容管理(浏览/编辑/预览/保存),
* 支持附件,
* 版本控制,
* 全文本搜索,
* 权限管理
* 使用Hibernate进行数据存储,
* RSS输出与显示外部的RSS feeds,
* 多语言支持,
* 提供XML/RPC的API,
* WYSIWYG HTML编辑器,
* 导出为PDF
* Groovy脚本支持等等….。
EJBCA是一个全功能的CA系统软件,它基于J2EE技术,并提供了一个强大的、高性能并基于组件的CA。EJBCA兼具灵活性和平台独立性,能够独立使用,也能和任何J2EE应用程序集成。
利用OpenLaszlo免费平台可以快速地,简单地开发漂亮Web 应用程序。这些Web应用程序可以运行在当前任何流行的浏览器与桌面操作系统。它只需要一个XML文件。
Sun微系统公司公开了旨在建立P2P(Peer to Peer)通用技术基础的JXTA计划。JXTA技术是网络编程和计算的平台,用以解决现代分布计算尤其是点对点(P2P)计算中出现的问题。
JXTA将建立核心的网络计算技术,提供支持在任何平台、任何地方以及任何时间实现P2P计算的一整套简单、小巧和灵活的机制。JXTA首先将归纳目前P2P的功能特别,而后建立核心的技术来表达目前的P2P计算的局限性。其重点是创建基本的机制,而具体的策略选择权则交给应用的开发者。JXTA将充分利用XML、Java等开放技术,使得UNIX操作系统更强大和灵活,比如利用管道(Pipes)传输Shell命令实现复杂的计算任务。JXTA支持P2P应用的基本功能来建立一个P2P系统,还将努力证实这些可以成为建立更高层功能的基础构造模块。JXTA架构可以分为三个层面:JXTA核心层、JXTA业务层和JXTA应用层。
JDOInstruments是一个用Java开发的嵌入式面向对象数据库.它还实现了Sun的JDO规范用于Java对象的透明持久化.它可运行在windows2000, windows2003 64bits,和Linux(Fedora Core2)平台上.
EPIC是一个开源的Perl开发工具.支持语法高亮显示,快速语法检查,内容帮助,perldoc支持,源码格式,模板支持和一个Perl调试器.
GeoAPI为OpenGIS规范提供一组Java接口。
FINA是一个三层J2EE应用程序用于从一些金融机构(如银行,投资公司等)接收数据,然后把数据存储到DB (Oracle/MSSQL/DB2)数据库中并生成相应的报表. FINA是一个完全可定制的和综合的强大报表设计器.
XSM(eXtensible Site Manager)下一代的web网站管理系统。它能够让用户轻松地在线管理它们的网站,并同时在服务器上维护一个静态的网站。
QOLdap是一个Eclipse平台下LDAP目录浏览器.
JDots(Java Dynamic Object Tree System)是一个很小的Java包,它能够让Java开发者构建一棵Java对象树,这些对象之间还可互相通信.一个对象可以发送一个方法调用到它的父节点或子节点对象.参数只能是可包含任何数据格式的TagLists类型.
MiddlegenIDE是一个Middlegen在Eclipse下的插件,它可生成映射文件,JavaBean源码,配置文件和导入相关的jar.而你所要做的只是配置好数据库连接信息和选择要生成映射文件与Java类的数据库表.MiddlegenIDE当前版本只支持生成Hibernate映射文件与JavaBean源码.
Stripes是一个视图框架用于利用最新的Java技术来构建Web应用程序.它具有以下特点:不需要对每一page/action进行映射配置(ActionBeans将自动被发现,它利用注释进行配置),强大的绑定引擎用于构建复杂并脱离请求参数(request parameter)的web对象,易于使用并可本地化的验证与类型转换系统.可重复使用ActionBean作为视图帮助类.支持一个form对应多个事件.透明的文件上传能力.支持持续开发(比如在构思你的ActionBean之前可以先构建与测试JSP)等.
Flow4J是一个可在Eclipse平台下以拖放的方式进行工作流建模的插件.一个工作流程可包含许多流程步骤(在该项目中叫作flowlet),然后这些步骤可接连在一起组合成复杂的流程.所有流程将包含以下两种类型的flowlet:Control Flowlets如开始,判断与跳转Flowlets这些将在Eclipse中配置.另一种类型是Task Flowlets:它是一个包含特定任务的Java类,包含的功能可以是任何事件的如EJB调用或JNI调用,这些任务还可用一些脚本语言如Jython,Groovy,JavaScript等来进行开发.当在Eclipse中设计完这些流程之后,所有流程的Java源代码将自动创建.
利用Crispy提供的一个统一接口,你可以调用RMI,WebService,REST,XML-RPC,EJB,Burlap,Hessian等其它服务.你不需要知道这些服务是怎样工作的,要调用的服务类型可在properties文件中定义.远程调用就像简单Java对象调用一样,你可以把Crispy集成到一个SOA(Service Oriented Architecture)或RCP(Rich Client Platform)中.
这是一个软件开发状况(包括版本,时间,测试,效率,程序代码等等)分析工具. 它会将其绘制成图表来分析,并可以以时间轴输出HTML/SVG报表.
XMoon扩展自Jakarta Struts框架用于开发处理基于XML或一些脚本语言(如: BeanShell, JRuby, JudoScript, Jython,Rhino)的Web应用程序.它还提供一个用于展示该框架宠物店Demo.
它为JSP/J2EE领域中的Voice Application提供一组基于Eclipse的开发工具.
Red-Piranha是一个开源搜索系统,它能够真正"学习"你所要查找的是什么.Red-Piranha可作为你桌面系统(Windows,Linux与Mac)的个人搜索引擎,或企业内部网搜索引擎,或为你的网站提供搜索功能,或作为一个P2P搜索引擎,或与wiki结合作为一个知识/文档管理解决方案,或搜索你要的RSS聚合信息,或搜索你公司的系统(包括SAP,Oracle或其它任何Database/Data source),或用于管理PDF,Word和其它文档,或作为一个提供搜索信息的WebService或为你的应用程序(Web,Swing,SWT,Flash,Mozilla-XUL,PHP, Perl或c#/.Net)提供搜索后台等等.
Logisim是一个教学工具用于设计和模拟数字逻辑电路.
xalan-java是一套xslt处理器,用来将XML文件转换为HTML,TEXT和XML等其他类型文件格式。支持XSLT1.0和XPATH 1.0版。开发人员可以通过命令行方式或在JAVA APPLET和SERVLET中使用,并可以作为自己开发的应用程序的类库使用。xalan-java实现的是transformation API for XML(TRaX)接口,此接口为jaxp1.2标准中的一部分。
这是一个实现了SNMP协议的Java包.它提供对基本的SNMP客户端与在SNMP版本1和2中定义的代理操作的支持.这个包提供了一种机制用于取得与设置SNMP对象标识(OID:object identifier)值通过一个简单的通信接口并可用于描述SNMP结构等.
Cobertura是一个基于jcoverage的免费Java工具,它能够显示哪一部分代码被你的测试所覆盖,并可生成HTML或XML报告.
Jeceira是一个实现了JSR 170规范的内容管理系统.
一个JBoss实验室项目用于创建符合JSR 168规范的Wiki.它已被用于增强JBoss Portal项目。
Woodstox是一个快速开源且符合StAX(STreaming Api for Xml processing)规范的XML处理器(做为一个处理器意味着它可以处理输入(相当于解析)与输出(相当于写入,序列化))。
Jiplet是Java SIP Servlet的简写,Jiplet Container是一个开源的服务端SIP应用程序容器.Java开发者可以利用Jiplet API来开SIP应用程序并把程序部署到Jiplet容器中.SIP (Session Initiation Protocol)被广范用于通过互联网提供电话服务.这个容器为开发,部署和运行SIP应用程序提供了一个类似于Java Servlet的开发与运行环境.它的许多特性都非常类似于Java Servlet容器包括支持servlet映射(servlet mapping),范围变量(scoped variables),上下文处理(context handling)等. 另外还有一个用于测试SIP应用程序的开源项目SipUnit
Tudu Lists是一个日程(todo list)管理J2EE应用程序.它基于JDK5.0,Spring,Hibernate,和DWR AJAX框架.Tudu Lists同样也是一个简单但实效的项目管理工具.
jCookie是一个免费,开源的Java包用于Java客户端cookie处理.客户端HTTP状态管理(或cookie处理)对于那些需要与Web应用程序如email或在线银行服务进行交互的Java应用程序是非常重要的.
MrPostman是一个email网关,它使你能够直接从自己喜欢的Email客户端(如: Outlook Express,Thunderbird等)访问Yahoo Mail,Hotmail,gmail(Google mail)和其它webmail服务.它被设计成可扩展,因此可以很容易地添加更多的web mail服务.MrPostman还支持RSS新闻简读.
Deep Network Analyzer(DNA)是一个灵活的,可扩展的深度网络分析器(服务器软件)与框架,它可收集和分析网络数据包,网络对话(sessions)与应用层协议(HTTP,DNS,P2P,VoIP等),被动地隔离企业级网络.DNA主要设计用于Internet安全,入侵探测,网络管理,协议与网络分析,信息搜集,网络监测应用程序.
WebHuddle一个小巧(只有100KB),简单(不需要安装-直接运行在浏览器上)并且安全(所有数据通过HTTPS协议加密)的Web based视频会议系统.
AbaGUIBuilder是一个用Java开发的可视化Java GUI设计器。它类似于Delphi/VB设计器,能够让应用程序开发者快速设计和创建UI Java应用程序。它当前还包括一套数据库感知组件(aware component).
CopperCore是为IMS学习设计系统提供的一个J2EE运行期引擎,可以用于将IMS学习设计系统集成到你的应用程序中。
FlightGear是一个开源基于Eclipse RCP的多平台飞行模拟器。![]()
![]()
![]()
![]()
Galleon是一个免费开源的TiVo媒体服务器.它能够让你在你的TV上欣赏各种格式的媒体内容并可进行交互式操作。把这个服务器运行在家庭电脑上并组织你的媒体内容,然后就可以在你的家庭网络上进行观看了。![]()
在这个项目中有许多关于AJAX技术的解决方案.它展示运行在J2EE平台上AJAX应用程序开发的设计模式.其中AJAX+JSF组合就是BluePrints Solutions Catalog的一部分。在线AJAX技术解决方案的Demo。
SnowMail是一个开源的Email客户端.它支持多POP3/SMTP账号;安全SSL连接(如果mail服务器允许);所有数据,包括邮件,账号设置,通信录都采用密码加密技术进行本地存储;Statistical SPAM过滤器等.整个项目利用免费的Java IDE schmortopf进行开发.
JSR220-ORM项目为JSR220(EJB3)与JSR243(JDO2)规范的实现提供一个可视化的开发工具.它将会追踪这些规范的变化,只要它们合并在一起变成一个公共的持久化标准,这个项目也将会为这个标准提供完全实现的工具.
PyDev是一个允许用户利用Eclipse进行Python开发。它提供了一些很好的功能如:代码填空,语法高亮显示,语法分析,重构(refactor)和调试等等.
这个插件允许你在Eclipse开发平台下编辑,编译和运行groovy scripts与classes.该插件只适用于Eclipse 3.1.
JavaSpaces的一个开源实现.
SIPF(Siemens Intranet Portal Framework)提供一个个性化的,结构化的信息访问和应用程序的无缝集成.一个基于web的并且结构分明的可视化桌面工作环境.
Lutece是一个Web门户引擎,它能够让你快速创建基于HTML,XML或数据库内容的internet或intranet门户网站.Lutece可很好的运行在Linux与Windows平台上,采用MySQL作为默认的数据库.Lutece提供一个非常简单的管理界面能够让最终用户直接使用而不需要任何专门的技术.这个工具由巴黎城市数据处理部门所开发主要用于区域Web站点项目,它已被运用在超过18个城市的Web网站上(具体可查看此处列表).
OpenQueue是一个用于发布与订阅消息队列的开放协议。这使得运行在不同机器上的,采用不同语言开发的且没有联系的应用程序之间能够进行异步通信。
HylaFAX传真服务器的一个Java客户端.它可传真PostScript格式的文档,轮询传真,自动生成与预览封面页,编辑传真的工作参数,查看接收到传真和存储文档,支持vCard 2.1导入与导出地址薄。这个项目用到一个组件叫XNap Commons,这个组件提供了一些可公用的单元类用于处理一些公共的任务如:可分类的表格(sortable tables), 自动完成, 国际化(i18n) 与一个设置框架。JHylaFAX与XNap Commons都需要Java5.0 (JRE) 。
JavaServer(TM) Faces技术简化了JavaServer应用程序用户界面的开发.各种技术水平的开发者都能够快速创建web应用程序通过在一个页面中装配一些可重复使用UI组件;并可把这些组件与应用程序的数据源连接起来;也可把客户端产生的事件与服务端事件处理者连接起来.这个项目是Sun对JSF技术规范的最完整实现.
Keel Framework是一个把专注于应用程序开发某方面(如:用户接口,数据库,消息,安全等等)的开源或商业的框架以插件的方式整合在一起的元框架。Keel围绕三种核心模式进行构建:
1.COP模式(Component Oriented Programming:面向组件编程)这就为应用程序提供了一个灵活的插件(plugging/unplugging)框架.
2.SOC模式(Separation of Concerns:关注分离)这允许用户执行/控制/修改任何组件的功能而不会影响到其它组件.
3.IOC模式(Inversion of Control:反转控制).
Keel Framework当前已经集合了Avalon,Cocoon,Struts,Hibernate,Velocity,
WebWork2,Axis, Maverick,JBoss,OpenJMS,Turbine,Lucene,BSF,Jelly,
JFreeChart,Quartz等项目!这有一篇英文的简介文章Keel Framework.
eXtremeTable是一个可扩展的用于以表格的形式来显示数据的一组JSP标签库.
这个插件包括的功能有:PHP语法分析,调试,代码格式化,大纲视图,代码模板定制等.
利用这个插件可以轻松地开发和测试PL/SQL代码。
Freemind是一实用的开源思维导图/心智(MindMap)软件.它可用来作为:1.管理项目(包括子任务的管理,子任务的状态,时间记录,资源链接管理).2.笔记或知识库.3.文章写作或者头脑风暴.4.结构化的存储小型数据库.![]()
OOWeb是一个轻量级的,可嵌入的Java HTTP服务器.它把URL目录映射成对象,页面映射成方法,GET/POST自变量映射成方法的参数.这提供了真正的面向对象(OO)Web开发也就不需要庞大的容器.
Druid是一个允许用户以图形的方式来创建数据库的工具.用户可以add/change/delete数据库对象(表格,字段等).一旦数据库创建完成Druid就能够为你生成便于浏览所有表格的HTML/PDF文档,Java classes(每一个表格对应一个table),数据字典,SQL script等.
jXLS是一个可利用XLS模板来生成Excel文件的Java开源包.
StrutsBox主要特点包括:
◆基于Eclipse3.1开发平台
◆一个用来编辑Struts配置文件的可视化编辑器
◆以图形的方式来显示Struts应用程序的Web Flow
◆一个可高亮显示语法的JSP编辑器
◆可利用向导来创建Struts项目与一个新的Struts form
◆支持Struts 1.0,1.1与1.2标准 
inferencing是一个用于存储,查询,解析RDF的Java框架.它可被配置作为一个web服务器或当一个Java包来使用.它的特点包括3种查询语言(SeRQL, RQL, RDQL),支持内存(RAM),磁盘(disk),与RDBMS存储.
JVoiceXML一个开源的VoiceXML解析器.
OAJ(OpenAccountingJ)是一个免费,开源,基于Web的Accounting/ERP系统.它利用一些开源的优秀组件如:Spring Framework, Acegi Security, Hibernate, Jasper Reports, XDoclet来为你的商业应用提供一个可靠的,可定制的,安全的平台.OAJ可以用来替代现存的PHP OpenAccounting.
WSABI For Axis:一个基于Java的Web应用程序用于管理Apache Axis部署.允许用户使用一个直观的GUI来监控与配置基于CRUD SOAP的Web服务,Handlers (JAX-RPC与Axis)与全局配置(Global Configuration)等.
JooReports是一个基于OpenOffice.org利用Java创建Office文档与报表的解决方案.模板可利用word处理器进行设计.生成的文档可以是PDF,Word和其它格式.数据源包括POJOs与XML.
Jode在Eclipse开发平台下的插件.
Eclipse Version Tree这个插件提供一种以图形树的方式来显示CVS资源.
基于java nio的Cindy提供一个简单,高效的异步I/O框架,支持tcp/udp/pipe并易于测试.
一个基于Web Service的工作流管理系统,采用Java和CBD思想进行开发.uEngine提供了商业BPM解决方案的大部分特性如:流程设计器,EIP,Web服务工具和DB应用程序生成器. 
JVC(Java View Control) Java(视图-控制)开发框架的目的是构建一个快速开发、可维护的、稳定的web开发框架,并开放源代码,互相促进开发技术。 目前比较流行的web开发框架有WebWork、Struts、Spring,这几个都是非常好的开发框架,都能实现MVC模式.参考上述几个框架的思想,开发简化了的视图-控制框架,弱化了模型层,为什么要弱化模型层,这是因为往往在模型中大部分是重复的工作。 项目主要的特点是
1.开发简单快速:大部分开发不需要写javabean,系统自带的Action能满足90%需求,只需要编写page文件(控制文件)与视图jsp。
2.提供了Web系统开发过程中都需要开发的通用用户权限管理:可以控制角色对每个Command的访问权
3.提供功能强大的验证框架:使用表达式编写验证公式,支持所有逻辑表达式,并且前台jsp(生成javascript脚本)和后台Servlet(提交到后台的request参数)均可以调用。
4.可维护性:一般修改了数据库表需要同时修改M、V,需要重新编译,虽然简单,但带来了繁琐的操作,而且有可能引起其他错误,而jvc框架弱化了M,不需要编写对象关系映射的类,而是用命名规范使得对于大部分的修改只是需要修改V(jsp页面)。
5.自定义Action可独立调试,一般Action由于需要从requset得到参数而无法进行独立调试,而jvc框架借鉴了WebWork方法把HTTP请求的封装为ActionContent类,除了交互和使用上的方便外,实现了往往开发web比较困难的独立调试。并且为下一步升级到Web+EJB或其他分布式架构做好准备。
jWic是一个Java框架用于开发基于事件的Web应用程序.它能够让你的应用程序脱离与URLs和页面流(page flows)的联系.
Mule是一个企业服务总线(ESB)消息框架.它的主要特性包括:
1.基于J2EE1.4的企业消息总线(ESB)和消息代理(broker).
2.可插入的连接性:比如Jms,jdbc,tcp,udp,multicast,http,servlet,smtp,pop3, file,xmpp等.
3.支持任何传输之上的异步,同步和请求响应事件处理机制.
4.支持Axis或者Glue的Web Service.
5.灵活的部署结构[Topologies]包括Client/Server, P2P, ESB 和Enterprise Service Network.
6.与Spring 框架集成:可用作ESB 容器,也可以很容易的嵌入到Spring应用中.
7.使用基于SEDA处理模型的高度可伸缩的企业服务器.
8.强大的基于EIP模式的事件路由机制等.
ModSecurity是一个入侵探测与阻止的引擎.它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙.它可以作为Apache Web服务器的一个模块或单独的应用程序来运行.ModSecurity的目的是为增强Web应用程序的安全性和保护Web应用程序避免遭受来自已知与未知的攻击.
EditorList插件用于改进对Eclipse编辑器的管理.它提供一个视图用于在一个列表中显示所有Eclipse编辑器并能对编辑器按自己的要求进行分组.
JML是一个Java Msn Messenger开发包.支持MSNP8/9/10/11.
JMAGE是一个Java imaging框架可在运行期动态编辑图片.它主要运用于Web应用程序中.类似于WYSIWYG imaging应用程序.![]()

这个项目实现了一个学习管理系统(LMS).它提供一个通过内容发布来创建一个虚拟课堂的框架.
wlFxp是一个类似于FlashFXP的Ftp/Fxp客户端.它的特点包括站点管理,列队管理,支持socks4/5, OTP和TLS/SSL.
Fourfive是一个领先的开源Web报表解决方案,使用XML作为它的配置文件。支持集群、负载平衡、动态发布、PDF, Excel, LDAP,图表、过滤器、排序、布局定制、门户、JasperReports、Velocity模板、兼容Internet Explorer, Netscape, Mozilla, Opera。
AWTaglib是一个Jsp标签可用于创建网格(grid)控件.它还提供一些额外的功能可以把网格中的数据导出为XLS,PDF和CSV(利用JasperReports来实现)并能与Struts框架相结合.
GILD(Groupware enabled Integrated Learning and Development)是一个用于程序开发教学与学习的Eclipse插件.Gild能够让教师把代码例子与课程资料相结合.
Calyxo一个基于MVC模式的Web框架.它为开发真正模块化的应用程序提供支持.它还包括支持i18n,一个灵活视图管理器和一个强大验证引擎等.Calyxo被分成五个组件分别为:1.Calyxo Base,2.Calyxo Control,3.Calyxo Panels,4.Calyxo Forms,5.Calyxo Struts(这个组件的目的是让Calyxo的其它组件可结合到Struts框架中,比如Calyxo Panels与Calyxo Forms可被用来替代Struts Tiles与Struts Validator在Struts中的使用).
Hibernate Annotator能够让你利用Java 5注释(annotations)来生成Hibernate mapping xml文件.它可作为那些原来使用xdoclet但要移植到Java5的一个替代品或作为Hibernate Annotations项目之外的另一个可选项目.
ServiceMix是一个建立在JBI (JSR 208)语法规则和APIs上的开源ESB(Enterprise Service Bus:企业服务总线)。它包括一个完整的JBI容器,其主要是由标准化信息服务和路由器,JBI管理MBeans,JBI配置单元和Ant任务(安装组件和管理容器)组成。新版本中集成了BPEL,增加了一个基于router的高性能目录,XPath转换引擎,Drools新规则,对RSS的支持与JCA的完全结合等等。
Volity为创建基于Internet的多人在线游戏提供一个开发平台.它主要关注于board和card游戏.
JCas实现了一个免费,开源基于Java的CAS服务器.
一个能与Yahoo! Search Web Services进行通信的Java开发包.
WS-JDBC是一个client/server JDBC驱动器,其中服务器部分是以Web服务的方式来实现.这意味着这个定制的JDBC驱动器客户端可以通过Internet来调用相应的服务.
Xanno是一个基于java1.5注释(annotation)的文件生成工具.这个项目的目的是创建一个下一代的XDoclet项目.
采用java 1.5开发的文件下载工具.它能够从用户定义的表达式生成URL并进行下载.
Virtual Qmail是一个用于Qmail的虚拟域名管理系统.这个系统允许通过Web的方式来管理它们的账号.
Intelligent适合于那些已经掌握如何使用HTML与CSS的用户但还希望能有一个更易于管理的web页面.
整合Laszlo与JSF的一个开源包.
XMLConfigReader是对Java ResourceBundle类的一个开源扩展.利用它可以直接从XML文件中读取配置数据并把数据存储在一个HashTable中.
对java.util.zip包的一个纯Java实现(没有使用本地代码).
One-JAR可以解决如何把一个依赖于多个其它jar文件的应用程序发布成一个单一的可执行Jar文件.它使用一个可定制的类装载器(classloader)来打开在主Jar中的Jar文件包.
JPackIt可以把Java工程打包成一个可执行的包(如:jar,class或exe).包括所有Java应用程序资源如:代码,图片,属性文件和被引用的第三方包.
Commonclipse这个插件类似于Commons4E