Java跨平台原理分析

本文详细介绍了Java的跨平台特性,包括Java字节码和虚拟机的角色,以及与C语言跨平台的区别。此外,还展示了如何使用Java定时器Timer和TimerTask实现定时任务,提供了一个简单的起床闹钟示例。
摘要由CSDN通过智能技术生成

Java跨平台原理

  • Java为什么能够流行

  • 外部环境

  • 互联网的爆发式发展

  • 互联网上的电脑硬件不同,软件环境差异较大。需要一 个跨平台的语言。

  • Java核心优势

  • 跨平台

Java运行过程

  • Java程序的运行分为两步:先编译再解释执行

  • 通过“编译器”将Java源程序编译成Java 字节码文件(.class)(字节码文件采用结构中立 的中间文件格式)

  • 通过不同的“虚拟机”将Java字节码文件解释为对应机器语言并执行

Java跨平台和C跨平台的区别

  • Java:一次编译,到处运行 C:多次编译,到处运行

  • 在互联网情况下,平台各异,Java的跨平台更具有优势

  • Java可以跨所有平台吗:要看有没有提供并安装相应的虚拟机

  • Java的运行速度没有C语言快

  • Java需要将class文件解释成机器码再执行;C执行执行机器码

字节码文件bytecode

  • class文件 二进制文件

  • 格式中立、平台无关的二进制文件

  • 是编译的产物,是解释的原料

Java虚拟机 JVM

  • JVM是Java Virtual Machine(Java虚拟机)的缩写

  • JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿 真模拟各种计算机功能来实现的。

  • JVM就是一个虚拟的用于执行bytecodes字节码的计算机

  • Java虚拟机是Java最核心技术,也是跨平台的基础。

  • Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在 Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

  • Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能 够“一次编译,到处运行”的原因

JDK、JRE、JVM的区别联系

  • JDK:

  • Java Development Kit

  • 针对Java开发员的产品

  • JRE:

  • Java Runtime Environment

  • 是运行Java程序所必须的环境集合

  • JVM

  • Java Virtual Machine

  • 解释运行Java字节码文件,跨平台的核心

联系:JDK 包含JRE,JRE包含JVM。

JAVA定时器基础教程

        在我们工作当中总有需要按时间计划执行简单任务的情况,例如定时进行商品的抢购,闹钟功能等。下面我们来讲解一下JAVA自带的入门级定时器 Timer是如何实现定时器功能的。首先给大家介绍一下Timer类: JAVA定时器任务的执行需要两个基本的类:

  • java.util.Timer;

  • java.util.TimerTask;

Timer类:的作用是设置计划任务,而封装任务内容的类是TimerTask类.此类是一个抽象类,继承需要实现一个run方法.

通过查文档我们看到Timer有以下几个构造函数:

Timer的方法以下这么多:

JAVA定时器-代码实例

/**
 * 定时器要执行的任务 ,需要继承 TImerTask接口
 * 
 * 输出 主人该起床了!!!!
 * 
 * @author mayou18.com
 *
 */
public class MyTask extends TimerTask {
    @Override
    public void run() {
        // TODO Auto-generated method stub
        
        System.out.println("主人该起床了!!!!");
        
    }
}
/**
 * 创建定时器 Timer 
 * 
 *  2017年10月30日 6:30分  启动任务
 * 
 * @author mayou18.com
 *
 */
    public static void main(String[] args) {
        
        Timer timer=new Timer();
        
        //在 2017年10月30日 6:30分  启动任务
        timer.schedule(new MyTask(), new Date(2017,10,30,6,30));
        
        //这个是用来停止此任务的,否则就一直循环执行此任务     
        while(true){
            try{     
                int in = System.in.read();    
                if(in == 's'){ 
                    //使用这个方法退出任务
                    timer.cancel();     
                    break;  
                }     
            } catch (IOException e){     
                // TODO Auto-generated catch block     
                e.printStackTrace();     
            }     
        }     
        
    }

Java学习视频分享

Java基础:

Java300集,Java必备优质视频_手把手图解学习Java,让学习成为一种享受

Java项目:

【Java游戏项目】1小时教你用Java语言做经典扫雷游戏_手把手教你开发游戏

【Java毕业设计】OA办公系统项目实战_OA员工管理系统项目_java开发

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值