 |
 |
 |
 |
 |
 |
诊断 Java 代码: 提高 Java 代码的性能 很多算法用尾递归方法表示会显得格外简明。编译器会自动把这种方法转换成循环,以提高程序的性能。但在 Java 语言规范中,并没有要求一定要作这种转换,因此,并不是所有的 Java 虚拟机(JVM)都会做这种转换。这就意味着在 Java 语言中采用尾递归方法将导致巨大的内存占用,而这并不是我们期望的结果。Eric Allen 在本文中阐述了动态编译将会保持语言的语义,而静态编译则通常不会。他说明了为什么这是一个重要问题,并提供了一段代码来帮助判断您的即时(JIT)编译器是否会在保持语言语义的同时做尾递归代码转换。 |
|
|
|
2001年5月12日 |
|
| |
利用 Java创建高性能的应用程序和服务器 由于 Java 的可移植性、易用性和与 HTML的紧密结合, Java 已成为动态网页内容的首选编程语言。 Java被用来产生网页上的动画效果,在服务器端动态的选择、格式化网页内容,并用作面向交易应用软件的前端来检查终端用户的输入信息。 Java 还是作为在虚拟现实模型 (VRML)[HW96]语言中设计三维动作和在这种虚拟环境 [VRML97]中提供多用户交互的重要语言。 |
|
|
|
2001年6月12日 |
|
| |
dW at JavaOne: 下一波 -- Java 1.4 即将发布版本的性能和新功能一览 JavaOne 2001 会议进行了几个议程,来描述新近发布的 Java beta 版本 1.4 的新功能。在这篇文章中,我们集中讨论会议中的某些议程以及新版本的性能。 |
|
|
|
2001年7月24日 |
|
| |
在 Java 应用程序中创建图像 在不严重牺牲性能的前提下绘制和着色简单的图形图像 本文摘录自 Beginning Java 2 -- JDK 1.3 Edition(Wrox Press,2000 年 3 月),在这里,作者 Ivor Horton 讲解了创建自己的图形文件的基础知识。他提供了一些技巧,教您为子图形着色,操作 alpha 通道,以及为所花费的处理时间取得最佳的质量。 |
|
|
|
2001年9月5日 |
|
| |
轻松使用线程: 减少争用 抛开您自己的习惯,提高应用程序的性能 在本系列的第 1 部分,我们讨论了无争用同步的性能开销。尽管常常听说同步方法调用的开销是非同步方法调用开销的 50 倍,这个数字实际上仍然相当容易产生误导。JVM 的每个后继版本在整体性能上的提高和无争用同步代价的降低使得无争用同步开销问题不再显得那么突出。但争用同步的代价仍然非常高昂。而且,严重的争用将严重损害应用程序的可伸缩性 ― 随着负载的增加,存在严重争用同步的应用程序的性能将显著降低。本文将探讨能够减少争用的几种技术,以提高您程序的可伸缩性。 |
|
|
|
2001年11月14日 |
|
| |
高速缓存和连接池对访问数据库性能的影响 介绍高速缓存和连接池的基础上,给出解决数据库性能问题的一些有用办法。 |
|
|
|
2002年1月25日 |
|
| |
Java 理论和实践:理解 JTS ― 平衡安全性和性能 在本文中,Brian 讨论了 J2EE 提供的用来管理事务划分和隔离的工具和一些高效率地使用这些工具的指导。 |
|
|
|
2002年7月30日 |
|
| |
如何提高系统性能指标 我在这里不想也不可能针对提高系统性能的方方面面一一讲解,只是想结合具体的个案来谈谈我们在进行系统移植过程中对提高J2EE系统性能指标的一些思考和设计方案,主要是关于数据缓存技术的应用,但愿不会给大家带来太大的误会。 |
|
|
|
2002年12月27日 |
|
| |
优化 Java 垃圾收集的性能 您的 Java 应用程序充分利用了所运行的 IBM eServer 硬件的能力了吗?在本文中,作者将介绍如何判断垃圾收集 —— Java 虚拟机执行的收回不再使用空间的后台任务 —— 是否调节到最佳状态。然后,他将提供一些解决垃圾收集问题的建议。 |
|
|
|
2003年1月1日 |
|
| |
Web 开发人员:为最佳性能而进行优化? 如果您在开发 Web 应用程序,那么您很可能熟悉基于Java连接到数据库的方法:JDBC 和 SQLJ。但是您知道如何能让使用这些方法的应用程序获得最佳性能吗? |
|
|
|
2003年3月12日 |
|
| |
Java 理论与实践:性能管理 ― 您有规划吗? 性能问题从何而来?导致性能问题的编程选项有许多类型 ― 效率低的算法、冗余计算、糟糕的资源分配和使用情况、过多的同步,或者很明显就是效率低的设计。但更普遍的且具有破坏性的要属管理和方法错误,而不是编程错误。在这一部分的 Java 理论与实践中,Brian Goetz 将讨论在项目中使用 Java 语言时遇到的一些最常见的性能错误。 |
|
|
|
2003年6月12日 |
|
| |
使用 Java 在 DB2 UDB EEE 上的高性能插入 缓冲插入是由 DB2 提供的一种编程技术,它使得在分区环境中的插入操作密集型工作负载能达到最佳的性能。本文讨论如何在 Java 中利用此功能。 |
|
|
|
2003年9月15日 |
|
| |
关注性能:改进您的开发过程 性能是 Java 平台屡屡受到指责的一个方面。然而,Java 平台的巨大成功也使得对性能问题作一番严肃的调查研究颇有必要。在这个新专栏中,无畏的优化大师 Jack Shirazi 和 Kirk Pepperdine,分别是 JavaPerformanceTuning.com 的董事和 CTO,他们在整个 Internet 上推行性能大讨论,展开他们所碰到的问题并加以澄清。本月,他们来到 JavaRanch,讨论有关编译速度、异常以及堆长度调优等方面的话题。 |
|
|
|
2003年9月22日 |
|
| |
关注性能: 引用对象 优化大师 Jack Shirazi 和 Kirk Pepperdine, 分别是 JavaPerformanceTuning.com 的董事和 CTO, 就他们本专栏中遇到的关于性能方面的问题,在 Internet 上进行广泛的探讨和研究。这个月,他们将目光投向 Java 游戏 Web 站点,去看看游戏开发者是怎样发现和解决垃圾收集过程中应用程序不能释放对象时出现的问题。 |
|
|
|
2003年10月9日 |
|
| |
在多个数据源的 J2EE 环境中的 DB2 Information Integrator 性能 本文是我们关于使用 DB2 Information Integrator 进行 J2EE 开发的三部分系列中的最后一篇文章,作者在文中比较了使用联邦技术的查询与使用直接访问的查询的性能结果。 |
|
|
|
2003年10月30日 |
|
| |
关注性能:压力负载 优化大师 Jack Shirazi 和 Kirk Pepperdine 分别是 JavaPerformanceTuning.com 的董事和首席技术官,他们从事全球 Internet 上的性能问题讨论。在 TheServerSide.com 留言板上最近提出了一些关于压力测试和负载测试的问题。Jack 和 Kirk 详细探讨了这一主题,并讨论了正确的工具如何导致结果产生巨大的差别。 |
|
|
|
2003年12月11日 |
|
| |
JXTA 2: 具有高性能、海量伸缩性的 P2P 网络 JXTA 2 是开放源代码 P2P 网络的第二个主要版本,它利用流行的、基于 Java 的参考实现作为构建基础。在设计方面进行了重要的修改,以获得更高的性能、海量伸缩性和可维护的 P2P 网络。本文建立在 Sing Li 于两年前发表的 JXTA 系列文章 Makng P2P interoperable 的基础上,为您介绍了这个平台上最新的重要改变。 |
|
|
|
2003年12月15日 |
|
| |
关注性能:宏性能基准测试 热衷于 Java 性能的 Jack Shirazi 和 Kirk Pepperdine ―― JavaPerformanceTuning.com 的董事和 CTO ―― 跟踪遍布 Internet 上的性能讨论,探究是什么在困扰着开发人员。在浏览 Usenet 新闻组 comp.lang.java 时,他们遇到了几个有意思的底层性能调整问题。在 关注性能 的这篇文章中,他们对字节码作了一些分析,检验并回答了其中的一些问题。 |
|
|
|
2003年12月29日 |
|
| |
使用JMeter进行性能测试 JMeter 是 Apache 组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,最新的版本是1.9.1。本文中作者将向大家介绍如何使用 JMeter 进行测试。 |
|
|
|
2004年2月13日 |
|
| |
关注性能: 异常的异常 Java 性能狂热者 Jack Shirazi 和 Kirk Pepperdine 分别是 JavaPerformanceTuning.com 的董事和首席技术官,他们从事全球 Internet 上的性能问题讨论,关注开发者遇到的困难。这个月在JavaRanchh 上的访谈,通过深入分析故事背后的故事,他们反驳了关于异常的营火会故事(译者注:即 campfire stories,是 JavaRanchh 推出的一个专栏,专门以童话故事的形式讲授 Java 技术)。 |
|
|
|
2004年3月1日 |
|
| |
设计具有本机性能的跨平台 Java UI
您能编写跨多种平台编译、同时执行速度仍然像本机代码一样快的 Java 代码吗?这是一个困扰 Java 开发人员的难题,对于具有复杂 UI 的应用程序来说尤为如此。在本文中,开发人员 Vladimir Silva 建议了一种针对这个难题的有趣解决方案。您将学习如何使用 JNI 来访问 SLIK,后者是一个跨平台的 C API,它同时在 Windows 和 UNIX 上提供本机性能。
|
|
|
|
2004年3月25日 |
|
| |
关注性能:使用 NIO 来扩展 MegaJogos
在关注性能系列的本期文章中,Kirk Pepperdine 和 Jack Shirazi 将追随 Macros 的踪迹,发现 NIO 性能的一些出色优点。
|
|
|
|
2004年4月14日 |
|
| |
用 Runtime Syp 调整 Eclipse 的启动性能,第 2 部分 -- 成功的骗局 Runtime Spy 是 Eclipse.org 提供的核心工具 (Core Tools) 之一,它是特别设计的一个透视图及一组视图,用于帮助您找到并诊断插件启动性能问题。本文介绍了如何发现可能会导致启动时间过长的常见设计错误,以及如何去纠正它们。其中的一个案例研究说明了 Runtime Spy 如何用于提高 IBM WebSphere Studio Application Developer 的启动性能。上一篇文章,也就是 第 1 部分,对 Runtime Spy 进行了介绍。 |
|
|
|
2004年4月26日 |
|
| |
关注性能: 谈论垃圾 您的应用程序是否经常出现 out-of-memory 错误?用户是否感受到响应时间有些不稳定?应用程序是否在相当长的时间内变得没有响应?应用程序的性能是否显得迟缓了?如果对任何一个问题的回答是肯定的,那么您很可能遇到了垃圾收集的问题了。先别进行优化,且听听 JavaPerformanceTuning.com 的 Jack Shirazi 和 Kirk Pepperdine 来解释如何识别垃圾收集问题,并由此帮助您回答这个问题:您知道垃圾收集器在干什么吗? |
|
|
|
2004年6月7日 |
|
| |
关注性能:调优垃圾收集 如果您是当前写网志(blogging)狂热者中的一员,则可能听说过 Blog-City,这是由苏格兰的一家小公司 Blog-City Ltd. 拥有和运营的网志站点。当一些意料之外的性能问题突然出现时,Java 性能专家 Jack Shirazi 和 Kirk Pepperdine 被邀请帮助进行 Blog-City 的技术调整。他们的检测工作因为受硬件约束和整个项目所使用的通信通道(IRC、ftp 和 偶尔的电子邮件)的限制而变得复杂。 |
|
|
|
2004年7月16日 |
|
| |
关注性能: 确定更改的风险 在性能调优时,不可避免地会在应用程序中产生一些 bug,这些 bug 可能会让团队无法继续前进,而且可能显著地影响项目的进度。如果计划很紧(它们什么时候不紧呢?),那么性能调优工作很有可能会使项目落后、延期甚至取消。幸运的是,软件度量(software metrics)可以提供帮助。问题是:如何管理一个合理的时间框架,使系统摆脱已知的瓶颈?假定您理解改进性能需要的所有更改,那么该问题的答案取决于及时进行更改的能力。当代码中遇到未预料到的问题时,在工作过程中,必需进行的改变或者需要考虑的改变的数量常常会不断增加。您也许认为这是一项不太可能完成的任务,您是对的――精确地计划任何形式的代码重构实际上是不可能的,除非有某种可以对风险进行评估的方法。幸运的是,软件度量(software metrics)可以为您提供帮助。 |
|
|
|
2004年8月16日 |
|
| |
DB2 Content Manager Web 应用程序: 性能调优和调试方法 对了解更多关于 J2EE 应用程序性能调优技术和调试方法方面的知识感兴趣吗?本文集中讨论在 IBM DB2 Content Manager V8.x 上开发的 J2EE 应用程序的高级体系结构。 |
|
|
|
2004年9月16日 |
|
| |
关注性能:边缘剖析 调优的并不总是速度,有时候需要调整应用程序的其他方面,如果应用程序需要调优,要做的第一件事通常是使用剖析程序监控应用程序。但是,剖析并不总是可行的,有时候原因可能很可笑。关注性能的本期文章中, Jack 和 Kirk 讲述了他们最近经历的一件事:他们奉命剖析一个胖客户机,事实上它是如此庞大,根本没有为剖析程序留下空间。 |
|
|
|
2004年9月27日 |
|
| |
测试您的 DB2 数据库: 用 JMeter 测量性能 作者 Kulvir Singh Bhogal 介绍了一个叫作 JMeter 的开放源代码工具,该工具可以测量 DB2 Universal Database 的查询性能和吞吐量。 |
|
|
|
2004年11月10日 |
|
| |
使用具备可过期属性的 portlet 服务来改善 WebSphere Portal 应用程序的性能 本文描述和说明了如何使用 portlet 服务来扩展对门户应用程序开发人员来说可用的缓存选项。它包含 portlet 服务的源代码,以及一个示例应用程序用来说明如何使用它。 |
|
|
|
2004年11月22日 |
|
| |
Java 理论与实践: 动态编译与性能测量
为动态编译的语言(例如 Java)编写和解释性能评测,要比为静态编译的语言(例如 C 或 C++)编写困难得多。在这期的 Java 理论与实践 中,Brian Goetz 介绍了动态编译使性能测试复杂的诸多原因中的一些。
|
|
|
|
2004年12月27日 |
|
| |
安装使用 DB2 UDB 的集群的 SPECjAppServer2004 基准 - 一个高性能 J2EE 1.3 应用程序沙箱 如果您要在集群环境中安装 DB2 基准,那么您可以从这篇文章中获得所需的帮助。本文可以帮助您确定如何配置 WebSphere 和 DB2 UDB,以便安装一个 SPECjAppServer2004 基准,该基准是一个可伸缩的集群级(cluster-scalable)应用程序。标准性能评估公司(Standard Performance Evaluation Corporation,SPEC)提供了关于如何安装 SPECjAppServer2004 应用程序的通用用户指南,但是在文档中没有包括特定于供应商的信息。本文将填补这个空缺,提供详细的说明和示例脚本,帮助您把 SPECjAppServer2004 应用程序的安装变成一项简单任务。 |
|
|
|
2005年2月21日 |
|
| |
关注性能: 什么时候好的基准测试不好了
在进行基准测试操作时,一定要对出现意外结果有思想准备。即使您认为自己知道会是什么样的结果,可是奇怪的结果常常会让您无所适从。性能专家 Jack Shirazi 和 Kirk Pepperdine 一直在与意外结果打交道。请跟他们一起对 Java 5.0 中的一种新语言功能进行基准测试并发现一些不寻常的结果。 |
|
|
|
2005年3月21日 |
|
| |
IBM JVM for Linux on POWER 的性能调优技巧 本文将介绍用于 iSeries 和 pSeries 上的 IBM JVM for Linux 的一些重要性能调优问题。在撰写这篇文章的时候,IBM 推出了 JDK 1.3.1 32-bit 和 JDK 1.4.2,但无论是 32 位还是 64 位风格的,都适用于 IBM iSeries 和 pSeries 上的 Linux。本文中提供的技巧可应用于 IBM iSeries 和 pSeries 上的 IBM JDK 1.3.1 和 JDK 1.4.2 for Linux,但是本文的特别针对目标是最新的 IBM JDK 版本 JDK 1.4.2。 |
|
|
|
2005年3月28日 |
|
| |
Classworking 工具箱: 用方面跟踪性能
在这一期的 Classworking 工具箱 中,顾问 Dennis Sosnoski 接着上个月,使用面向方面的(aspect-oriented)方法进行性能分析。他用 Apache Axis Web 服务框架分析了一个客户机应用程序,以找出执行时间都花在哪里了。同时,Dennis 分析了 Java 代码中的测量时间间隔问题,并展示了如何找出自己系统上计时器实现的粒度和开销。 |
|
|
|
2005年4月25日 |
|
| |
AOP@Work: 用 AspectJ 进行性能监视,第 1 部分 随着 Ron Bodkin 介绍如何把 AspectJ 和 JMX 组合成灵活而且模块化的性能监视方式,就可以对散乱而纠缠不清的代码说再见了。在这篇文章(共分两部分)的第一部分中,Ron 用来自开放源码项目 Glassbox Inspector 的代码和想法帮助您构建一个监视系统,它提供的相关信息可以识别出特定问题,但是在生产环境中使用的开销却足够低。 |
|
|
|
2005年10月10日 |
|
| |
Java 理论与实践: 再谈 Urban 性能传言 Java 语言遭到许多性能方面的攻击。虽然有些攻击可能是名符其实的,但是看看公告板和新闻组上关于这一主题的贴子,可以发现,对于 Java 虚拟机(JVM)实际的工作方式存在许多误解。在本月的 Java 理论与实践 中,Brian Goetz 驳斥了反复重复的有关 JVM 分配慢的传言。 |
|
|
|
2005年10月24日 |
|
| |
AOP@Work: 用 AspectJ 进行性能监视,第 2 部分 本文中,作者展示了如何在 Glassbox Inspector 中添加企业监视功能,包括监视多个应用程序、Web 服务和 Web 应用程序框架。他还展示了如何跟踪应用程序错误并在监视代码中包含它们,并展示了如何以编程方式部署和控制这个监视基础架构。 |
|
|
|
2005年12月15日 |
|
| |
IBM WebSphere 开发者技术期刊: 使用 WebSphere Application Server 开发高性能 J2EE 线程 异步 Bean 提供可以由多个应用程序使用的有效而又安全的全局线程池。您需要使用专门的线程池时,可以通过 IBM WebSphere Application Server V5.x 或 V6.x 使用 Asynchronous Beans EventSource 接口构造一个线程工厂,从而能够自由使用任何必需的高级线程用法模式,并且不降低性能。 |
|
|
|
2006年9月17日 |
|
| |
追求代码质量: 用 JUnitPerf 进行性能测试 在应用程序的开发周期中,性能测试常被放到最后考虑,这并不是因为它不重要,而是因为存在这么多未知变量,很难有效地测试。在本月的 “追求代码质量” 系列中,Andrew Glover 使性能测试成为开发周期的一部分,并介绍了两种简单的实现方法。 |
|
|
|
2006年11月29日 |
|
| |
优化 Java 垃圾收集器改进系统性能 在系统的性能测试过程中,当系统的处理能力有某种变化趋势时, 除了关于等待队列、执行线程,EJB 池以及数据库连接池和 Statement Cache 方面的调优外,还要考虑到 Java 垃圾收集器(Garbage Collection,本文简称 GC)对系统性能的影响。本文介绍了如何分析系统的处理能力和 GC 之间的关系,以及如何通过改进 JVM 的配置来优化 GC,以提高系统的性能。 |
|
|
|
2006年11月30日 |
|
| |
认识 p-unit : 一款开源的性能测试工具 p-unit 是一款开放源码的性能测试框架,和 JUnit 不同,JUnit 关注的是测试案例的正确性,而 p-unit 不仅关注测试案例的正确性,还收集测试案例的性能参数,默认情况下,p-unit 收集测试案例的时间和内存消耗情况,可以产生文件,图片,和 PDF 格式的报表。此外,p-unit 还支持参数化测试,多线程测试以及不同 Java 虚拟机性能之间的比较。 |
|
|
|
2007年5月31日 |
|
| |
Subversion 性能调优 Subversion 是为数不多的能使用增量算法存储二进制文件的版本控制系统之一。不幸的是,用户发现这样做时会导致性能受到不小的损失。在本文中,高级开发人员 David
Bell 解释为什么在处理二进制文件时 Subversion 的性能会受损,并推荐了几种方法来避开这个问题。 |
|
|
|
2007年6月11日 |
|
| |
富客户机应用程序的性能,第 1 部分: 性能分析的工具、技术和技巧 即使是良好规划的应用程序也可能出现重大的性能问题。
在这篇由两个部分构成的文章里,Chris Grindstaff 给出了一些用于分析和解决性能问题的技术。这是第 1 部分,您将学到如何量度基于 Eclipse 的富客户机平台(Rich Client Platform (RCP))应用程序的性能,判断速度降低的原因是由于 CPU 还是 I/O 瓶颈,保持 UI 线程空闲以保持响应性。第 2 部分将解决内存问题。 |
|
|
|
2007年8月13日 |
|
| |
富客户机应用程序的性能,第 2 部分: 堵住内存泄漏 本文讨论 Eclipse 富客户机性能,由两部分构成,第 1 部分
涵盖了应用程序性能度量、记录技术、保持 UI 响应性以及使用 Job 避免线程错误等方面。
本部分作为第 2 部分要讨论内存使用以及如何发现内存泄漏。 |
|
|
|
2007年8月20日 |
|
| |
在 Java SE 6 中监视和诊断性能问题 Java Platform, Standard Edition 6 (Java SE) 专注于提升性能,提供的增强工具可以管理和监视应用程序以及诊断常见的问题。本文将介绍 Java SE 平台中监视和管理的基本知识,并提供 Java SE 6 中相关增强的详细信息。 |
|
|
|
2007年10月15日 |
|
| |
结合安全发布与有效的不可变性来提升性能 使多个线程能够共享对可变集合的访问 —— 一种典型方法就是同步对集合的访问 —— 这样做可能会成为性能瓶颈。通过本文学习一种可用于 Java 5.0 的技术,然后使用该技术最大限度地减少数据结构(频繁读取,但较少更新)中的性能瓶颈。 |
|
|
|
2007年10月29日 |
|
| |
诊断 DB2 Java 应用程序的性能问题
从应用程序客户机的角度诊断和隔离性能问题。学习如何为在 IBM DB2 for Linux, UNIX, and Windows 数据库上运行的 Java 应用程序排除性能问题。一旦理解了性能问题的根源所在,离找到解决方案也就不远了。 |
|
|
|
2007年12月13日 |
|
| |
持久化模式,第 2 部分: 提高代码重用和改进性能 第 1 部分讨论用现代对象-关系映射(ORM)工具实现一致且紧凑的领域模型和持久化层的基本概念。在第 2 部分中,作者将描述基领域实体、领域模型中的行为以及泛型 DAO 的高级特性,还要提供改进领域模型的数据获取性能的策略。 |
|
|
|
2008年5月22日 |
|
| |
编写高性能 Java 数据访问应用程序,第 2 部分: pureQuery 内联方法风格简介 IBM pureQuery 是一种高性能 Java 数据访问平台,其目标主要是简化数据访问应用程序的开发和管理。它由工具、API 和运行时组成。pureQuery 引入了两种编程风格,以帮助用户通过简单但是强大的 API 访问数据库。本文介绍其中的一种风格,即内联方法编程风格,并讨论如何使用它有效地查询和更新数据库。本文还探索使用内联方法编程风格的一些优点和关键特性。 |
|
|
|
2008年8月12日 |
|
| |
编写高性能 Java 数据访问应用程序,第 1 部分: pureQuery 带注释的方法风格简介 pureQuery 是一种高性能 Java 数据访问平台,其目标主要是简化数据访问应用程序的开发和管理。它由工具、API 和运行时组成。本文介绍 pureQuery 带注释的方法风格 —— 这是一种简单、灵活的风格,属于命名查询(named-query)范例,可以静态或动态地执行 SQL。本文首先解释为什么开发人员要选择使用带注释的方法风格编写 pureQuery 应用程序,再解释带注释的方法风格与 pureQuery 内联编程风格之间的差异,并简要概述 pureQuery 带注释的方法的强大特性。 |
|
|
|
2008年8月12日 |
|
| |
Java 运行时监控,第 1 部分: Java 系统运行时性能和可用性监控 运行时性能监控对于实现和维护性能优异的系统至关重要。本文是系列文章的第 1 部分(共 3 部分),dfsaNicholas Whitehead 将阐述如何有效地对 Java 性能执行低级粒度的监控。您生成的数据可以很好的反映系统操作的内在状态,并揭示影响环境稳定性及性能的约束和因素。 |
|
|
|
2008年8月19日 |
|
| |
Java 运行时监控,第 2 部分: 编译后插装和性能监控 本系列包括三部分,介绍有关 Java 应用程序的运行时监控知识,第 1 部分重点介绍了 JVM 的健康状况和插装源代码以捕获性能指标的方法。本篇为第二部分,介绍了在无需改变原始源代码的情况下来插装 Java 类和构造的技巧。 |
|
|
|
2008年8月22日 |
|
| |
Java 运行时监控,第 3 部分: 监控应用程序生态系统的性能与可用性 本文为 Java 应用程序运行时监控系列的第三部分,也是最后一部分,主要介绍在监视应用程序支持和依赖服务的性能和可用性时应使用哪些策略与技巧。所谓支持和依赖服务包括底层主机操作系统、运行数据库以及通信基础设施。文章结尾针对性能数据管理问题以及数据的报告和可视化做了论述。 |
|
|
|
2008年9月2日 |
|
| |
编写高性能 Java 数据访问应用程序,第 3 部分: Data Studio pureQuery API 最佳实践 pureQuery 是一种高性能 Java 数据访问平台,其主要目标是简化访问数据的应用程序和服务的开发、管理和优化。它由工具、API 和运行时引擎组成。本系列的前两篇文章介绍了两种编程风格,以帮助用户通过简单而强大的 API 访问数据库。本文总结了使用 pureQuery API 进行开发的一些最佳实践,并提供一些真实场景,以展示如何实现这些最佳实践。 |
|
|
|
2008年10月20日 |
|
| |
使用类共享提高性能 IBM JRE for Java SE 6 的最新版本增强了在版本 5 中首次引入的类共享特性。在本文中,性能分析师 Adam Pilkington 和 Graham Rawson 详细介绍这些改进,包括对应用程序启动时间和内存使用量的改进。 |
|
|
|
2008年11月3日 |
|
| |
事务策略: 高性能策略 在本系列的最后一部分中,事务策略系列作者 Mark Richards 介绍了如何在 Java 平台上为高性能应用程序实现事务策略。您的应用程序可以在保持快速处理速度的同时仍然支持一定程度的数据完整性和一致性 —— 但您需要知道如何折衷。 |
|
|
|
2009年8月10日 |
|
| |
在使用 SQLJ 和 JDBC 时获取最优的 DB2 性能 JDBC 和 SQLJ 是用来在 Java 程序中访问数据库的两种方法。本教程介绍了 SQLJ 和 JDBC的知识,并对它们进行了比较。除此之外,本教程还讨论了一些方法,以使您的 Java 程序在访问 DB2 时达到最佳性能。 |
|
|
|
2003年4月30日 |
|
| |
Java 安全性的演变和理念 第一部分:安全性的基本要点在这篇介绍性概述中了解计算机安全的概念和术语 本系列文章将提供对网络安全的一般了解,以及开发人员所必需掌握的 Java 编程语言的独特性能。在后续的连载中,将讨论 Java 平台安全性的设计和演变,以及不同的 Java 安全性 API。今后的文章还将讨论 Java 2 Platform,Enterprise Edition (J2EE) 中的安全特性,J2EE 正迅速变为 .com 平台的首选。 |
|
|
|
2000年10月25日 |
|
| |
尽量使用栈变量 当您经常存取变量时,您需要考虑它们是从哪里被存取的。变量是静态的、在栈上或是一个类的实例变量?您在何处储存变量对访问它的代码性能将产生巨大的影响。在此实例中学习如何减少您代码的执行时间。 |
|
|
|
2001年1月17日 |
|
| |
Jive talkin':开放源码的 Java 软件论坛 Jive 是一个开放源码的 Java 软件论坛,它允许在网站上进行线程化的讨论。它提供了性能优秀的用户定义的 JSP 文件(用 Jive 的外壳)来完全改变论坛的外观、形象和功能。并提供了一个可植入的 API, 这些 API 提供诸如及时翻译、内容过滤或者几乎其它所有功能的先进特性。然而除此之外还有很多的自由论坛, Jive 的独到之处是它的全部代码都用 Java 编写并且被一个专注的程序员群体热情的支持着。在这篇文章中,将讨论到如何将 Jive 结合到 lockerjock,一个有关运动题材的网站 |
|
|
|
2001年3月19日 |
|
| |
Tomcat 的过滤诀窍 新的 Java Servlet 2.3 规范有不少最激动人心的功能,其中之一便是过滤。第一眼看来, Servlet 2.3 过滤似乎与 Apache、IIS、Netscape Web 服务器及其它服务器中已有的传统过滤器非常相似。事实上, Servlet 2.3 从结构上来说是一个完全不同的设计 -- 补充支持 Java 平台面向对象的特性,以提供更高级别的性能。本文向您介绍了 Tomcat 4 中的过滤,并展示了如何在项目中高效地使用过滤器。请点击文章顶部或底部的<b>讨论</b>,参与讨论论坛,与本文作者和其他读者分享您对本文的想法。 |
|
|
|
2001年6月9日 |
|
| |
轻松使用线程: 同步不是敌人 与许多其它的编程语言不同,Java 语言规范包括对线程和并发的明确支持。语言本身支持并发,这使得指定和管理共享数据的约束以及跨线程操作的计时变得更简单,但是这没有使得并发编程的复杂性更易于理解。这个三部分的系列文章的目的在于帮助程序员理解用 Java 语言进行多线程编程的一些主要问题,特别是线程安全对 Java 程序性能的影响。 |
|
|
|
2001年8月24日 |
|
| |
最佳实践:用 Enterprise JavaBean(EJB)设计应用程序 当设计应用程序并考虑使用 Enterprise JavaBean(EJB)时,可以从许多选项中选择。这些选项具有不同级别的复杂性、优点和缺点。基于“模型-视图-控制器(MVC)”体系结构,您可以将会话 bean 用作实体 bean 的前端。前端会话 bean 通过降低网络调用的数量来改进性能。除了性能改进,前端会话 bean 隐藏了导致表示逻辑与商业逻辑分离的 EJB 的复杂性。 |
|
|
|
2001年11月26日 |
|
| |
用于 B2B 集成的 Web 服务和 J2EE 连接器 一个在线保险代理应用程序 Web 服务和 J2EE 连接器承诺能够简化不同种类的企业信息系统的集成,并且在因特网上为业务合作伙伴提供共享他们各自应用功能的方式。这篇文章使用了一个保险代理方案来说明这些性能,它将来自旧的事务的程序化功能融入到 Web 应用程序中。 |
|
|
|
2002年1月18日 |
|
| |
最佳实践:如果 EJB 和 Servlet 在同一个 JVM 中,则使用“引用传递” 当 EJB 和其它应用程序组件在同一个 JVM 中时,使用“引用传递”调用语义避免了 RMI-IIOP 开销。EJB 1.1 规范声明方法调用是“值传递”。这意味着对于每个远程方法调用,在调用之前,先要将参数复制到堆栈上。然而,这种操作花费很大。通过指定“引用传递”,无需进行复制就可以传递原始对象引用。这样,就会导致极大的性能改进。 |
|
|
|
2002年2月20日 |
|
| |
Java 理论与实践: 应该在下一个企业应用程序中使用 JMS 吗? 欢迎来到Java 理论与实践专栏,这是由经验丰富的 Java 开发人员 Brian Goetz 撰写的一个新的专栏月刊。本专栏旨在探索设计原则如何满足解决实际问题的需求这一难以捉摸的结合点。每个月我们都将探索设计模式、可靠软件设计的原则以及为什么“最佳实践”是最好的,同时也关注如何将它们应用于实际问题。这个月,Brian 讨论企业消息排队技术。最近几年,开发人员可以更广泛地得到企业消息排队(MQ)产品。适当地使用 MQ 技术经常可以改善应用程序的组织、性能和可伸缩性。Java 消息服务(Java Message Service (JMS))是集成到 J2EE 中的一部分,它使得 MQ 服务可以为任何 J2EE 应用程序所用。在本文(也是本专栏系列的第一部分)中,Brian 概述了在 Java 应用程序中使用消息排队的一些好处,并探讨了能够从 MQ 技术中获益最大的问题类型。请在论坛上(或者通过单击本文顶部或底部的讨论)同作者及其他读者分享您对本文的想法。 |
|
|
|
2002年2月23日 |
|
| |
基于JDBC的数据库连接池高效管理策略 在基于JDBC的数据库应用开发中,数据库连接的管理是一个难点,因为它是决定该应用性能的一个重要因素。本文在对数据库连接进行透彻分析的基础上,提出并实现了一个高效的连接管理策略,使得开发高性能的数据库应用变得相对容易。特别是,对于连接管理中的两个难点:事务和多线程问题进行了深入的剖析,并给出了一个基于设计模式的解决方案。 |
|
|
|
2002年3月12日 |
|
| |
最佳实践:EJB ― 从 EJB 会话 bean 访问 EJB 实体 bean 使用 EJB 会话 bean 访问 EJB 实体 bean。通过用会话 bean 包装实体 bean,您能获得更佳性能。这加强了通过活动的进程对象包装被动的数据实体对象这一有效的对象模型概念。然而,可以编写 EJB 客户机来直接访问实体 bean ,但是这样以性能为代价。通过用会话 bean 包装实体 bean 可以获得最佳性能。 |
|
|
|
2002年3月15日 |
|
| |
EJB ― 降低事务隔离级别 尽可能降低 EJB 事务隔离级别,以降低数据库并发的开销。在许多情况下,通过改变缺省值可以实现更佳性能。 |
|
|
|
2002年3月15日 |
|
| |
最佳实践:避免或最小化 Servlet 中的同步 请将 servlet 中同步的使用最小化。因为 servlet 是多线程的,主要代码路径的同步会严重地且极为有害地影响性能。 |
|
|
|
2002年3月15日 |
|
| |
衡量 Java 本机编译 从 Java 源程序生成本机代码的优缺点 一开始引入 Java 本机编译时,它似乎一定能胜过 JVM,抛弃 Java 平台极力争取的平台无关性。但是即使本机编译越来越流行,并且市场上的本机编译器越来越多,它要真正取代 Java 的可移植性还有一段路要走。不幸的是,就连该技术成熟到足以解决目前让许多人头疼的 Java 性能问题也还尚需时日。 |
|
|
|
2002年4月2日 |
|
| |
构建Java并发模型框架 Java的多线程特性为构建高性能的应用提供了极大的方便,但是也带来了不少的麻烦。线程间同步、数据一致性等烦琐的问题需要细心的考虑,一不小心就会出现一些微妙的,难以调试的错误。另外,应用逻辑和线程逻辑纠缠在一起,会导致程序的逻辑结构混乱,难以复用和维护。 |
|
|
|
2002年4月26日 |
|
| |
勿用 Beans.instantiate() 创建新 bean 实例
有两种不同的方法用来创建 Javabean。一种方法是使用 new 来创建对象实例,第二种方法是使用 java.beans.Beans.instantiate() 来创建新对象。然而,使用 Beans.instantiate() 会给性能带来负面影响,因为这种方法将在文件系统上搜索那个对象的一个序列化版本。如果找到序列化对象,则装入它。如果找不到它,则创建它。
|
|
|
|
2002年5月23日 |
|
| |
最佳实践:有状态会话 bean运行结束时应及时被显示删除 当企业 Java bean(EJB)客户机不再需要有状态会话 bean 时,该客户机应该显式地将它从容器中除去。通过这样做,应用程序可以减少对钝化(passivation)的需要、最小化容器开销和提供更高级的性能。如果不显式地除去它们,容器对许多有状态会话 bean 的管理将耗费资源。 |
|
|
|
2002年5月30日 |
|
| |
垃圾收集器与Java编程 垃圾收集器(Garbage Collector,GC)对Java程序员来说,基本 上是透明的,但是一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。本篇文章首先简单介绍GC的工作原理之后,然后再对GC的几个关键问题进行深入探讨,最后提出一些Java程序设计建议,从GC角度提高Java程序的性能。 |
|
|
|
2002年6月4日 |
|
| |
使用JAVA建立稳定的多线程服务器 本文详细的介绍了使用Java语言建立一套多线程服务器的过程,该服务器使用对象传递消息,在线程中使用队列机制,使服务器的性能大大提高了。这套服务器可以被用于各种C/S或B/S结构的应用程序中。 |
|
|
|
2002年7月12日 |
|
| |
Java 优化技术 存在许多优化 Java 程序的有用技术。本文将优化过程视为一个整体,而不是集中于某一个特定技术。作者 Erwin Vervaet 和 Maarten De Cock 通过应用从简单技术技巧到更高级算法优化的各类技术,向读者逐步介绍解拼图程序的性能调整。最终结果是在第一个工作实现和完全优化的解决方案之间有了巨大的性能改进(一百万倍以上)。 |
|
|
|
2002年8月16日 |
|
| |
线程池的介绍及简单实现 服务器程序利用线程技术响应客户请求已经司空见惯,可能您认为这样做效率已经很高,但您有没有想过优化一下使用线程的方法。该文章将向您介绍服务器程序如何利用线程池来优化性能并提供一个简单的线程池实现。 |
|
|
|
2002年8月23日 |
|
| |
EJB 最佳实践: 工业强度的 JNDI 优化 Brett McLaughlin 在这篇 EJB 最佳实践专栏文章中研究了 JNDI 查找,它是几乎所有的 EJB 交互中不可或缺并且常见的部分。遗憾的是,JNDI 操作几乎总是需要性能开销。在本技巧文章中,Brett 向您展示了 home 接口工厂是如何降低您 EJB 应用程序中 JNDI 查找开销的。 |
|
|
|
2002年11月9日 |
|
| |
垃圾收集器与Java编程 垃圾收集器(Garbage Collector,GC)对Java程序员来说,基本 上是透明的,但是一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。本篇文章首先简单介绍GC的工作原理之后,然后再对GC的几个关键问题进行深入探讨,最后提出一些Java程序设计建议,从GC角度提高Java程序的性能。 |
|
|
|
2002年11月16日 |
|
| |
花1K内存实现高效I/O的RandomAccessFile类 AVA的文件随机存取类(RandomAccessFile)的I/O效率较低。通过分析其中原因,提出解决方案。逐步展示如何创建具备缓存读写能力的文件随机存取类,并进行了优化。通过与其它文件访问类的性能对比,证明了其实用价值。 |
|
|
|
2002年11月22日 |
|
| |
彻底转变流,第 2 部分:优化 Java 内部 I/O 虽然新的 Java I/O 框架(java.nio)能解决 I/O 支持所具有的多数性能问题,但是它并没有满足使用字节数组和管道的应用程序内部通信的所有性能需求。本文是分两部分的系列文章的最后一篇,Java 密码专家和作家 Merlin Hughes 开发了一组新的流,以补充标准的 Java I/O 字节数组流类和管道流类,在设计中强调以高性能为目标。 |
|
|
|
2002年12月6日 |
|
| |
J2EE 探索者:有状态网络的 J2EE 技术 J2EE 中的 Java servlet 和 Enterprise JavaBeans 组件都提供了有状态服务器端处理。两种技术各有千秋,每种技术都比其它技术更加适合于某些应用程序设置。为了帮助您为您的企业选择合适的解决方案,LearningPatterns 的高级顾问 Kyle Gabhart 比较了这两种技术,并评估了它们在一些常见的有状态应用程序方案中的性能。
|
|
|
|
2003年5月15日 |
|
| |
考虑将 SQLJ 用于 DB2 V8 Java 应用程序 本文介绍了用 SQLJ 开发 DB2 应用程序的概念和步骤,并通过样例代码说明了为什么 SQLJ 是注重安全性、性能和简单性的开发人员所选择的语言。 |
|
|
|
2003年6月16日 |
|
| |
JSP 最佳实践:用 jsp:include 控制动态内容 在文中,作者向您演示了如何扩展 JSP 技术中用于动态内容的包含功能。了解静态 include 伪指令和动态 jsp:include 元素之间的差异,搞清楚如何混合搭配这二者以获取最优性能。 |
|
|
|
2003年7月14日 |
|
| |
JavaOne 2003: 技术会议的摘录 JavaOne总是举行许多有趣的技术会议,但是,今年的JavaOne大会却充满了质量会议;事实上,必须不断举行这些会议以满足大家的需求。developerWorks专栏作者Brian Goetz从其紧张的日程安排中抽出时间,从性能管理会议中摘录出一些比较典型的概念。 |
|
|
|
2003年8月4日 |
|
| |
Web框架设计与实现(一):Maverick 在j2ee项目工程中合理的使用web框架能有效提高工作效率,增强程序的可维护型和可扩展性。目前比较流行的是基于mvc模式的struts结构,但在开源项目的宝库中,除了struts外,还有其他许多独具匠心、性能优异的框架结构,如Maverick WebWork SpringTapestryTurbine等,存在自有存在的理由和价值,只有了解了其他框架的设计思想和性能特色,才能在项目实践中根据客户需求灵活选择更合适的设计框架,本文主要介绍maverick框架的设计与实现。 |
|
|
|
2003年9月10日 |
|
| |
Java 理论与实践:并发集合类 Doug Lea的util.concurrent包除了包含许多其他有用的并发构造块之外,还包含了一些主要集合类型List和Map的高性能的、线程安全的实现。在本月的Java理论与实践中,Brian Goetz向您展示了用ConcurrentHashMap替换Hashtable或synchronizedMap,将有多少并发程序获益。 |
|
|
|
2003年9月15日 |
|
| |
使用 Access Bean 将 SQL EJB 包装器实现成模型助手 本文提供了前一篇文章"使用通用 SQL 实体 EJB 包装器来简化 EJB 开发" 中所描述的包装器的一个样本实现。此外,还对这种方式的性能问题进行了阐述。 |
|
|
|
2003年12月4日 |
|
| |
Java 理论与实践:垃圾收集简史 Java 语言可能是使用最广泛的依赖于垃圾收集的编程语言,但是它并不是第一个。垃圾收集已经成为了包括 Lisp、Smalltalk、Eiffel、Haskell、ML、Scheme 和 Modula-3 在内的许多编程语言的一个集成部分,并且从 20 世纪 60 年代早期就开始使用了。在 Java 理论与实践 的本篇文章中,Brian Goetz 描述了垃圾收集最常用的技术。在以后的几个月,他将分析 1.4 JVM 所使用的垃圾收集策略、不同垃圾收集策略对性能的影响和如何才能(以及如何不能)帮助垃圾收集器取得更好的性能。 |
|
|
|
2003年12月8日 |
|
| |
Java 编程的动态性,第 8 部分: 用代码生成取代反射 从本系列前面的文章中,您了解到反射的性能比直接访问要慢许多倍,并了解了用 Javassist 和 Apache Byte Code Engineering Library (BCEL)进行classworking。Java 顾问 Dennis Sosnoski 通过演示如何使用运行时 classworking,来用全速前进的生成代码取代反射代码,从而结束他的 Java 编程的动态性 系列。 |
|
|
|
2004年6月1日 |
|
| |
标准窗口小部件工具箱的 Java 二维作图 大多数 Java 开发人员同意 Swing/AWT 只有一个方面强于 Eclipse 平台的标准窗口小部件工具箱(Standard Widget Toolkit),这就是 Java 2D。直到现在仍然没有容易的方法将 Java 2D 的快捷性能与 SWT 用户界面组件的更强的可移植性、功能和性能集成到一起,但是这一点就会改变了。在继他的颇受欢迎的介绍从 Swing 应用程序移植到 SWT 的教程之后的这篇文章中,Java 开发人员和 Eclipse 热衷者 Yannick Saillet,展示了在 SWT 组件和 Draw2D 图形中绘制二维图像有多容易。 |
|
|
|
2004年6月21日 |
|
| |
概要分析 SQL 过程-SQL PL Profiler 介绍 使用 Stinger 及 这个 GUI 工具,分析存储过程和复杂应用程序中 SQL 语句的性能。 |
|
|
|
2004年7月26日 |
|
| |
Java 理论与实践: Web 层的状态复制
本月,专栏作家 Brian Goetz 分析了状态复制的一些选项以及如何最有效地使用 HttpSession 以提供好的伸缩性和性能。
|
|
|
|
2004年8月12日 |
|
| |
Trove 集合类 Trove 是一种开放源代码的 Java 集合包,提供了核心 Java 集合类的高效替代品,特别针对于实现其键或值是基本类型的集合。本期性能观察文章中,性能优化专家 Jack Shirazi 和 Kirk Pepperdine 考察了 Trove 类与传统的 Java 集合的区别,以及何时使用 Trove 类。 |
|
|
|
2004年10月21日 |
|
| |
Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制 JDK 5.0 为开发人员开发高性能的并发应用程序提供了一些很有效的新选择。例如,java.util.concurrent.lock 中的类 ReentrantLock 被作为 Java 语言中 synchronized 功能的替代,它具有相同的内存语义、相同的锁定,但在争用条件下却有更好的性能,此外,它还有 synchronized 没有提供的其他特性。这是否意味着我们应当忘记 synchronized,转而只用 ReentrantLock 呢?并发性专家 Brian Goetz 刚从他的夏季休假中返回,他将为我们提供答案。 |
|
|
|
2004年11月14日 |
|
| |
不要忘记内存 尽管 Java 运行时能够解决大量的内存管理问题,但对程序的内存占用情况保持警惕仍然是优化机器性能、测定内存泄露的关键。Windows 上有很多工具可以监控内存的使用。但每种工具各有长短,都有特定的倾向性,常常没有明确地定义自己测量的是什么。作者将澄清关于内存使用的一些常见误解,介绍很多有用的工具,同时还将提供何时以及如何使用它们的指南。 |
|
|
|
2004年11月29日 |
|
| |
IT 架构和应用程序的端到端测试
就在不久之前,工业标准测试实践(针对 C/S 架构的质量问题而发展起来的)仍聚焦于客户端的前端功能测试或者服务器端的后端可伸缩性测试与性能测试。这种"工作上的分离"主要是缘于传统的 C/S(客户端/服务器)架构比当前的多层架构和分布式环境相对简单的事实。在标准的 C/S 架构中,问题要么发生在客户端,要么就发生在服务器端。
|
|
|
|
2005年1月4日 |
|
| |
IBM Rational PurifyPlus for Windows 投资回报分析
IBM Rational PurifyPlus 赋予了开发人员强大的动力,使他们所交付的软件在可靠性、性能和质量方面能够满足用户的期望。PurifyPlus 通过将 Rational Purify 的 bug 查找功能,Rational Quantify 的性能调整作用和 Rational PureCoverage 的测试准确性这三者组合起来,从而提供了三重功效。组合后产品的效益体现在更优质的代码,更快的开发周期和更少的错误这几个方面。
|
|
|
|
2005年1月10日 |
|
| |