总结Java部分的框架和开源项目(精选五篇)

时间:2019-05-14 04:32:50下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《总结Java部分的框架和开源项目》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《总结Java部分的框架和开源项目》。

第一篇:总结Java部分的框架和开源项目

总结Java部分的框架和开源项目

文章分类:Java编程

下面我将为大家总结一下Java部分的框架和开源项目,让您从总的方面对Java部分框架有一定的了解。

Spring Framework【Java开源JEE框架】

Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不 是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的InversionofControl容器。然而,这仅仅是完整图景中的 一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。

Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构 还集成了Hibernate和其他O/Rmapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或 者JDBC事务提供一个一致的编程模型。

Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现 你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和 IoC容器集成的强大而灵活的MVCWeb框架。【SpringIDE:Eclipse平台下一个辅助开发插件】

WebWork【Java开源Web开发框架】

WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EEWeb框架。WebWork目前最 新版本是2.1,现在的WebWork2.x前身是RickardOberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和 WebWork2两个项目。Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。

Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL– theObjectGraphNotationLanguage),IoC(InversionofControl倒置控制)容器等。WebWork2建 立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层 Action类),session(会话)application(应用程序)范围的映射,request请求参数映射。

WebWork2支持多视图表示,视图部分可以使用JSP,Velocity,FreeMarker,JasperReports,XML等。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上.【EclipseWork:用于WebWork 辅助开发的一个Eclipse插件】

Struts【Java开源Web开发框架】

Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发 的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签 和信息资源(messageresources)整合到一个统一的框架中,开发人员利用其进 行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。【StrutsIDE:用于Struts辅 助开发的一个Eclipse插件】

Hibernate【Java开源持久层框架 】

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象 编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的 Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的 Hibernate辅助开发工具:【HibernateSynchronizer】【MiddlegenIDE】

Quartz【Java开源调度框架】

Quartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合 也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz1.5.0。

Velocity【Java开源模板引擎】

Velocity是一个基于java的模板引擎(templateengine)。它允许任何人仅仅简单的使用模板语言(templatelanguage)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员 同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方 案。Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以 被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbineweb开发架构提供模板服务(templateservice)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。【VeloEclipse:Velocity在Eclipse平台下的一个辅助开发插件】

iBATIS【Java开源持久层框架】

使用ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate实现ORM而言基本 一致,而对于具体的数据操作,Hibernate会自动生成SQL语句,而ibatis则要求开发者编写具体的SQL语句。相对Hibernate等―全 自动‖ORM机制而言,ibatis以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为―全自动‖ORM实现的一种有益 补充,ibatis的出现显得别具意义。

CompiereERP&CRM【Java开源ERP与CRM系统】

CompiereERP&CRM为全球范围内的中小型企业提供综合型解决方案,覆盖从客户管理、供应链到财务管理的全部领域,支持多组 织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性。易于安装、易于实施、易于使用。只需要短短几个小时,您就可以使用申购-采购-发票-付款、报价-订单-发票-收款、产品与定价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了。

RollerWeblogger【Java开源Blog博客】

这个weblogging设计得比较精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编 辑,TrackBack,提供页面模板,RSSsyndication,blogroll管理和提供一个XML-RPC接口。

Eclipse【Java开源IDE】

Eclipse平台是IBM向开发源码社区捐赠的开发框架,它之所以出名并不是因为IBM宣称投入开发的资金总数—4千万美元,而是因为如此巨 大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系结构。

XPlanner【Java开源项目管理】

XPlanner一个基于Web的XP团队计划和跟踪工具。XP独特的开发概念如iteration、userstories 等,XPlanner都提供了相对应的的管理工具,XPlanner支持XP开发流程,并解决利用XP思想来开发项目所碰到的问题。XPlanner特点 包括:简单的模型规划,虚拟笔记卡(Virtualnotecards),iterations、userstories与工作记录的追踪,未完成 stories将自动迭代,工作时间追踪,生成团队效率,个人工时报表,SOAP界面支持。

HSQLDB【Java开源开源数据库】

HSQLDB(HypersonicSQL)是纯Java开发的关系型数据库,并提供JDBC驱动存取数据。支持ANSI-92标准SQL语 法。而且他占的空间很小。大约只有160K,拥有快速的数据库引擎。

Liferay【Java开源门户系统】

代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts框架技术,基于XML的 portlet配置文件可以自由地动态扩展,使用了WebServices来支持一些远程信息的获取,使用ApahceLucene实现全文检索功能。

主要特点:

◆提供单一登陆接口,多认证模式(LDAP或SQL)

◆管理员能通过用户界面轻松管理用户,组,角色

◆用户能可以根据需要定制个性化的portallayout

◆能够在主流的J2EE应用服务器 上运行,如 JBoss+Jetty/Tomcat,JOnAS

◆支持主流的数据库,如PostgreSQL,MySQL

◆使用了第三放的开源项目,如Hibernate,Lucene,Struts

◆支持包括中文在内的多种语言

◆采用最先进的技术Java,EJB,JMS,SOAP,XML

JetSpeed【Java开源门户系统】

Jetspeed是一个开放源代码的企业信息门户(EIP)的实现,使用的技术是Java和XML.用户可以使用浏览器,支持WAP协议的手机 或者其它的设备访问Jetspeed架设的信息门户获取信息.Jetspeed扮演着信息 集中器的角色,它能够把信息集中起来并且很容易地提供给用户。

Jetspeed具有如下的特征:

◆即将成为标准化的JavaPortletAPI

◆基于模板的布局,包括JSP和Velocity

◆通过开放的内容同步技术支持远程XML内容交换

◆定制默认的主页

◆使用数据库进行用户认证

◆内存 缓存技术,加快页面的响应

◆通过RichSiteSummary技术,支持同步内容

◆和Cocoon,WebMacro,Velocity集成 ◆WirelessMarkupLanguage(WML)支持

◆使用XML格式的配置文件注册portlet

◆完整的WebApplicationArchive(WAR)支持

◆Web应用程序开发的基础设施

◆可以在本地缓存远程内容

◆与Avantgo同步

◆可移植到所有支持JDK1.2和Servlet2.2的平台

◆与Turbine模块和服务集成

◆可以根据用户,安装媒体类型和语言的不同设定,产生不同的个性化服务

◆持续化服务使得所由的portlet能够容易的存储每个用户的状态,页面和portlet

◆使用皮肤技术使得用户可以选择portlet的颜色和显示属性

◆自定义功能是的管理员可以选择portlet以及定义个人页面的布局

◆在数据库中存储PSML

◆通过Jetspeed的安全portlets管理用户,组,角色和权限

◆基于角色对访问portlet进行控制

JOnAS【Java开源应用服务器 】

JOnAS是一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保符合 Servlet2.3和JSP1.2规范。JOnAS服务器 依赖或实现以下的 JavaAPI:JCA、JDBC、JTA、JMS、JMX、JNDI、JAAS、JavaMail。

JFox3.0【Java开源应用服务器 】

JFox是OpenSourceJavaEEApplicationServer,致力于提供轻量级的JavaEE应用服务器,从3.0开始,JFox提供了一个支持模块化的MVC框架,以简化EJB以及Web应用 的开发!如果您正在寻找一个简单、轻量、高效、完善的JavaEE开发平台,那么JFox正是您需要的。

JFox3.0拥有以下特性:

◆重新设计的IoC微内核,融入OSGi模块化思想

