各种不同版本之Java 程序的开发
各种不同的Java 版本,在其支援的核心类别函式库之完整性以及所支援的 Java 基本型别这两件事情上都有所差异,也就是说,不管您开发的是企业所使用的Java 程序、嵌入式装置上执行的Java 程序、浏览器上执行的Applet ,或是在PC 上执行的应用程序。您都必须在您的电脑上先安装 J2SE ,然後再安装各种版本的核心类别函式库以及额外的扩充类别函式库,如此才能成功地开发各种不同目的的Java 程序。J2SE所提供的Java 编译器(javac.exe)可以帮助我们编译各种不同平台上的Java 程序,而J2SE 所提供的Java 虚拟机器(java.exe)则可以帮助我们在PC 上先行测试这些程序执行结果的正确与否。另外,Java 编译器并不会帮您检查您的程序是否符合各种平台上所支援的核心类别函式库与 Java基本型别。举例来说,虽然我们在前面说过,Smart Card 版本并不支援boolean 、byte 以外的Java 基本型别,而且该平台也只支援java.lang.*核心类别,可是当我们在撰写 Smart Card 平台上的程序时,就算在程序码里头用了boolean 或byte 以外的Java 基本型别,或者使用了java.lang.*之外的其他核心类别,编译器仍然可以照常帮您编译出类别档。这个时候大家一定开始产生疑惑 --那么这些程序如果放到Smart Card 上头执行的时候,出了问题怎么办 ? 难道不会造成Smart Card 上的虚拟机器执行时发生错误吗 ? 针对这个可能发生的潜在问题,Sun Microsystems 在各种不同版本的开发套件中,有些会内附检查器 (checker)或者预先审核器 (preverifier),这两个工具可以帮助您在将程序放到目标平台之前先做好检查和预先审核的工作。检查器会帮您找出类别档之中不合目标平台规格的部分,并提醒你这些地方可能无法在目标平台上执行。因此只要有检查器的协助,您大致上可以确定您的程序可以符合目标平台的规定并顺利执行。 Java Card 的开发套件中就附有检查器。
而某些平台的开发套件则附有预先审核器,预先审核器除了做检查器做的工作之外,还有一项额外的工作,就是减轻目标平台上虚拟机器的负担,要解释预先审核器这个额外的工作,在传统的 Java 程序之中,为了安全上的考量,任何进入执行环境的类别档 (不管该类别档是来自本机或是远端机器 ),都必须先经过Byte Code 审核器(Byte code verifier)的验证,以防止程序在传送途中遭到恶意的修改,而使得 Java 程序在执行时对系统有不良影响。经过审核之後,该类别档才能开始被Java虚拟机器所执行。如果这个审核的动作在一般的 P
相关文档:
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Test {
public static void main(String arg[]) {
String fileName ......
一直想实现像DriverManager那样的getConnection方法,通过此方法就可以获得连接,而且还不用指定Driver,但前提是Driver已经通过Class.forName()或new Driver()进行了加载。今天终于得以实现。
package quiz;
import java.lang.reflect.Field;
public class Cl ......
1、Timer介绍
建立任务:使用Timer调度的任务应该继承TimerTask抽象类,该类实现Runnable接口,因些具备多线程的能力,实现该接口的run方法,该方法是需要高度的任务执行体。
调度任务:调度任务通过Timer类完成,调度任务通过schedul方法完成,查一下java doc文档:
Java代码
void schedule(TimerTask task, Date tim ......
(1).public static String StrReplace(String rStr, String rFix, String rRep)
{
int l = 0;
String gRt ......