Vincent Partington, (曾在参与过 Apache JServ , the PostgreSQL JDBC driver, MySQL mm.mysql jdbc driver.的开发) , 最近写了一系列的Blog,每篇都探讨了一个可能影响 Java EE application性能的问题. .他注意到,大多数性能问题的起因都是因为错误的使用技术,起因于开发人员没有完全的掌握如何去使用一种技术, Partington这样写道:
Java开发人员应该把性能当作他们的应用软件中的一个重要的质量需求来对待,在项目的从始至终都应该对这个问题保持注意. Java开发人员应该和相关人员一起工作,例如服务器和数据库的管理员,这样能对提高他们的应用的性能很有好处...
Partington在他的性能相关的系列主题文章中 不乏至理名言,下面是他写的将近10篇Blog的每篇的中心思想,由 外刊IT评论 提供.
10. 过多的事件记录
当你做事件记录时有两件事情发生. 首先是大量的字符串操作被执行...然后是把结果写入一个文件...9. 错误的application server配置
J2EE specification麻痹了开发人员,让他们有了虚假的安全感,想一想??只要我的代码和J2EE兼容,它能正确的运行??... 开发人员不应该只是把它们的EAR文件丢给运行系统;开发人员应该和application server管理员一起工作来处理这.....8. 错误的Java EE用法
这个问题在一些老的应用中特别流行,因为几年前POJO/轻量级的解决方案还没有出现.... 像Spring这样的轻量级框架允许开发人员挑选一些必须的基础服务(transactions, security, distributed objects). Java EE... offers all of them all of the time.7. 不必要的使用XML
XML有很多有意思的属性,这导致一般的企业Java应用的功能领域几乎都用到了它.... 不幸的是XML操作是一个很耗CPU和内存的过程.6. 不适当的缓存使用
正确的缓存可以极大的提高你的Enterprise Java application的性能,它甚至是达到可接受的性能水平所必须的.但有时缓存过程本身却导致的你的性能问题.5. 过度的内存使用
过度的内存使用表现的两个方面:大量的地址分配(给短生命周期的对象使用)和每秒钟都有大量的对象.4. 糟糕的执行库
一些开发组很愿意往他们的WEB-INF/lib目录下或者是POM文件里堆砌JAR文件,不管它们是否真的需要这些(也不考虑所需要的功能是否已经被现 有的类库提供了),也不检查这些类库是否能提供很好的性能,也不考虑是否有一种更高效的替代类库,不去研究文档来学会如何正确的使用它们,不明了自己的应 用是如果使用这些类库的.3. 不正确的并发实现
一个主要的原因是竞争锁定,如果有多个线程调用发生这只能会成为一个问题..... 应用程序在执行轻量级的任务时运行的很好,而重负荷是却慢的近乎停止.....2. 不必要的远程操作
一些案例中系统架构被设计成为内置了能够适用某些预期的将来可能出现的功能的功能,可这些预期的功能从来就没有实现...... 因为需要调用其他的系统和程序,Enterprise Java applications往往会使用远程操作,不必要的远程操作是伤害Enterprise Java applications效率的重要原因.1. 错误的数据库用法
许多的企业Java项目里,数据库只是被当作一个简单的装字节的容器,DBA被当作一个只是在产品机器前执行SQL语句的人. 这种对数据库以及数据库专家的轻视导致了恶劣的应用程序执行效率.....
What's the source of your #1 enterprise Java performance problem?