从虚拟机视角谈Java应用性能优化
Java
平台已无处不在,Java EE、Java SE、Java ME 和 Java Card,Java
的发展为无数程序员提供了工作机会,都是“Java”,然而除了基本的 Java
语法大都一致外,程序员必须基于不同的平台有不同的考虑,学习不同平台的特点:
不同平台的环境
Java EE 所运行的硬件服务器、操作系统,Java SE 所在 PC 机的体系结构(X86/X64、MAC、SPARC 等),Java ME 所运行的手机或移动设备,Java Card 所在的智能卡芯片类型等;
不同平台虚拟机的特点
如
是否支持多线程(这似乎是毋庸置疑,但是在 Java Card 平台上,由于计算资源相当有限,多线程目前还不被支持),Java EE 和
Java SE 的虚拟机特性几乎相同,而 Java ME
虚拟机(KVM)根据移动设备的特点进行裁剪和优化,以适应于有限的物理内存和存储空间,而根据设备处理能力的强弱还分为 CDC(Connected
Device Configuration,联网设备配置)和 CLDC(Connected Limited Device
Configuration,联网受限设备配置),更小设备和智能卡的虚拟机 JCVM(Java Card
VM)更是裁剪了许多特性,如多线程、许多复杂数据类型的支持、主动的垃圾收集机制等,这甚至导致了对 Java 语法集的裁剪;
不同平台的 API 和可用的第三方库
Java
EE 和 Java SE 是超集与子集的关系,因为她们所处的计算机平台和操作系统目前很好的兼容,而 Java ME 和 Java Card 与
EE 和 SE 是 Totally different,除了 java.lang.*,部分 java.io.* 等核心类库保留外,其他的
API 和类库完全不同。java.microedition.* 和 javax.microedition.* 表明这是 ME
平台,javacard.* 表明这是 Java Card 平台。同时,由于 EE 和 SE
平台的普及程度和开发者人数,使得之上的第三方库十分海量。深入了解和掌握平台的 API 和库是不同平台程序员进阶的必由之路。
从这个角度上说,Java
在不同的平台之间,并不是“一次编写、处处运行”,考虑应用程序的设计和优化的时候,首先要看是在什么平台上,因为源于以上不同的特点,编程模型、设计模式,甚至语言集都不尽相同。在这里我们着重考虑 Java EE 和 SE 的视角,但有很多设计、编程原则和习惯对于所有平台的程序员来说,都适用。
Java 虚拟机
Java 虚拟机是支持 Java 语言运行的基础,避开过多的 JVM 和实现的技术细节,我们对基础架构进行了解,是进行应用程序优化必不可少的。如下图所示:
图 1. Java 虚拟机体系结构
相关文档:
在我机器上安装的是JDK6,下载activeMQ5.3启动时报错,提示jaxb包已经加载2.0版本无法加载2.1版本。
我通过网络搜索了一下发现,jaxb2.0是JDK发布时包含在rt.jar包中的。但是activeMQ5.3却需要2.1版本。这该如何处理?
总不能将rt.jar包解开,将jaxb2.1的类覆盖进去,再重新打包吧。这样太麻烦了。
再次进行网络搜索,发 ......
在CSDN中看到了个有关java技巧的帖子,觉得非常有用,可以避免开发过程中产生的一些低级的错误,帖子本身已经进行了总结,我挑出了其中一些个人觉得平时开发过程中有用的部分,再加上自己在工作中学到的技巧,整理在本文中,并随着时间实时更新
1、写好注释。输入参数、输出类型、方法功能,把这三点描 ......
http://school.itzcn.com/special-spid-50.html
异常跟普通的警告等有一定的区别。当应用程序发生异常时,会中断正在执行的程序的正常指令流。也就是说,发生异常后面的代码将得不到正确的执行。甚至还会触发数据库的回退操作。
在Java开发平台中,异常包括预定义异常与自定义异常。这两种异常的类型互为补充。作为一 ......
A:不带输出参数的
---------------不带输出参数的----------------------------------
create procedure getsum
@n int =0<--此处为参数-->
as
declare @sum int<--定义变量-->
declare @i int
set @sum=0
set @i=0
while @i<=@n begin
set @sum=@sum+@i
set @i=@i+1
end
print ......