◆设计成嵌入式架构,能够和任何JavaWebServer集成部署

◆支持EJB3,JPA规范,支持容器内和容器外两种方式运行EJB和JPA组件

◆支持EJB发布成WebService

◆采用JOTM(http://jotm.objectweb.org/)提供事务处理,支持两阶段提交(2PC)

◆采用XAPool(http://forge.objectweb.org/projects/xapool/)提供XADataSource,支持智能连接池管理

◆内置MVC框架,实现自动FormMapping,Validator,Uploading等功能,支持JSP/Velocity /Freemarker页面引擎,并支持直接在Action中注入EJB

◆支持多应用模块部署,让中大型应用充分享受模块化开发带来的优势

◆提供Manager管理模块,可以查看和管理各种运行时参数

◆提供根据JFox特色重写的Petstore应用模块

EasyJWeb【Java开源Web开发框架】

EasyJWeb是基于java技术,应用于WEB应用程序快速开发的MVC框架,框架设计构思来源于国内众多项目实践,框架充分借签了当前主 要流行的开源Web框架(Struts、JSF、Tapestry、Webwork),吸取了其优点及精华,利用Velocity作为模板页面引擎,是一 个实现了页面及代码完全分离的MVC开发框架。是一个能实现中小型Web应用系统快速开发的简易Web框架。

通过EasyJWebTools提供的配套开发工具,可以实现基于EasyJWeb框架的Web应用快速开发,包括常用应用软件的代码自生成、数据库添删改查(CRUD)代码生成、自动页面模版生成、配置文件管理等。

框架特点:

◆零配文件置支持。以前我们每接触一个框架,开始总都要被他的配置文件折腾一番。EasyJWeb实现零配置支持,可以不写一句配置文件就在框 架基础上构建你的运用。(适合小型网站系统)。

◆简易的模板页面设计支持:放弃使用jsp,使用简单Velocity脚本语言作为页面模板。

◆页面程序完全分离:实现显示页面与程序逻辑的完全分离,克服了传统jsp页面难于维护的问题。

◆基于页面组件的框架。灵活的页面组件配置,可以直接通过配置文件设置字段级的事件组件。

◆快速开发支持:通过EasyJWebTools,可以自动生成应用软件模板代码,定制并管理自己的J2EE代码模板,代码生成模板支持最流行 的实用Java开发框架(如hibernate、Spring等)实现快速开发。

Tapestry【Java开源Web开发框架】

Tapestry是一个开源的基于servlet的应用程序框架,它使用组件对象模型来创建动态的,交互的web应用。一个组件就是任意一个带 有jwcid属性的html标记。其中jwc的意思是JavaWebComponent。Tapestry使得java代码与html完全分离,利用这个 框架开发大型应用变得轻而易举。并且开发的应用很容易维护和升级。Tapestry支持本地化,其错误报告也很详细。Tapestry主要利用 javabean和xml技术进行开发。【Spindle:Tapestry辅助开发Eclipse插件】

FreeMarker【Java开源模板引擎】

FreeMarker允许Javaservlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用 servlet提供的数据动态地生成HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。【FreeMarkerEclipsePlugin与FreeMarkerIDE:Eclipse平台下的辅助开发工具】

Lucene【Java开源搜索引擎】

ApacheLucene是一个基于Java全文搜索引擎,利用它可以轻易地为Java软件加入全文搜寻功能。Lucene的最主要工作是替文 件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高,Lucen提供一组解读,过滤,分析文件,编排和使用索引的API,它的强大之处除了高 效和简单外,是最重要的是使使用者可以随时应自已需要自订其功能。

iText【Java开源PDF类库】

iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它 的类库尤其与javaServlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。

Groovy【Java开源动态语言】

Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性。Groovy已在 WebWork2中的应用。它可以被编译为标准的JavaBytecode。

OpenCms【Java开源CMS系统】

OpenCms是一个J2EE的产品,它是用Java写成的。它和Tomcat捆绑在一起。但是也能够使用ATGDynamo、WebLogic和WebSphere。OpenCms支持多种RDBMS来保存内容,包括Oracle、SQLServer、Sybase和 mySQL。新版本提供了一个新的模板引擎,JSP支持,一种新的连接管理系统,提高了稳定性。

JUnit【Java开源测试工具】

JUnit是由ErichGamma和KentBeck编写的一个回归测试框架(regressiontestingframework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框 架,继承TestCase类,就可以用Junit进行自动测试了。

BlueJ【Java开源IDE】

BlueJ是一个专门为入门级教学设计的JavaTM开发环境。它是由澳大利亚墨尔本Monash大学BlueJ小组设计并开发的。

XWiki【Java开源Wiki系统】

XWiki是一个强大的Java开源的Wiki引擎。它支持一些受欢迎的特性如:

◆内容管理(浏览/编辑/预览/保存)

◆支持附件

◆版本控制

◆全文本搜索

◆权限管理

◆使用Hibernate进行数据存储

◆RSS输出与显示外部的RSSfeeds

◆多语言支持

◆提供XML/RPC的API

◆WYSIWYGHTML编辑器

◆导出为PDF

◆Groovy脚本支持等等....EJBCA【Java开源网络服务器 端组件】

EJBCA是一个全功能的CA系统软件,它基于J2EE技术,并提供了一个强大的、高性能并基于组件的CA。EJBCA兼具灵活性和平台独立 性,能够独立使用,也能和任何J2EE应用程序集成。

JXTA【Java开源其它项目】

Sun微系统公司公开了旨在建立P2P(PeertoPeer)通用技术基础的JXTA计划。JXTA技术是网络编程和计算的平台,用以解决现 代分布计算尤其是点对点(P2P)计算中出现的问题。

JXTA将建立核心的网络计算技术,提供支持在任何平台、任何地方以及任何时间实现P2P计算的一整套简单、小巧和灵活的机制。JXTA首先将 归纳目前P2P的功能特别,而后建立核心的技术来表达目前的P2P计算的局限性。其重点是创建基本的机制,而具体的策略选择权则交给应用的开发者。JXTA将充分利用XML、Java等开放技术,使得UNIX操作系统 更强大和灵 活,比如利用管道(Pipes)传输Shell命令实现复杂的计算任务。JXTA支持P2P应用的基本功能来建立一个P2P系统,还将努力证实这些可以成 为建立更高层功能的基础构造模块。JXTA架构可以分为三个层面:JXTA核心层、JXTA业务层和JXTA应用层。

DWR【Java开源AJAX框架】

DWR(DirectWebRemoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端 利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成 JavaScrip代码).它的最新版本DWR0.6添加许多特性如:支持DomTrees的自动配置,支持Spring(JavaScript远程调用 springbean),更好浏览器支持,还支持一个可选的commons-logging日记操作。

ZK【Java开源AJAX框架】

ZK是一个AjaxJavaWeb框架,利用少量代码就能够开发出拥有RichUI的Web应用。ZK提供基于XUL的标记语言和事件驱动的组 件,可以让你像开发桌面应用程序一样简单。支持EL表达式和脚本语言包括:JavaScript、Ruby和Groovy等。支持Annotation及 数据绑定。集成GoogleMaps、FCKeditor、DOJO以及Timeline。

第二篇:【java总结】集合框架

【java总结】集合框架

Collection是集合框架层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。Collection接口下有最常用的接口为List跟Set。需要注意的是,Map并没有实现Collection接口。

List接口实现类ArrayList 优点:类似数组的形式进行存储,因此它的随机访问速度极快。缺点:不适合于在线性表中间需要频繁进行插入和删除操作。因为每次插入和删除都需要移动数组中的元素,它是用数组存储元素的,这个数组可以动态创建,如果元素个数超过了数组的容量,那么就创建一个更大的新数组,并将当前数组中的所有元素都复制到新数组中。[html] view plain copy public class ArrayListTest {

public static void main(String[] args){

List arrayList=new ArrayList();

arrayList.add(“Welcome”);

arrayList.add(“to”);

arrayList.add(“java”);

//把ArrayList变为数组相关的内容进行遍历

String[] strArray=new String[arrayList.size()];

arrayList.toArray(strArray);

for(int i=0;i

//使用迭代器进行ArrayList遍历

Iterator iter=arrayList.iterator();

while(iter.hasNext()){

System.out.println(iter.next());

}

}

}

List接口实现类LinkedList 优点:适合于在链表中间需要频繁进行插入和删除操作。

缺点: 随机访问速度较慢。查找一个元素需要从头开始一个一个的找。此类实现 Deque 接口,为 add、poll 提供先进先出队列操作,以及其他堆栈和双端队列操作LinkedList是在一个链表中存储元素。[html] view plain copy public class LinkedListTest {

public static void main(String[] args){

List linkedList=new LinkedList();

//使用ForEach遍历linkedList

String[] strArray2=new String[linkedList.size()];

linkedList.toArray(strArray2);

for(int i=0;i

//foreach遍历LinkedList

for(String str:linkedList){

System.out.println(str);

}

//使用迭代器进行ArrayList遍历

Iterator iter=linkedList.iterator();

while(iter.hasNext()){

System.out.println(iter.next());

}

}

}

List接口实现类Vector:

Vector使用了关键字synchronized将访问和修改向量的方法都变成同步的了,所以对于不需要同步的应用程序来说,类ArrayList比类Vector更高效。相同点:

①都继承于AbstractList,并且实现List接口

②都实现了RandomAccess和Cloneable接口

③都是通过数组实现的,本质上都是动态数组,默认数组容量是10 ④都支持Iterator和listIterator遍历

不同点: ①ArrayList是非线程安全,而Vector是线程安全的

②容量增加方式不同,Vector默认增长为原来一倍,而ArrayList却是原来的一半+1 ③Vector支持通过Enumeration去遍历,而List不支持

[html] view plain copy public class VectorTest {

public static void main(String[] args){

Vector vector = new Vector();

for(int i = 0;i < 10;i++){

vector.add(i);

}

//直接打印

System.out.println(vector.toString());

//size()

System.out.println(vector.size());

//contains

System.out.println(vector.contains(2));

//总结:对比Vector的遍历方式,使用索引的随机访问方式最快,使用迭代器最慢

//iterator遍历

Iterator iterator = vector.iterator();

while(iterator.hasNext()){

System.out.print(iterator.next()+ “ ”);

}

//Enumeration遍历

Enumeration enu = vector.elements();

while(enu.hasMoreElements()){

System.out.println((Integer)enu.nextElement());

}

//toArray

Object[] objArr = vector.toArray();

System.out.println(“nobjArr:” + Arrays.asList(objArr));

Integer[] intArr = vector.toArray(new Integer[vector.size()]);

System.out.println(“intArr:” + Arrays.asList(intArr));

//add

vector.add(5);

//remove

vector.remove(5);

System.out.println(vector);

//containsAll

System.out.println(vector.containsAll(Arrays.asList(5,6)));

//addAll

vector.addAll(Arrays.asList(555,666));

System.out.println(vector);

//removeAll

vector.removeAll(Arrays.asList(555,666));

System.out.println(vector);

//addAll方法

vector.addAll(5, Arrays.asList(666,666, 6));

System.out.println(vector);

//get方法

System.out.println(vector.get(5));

//set方法

vector.set(5, 55);

System.out.println(vector.get(5));

//add方法

vector.add(0, 555);

System.out.println(vector);

//remove方法

vector.remove(0);

System.out.println(vector);

//indexof方法

System.out.println(vector.indexOf(6));

//lastIndexOf方法

System.out.println(vector.lastIndexOf(6));

//listIterator方法

ListIterator listIterator = vector.listIterator();

System.out.println(listIterator.hasPrevious());

//listIterator(index)方法

ListIterator iListIterator = vector.listIterator(5);

System.out.println(iListIterator.previous());

//subList方法

System.out.println(vector.subList(5, 7));

//clear

vector.clear();

System.out.println(vector);

}

}

List接口实现类Stack 栈类,是Java2之前引入的,继承自类Vector。同样是线程同步的 [html] view plain copy public class StackTest {

public static void main(String[] args){

Stack stack = new Stack();

for(int i = 0;i < 10;i++){

stack.add(i);

}

System.out.println(stack);

System.out.println(stack.peek());

stack.push(555);

System.out.println(stack);

System.out.println(stack.pop());

System.out.println(stack);

System.out.println(stack.empty());

System.out.println(stack.search(6));

System.out.println(“stack遍历:”);

while(!stack.empty()){

System.out.print(stack.pop()+ “ ”);

}

}

}

List接口总结:实际使用中我们需要根据特定的需求选用合适的类,如果 除了在末尾外不能在其他位置插入或者删除元素,那么ArrayList效率更高,如果需要经常插入或者删除元素,就选择LinkedList。

Set接口实现类HashSet:

HashSet是Set接口最常见的实现类,其底层是基于hash算法进行存储相关元素的。HashSet中存储元素的位置是固定的(由hashCode决定),并且是无序的。Set集合中的去重和hashCode与equals方法相关。[html] view plain copy public class Num implements Comparable{

private int num;

public Num(int num){

this.num=num;

}

@Override

public int compareTo(Object o){

// TODO Auto-generated method stub

Num x=(Num)o;

if(num>x.num)return 1;

else if(num==x.num)return 0;

else return-1;

}

public String toString(){

return “num=”+num;

}

}

[html] view plain copy public class HashSetTest {

public static void main(String[] args){

Set hashSet=new HashSet();

hashSet.add(“hello”);

hashSet.add(“world”);

hashSet.add(“world”);

//使用数组的方法遍历HashSet集合String[] strArray=new String[hashSet.size()];

strArray=hashSet.toArray(strArray);

for(String str:strArray){

System.out.println(str);

}

//使用HashSet集合直接遍历

for(String str:hashSet){

System.out.println(str);

}

//用迭代器遍历HashSet集合Iterator iterator=hashSet.iterator();

while(iterator.hasNext()){

System.out.println(iterator.next());

}

//无重写hashCode跟equals方法的类,不会自动根据类中的值进行去重

Set set2=new HashSet();

set2.add(new Num(1));

set2.add(new Num(3));

set2.add(new Num(2));

set2.add(new Num(3));

set2.add(new Num(3));

set2.add(new Num(6));

System.out.println(set2.size());

Iterator iterator2=set2.iterator();

while(iterator2.hasNext()){

System.out.println(iterator2.next());

}

}

}

Set接口实现类LinkedHashSet: LinkedHashSet继承HashSet,是用一个链表实现来扩展HashSet类,它支持对规则集内的元素排序。HashSet中的元素是没有被排序的,而LinkedHashSet中的元素可以按照它们插入规则集的顺序提取。[html] view plain copy public class LinkedHashSetTest {

public static void main(String[] args){

Set linkedHashSet=new LinkedHashSet();

linkedHashSet.add(“hello”);

linkedHashSet.add(“world”);

linkedHashSet.add(“world”);

//使用数组的方法遍历HashSet集合String[] strArray=new String[linkedHashSet.size()];

strArray=linkedHashSet.toArray(strArray);

for(String str:strArray){

System.out.println(str);

}

//使用HashSet集合直接遍历

for(String str:linkedHashSet){

System.out.println(str);

}

//用迭代器遍历HashSet集合Iterator iterator=linkedHashSet.iterator();

while(iterawww.xiexiebang.comtor.hasNext()){

System.out.println(iterator.next());

}

}

}

Set接口实现类TreeSet:

TreeSet实现了Set接口,它与HashSet的区别主要在于TreeSet中的元素会按照相关的值进行排序。HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key。由于TreeMap需要排序,所以需要一个Comparator为键值进行大小比较.当然也是用Comparator定位的.如果创建时没有确定,那么就会使用key.compareTo()方法,这就要求key必须实现Comparable接口.TreeMap是使用Tree数据结构实现的,所以使用compare接口就可以完成定位了.注意:TreeSet是根据对象的CompareTo方法来去重的,如果CompaerTo返回0说明两个对象相等,不能同时存在于TreeSet中。

[html] view plain copy public class TreeSetTest {

public static void main(String[] args){

Set treeSet=new TreeSet();

treeSet.add(“d”);

treeSet.add(“c”);

treeSet.add(“b”);

treeSet.add(“a”);

//String实体类中实现Comparable接口,所以在初始化TreeSet的时候, //无需传入比较器

Iterator iterator=treeSet.iterator();

while(iterator.hasNext()){

System.out.println(iterator.next());

}

Set treeSet2=new TreeSet();

treeSet2.add(new Num(1));

treeSet2.add(new Num(3));

treeSet2.add(new Num(2));

treeSet2.add(new Num(3));

treeSet2.add(new Num(3));

treeSet2.add(new Num(6));

System.out.println(treeSet2.size());

Iterator iterator2=treeSet2.iterator();

while(iterator2.hasNext())

{

System.out.println(iterator2.next());

}

TreeSet set = new TreeSet<>();

set.add(1111);

set.add(2222);

set.add(3333);

set.add(4444);

set.add(5555);

System.out.println(set.first());// 输出第一个元素

System.out.println(set.lower(3333));//小于3333的最大元素

System.out.println(set.higher(2222));//大于2222的最大元素

System.out.println(set.floor(3333));//不大于3333的最大元素

System.out.println(set.ceiling(3333));//不小于3333的最大元素

System.out.println(set.pollFirst());//删除第一个元素

System.out.println(set.pollLast());//删除最后一个元素

System.out.println(set);

}

}

Set接口区别于List接口在于:

所有Set中的元素实现了不重复,有点像数学中集合的概念,无序,不允许有重复的元素,最多允许有一个null元素对象

Map接口:

Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射,Map中的key不要求有序,不允许重复。value同样不要求有序,但可以重复。

Map实现类HashMap 最常见的Map实现类,他的储存方式是哈希表,优点是查询指定元素效率高。HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当链表中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。

无论什么情况HashMap中哈希表的容量总是2的n次方的一个数。并且有这样一个公式:当length=2^n时,hashcode &(length-1)== hashcode % length

HashMap与Hashtable的区别:

Hashtable实现Map接口,继承自古老的Dictionary类,实现一个key-value的键值映射表。任何非空的(key-value)均可以放入其中。区别主要有三点: 1.Hashtable是基于陈旧的Dictionary实现的,而HashMap是基于Java1.2引进的Map接口实现的;

2.Hashtable是线程安全的,而HashMap是非线程安全的,我们可以使用外部同步的方法解决这个问题。

3.HashMap可以允许你在列表中放一个key值为null的元素,并且可以有任意多value为null,而Hashtable不允许键或者值为null。

[html] view plain copy public class HashMapTest {

public static void main(String[] args){

Map hashMap=new HashMap();

hashMap.put(“a”,1);

hashMap.put(“b”,2);

hashMap.put(“JAVA”,3);

System.out.println(hashMap.get(“JAVA”));

//第一种遍历方法:普遍使用,二次取值

for(String key : hashMap.keySet()){

System.out.println(“key= ”+ key + “ and value= ” + hashMap.get(key));

}

//第二种:通过Map.entrySet使用iterator遍历key和value

Iterator> iter=hashMap.entrySet().iterator();

while(iter.hasNext()){

System.out.println(iter.next());

}

//第三种:通过Map.entrySet遍历key和value.推荐,尤其是容量大时

for(Map.Entry entry : hashMap.entrySet()){

System.out.println(“key= ” + entry.getKey()+ “ and value= ” + entry.getValue());

}

//第四种:通过Map.values()遍历所有的value,但不能遍历key

for(Integer v : hashMap.values()){

System.out.println(“value= ” + v);

}

}

}

Map实现类LinkedHashMap LinkedHashMap继承自HashMap,它主要是用链表实现来扩展HashMap类,HshMap中条目是没有顺序的,但是在LinkedHashMap中元素既可以按照它们插入图的顺序排序,也可以按它们最后一次被访问 的顺序排序。LinkedHashMap继承自HashMap并且实现了Map接口。和HashMap一样,LinkedHashMap 允许key和value均为null。于该数据结构和HashMap一样使用到hash算法,因此它不能保证映射的顺序,尤其是不能保证顺序持久不变(再哈希)。

[html] view plain copy public class LinkedHashMapTest {

public static void main(String[] args){

Map linkedHashMap=new LinkedHashMap();

linkedHashMap.put(“a”, 1);

linkedHashMap.put(“java”,2);

linkedHashMap.put(“C”, 3);

System.out.println(linkedHashMap.get(“a”));

Set> entry=linkedHashMap.entrySet();

Iterator> iter=entry.iterator();

while(iter.haswww.xiexiebang.comn(String[] args){

Map treeMap=new TreeMap();

treeMap.put(“b”,2);

treeMap.put(“a”,1);

treeMap.put(“e”,5);

treeMap.put(“d”,4);

treeMap.put(“c”,3);

Set> entry=treeMap.entrySet();

Iterator> iter=entry.iterator();

while(iter.hasNext()){

System.out.println(iter.next());

}

Set keySet=treeMap.keySet();

for(String x:keySet){

System.out.println(x+“=”+treeMap.get(x));

}

Map treeMap2=new TreeMap();

treeMap2.put(new Num(2),“a”);

treeMap2.put(new Num(1),“b”);

treeMap2.put(new Num(5),“c”);

treeMap2.put(new Num(4),“d”);

treeMap2.put(new Num(3),“c”);

Set keySet2=treeMap2.keySet();//根据compareTo方法去重

for(Num x:kewww.xiexiebang.comySet2){

System.out.println(x+“=”+treeMap2.get(x));

}

//根据value排序

Map map = new HashMap();

map.put(“d”, 2);

map.put(“c”, 1);

map.put(“b”, 4);

map.put(“a”, 3);

List> infoIds =

new ArrayList>(map.entrySet());

//排序前

for(int i = 0;i < infoIds.size();i++){

String id = infoIds.get(i).toString();

System.out.println(id);

}

//排序

Collections.sort(infoIds, new Comparator>(){

public int compare(Map.Entry o1, Map.Entry o2){

return(o2.getValue()-o1.getValue());

//return(o1.getKey()).toString().compareTo(o2.getKey());

}

});

//排序后

for(int i = 0;i < infoIds.size();i++){

String id = infoIds.get(i).toString();

System.out.println(id);

}

}

}

Map接口总结:在实际使用中,如果更新图时不需要保持图中元素的顺序,就使用HashMap,如果需要保持图中元素的插入顺序或者访问顺序,就使用LinkedHashMap,如果需要使图按照键值排序,就使用TreeMap。

第三篇:ios超全开源框架项目和学习资料汇总

iOS超全开源框架、项目和学习资料汇总

iOS超全开源框架、项目和学习资料汇总(1)UI篇iOS超全开源框架、项目和学习资料汇总(2)动画篇iOS超全开源框架、项目和学习资料汇总(3)网络和Model篇数据库FMDB – sqlite的工具,多线程FMDatabaseQueue实例,FMDB数据库的使用演示和封装工具类。GXDatabaseUtils – 在FMDB基础上的工具。realm-cocoa – Realm是一个真正为移动设备打造的数据库,同时支持Objective-C和Swfit。Realm宣称其相比Sqlite,在移动设备上有着更好的性能表现。Breeze – 用Swift写的一个轻量级的CoreData管理工具,并且还支持iCloud。AlecrimCoreData – Swift,更容易地访问 CoreData 对象封装类库。除了 CRUD,还提供指针定位,强大的排序、筛选,异步数据获取,以及独立线程后台存取数据。CoreStore – Core Data 管理类库。其中事务管理及查询是其比较大的亮点,整套 API 功能完整。Presentation – 重量级好项目 Presentation,它可以方便你制作定制的动画式教程、Release Notes、个性化演讲稿等。CoreValue – Swift 2 版 Core Data 封装库。相比另外两个 SwiftRecord和 CoreStore更轻量。缓存处理YTKKeyValueStore – Key-Value存储工具类,说明。TMCache – TMCache 是 Tumblr 开源的一个基于 key/value 的数据缓存类库,可以用于缓存一些临时数据或者需要频繁加载的数据,比如某些下载的数据或者一些临时处理结果。JLKeychain – 快捷使用keychain存储数据的类,使keychain像NSUserDefaults一样工作。sskeychain – SSKeyChains对苹果安全框架API进行了简单封装,支持对存储在钥匙串中密码、账户进行访问,包括读取、删除和设置。KeychainAccess – 管理Keychain接入的小助手。图像浏览及处理FLAnimatedImage – gif播放处理的工具。CLImageEditor – 超强的图片编辑库,快速帮你实现旋转,防缩,滤镜等等一系列麻烦的事情。VIPhotoView – 用于展示图片的工具类,因为是个 View,所以你可以放在任何地方显示。支持旋转,双击指定位置放大等。MWPhotoBrowser – 一个非常不错的照片浏览器,在github的star接近3000个,解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题。core-image-explorer – Core Image 滤镜处理图片– swift,Core Image 介绍。CoreImageShop – CoreImageShop图片滤镜处理– Mac app that let you create a complete Core Image Filter usable on iOS using SCRecorder。GPUImage – 处理图片效果。RSKImageCropper – 适用于iOS的图片裁剪器,类似Contacts app,可上下左右移动图片选取最合适的区域。WZRecyclePhotoStackView – 删除照片交互–WZRecyclePhotoStackView,就是模拟生活中是删除或保留犹豫不决的情形而产生的。在上滑,下滑的部分,借鉴了TinderSimpleSwipeCards。TimingFunctionEditor – TimingFunctionEditor用swift编写,贝塞尔曲线编辑器,编辑后可以预览或拷贝代码片段直接使用。P.S.该项目采用更简单的依赖管理器 Carthage,而非常用的 CocoaPods。Carthage介绍中文。AAFaceDetection –

AAFaceDetection–swift,简单、实用的面部识别封装库。虽然该技术从 iOS 5 发展,不过真正有趣的应用还不多。PhotoTweaks – 这个库挺赞的,正好是对图像操作的。Concorde – swift, Concorde, 一个可用于下载和解码渐进式 JPEG 的库, 可用来改善应用的用户体验。ZoomTransition – swift, 通过手势操控图片的放大、缩小、旋转等自由变化效果的组件及示例。AFImageHelper – swift,一套针对 UIImage 和 UIImageView 的实用扩展库,功能包含填色和渐变、裁剪、缩放以及具有缓存机制的在线图片获取。PinterestSwift – swift,Pinterest 风格图片缩放、切换示例。KYElegantPhotoGallery – 一个优雅的图片浏览库。SDCycleScrollView – 无限循环自动图片轮播器(一步设置即可使用)。SDPhotoBrowser – 仿新浪动感图片浏览器,非常简单易用的图片浏览器,模仿微博图片浏览器动感效果,综合了图片展示和存储等多项功能。HZPhotoBrowser – 一个类似于新浪微博图片浏览器的框架(支持显示和隐藏动画;支持双击缩放,手势放大缩小;支持图片存储;支持网络加载gif图片,长图滚动浏览;支持横竖屏显示)。PhotoStackView-Swift – PhotoStackView——照片叠放视图,使用说明。MarkingMenu – 基于手势、类似 Autodesk Maya 风格标记菜单及图片渲染。SXPhotoShow – UICollectionViewFlowLayout流水布局 是当下collectionView中常用且普通的布局方式。本代码也写了三种好看的布局,其中LineLayout和流水布局有很大的相同点就直接继承UICollectionViewFlowLayout,然后StackLayout,CircleLayout这两种都是直接继承自最原始的UICollectionViewLayout 布局方案。摄像照相视频音频处理ZFPlayer-基于AVPlayer,支持竖屏、横屏(横屏可锁定屏幕方向),上下滑动调节音量、屏幕亮度,左右滑动调节播放进度ZFPlayer剖析SCRecorder – SCRecorder 短视频录制。VideoPushDemo – 视频剪辑 视频特效制作1 视频特效制作2。LLSimpleCamera – A simple, customizable camera control for iOS,摄像头。EZAudio – EZAudio 是一个 iOS 和 OSX 上简单易用的音频框架,根据音量实时显示波形图,基于Core Audio,适合实时低延迟音频处理,非常直观。中文介绍,官网。ffmpeg – ffmpeg官网,FFmpeg在iOS上完美编译。VCL – VCL官网。kxmovie – 使用ffmpeg的影片播放器,修改说明,修改代码。ijkplayer – B站开源的视频播放器,支持Android和iOS。StreamingKit – StreamingKit流媒体音乐播放器。FreeStreamer – FreeStreamer流媒体音乐播放器,cpu占用非常小。DOUAudioStreamer – DOUAudioStreamer豆瓣的音乐流媒体播放器。fmpro – 电台播放器,支持锁屏歌词,支持基本播放流程,歌词展示,后台锁屏播放和控制以及锁屏后封面+歌词,fmpro_R。IPDFCameraViewController – 支持相机定焦拍摄、滤镜、闪光、实时边框检测以及透视矫正功能,并有简单易用的API。SCRecorder – 酷似 Instagram/Vine 的音频/视频摄像记录器,以 Objective-C 为基础的过滤器框架。你可以做很多如下的操作:记录多个视频录像片段。删除任何你不想要的记录段。可以使用任何视频播放器播放片段。保存的记录可以在序列化的 NSDictionary 中使用。(在 NSUserDefaults 的中操作)添加使用 Core Image 的视频滤波器。可自由选择你需要的 parameters 合并和导出视频。Cool-iOS-Camera – Cool-iOS-Camera。FastttCamera – FastttCamera 快速照相。ICGVideoTrimmer –

ICGVideoTrimmer提供提供视频剪切的视图(类似系统相册中浏览视频时顶部那个条状视图)。左右两个边界选择器还能够自定义。IOS录音和播放功能demo – 比较完整的ios录音和播放功能的实现。CameraManager – 相机管理封装类库。看着极好用的样子—-swift。MCAudioInputQueue – 简易录音类,基于AudioQueue的。DraggableYoutubeFloatingVideo – 展示像类似Youtube移动应用的那种浏览视频的效果,当点击某视频时能够从右下方弹出一个界面,并且该界面能够通过手势,再次收缩在右下方并继续播放。这是通过AutoLayout设计实现。amr – 做即时通讯的音频处理,录音文件是m4a,便于web端的音频播放。FSVoiceBubble – 一个轻量级播放录音音频的气泡:1.支持短时间的音频播放(支持网络音频);2.播放时的声波动画;3.自定义包括声波的颜色,气泡的背景等。KRVideoPlayer – 类似Weico的播放器,支持竖屏模式下全屏播放。其他DateTimeKit – 一个超赞的时间处理的库,Joda-Time!他能帮你轻松处理时区,处理时间加减,计算到期时间等等场景下的问题。SwiftDate – 特别完整、强大的日期时间操作管理类库。它几乎涵盖了已知开源日期类库所有优秀特性。他能帮你轻松处理时区,处理时间加减,计算到期时间等等场景下的问题。iOS私有API – 私有API,绿色 == public,红色 == private,蓝色 == dylib。iOS源代码 – iOS源代码。libfacedetection – C++ 人脸识别 包含正面和多视角人脸检测两个算法.优点:速度快(OpenCV haar+adaboost的2-3倍), 准确度高(FDDB非公开类评测排名第二),能估计人脸角度。Slidden – 一个老外开源的开发自定义键盘的库,利用这个开源库,可以方便的配置键位、颜色以及键位对应的图片。TPKeyboardAvoiding – 用户键盘弹出自动计算高度,进行屏幕滚动操作。CDPMonitorKeyboard – CDPMonitorKeyboard封装,可以解决输入视图(例如textField,textView等)被键盘覆盖问题,并可设置高于键盘多少。自动监听键盘高度 – 自动监听键盘高度,初始界面,输入框在屏幕最下方,当键盘出现时,输入框随即移动到键盘上方。SYKeyboardTextField – SYKeyboardTextField 是一个轻巧,简单,非侵入式的键盘附随输入框!采用Swift编写。BlocksKit – block框架,为 OC 常用类提供了强大的 Block 语法支持,使得编写 OC 代码变得舒适、快速、优雅。KVOController – 在项目中有使用 KVO,那么 KVOController 绝对是个好选择。它是 facebook 开源的一个 KVO 增强框架。appirater – 用于提醒用户给你的 APP 打分的工具。MotionKitr – 为核心运动框架(The Core Motion framework)提供友好的类库封装,以更方便使用三轴陀螺仪和加速感应器特性。Review Monitor – 第一时间自动推送 Apple Store 的用户评论到你的邮件箱或者 Slack,第一时间跟进用户反馈,打造优秀 App 必备工具!类似的有:App annie 的类似功能。WBWebViewConsole – 类似微博iPhone客户端的 “调试选项” 吗?把其中的 “内置浏览器网页调试” 开源在 Github 上了。ios-good-practices – ios-good-practices iOS 开发最佳实践。iOS开发最佳实践 – iOS 开发最佳实践 — 中文。TodayExtensionSharingDefaults –

TodayExtensionSharingDefaults是一个iOS 8 Today扩展示例,可以使用NSUserDefaults与其containing app分享数据。QRCodeReader.swift – QRCodeReader.swift一款简单的 QR 二维码阅读组件及示例,提供前后相机切换功能。QRCatcher – 一个简洁美观的二维码扫描应用,iOS学习:AVFoundation 视频流处理–二维码扫描。Parsimmon – swift,小而美的语言学类库封装工具包。提供分词、标记词性、词形归并、朴素贝页斯分类、决策树等自然语言分析小工具。P.S.英语分词效果好于中文,感兴趣的同学可以针对中文做一些优化开发。参考译文 NSHipster – NSLinguistic?Tagger。Password-keyboard – 随机变换数字位置的密码键盘。模仿银行类应用在付款时输入的随机密码键盘。MKMapView-Extension – 这是关于 MKMapView 写的一个基于swift的扩展,可以扩展 MKMapView 的相关功能,减少复用代码量。SemverKit – 针对符合『语义化版本规范 2.0.0』版本号的解析、比较运算类库。不仅支持 Major, Minor, Patch,还支持 Alpha 和 Beta 预发布版本,以及相应地递增运算扩展。SwiftValidator – 基于规则的输入验证类库。项目良好的面向对象设计思想,使规则的扩展及自定义非常方便。更专业的规则引擎(甚至是基于自然语言的规则配置)解决方案,比如:开源的 Drools,商用的 ILOG 等。Tesseract-OCR-iOS – 有关OCR文字识别项目。iOS-Categories – 收集了许多有助于开发的iOS扩展,各种category。Olla4iOS – 过去积累的一些方便复用的类和方法,还在整理中。DKNightVersion – 用最快的方式给你的应用加上夜间和白天的切换效果。TouchVisualizer – 实用的多点触摸可视化组件。扩展并作用于 UIWindows,结构上提供了简单地针对触摸显示定制,比如触摸点的颜色。RegexKitLite – 用来处理正则表达式。XcodeServerSDK – 非官方 Xcode Server SDK 封装库。P.S.该 SDK 分离自之前推荐的由该作者开发的自动测试框架 Buildasaur。BFKit-Swift – BFKit-Swift 这套工具库可以提高应用开发效率。CKSIncrementalStore – 基于 CloudKit 服务器实现多终端数据同步。SwiftSequence – 简洁、灵活、多变的操作 SequenceType 的类库(基于微框架(μframework)设计思想)。IDNFeedParser – 一个简单易用的Rss解析库。CoreUmeng – 简单:友盟分享封装。openshare – 不用官方SDK,利用社交软件移动客户端(微信/QQ/微博/人人/支付宝)分享/登录/支付。Swifternalization – 一套实用的本地化工具库。使用教程及 API 文档完整。值得收入项目的“轮子”。apous – 一款有趣的 Swift 应用 - 让 Swift 成为脚本语言。Mirror – 通过反射(Refection)实现镜像对象封装库。从而可以更轻松获取(或输出)对象属性名、类型及值变量。Proposer – Proposer 用单个 API 处理 iOS 上的权限请求,以便使用前确认可访问“相册”、“相机”、“麦克风”、“通讯录”或“用户位置”。LocationManager – CoreLocation使用起来还是比较麻烦的,需要授权,判断系统版本等等,所以推荐使用第三方框架LocationManager,使用Block,十分简单!iOS CoreLocation:无论你在哪里,我都要找到你!。pangu.objective-c – 有多种语言实现版本~

Pangu.Objective-C:格式化中英文之间的空格(OC)。objection – 一个轻量级的依赖注入框架Objection。

第四篇:Java开源集成开发工具

Java开发工具点评

Java开发工具点评

在计算机开发语言的历史中,从来没有哪种语言象Java那样受到如此众多厂商的支持,有如此多的开发工具,Java菜鸟们如初入大观园的刘姥姥,看花了眼,不知该何种选择。的确,这些工具各有所长,都没有绝对完美的,就算是老鸟也很难做出选择。在本文中我简要介绍了常见的十五种Java开发工具的特点,管中窥“器”,希望能对大家有所帮助。

一、JDK(Java Development Kit)

SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK)。开发人员和最终用户可以利用这个工具来开发java程序。

JDK简单易学,可以通过任何文本编辑器(如:Windows 记事本、UltrEdit、Editplus、FrontPage以及dreamweaver等)编写Java源文件,然后在DOS状况下利通过javac命令将Java源程序编译成字节码,通过Java命令来执行编译后的Java文件,这能带给DOS时代程序员美好的回忆。Java 初学者一般都采用这种开发工具。

从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。JDK的另一个显著特点是随着Java(J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。

二、Java Workshop

Sun MicroSystems公司于1996年3月26日推出了Java WorkShop 1.0,这是业界出现的第一个供Internet网使用的多平台开发工具,它可以满足各公司开发Internet和Intranet网应用软件的需要。Java WorkShop完全用Java语言编写,是当今市场上销售的第一个完全的Java开发环境,目前Java WorkShop的最性版本是3.0。Java Workshop的特点表现如下:

1、结构易于创建:在创建平台中立的网格结构方面,Java Workshop比其他任何一种Java开发工具都要方便。

2、可视化编程:Java Workshop的可视化编程特性是很基本的。Java Workshop允许程序员重新安排这些操作,甚至可以确定触发操作行为的过滤器。1

Java Workshop产生的模板带有许多注释,这对程序员是很有帮助的。

此外,Java WorkShop支持JDK1.1.3以及JavaBeans组件模型,API和语言特征增加了编译Java应用程序的灵活性。Java WorkShop开发环境由于完全用Java写成,所以可移植性极好,以致于多个平台都能支持,目前Java WorkShop支持Solaris操作环境SPARC及Intel 版)、Windows95、WindowsNT、以及HP/Ux等平台。适合于初学者进行一些简单的Java编程。Java WorkShop的缺点是Java Workshop中的每一个可视化对象都迟早会用到网格布局,这种设计方法是许多人不习惯的;Java Workdshop的调色板是较差的,仅仅能满足绝大部分应用的基本要求。

三、NetBeans 与Sun Java Studio 5

NetBeans是开放源码的Java集成开发环境(IDE),适用于各种客户机和Web应用。Sun Java Studio是Sun公司最新发布的商用全功能Java IDE,支持Solaris、Linux和Windows平台,适于创建和部署2层Java Web应用和n层J2EE应用的企业开发人员使用。

NetBeans是业界第一款支持创新型Java开发的开放源码IDE。开发人员可以利用业界强大的开发工具来构建桌面、Web或移动应用。同时,通过NetBeans和开放的API的模块化结构,第三方能够非常轻松地扩展或集成NetBeans平台。

NetBeans3.5.1主要针对一般Java软件的开发者,而Java One Studio5则主要针对企业做网络服务等应用的开发者。Sun不久还将推出Project Rave,其目标是帮助企业的开发者进行软件开发。NetBeans 3.5.1版本与其他开发工具相比,最大区别在于不仅能够开发各种台式机上的应用,而且可以用来开发网络服务方面的应用,可以开发基于J2ME的移动设备上的应用等。在NetBeans 3.5.1基础上,Sun开发出了Java One Studio5,为用户提供了一个更加先进的企业编程环境。在新的Java One Studio5里有一个应用框架,开发者可以利用这些模块快速开发自己在网络服务方面的各种应用程序。

NetBeans是开放源码的Java集成开发环境(IDE),适用于各种客户机和Web应用。Sun Java Studio是Sun公司最新发布的商用全功能Java IDE,支持Solaris、Linux和Windows平台,适于创建和部署2层Java Web应用和n层J2EE应用的企业开发人员使用。

NetBeans是业界第一款支持创新型Java开发的开放源码IDE。开发人员可以利用业界强大的开发工具来构建桌面、Web或移动应用。同时,通过NetBeans和开放的API的模块化结构,第三方能够非常轻松地扩展或集成NetBeans平台。

NetBeans3.5.1主要针对一般Java软件的开发者,而Java One Studio5则

主要针对企业做网络服务等应用的开发者。Sun不久还将推出Project Rave,其目标是帮助企业的开发者进行软件开发。NetBeans 3.5.1版本与其他开发工具相比,最大区别在于不仅能够开发各种台式机上的应用,而且可以用来开发网络服务方面的应用,可以开发基于J2ME的移动设备上的应用等。在NetBeans 3.5.1基础上,Sun开发出了Java One Studio5,为用户提供了一个更加先进的企业编程环境。在新的Java One Studio5里有一个应用框架,开发者可以利用这些模块快速开发自己在网络服务方面的各种应用程序。

四、Borland 的JBuilder

Jbuilder进入了Java集成开发环境的王国,它满足很多方面的应用,尤其是对于服务器方以及EJB开发者们来说。下面简单介绍一下Jbuilder的特点:

1、Jbuilder支持最新的Java技术,包括Applets、JSP/Servlets、JavaBean以及EJB(Enterprise JavaBeans)的应用。

2、用户可以自动地生成基于后端数据库表的EJB Java类,Jbuilder同时还简化了EJB的自动部署功能.此外它还支持CORBA,相应的向导程序有助于用户全面地管理IDL(分布应用程序所必需的接口定义语言Interface Definition Language)和控制远程对象。

3、Jbuilder支持各种应用服务器。Jbuilder与Inprise Application Server紧密集成,同时支持WebLogic Server,支持EJB 1.1和EJB 2.0,可以快速开发J2EE的电子商务应用。

4、Jbuilder能用Servlet和JSP开发和调试动态Web 应用。

5、利用Jbuilder可创建(没有专有代码和标记)纯Java2应用。由于Jbuilder是用纯Java语言编写的,其代码不含任何专属代码和标记,它支持最新的Java标准。

6、Jbuilder拥有专业化的图形调试介面,支持远程调试和多线程调试,调试器支持各种JDK版本,包括J2ME/J2SE/J2EE。

JBuilder环境开发程序方便,它是纯的Java 开发环境,适合企业的J2EE开发;缺点是往往一开始人们难于把握整个程序各部分之间的关系,对机器的硬件要求较高,比较吃内存,这时运行速度显得较慢。

五、Oracle 的JDeveloper

Oracle9i JDeveloper(定为9.0版,最新为10g)为构建具有J2EE功能,XML和Web services的复杂的,多层的Java应用程序提供了一个完全集成的开发环境。它为运用Oracle9i数据库和应用服务器的开发人员提供特殊的功能和

增强性能,除此以外,它也有资格成为用于多种用途Java开发的一个强大的工具。

六、Oracle9i JDeveloper的主要特点如下:

1、具有UML(Unified Modeling Language,一体化建模语言)建模功能。可以将业务对象及e-business应用模型化。

2、配备有高速Java调试器(Debuger)、内置Profiling工具、提高代码质量的工具“CodeCoach”等。

3、支持SOAP(Simple Object Access Protocol)“简单对象访问协议”、UDDI(Universal Description, Discovery and Integration)“统一描述、发现和集成协议”、WSDL(Web Services Description Language)“WEB服务描述语言”等Web服务标准。JDeveloper 不仅仅是很好的 Java 编程工具,而且是 Oracle Web 服务的延伸,支持 Apache SOAP,以及 9iAS,可扩充的环境和 XML 和 WSDL 语言紧密相关。Oracle9i Jdeveloper完全利用Java编写,能够与以前的Oracle服务器软件以及其他厂商支持J2EE的应用服务器产品相兼容,而且在设计时着重针对Oracle9i,能够无缝化跨平台之间的应用开发,提供了业界第一个完整的、集成了J2EE和XML的开发环境,允许开发者快速开发可以通过Web、无线设备及语音界面访问的Web服务和交易应用,以往只能通过将传统Java编程技巧与最新模块化方式结合到一个单一集成的开发环境中之后才能完成J2EE应用开发生命周期管理的事实,从根本上得到改变。缺点就是对于初学者来说,较复杂,也比较难。

第五篇:java部分数据结构总结

package datastructtest;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.LinkedList;

import java.util.Scanner;

import javax.swing.JFrame;

public class Testbase {

public static void main(String[] args)throws IOException{

//100之内被3或7整除的数的个数

//int m=0,n=0;

//for(int i=0;i<100;i++){

//if(i%3==0){

//m++;

//}

//if(i%7==0){

//n++;

//}

//}

//System.out.println(“m=”+m+“ ;”);

//System.out.println(“n=”+n+“ ;”);

//1~100之间的整数累加和,并显示每个整数和当前累加和的对应关系 //int sum=0;

//for(int i=1;i<=100;i++){

//

//System.out.print(“i=”+i+“,sum=”+sum);

//sum+=i;

//System.out.println(“;i+sum=”+sum);

//}

//计算30的阶乘

//int m=jiecheng(30);

//System.out.println(m);

//直接插入排序

//int[] test={64,5,7,89,6,24};

//int n=test.length;

//insertSort(test);

//for(int i=0;i

//System.out.print(test[i]+“,”);

//}

//希尔排序

//int[] test={65,34,25,87,12,38,56,46,14,77,92,33};//int n=test.length;

//int d[]={6,3,1};//每次循环用到的增量值

//int numOfD=d.length;//共进行几次循环

//shellSort(test,d,numOfD);

//for(int i=0;i

//System.out.print(test[i]+“,”);

// }

//直接选择排序

//int[] test={65,34,25,87,12,38,56,46,14,77,92,33};

//int n=test.length;

//

//selectSort(test);

//for(int i=0;i

//System.out.print(test[i]+“,”);

// }

////字符串逆转

//char[]a={'a','f','g','h','j'};

//char[]b=reverse1(a);

//for(int i=0;i

//System.out.print(b[i]+“,”);

//}

//Scanner类的应用和split的使用

//System.out.println(“请输入带逗号的字符:”);

//Scanner sc=new Scanner(System.in);

//

//while(sc.hasNext()){

//StringBuffer str=new StringBuffer();

//str=str.append(sc.next());

////System.out.println(str);

//String st=str.toString();

//String[] a=st.split(“,”);

//System.out.println(“字符串被逗号分割之后:”);

//for(int i=0;i

//System.out.println(a[i]);

//}

//}

//写文件和读文件复制文件aa到bb

//FileReader filein=new FileReader(new File(“d://aa.txt”));//此句会产生异常

//FileWriter fileout=new FileWriter(new File(“d://bb.txt”));//int c;

//while((c=filein.read())!=-1){

//fileout.write(c);

//}

//filein.close();

//fileout.close();

//

}

private static int jiecheng(int n){

if(n==1)

return 1;

else

return n*jiecheng(n-1);

}

//栈

private LinkedList list=new LinkedList();

public void push(Object v){

list.addFirst(v);

}

public Object top(){

return list.getFirst();

}

public Object pop(){

return list.removeFirst();

}

//直接插入排序

public static void insertSort(int[] a){

int i,j,temp;

int n=a.length;

for(i=0;i

temp=a[i+1];

j=i;

while(j>-1&&temp<=a[j]){

a[j+1]=a[j];

j--;

}

a[j+1]=temp;

}

//for(i=0;i

//temp=a[i+1];

//// j=i;

//while(i>-1&&temp<=a[i]){

//a[i+1]=a[i];

//i--;

//}

//a[i+1]=temp;

//}

}

//希尔排序

public static void shellSort(int[]a,int[]d,int numOfD){

int i,j,k,m,span;

int temp;

int n=a.length;

for(m=0;m

span=d[m];//取本次的增量值

for(k=0;k

for(i=k;i

temp=a[i+span];

j=i;

while(j>-1&&temp<=a[j]){

a[j+span]=a[j];

j=j-span;

}

a[j+span]=temp;

}

}

}

}

//直接选择排序

public static void selectSort(int[]a){

int i,j,small;

int temp;

int n=a.length;

for(i=0;i

small=i;//设第i个数据元素最小

for(j=i+1;j

if(a[j]

if(small!=i){

temp=a[small];

for(j=small;j>i;j--)//把该区段尚未排序元素依次后移

a[j]=a[j-1];

a[i]=temp;//插入找出的最小元素

}

}

}

public static char[] reverse1(char[]a){

int n=a.length;

char[]b=new char[n];

for(int i=0;i

b[n-i-1]=a[i];

}

return b;

}

}

下载总结Java部分的框架和开源项目(精选五篇)word格式文档
下载总结Java部分的框架和开源项目(精选五篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    java的SSH框架总结(范文)

    对于java中SSH框架的理解 SSH 是指 Struts+ spring+ hibernate 的一个集成框架,这是一种比较流行的java web应用程序开源框架。Struts Struts是一个基于Sun J2EE平台的MVC框......

    Java集合框架使用总结

    前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看Java API文档。 一、概述 数据结构对程......

    java项目总结(本站推荐)

    项目总结 这是一次比较完整的团队合作项目,它要求团队各成员对系统的主体设计搭成一定的共识,这包括数据库设计,需求分析,以及其它一些细节,因此在编码之前的准备工作一定要充分......

    java项目心得总结

    java项目心得总结 篇一:Java应用项目开发总结报告1、In Action (1)根据添加信息()来考虑表中的字段,进行建表。使用PD画出ER图。要注意字段的数据类型的确定以及建表要满足三范式,......

    java web框架简介

    Java Web框架简介 Web框架是人们在使用某种语言编写Web应用服务端时关于架构的最佳实践。 有些Web框架是从实际的Web项目抽取出来的,也就是说,做一个具体的应用项目时,采取的架......

    项目工程部总结框架

    项目工程部总结框架 一、上半年总结 (四)积极推进项目工程建设 1、上半年项目工程进展情况: 勾陈路北段道路工程上半年完成了扫尾工作,同时补办了施工许可证,目前该工程正抓紧在......

    OA管理之JAVA开源:WebWork五篇

    万户网络技术有限公司()OA管理之JAVA开源:WebWorkWebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,现在的Web......

    开源工作流框架及平台集成分析报告(范文)

    开源工作流框架及平台集成分析报告 目 录 Java主要开源工作流列表 .......................................................................................................