漫游java开发技术

huzh_68 贡献于2011-09-13

作者 wanghetommy@163.com  创建于2011-03-14 03:14:00   修改者wanghe  修改于2011-06-10 16:37:00字数11066

文档摘要: 此文档旨在内部技术交流使用、作为topic的一个大纲、这期的topic对整个java开发所用到的技术做一个总结、并对刚入行的同学起到一个引导作用。本文介绍的主流技术也并不全面、只是目前常用到的一些技术而已。对于整个优秀的Java项目来说、只是其中很小的一部分。但是无论我们将来做Java的哪个方向、一切都要从头开始。
关键词:

北京伊特英才信息技术有限公司-内部培训系类 伊特英才内部培训-漫游Java开发技术 Java技术交流与提高 通过内部的交流与沟通、共享开发经验,共同提高Java技术 wanghetommy@163.com 2011-6-11 目 录 announcement 4 About this document 5 Java主流技术汇总 6 1) 主流后台框架 6 Spring 6 Struts2 6 Hibernate 6 Ibatis 6 jBpm 7 2) 主流前台框架 8 JQuery 8 ExtJs 8 DoJo 8 Dwr 8 3) 其他常用开源项目 9 万能工具箱apache commons 9 解析PDF-iText 16 1) What is iText®? 16 流行报表-JFreeChart 18 构建工程/Build code 19 北京伊特英才信息技术有限公司-内部培训系类 代码管理 20 4) 可供学习的资源 21 教程版本 说明 作者 0.9 伊特英才内部培训系列-Java技术总揽 wanghe 北京伊特英才信息技术有限公司-内部培训系类 announcement 此文档为北京伊特英才信息技术有限公司内部培训系专用、请勿外传. 北京伊特英才信息技术有限公司-内部培训系类 About this document 此文档旨在内部技术交流使用、作为topic的一个大纲、这期的topic对整个java开发所用到的技术做一个总结、并对刚入行的同学起到一个引导作用。本文介绍的主流技术也并不全面、只是目前常用到的一些技术而已。对于整个优秀的Java项目来说、只是其中很小的一部分。但是无论我们将来做Java的哪个方向、一切都要从头开始。 北京伊特英才信息技术有限公司-内部培训系类 Java主流技术汇总 1) 主流后台框架 Spring Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 Struts2 Struts2是一个web应用框架。它不是一个Struts的新的发布版本,而是一个全新的框架。Struts2 是第二代基于Model-View-Controller (MVC)模型的web应用框架。 Struts2是java企业级web应用的可扩展性的框架。 它是WebWork和Struts社区合并后的产物。 这一版本的Struts2声称,Struts2会接近于原先版本Struts,并且会更容易使用。Struts2没有继承struts 1的血统,而是继承了webwork 的血统。 Struts2 和Struts的构建是社区开发模式的最好实践和证明。事实上,第一版本的Struts设计的第一目标就是使MVC模式应用于web程序设计。 在过去10年,Struts在更好的web应用方面所做的工作是值得肯定的。在某些方面,Struts社区注意到这一框架的局限性,但在这个活跃的社区里,自动识别弱点和顽强不屈的精神,使得克服这些弱点是不困难的。 在深入学习MVC运行模式并同时引入一些新的建筑学方面的设计理念后,新的Struts2框架结构更清晰,使用更灵活方便。 这一新的结构包含应用逻辑的横切面拦截器,基于注释的配置以减少和去除XML形式的配置文件,功能强大的表达式语言,支持可更改、可重用UI组件的基于微MVC的标签库。Struts2 有两方面的技术优势,一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The Java Servlet API 揭示了Java Servlet只是Java API的一个很小子集,这样我们可以在业务逻辑部分使用功能强大的Java 语言进行程序设计。 Hibernate Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用 北京伊特英才信息技术有限公司-内部培训系类 Ibatis iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。 相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。 jBpm JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,它使用要遵循 LGPL(GNU Lesser General Public License )和EULA(JBoss End User License Agreement)协议。 北京伊特英才信息技术有限公司-内部培训系类 2) 主流前台框架 JQuery 我的最爱、可以利用它解决任何(起码目前遇到的)前台相关的问题。 ExtJs ExtJS是一种主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。 DoJo Dojo能够让你更容易使Web页面具有动态能力,或者在任何能够稳定支持JavaScript语言的环境中发挥作用。 Dwr DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。 北京伊特英才信息技术有限公司-内部培训系类 3) 其他常用开源项目 万能工具箱apache commons 简介 Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,相信大家或多或少的都会用到, 官方发布三种组件类型: The Commons Proper - 可复用的Java组件. The Commons Sandbox - 开发中的组件. The Commons Dormant - 目前不活跃的组件. Commons Proper中是专注于创建和维护可复用的Java组件.本文主要针对The Commons Proper 中经常会用到的组件进行讲解分析. Proper组件列表 组件名称 应用描述 Attributes (Runtime API to metadata attributes such as doclet tags.) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 (Easy-to-use wrappers around the Java reflection and introspection APIs.) Betwixt Betwixt提供将 JavaBean 映射至 XML 文档,以及相反映射的服务. (Services for mapping JavaBeans to XML documents, and vice versa.) Chain 提供实现组织复杂的处理流程的“责任链模式”. (Chain of Responsibility pattern implemention.) CLI 提供针对命令行参数,选项,选项组,强制选项等的简单API. (Command Line arguments parser.) Codec Codec 包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder. (General encoding/decoding algorithms (for example phonetic, base64, URL).) Collections Commons-Collections 提供一个类包来扩展和增加标准的 Java Collection框架 (Extends or augments the Java Collections Framework.) 北京伊特英才信息技术有限公司-内部培训系类 Configuration Commons-Configuration 工具对各种各式的配置和参考文件提供读取帮助. (Reading of configuration/preferences files in various formats.) Compress Compress提供了操作tar, zip ,bzip2文件的接口 (Defines an API for working with tar, zip and bzip2 files.) Daemon 一种 unix-daemon-like java 代码的替代机制 (Alternative invocation mechanism for unix-daemon-like java code.) DBCP Commons-DBCP 提供数据库连接池服务 (Database connection pooling services.) DbUtils DbUtils 是一个 JDBC helper 类库,完成数据库任务的简单的资源清除代码. (JDBC helper library.) Digester Commons-Digester 是一个 XML-Java对象的映射工具,用于解析 XML配置文件. (XML-to-Java-object mapping utility.) Discovery Commons-Discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称. (Tools for locating resources by mapping service/reference names to resource names.) EL Commons-EL 提供在JSP2.0规范中定义的EL表达式的解释器. (Interpreter for the Expression Language defined by the JSP 2.0 specification.) Email 发送email的库 (Library for sending e-mail from Java. ) Exec 此类库提供了在不同的操作系统下,运行子进程的统一方式. (API for dealing with external process execution and environment management in Java.) FileUpload FileUpload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 (File upload capability for your servlets and web applications.) HttpClient Commons-HttpClient 提供了可以工作于HTTP协议客户端的一个框架. IO IO 是一个 I/O 工具集 (Collection of I/O utilities.) JCI Java Compiler Interface Jelly Jelly是一个基于 XML 的脚本和处理引擎。 Jelly 借鉴了 JSP 定指标签,Velocity, Cocoon和Xdoclet中的脚本引擎的许多优点。Jelly 可以用在命令行, Ant 或者 Servlet之中。 (XML based scripting and processing engine.) Jexl Jexl是一个表达式语言,通过借鉴来自于Velocity的经验扩展了JSTL定义的表达式语言. (Expression language which extends the Expression Language of the JSTL.) JXPath Commons-JXPath 提供了使用Xpath语法操纵符合Java类命名规范的 JavaBeans 北京伊特英才信息技术有限公司-内部培训系类 的工具。也支持 maps, DOM 和其他对象模型. (Utilities for manipulating Java Beans using the XPath syntax.) Lang Commons-Lang 提供了许多许多通用的工具类集,提供了一些java.lang中类的扩展功能 (Provides extra functionality for classes in java.lang.) Launcher Launcher 组件是一个交叉平台的Java 应用载入器。 Commons-launcher 消除了需要批处理或者Shell脚本来载入Java 类。.原始的 Java 类来自于Jakarta Tomcat 4.0 项目 (Cross platform Java application launcher.) Logging Commons-Logging 是一个各种 logging API实现的包裹类. (Wrapper around a variety of logging API implementations.) Math Math 是一个轻量的,自包含的数学和统计组件,解决了许多非常通用但没有及时出现在Java标准语言中的实践问题 (Lightweight, self-contained mathematics and statistics components.) Modeler Commons-Modeler 提供了建模兼容JMX规范的 Mbean的机制. (Mechanisms to create Model MBeans compatible with JMX specification.) Net Net 是一个网络工具集,基于 NetComponents 代码,包括 FTP 客户端等等。 (Collection of network utilities and protocol implementations.) Pool Commons-Pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实现. (Generic object pooling component.) Primitives Commons-Primitives提供了一个更小,更快和更易使用的对Java基本类型的支持。 (Smaller, faster and easier to work with types supporting Java primitive types.) Proxy 创建动态代理的库 (Library for creating dynamic proxies.) Sanselan 处理图片的库 (A pure-Java image library.) SCXML (An implementation of the State Chart XML specification aimed at creating and maintaining a Java SCXML engine. It is capable of executing a state machine defined using a SCXML document, and abstracts out the environment interfaces.) Transaction (Implementations for multi level locks, transactional collections and transactional file access.) Validator The commons-validator提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则。支持校验规则的和错误消息的国际化。 (Framework to define validators and validation rules in an xml file.) VFS (Virtual File System component for treating files, FTP, SMB, ZIP and such like as a single logical file system.) 北京伊特英才信息技术有限公司-内部培训系类 分类 组件列表 Web-related FileUpload and Net XML-related Betwixt, Digester, Jelly, and JXPath Utilities BeanUtils, Configuration, Logging, DBCP, Pool, and Validator Packages Codec and Modeler Trivial CLI, Discovery, Lang, and Collections visit Apache commons site: http://commons.apache.org/ 介绍其中一个--BeanUtils 组件描述 大多数开发者通常会遵从JavaBeans的getters和setters的命名规范去创建 java类.可以用统一的getXX,setXX去直接访问到这些方法.但是,如果我们碰到需要动态的去访问一个java对象的属性(由于属性未知,所以不能知道调用哪个getters或者setters方法),使用场景如下: · 构建脚本语言访问java对象(如:BSF). · 构建模板语言处理web外观或者相似的用处(如:JSP or Velocity). · 构建在JSP or XSP中可定制的标签库(如:Jakarta Taglibs, Struts, Cocoon). · 基于XML配置资源 (如 Ant build scripts, web application deployment descriptors, Tomcat's server.xml file). Java语言提供反射和自省API(可查看java.lang.reflect和java.beans 包).但是这些API很难去理解和使用.而BeanUtils组件提供了简单易用的wrappers来实现了这样的功能。 目前最新版本: 1.8.3 (大意译自官方主页,如需看原文,请访问) Visit site: http://commons.apache.org/beanutils/ 组件总揽 Interface Summary 北京伊特英才信息技术有限公司-内部培训系类 Converter 该接口定义了如下方法: public Object convert(Class type, Object value); 只要实现了这个Converter接口并注册到ConvertUtils类即可被我们的BeanUtils包所使用,它的主要目的是提供将给定的Object实例转换为目标类型的算法。我们可以在beanutils.converters包中找到相当多的已经实现的转换器。 DynaBean 该接口定义的是一个Java对象,支持属性类型、名称和值都是可以动态改变的。 DynaClass 该接口模拟了java.lang.Class的功能。定义的是针对实现了DynaBean接口的类的java.lang.Class对象。 MutableDynaClass 该接口是对DynaClass专门的扩展,使得动态bean的属性可以动态增加或删除。 Class Summary BasicDynaBean DynaBean接口的最精简的实现类 BasicDynaClass DynaClass接口的最精简实现类 BeanComparator 此比较器可以比较两个bean指定的bean属性 BeanMap 实现了java.util. Map接口,利用自省存取JavaBean的属性 BeanMap.Entry BeanMap的映射视图 BeanPredicate Predicate implementation that applies the given Predicate to the result of calling the given property getter. BeanPropertyValueChangeClosure Closure that sets a property. BeanPropertyValueEqualsPredicate Predicate that evaluates a property value against a specified value. BeanToPropertyValueTransformer Transformer that outputs a property value. BeanUtils 提供通过反射机制存取JavaBeans属性的工具/静态方法 BeanUtilsBean BeanUtils类的实例化实现,区别于BeanUtils的静态方法方式,使得自定义的配置得以保持 BeanUtilsBean2 ConstructorUtils 专注于构造方法的工具. 仿照MethodUtils. 北京伊特英才信息技术有限公司-内部培训系类 ContextClassLoaderLocal 针对每个classloader的唯一标识 ConvertingWrapDynaBean 包含了标准JavaBean实例的DynaBean实现,使得我们可以使用DynaBean的API来访问起属性,同时提供设定属性时的类型转换,继承自并区别于WrapDynaBea ConvertUtils 提供工具/静态方法,用于将String对象及其数组转换为指定的类型的对象及其数组。 ConvertUtilsBean ConvertUtils类的实例化实现,区别于ConvertUtils的静态方法方式,使得自定义的配置得以保持 ConvertUtilsBean2 ConvertUtilsBean implementation that delegates convert() methods to the new ConvertUtilsBean.convert(Object, Class) method. DynaBeanMapDecorator Decorates a DynaBean to provide Map behaviour. DynaProperty 用于描述DynaBean的属性 LazyDynaList LazyDynaMap 为Map实例提供一个轻量级的DynaBean包装 MappedPropertyDescriptor 用于描述映射的属性 MethodUtils 包含了针对一般意义上的方法而非特定属性的反射工具/静态方法 PropertyUtils 提供利用Java反射API调用具体对象的getter和setter的工具/静态方法 PropertyUtilsBean PropertyUtils类的实例化实现,区别于PropertyUtils的静态方法方式,使得自定义的配置得以保持 ResultSetDynaClass 包装java.sql.ResultSet中的java.sql.Row实例的DynaBean所对应的DynaClass实现 ResultSetIterator 针对ResultSetDynaClass的java.util.Iterator实现 RowSetDynaClass DynaClass的一种实现,用于在内存中创建一组表示SQL查询结果的DynaBeans,区别于ResultSetDynaClass,它不需要保持ResultSet打开 WrapDynaBean DynaBean的一种实现,包含一个标准的JavaBean实例,以便我们可以使用DynaBean的API去访问它的属性,区别于ConvertingWrapDynaBean,它不做专门的类型转换 WrapDynaClass DynaClass的一种实现,针对那些包装标准JavaBean实例的DynaBeans Exception Summary 北京伊特英才信息技术有限公司-内部培训系类 BeanAccessLanguageException Thrown to indicate that the Bean Access Language cannot execute query against given bean. ConversionException 当调用Converter.convert()方法失败时抛出异常 NestedNullException Thrown to indicate that the Bean Access Language cannot execute query against given bean since a nested bean referenced is null. 北京伊特英才信息技术有限公司-内部培训系类 解析PDF-iText 简介 1) What is iText®? 如果你在需要创建PDF的一系列操作,你将使用像Adobe Acrobat 或者Adobe InDesign这样的桌面图形设计工具去手动或者半自动的创建一个文档。 另一种情况, PDF文档是利用软件应用提供的API自动创建的、不需要或者最小化地依赖人工介入。有一些场景是文档先被创建成一些其他的格式、例如:html、xml,然后再转换成PDF.这些不同方式的需求可能需要不同的软件工具。类似的情况发生在操作PDF,你可能用Adobe Acrobat更新PDF,但是也有工具可以使你将数据库形式的数据去增加内容。 iText 就是一个专注于自动化方面的工具。 iText是一个PDF的类库 iText是提供了一组API,允许开发人员做一下的事情:(不仅仅局限以下、还有更多可以做的) · 从xml或者数据库生成文档或者报表。 · 制作绘图和书籍,开拓很多PDF中的交互特性 · 在现有的PDF中增加书签,页码,水印,和其他特性 · 切分或者整合存在的PDF文件 · 填写互动表格 · 在WEB浏览器中提供动态生成和操作PDF的服务 iText 不是最终用户的工具.你必须将iText搭建在你自己的应用中,这样你可以进行PDF的一系列操作了. 功能预览 下图罗列出了你可以用iText进行的操作: 北京伊特英才信息技术有限公司-内部培训系类 iText支持的功能 iText部分支持的功能 iText主要的作用是创建和操作PDF文档 当前最新版本:5.1.0 项目官方网站:http://itextpdf.com/ 下载地址: http://cdnetworks-kr-2.dl.sourceforge.net/project/itext/iText/iText5.1.0/itext-5.1.0.zip 北京伊特英才信息技术有限公司-内部培训系类 流行报表-JFreeChart 简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。 北京伊特英才信息技术有限公司-内部培训系类 构建工程/Build code Ant Ant是一种基于Java的build工具 Maven Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 北京伊特英才信息技术有限公司-内部培训系类 代码管理 Cvs CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。 Svn svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。 git Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。 北京伊特英才信息技术有限公司-内部培训系类 4) 可供学习的资源 开源项目:http://www.open-open.com ITeye社区: http://www.iteye.com 前沿知识: http://www.infoq.com/cn/ 搜索Jar:http://www.findjar.com/ 国外一些优秀Java网站: javaworld :http://www.javaworld.com/ apache :http://www.apache.org/ 服务器端技术:http://www.theserverside.com/

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享文档获得金币 ] 3 人已下载

下载文档