
java
文章平均质量分 83
phantomhu
迷茫
展开
-
使用 Acegi 保护 Java 应用程序,第 1 部分: 架构概览和安全过滤器
Acegi Security System 是一种功能强大并易于使用的替代性方案,使您不必再为 Java 企业应用程序编写大量的安全代码。虽然它专门针对使用 Spring 框架编写的应用程序,但是任何类型的 Java 应用程序都没有理由不去使用 Acegi。这份共分三部分的系列文章详细介绍了 Acegi,并展示了如何使用它保护简单的企业应用程序以及更复杂的应用程序。本系列首先介绍企业应用程序中转载 2008-01-28 09:26:00 · 421 阅读 · 0 评论 -
使用 Acegi 保护 Java 应用程序,第 2 部分: 使用 LDAP 目录服务器
这期共分三部分的系列文章介绍了如何使用 Acegi 安全系统保护 Java 企业应用程序。在 本系列第一篇文章 中,我介绍了 Acegi 并解释了如何使用安全过滤器实现一个简单的基于 URL 的安全系统。在第二篇文章中,我将讨论 Acegi 的更加高级的应用,首先我将编写一个访问控制策略并将其存储在 ApacheDS 中,ApacheDS 是一个开源的 LDAP 目录服务器。我还将展示配置 Ace转载 2008-01-28 13:31:00 · 524 阅读 · 0 评论 -
使用 Acegi 保护 Java 应用程序,第 3 部分: 实现对 Java 对象的访问控制
这期共分三部分的系列文章介绍了如何使用 Acegi 安全系统保护 Java 企业应用程序。系列文章的 第 1 部分 简单介绍了 Acegi 并解释如何使用其内置的安全过滤器实现一个简单的、基于 URL 的安全系统。第 2 部分 介绍了如何编写访问控制策略并将其保存到一个 LDAP 目录服务器,以及如何配置 Acegi 来与目录服务器进行交互,从而实现访问控制策略。第 3 部分(也是本系列的最后一篇转载 2008-01-29 09:34:00 · 415 阅读 · 0 评论 -
用 JSEclipse 构建 JavaScript 应用程序(1)
准备工作本教程将介绍两个工具并说明如何创建一个全新的物种,那么让我们先做一些准备工作。需要完成的任务本教程将用大量篇幅描述不断进化的 “物种” 的出现 —— 在 Web 页面中到处移动,寻找同类进行繁殖并创造出具有类似属性的新生物的元素 —— 或者在找到同类之前死去。本教程的学习时间只有一个小时,因此生物将十分简单。这些生物是具有各种尺寸、颜色和速度的正方形,并且它们遇到另一转载 2008-01-29 15:26:00 · 1013 阅读 · 0 评论 -
Windows 平台上长路径名文件的解决方法
Windows 对长路径名文件的限制众所周知,微软的文件系统经历了 fat->fat32->NTFS 的技术变革。且不论安全和文件组织方式上的革新,单就文件名而言,已经从古老的 DOS 8.3 文件格式(仅支持最长 8 个字符的文件名和 3 个字符的后缀名)转变为可以支持长达 255 个字符的文件名。而对于路径长度,NTFS 也已经支持长达 32768 个字符的路径名。然而,Windows转载 2008-02-02 13:54:00 · 772 阅读 · 0 评论 -
让开发自动化: 使用自动化加速部署,利用自动化加速软件在不同环境间的迁移
您是否曾注意到,很多团队总是在将软件从开发环境迁移到生产环境之后才想到改善?我曾经遇到过一些团队,他们的开发周期长达几个星期甚至几个月不等 — 我认为这是浪费时间。为什么不像自动化构建一样,通过自动化大幅度减少花费在部署配置问题上的时间,并因此提升基础架构的效率? 仔细想一想:软件部署流程中的低效率意味着将推迟应用程序到用户的交付。更糟糕的是,一些人认为,对于大多数项目,部署类似于撕掉创可贴(转载 2008-02-02 10:35:00 · 452 阅读 · 0 评论 -
面向 Java 开发人员的 Scala 指南: 面向对象的函数编程
Java 编程和面向对象是许多程序员的 “初恋”,我们对待它就像对待 Bindi 一样尊重和完全的爱慕。一些开发人员会告诉您 Java 将他们从内存管理和 C++ 的炼狱中解救出来了。其他一些人会告诉您 Java 编程使他们摆脱了对过程性编程的绝望。甚至对于一些开发人员来说,Java 代码中的面向对象编程就是 “他们做事情的方式”。(嘿嘿,如果这对我爸爸,以及爷爷有用该多好!)然而,时间最终会转载 2008-02-05 09:52:00 · 551 阅读 · 0 评论 -
多角度看 Java 中的泛型
引言很多 Java 程序员都使用过集合(Collection),集合中元素的类型是多种多样的,例如,有些集合中的元素是 Byte 类型的,而有些则可能是 String 类型的,等等。Java 语言之所以支持这么多种类的集合,是因为它允许程序员构建一个元素类型为 Object 的 Collection,所以其中的元素可以是任何类型。当使用 Collection 时,我们经常要做的一件事情就是转载 2008-02-13 15:39:00 · 417 阅读 · 0 评论 -
使用 JavaFX Script 创建富应用程序
JavaFX Script 是为了便于创建富客户机和 Internet 应用程序而设计的脚本编制语言。该语言具有高度可移植性,可以在任何支持 Java 技术的系统上运行,并且无需本地安装。它使用底层 Java 技术,使您可以轻松创建任何规模或复杂度的 GUI。本文讲解 JavaFX Script 语言的基础,并通过一个示例应用程序介绍一些 GUI 组件。为了从本文中获益,您应该对 Java 编转载 2008-03-06 14:19:00 · 409 阅读 · 0 评论 -
面向 Java 开发人员的 db4o 指南: 超越简单对象,使用 db4o 创建、更新与删除结构化对象
一段时间以来,在 面向 Java 开发人员的 db4o 指南 中,我查看了各种使用 db4o 存储 Java 对象的方法,这些方法都不依赖映射文件。使用原生对象数据库的其中一个优点就是可以避免对象关系映射(也许这不是重点),但我曾用于阐述这种优点的对象模型过于简单,绝大多数企业系统要求创建并操作相当复杂的对象,也称为结构化对象,因此本文将讨论结构化对象的创建。结构化对象 基本上可以看成是一个引转载 2008-03-12 13:27:00 · 559 阅读 · 0 评论 -
登记式单例类
登记式单例类是GoF 为了克服饿汉式单例类及懒汉式单例类均不可继承的缺点而设计的。只是它的子类实例化的方式只能是懒汉式的, 这是无法改变的。java 代码import java.util.HashMap; public class RegSingleton ...{ static private HashMap m_registry = new HashMap()原创 2007-12-21 11:06:00 · 759 阅读 · 1 评论 -
pureQuery:IBM 最新的 Java 数据库应用编程范例
简介关系数据访问的对象化大多数业务都建立在信息管理系统的基础上,而这些信息管理系统主要的底层基础设施又是基于存储在一个或多个关系数据库中的数据。这些系统由一些软件程序组成,这些软件程序专门用于信息处理,并且是以 Java 之类的托管语言实现的。 作为一种以封装、继承和多态为特征、易于使用、基于面向对象的语言,Java 一方面用于实现信息处理程序的计算和逻辑方面,另一方面则用于访转载 2007-12-26 15:04:00 · 675 阅读 · 0 评论 -
Java SE 6 新特性: XML API 与 Web 服务
2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升。与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在 脚本,XML转载 2007-12-24 14:39:00 · 429 阅读 · 0 评论 -
使用 javax.tools 创建动态应用程序
简介 javax.tools 包是一种添加到 Java SE 6 的标准 API,可以实现 Java 源代码编译,使您能够添加动态功能来扩展静态应用程序。本文将探查 javax.tools 包中提供的主要类,并演示如何使用它们创建一个 façade,以从 Java String、StringBuffer 或其他 CharSequence 中编译 Java 源代码转载 2007-12-25 09:42:00 · 922 阅读 · 0 评论 -
Java中的语句、分支和路径覆盖测试
大多数开发人员都能理解这一过程,也赞同其价值主张,他们通常追求100%的覆盖率。尽管100%的覆盖率是个极好的目标,但类型不当的100%覆盖率依然会留下未知的问题。典型的软件开发是根据要测试的语句或分支的数量来度量覆盖率的。即便有着100%的语句或分支覆盖率,代码逻辑依然可能存在严重的逻辑bug,只能为开发人员和管理员带来虚假的安全感。 为何100%的覆盖率还不够?这是因为语句和分支覆盖率无转载 2008-01-02 14:52:00 · 796 阅读 · 0 评论 -
使用 eJFace 可以快速而高效地在手持设备上开发应用程序
eJFace 包含一些库,使用这些库可以构建应用程序而无需进行复杂的 eSWT 编程。它将提供强大的 API 并引入 Model-View-Controller (MVC) 架构,用于轻松地实现和维护嵌入式应用程序。在本文中,我们将说明如何用 eJFace 开发应用程序,并比较 eJFace 与 JFace。本文将帮助熟悉 JFace 的开发人员了解 eJFace 与 JFace 之间的差异,并减转载 2008-01-02 15:15:00 · 452 阅读 · 0 评论 -
学习如何使用 Java 7 中的 fork-join 框架实现细粒度并行性
硬件趋势驱动编程语言语言、库和框架形成了我们编写程序的方式。Alonzo Church 早在 1934 年就曾表明,所有已知的计算性框架对于它们所能表示的程序集都是等价的,程序员实际编写的程序集是由特定语言形成的,而编程模型(由语言、库和框架驱动)可以简化这些语言的表达。 另一方面,一个时代的主流硬件平台形成了我们创建语言、库和框架的方法。Java 语言从一开始就能够支持线程和并发性;该语转载 2008-01-03 11:09:00 · 472 阅读 · 0 评论 -
JDK 7 中的 Fork/Join 模式
介绍随着多核芯片逐渐成为主流,大多数软件开发人员不可避免地需要了解并行编程的知识。而同时,主流程序语言正在将越来越多的并行特性合并到标准库或者语言本身之中。我们可以看到,JDK 在这方面同样走在潮流的前方。在 JDK 标准版 5 中,由 Doug Lea 提供的并行框架成为了标准库的一部分(JSR-166)。随后,在 JDK 6 中,一些新的并行特性,例如并行 collection 框架,合并转载 2008-01-03 11:06:00 · 361 阅读 · 0 评论 -
在 Java SE 6 中监视和诊断性能问题
Java SE 6 对性能进行了深入研究,使用增强的工具管理和监视应用程序并且诊断常见问题。这些改进包括: 监视和管理 API 增强 正式支持增强的图形监视工具 JConsole 提供增强的 Java 虚拟机(JVM)测试工具本文介绍了 Java SE 平台的监视和管理基本知识,并详细介绍了最新版本中的性能监视和管理增强。还介绍了 Java SE 6 平台转载 2008-01-07 10:34:00 · 568 阅读 · 0 评论 -
Java SE 6 新特性: Instrumentation 新功能
Instrumentation 简介利用 Java 代码,即 java.lang.instrument 做动态 Instrumentation 是 Java SE 5 的新特性,它把 Java 的 instrument 功能从本地代码中解放出来,使之可以用 Java 代码的方式解决问题。使用 Instrumentation,开发者可以构建一个独立于应用程序的代理程序(Agent),用来监测和协转载 2008-01-08 09:26:00 · 297 阅读 · 0 评论 -
Java SE 6 新特性: HTTP 增强
概述 Java 语言从诞生的那天起,就非常注重网络编程方面的应用。随着互联网应用的飞速发展,Java 的基础类库也不断地对网络相关的 API 进行加强和扩展。在 Java SE 6 当中,围绕着 HTTP 协议出现了很多实用的新特性:NTLM 认证提供了一种 Window 平台下较为安全的认证机制;JDK 当中提供了一个轻量级的 HTTP 服务器;提供了较为完善的 HTTP Cookie转载 2008-01-08 09:48:00 · 296 阅读 · 0 评论 -
Java SE 6 新特性: JMX 与系统管理
前言在 Java 程序的运行过程中,对 JVM 和系统的监测一直是 Java 开发人员在开发过程所需要的。一直以来,Java 开发人员必须通过一些底层的 JVM API,比如 JVMPI 和 JVMTI 等,才能监测 Java 程序运行过程中的 JVM 和系统的一系列情况,这种方式一直以来被人所诟病,因为这需要大量的 C 程序和 JNI 调用,开发效率十分低下。于是出现了各种不同的专门做资源管转载 2008-01-07 11:07:00 · 346 阅读 · 0 评论 -
Java SE 6 新特性: 编译器 API
新 API 功能简介JDK 6 提供了在运行时调用编译器的 API,后面我们将假设把此 API 应用在 JSP 技术中。在传统的 JSP 技术中,服务器处理 JSP 通常需要进行下面 6 个步骤: 分析 JSP 代码; 生成 Java 代码; 将 Java 代码写入存储器; 启动另外一个进程并运行编译器编译 Java 代码; 将类文转载 2008-01-09 08:46:00 · 286 阅读 · 0 评论 -
Java SE 6 新特性: 对脚本语言的支持
脚本引擎 脚本引擎就是指脚本的运行环境,它能能够把运行其上的解释性语言转换为更底层的汇编语言,没有脚本引擎,脚本就无法被运行。 Java SE 6 引入了对 Java Specification Request(JSR)223 的支持,JSR 223旨在定义一个统一的规范,使得 Java 应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在 Java 平台上调用各种脚本语言的目的。转载 2008-01-09 08:50:00 · 322 阅读 · 0 评论 -
Java SE 6 新特性: Java DB 和 JDBC 4.0
长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何使用 Java 语言高效、可靠、简洁地访问数据库一直是程序员们津津乐道的话题。新发布的 Java SE 6 也在这方面更上层楼,为编程人员提供了许多好用的新特性。其中最显著的,莫过于 Java SE 6 拥有了一个内嵌的 100% 用 Java 语言编写的数据库系统。并且,Java 6 开始支持 JDBC 4.0 的一系列新功转载 2008-01-09 08:53:00 · 343 阅读 · 0 评论 -
让开发自动化: 使用 Raven 构建 Java 项目
我手头上有一个 Java 项目,在过去几年的时间里,我小心翼翼地为之维护一个 Ant 构建脚本。Ant 能够执行大量任务,这一点我十分欣赏;然而,我常常发现,Ant 脚本的 XML 语法编写起来有些麻烦。而且,在 可表达性 方面,Ant 的 XML 部分还存在限制。实际上,当我发现自己需要更高程度的灵活性(例如在条件逻辑方面)时,我常常不得不在 Ant 的 script 任务中编写(例如使用 Gr转载 2008-01-15 10:32:00 · 504 阅读 · 0 评论 -
让开发自动化: 除掉构建脚本中的气味,创建一致、可重复、可维护的构建
当描述代码之类的东西时,我不喜欢 “气味(smell)”这个词。因为用拟人的手法来谈论比特和字节往往令人觉得很怪异。并不是说“气味”这个词不能准确地反映出某种表明代码可能有错误的症状,只是我觉得这样听起来很滑稽。然而,我依然选择再次用这种令人厌烦的方式来描述软件构建,坦白说,这是因为这些年我见过的很多构建脚本都散发着难闻的气味。 在创建构建脚本时,即使是伟大的程序员也常常会遇到困难。就好像最近转载 2008-01-17 15:05:00 · 350 阅读 · 0 评论 -
让开发自动化: 断言架构可靠性
我在曾经从事的很多软件开发项目中观察到,软件开发中一直存在这样一种现象:您实际拥有的架构往往与想象中的不同。 通过分析代码的度量报告,比如由 JDepend (参阅 Resources)工具生成的报告,您可以有效地判定代码是否实现了确定的架构。有些团队对代码做反向设计,得到对应的 UML 图表,也能够达到上述效果,还有一些团队甚至在编程时使用 IDE 生成相同的工件 —— 即实时反向设计。可是转载 2008-01-17 10:22:00 · 304 阅读 · 0 评论 -
让开发自动化: 持续测试,对代码基址的每一次更改都运行自动化测试
在像 Eclipse 那样的 IDE 中或者比如在 Ant 构建脚本中运行单元测试是确保应用程序质量的一个很好的开始;然而,版本控制库(如 Subversion)中的源代码一改变,在单独无变动的构建机上运行单元测试就有助于检验开发生命周期中的问题。而且,运行各种类型的开发人员测试,如组件测试、功能测试和性能测试,能够在开发生命周期中更早地 将问题显示出来。通常在持续集成(CI)环境中运行的开发转载 2008-01-17 10:29:00 · 373 阅读 · 0 评论 -
让开发自动化: 持续测试,对代码基址的每一次更改都运行自动化测试
在像 Eclipse 那样的 IDE 中或者比如在 Ant 构建脚本中运行单元测试是确保应用程序质量的一个很好的开始;然而,版本控制库(如 Subversion)中的源代码一改变,在单独无变动的构建机上运行单元测试就有助于检验开发生命周期中的问题。而且,运行各种类型的开发人员测试,如组件测试、功能测试和性能测试,能够在开发生命周期中更早地 将问题显示出来。通常在持续集成(CI)环境中运行的开发转载 2008-01-17 10:29:00 · 262 阅读 · 0 评论 -
让开发自动化: 持续检查,把自己从软件检查员寻常的手工检查工作中解放出来
代码检查可以采用不同的形式。有些企业使用正式的同级评审(peer review),在该评审过程中,开发人员要为代码提供同级评价,并提供改进意见;其他一些企业使用结对编程;还有一些人则考虑使用高级设计决策和推荐的代码改进。有些团队会在将代码提交到版本控制存储库之前,让其他开发人员用 “桌面检查” 的形式审查他们的代码。不论企业采用哪种方式进行代码检查,有一件事是肯定的:它们几乎都是手工过程。正如转载 2008-01-17 13:38:00 · 448 阅读 · 0 评论 -
Java API 参考文档, 第 1 部分,在 Eclipse Help 中如何组织 Java API 参考文档
背景 提高产品文档的可使用性是许多项目成功的关键。项目的成功直接归因于您生成并书写优秀文档的工转载 2008-04-15 13:40:00 · 681 阅读 · 0 评论 -
Java API 参考文档, 第 2 部分,使用 JavaTOC doclet 生成的 Eclipse Javadoc API 参考结构
通过 JavaTOC doclet 生成的 Eclipse Javadoc API 参考文档结构设计的约束条件转载 2008-04-17 13:47:00 · 748 阅读 · 0 评论 -
Rope:理论与实践,为何以及何时使用 Ropes for Java 操纵字符串
rope 数据结构 表示不能修改的字符序列,与 Java 的 String 非常像。但是 ropes 效率奇高的字符串变换操作使得它与 String 及其同一体系的可修改的 StringBuffer 和 StringBuilder 大不相同,非常适合那些执行繁重字符串操纵的应用程序,尤其在多线程环境下更是如此。简要概括过 rope 数据结构之后,本文将介绍 rope 在 Java 平台上的实现转载 2008-04-18 13:46:00 · 433 阅读 · 0 评论 -
测试 Java 类的非公有成员变量和方法
引言对于软件开发人员来说,单元测试是一项必不可少的工作。它既可以验证程序的有效性,又可以在程序出现 BUG 的时候,帮助开发人员快速的定位问题所在。但是,在写单元测试的过程中,开发人员经常要访问类的一些非公有的成员变量或方法,这给测试工作带来了很大的困扰。本文总结了访问类的非公有成员变量或方法的四种途径,以方便测试人员在需要访问类非公有成员变量或方法时进行选择。尽管有很多经验丰富的程序员认转载 2008-04-29 13:36:00 · 378 阅读 · 0 评论 -
使用 Drools 规则引擎实现业务逻辑,使用声明性编程方法编写程序的业务逻辑
要求施加在当今软件产品上的大多数复杂性是行为和功能方面的,从而导致组件实现具有复杂的业务逻辑。实现 J2EE 或 J2SE 应用程序中业务逻辑最常见的方法是编写 Java 代码来实现需求文档的规则和逻辑。在大多数情况下,该代码的错综复杂性使得维护和更新应用程序的业务逻辑成为一项令人畏惧的任务,甚至对于经验丰富的开发人员来说也是如此。任何更改,不管多么简单,仍然会产生重编译和重部署成本。规则引擎转载 2008-05-06 14:07:00 · 901 阅读 · 0 评论 -
让开发自动化: 自动负载测试,使用 Apache Ant 和 Apache JMeter 频繁进行负载测试
您的软件系统可供多少用户同时访问?在不引起性能下降的前提下可以加载多少数据?您的系统有多大的吞吐量需求?间隔多久测试一次这些需求?如果您每天至少可以指定并确认一次这些负载和性能需求得到了满足,又会怎样?通过将负载测试作为预定的自动构建的一部分来运行,您可以更快地确定您的系统在某些负载条件下的执行情况,并快速适应变化。我曾经参与过的一个项目建立了一组很好的自动化测试,可以对应用程序进行负载测试,转载 2008-07-11 13:48:00 · 580 阅读 · 0 评论 -
精通 Grails: Grails 与移动 Web
目前,几乎所有的网站都宣称 “ 使用 [Browser X] 提供最佳视图”。现代的 Ajax 库,比如 Prototype、Dojo 和 YUI,有效地缩小了 Firefox、Internet Explorer 和 Safari 之间的差距。但是使用 Nokia、Motorola 或者 Apple 手机的人可能不会喜欢浏览器的独立性。即使是最新的呼吁 “支持完整 HTML ” 的移动浏览器转载 2008-07-17 13:44:00 · 445 阅读 · 1 评论 -
JavaScript Development Toolkit 简介
JavaScript 开发并不容易。浏览器兼容性参差不齐、文档非常糟糕、工具贫乏,这些因素使问题进一步恶化。幸运的是,随着最近针对 Eclipse 的插件集 JavaScript Development Toolkit(JSDT)的发布,工具匮乏的局面有望得到改善。Eclipse 是一个开源的 IDE 框架,具有提高扩展性和灵活性的架构。JSDT 作为插件在 Eclipse 中运行。在转载 2008-07-17 14:29:00 · 267 阅读 · 0 评论 -
使用 Grester 简化 Java 应用程序的 JUnit 测试
Jester 由 Ivan Moore 编写,它是测试由程序员和开发人员编写的单元测试的优秀工具。该工具基于这样一个假设:代码中的很多区域包含了条件语句、循环语句和 case 语句,并且在一些代码区域中,类的圈复杂度(cyclomatic complexity)由于存在很多执行路径而会突然增加。Jester 主要关注的就是类似这样的代码。但是要运行它,必须使用指向各个资源的格式良好的类路径。转载 2008-07-15 14:31:00 · 351 阅读 · 0 评论