A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 多多米 中级黑马   /  2015-1-24 13:05  /  2319 人查看  /  28 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

话说卤煮在某年某时某月看见过这么一个关于哥伦布环游世界的小故事。
      1492年,哥伦布发现了新大陆。从海上回来,他成了西班牙人民心目中的英雄。国王和王后也把他当作上宾,封他做海军上将。可是有些贵族瞧不起他,他们用鼻子一哼,说:“哼,这有什么希罕?只要坐船出海,谁都会到那块陆地的。”
       在一次宴会上,哥伦布又听见有人在讥笑他了。“上帝创造世界的时候,不是就创造了海西边的那块陆地了吗?发现,哼,又算得了什么!”哥伦布听了,沉默了好一会儿,忽然从盘子里拿个鸡蛋,站了起来,提出一个古怪的问题:“女士们,先生们,谁能把这个鸡蛋竖起来?”
       鸡蛋从这个人手上传到那个人手上,大家都把鸡蛋扶直了,可是一放手,鸡蛋立刻倒了。最后,鸡蛋回到哥伦布手上,满屋子鸦雀无声,大家都要看他怎样把鸡蛋竖起来。
       哥伦布不慌不忙,把鸡蛋的一头在桌上轻轻一敲,敲破了一点儿壳,鸡蛋就稳稳地直立在桌子上了。
    “这有什么希罕?”宾客们又讥笑起哥伦布来了。
    “本来就没有什么可希罕的,”哥伦布说,“可是你们为什么做不到呢?”
      宾客们一个个强词夺理:“鸡蛋都破了,那算什么呢?”
      哥伦布却继续保持不以为然的态度:“我在刚开始定条件时,曾有说过不允许把鸡蛋敲破?”
      宾客们一时哑口无言.
本系列的主题的帖子,仅仅针对新手,因为卤煮现在在JAVA方面也是新手。
每个人都说视频里面讲过,但是有谁在论坛当中总结过呢?
视频讲过那是视频的,就像写程序一样,某一个功能有人写出来有人写不出来,写不出来的人说写出来的人的代码简单,自己也想到过,但是为什么写不出来功能的那位,你当初就没这么写呢?

鄙人只是把一些大家相对可能会遗漏的地方补充整理出来。
我的目的只是想大家能热烈讨论,更多的思维才能碰撞出更多的火花。
话说这些都是卤煮看了老毕001-006这六个视频总结出来的笔记,各处找资料,亲们好歹给点面子。
不喜勿喷!

言归正传,本帖将会的问题如下:
1、Java语言的运行机制如何?
2、什么是JVM?有什么作用?工作机制?
3、什么是JRE(J2RE)?

评分

参与人数 1技术分 +3 收起 理由
杨佳名 + 3

查看全部评分

28 个回复

倒序浏览
计算机高级编程语言按照程序的执行方式分为:编译型语言和解释型语言
    编译型语言:专门的编译器,针对特定的操作系统将源程序代码一次性编译为计算机能识别的语言(C、C++)
解释型语言:使用专门的解释器,将源程序代码逐条地解释成特定平台的机器指令,解释一句执行一句(PHP、ASP等)

Java字节码具有平台无关性,所以可以跨平台,只是Java虚拟机需要对应相应平台
Java语言并不属于以上分类,Java是编译型和解释型的综合体
首先,Java采用通用的编译器将源程序编译为与平台无关的字节码文件(class文件)
然后,Java虚拟机(JVM)对字节码文件解释执行
下图为Java代码的具体的执行过程:
C:\Users\Administrator\Desktop\1.png

3、什么是JVM?有什么作用?工作机制?
定义:
     JVM(Java Virtual Machine)意思为Java虚拟机。可在实际计算机上模拟各种计算机功能。有自己完善的硬件架构,例如处理器、堆栈和寄存器等还具有相应的指令系统。

作用:
     JVM中类的装载是由类加载器(ClassLoader)和它的子类实现,其负责在运行时查找和装入类文件的类。
     1、JVM是Java字节码的执行引擎,为Java程序的执行提供必要的支持。
     2、优化Java字节码,使之转化为更有效率的机器指令。
     3、JVM屏蔽了与具体操作系统相关的信息,Java程序生成能够在JVM上运行的字节码文件(class文件),JVM负责将每一条要执行的字节码送给解释器,解释器再将相应的字节码转化为对应平台的机器指令并执行,由此实现跨平台。(不同平台,不同的JVM)

工作原理:
JVM在整个JDK中处于最底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的操作系统环境。
操作系统中的JVM通过JDK中的java.exe来实现,主要通过以下步骤:
(1)创建JVM装载环境和配置
(2)装载jvm.dll
(3)初始化jvm.dll
(4)调用JNIEnv实例装载并处理class类
(5)运行Java程序

4、什么是JRE(J2RE)?
简介:JRE是Java Runtime Enviroment的简称,及Java运行时环境,是Java程序运行的必要环境集合,主要由:Java虚拟机、Java平台核心类以及若干支持文件组成。
Sun公司的JRE产品包括:Java Runtime Enviroment和Java Plug-in Java Runtim Enviroment两部分,是可以运行、测试和传输应用程序的Java平台。
如果需要在浏览器中运行Java Applet程序,JRE需要辅助软件:Java Plug-in。该软件可以使Java Applet和JavaBeans组件在使用Sun公司的JRE环境的浏览器环境中运行。该软件可以在Navigator和IE中,微软自带的虚拟机对Java环境支持并不完全,最好安装一个Sun公司的JRE或者JDK。

JRE的版本管理:
同一台计算机上安装多个不同版本的JRE并不影响程序的运行,因为控制台使用java.exe工具执行java程序时,操作系统将按照如下顺序查找JRE环境:
(1)先查找当前目录下是否有JRE
(2)再查找父目录下是否有JRE
(3)接着再在环境变量PATH指定的路径中查找JRE
(4)注册表HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Enviroment\查看 CurrentVersion的键值指向哪一个JRE
最常用的是在PATH中查找JRE环境,一般情况下,每一种Java软件在运行之前都会在批处理文件之中临时设置PATH值,然后把自己使用的JRE路径放置在PATH路径的最前端,所以肯定会使用自带的JRE,不会造成版本混乱

JRE的基础类库:
JRE自带的基础类库主要在JRE\lib\rt.jar文件中,该文件包括JAVA 2平台中运行的所有类库,与JRE的版本一致。
程序运行时,ClassLoader查找和加载程序引用到的基类库和其他类库。
基类库:ClassLoader会自动到rt.jar中加载(操作系统通过PATH环境变量定位JRE,再确定基类库的位置)
其他的类库:ClassLoader在环境变量CLASSPATH中指定的路径搜索,按照先来先到的原则搜索,放在CLASSPATH前面的类库优先被搜到
由此可知:在JAVA程序启动之前,先设置好PATH和CLASSPATH的环境变量
回复 使用道具 举报
Java代码具体执行过程
回复 使用道具 举报
哥们 你这挖掘的东西实在太深了啊  完全跟不上啊{:3_50:}
回复 使用道具 举报
看到头大,不太懂。
回复 使用道具 举报
我为你着迷 发表于 2015-1-24 14:46
哥们 你这挖掘的东西实在太深了啊  完全跟不上啊

擦  每一东西都研究一下嘛   归纳一下
回复 使用道具 举报
Hzw同学 发表于 2015-1-24 15:35
看到头大,不太懂。

你就当顺序看
回复 使用道具 举报
沉了么?
回复 使用道具 举报
太细致了啊      
回复 使用道具 举报

程序本身就要细致
回复 使用道具 举报
看之前回帖
回复 使用道具 举报

呃  神马意思?
回复 使用道具 举报
好的资料,看一遍加强记忆了
回复 使用道具 举报
邓士林 发表于 2015-1-24 21:59
好的资料,看一遍加强记忆了

常看常新
回复 使用道具 举报
什么情况 有点不太懂  讲的深啊
回复 使用道具 举报
cuixinfu 发表于 2015-1-24 23:13
什么情况 有点不太懂  讲的深啊

实话实说,这真是不深
回复 使用道具 举报
现在大家都学哪儿?
回复 使用道具 举报
学渣表示技术分完全无从下手啊
回复 使用道具 举报
哇去,这么精辟,到位
回复 使用道具 举报
enjoy 中级黑马 2015-1-27 11:26:34
20#
牛逼啊!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马