字节码文件:不包含硬件信息,完全与硬件平台无关,因此,无法直接由操作系统来运行。

Java应用程序的执行过程:代码装入、代码检验、代码执行。

1、代码装入:由类装配器完成,装入程序运行时所需的所有源代码(包含调用到的其他类),装入后该类被放在自己的命名空间。此时该类对其他类不再依赖,运行系统可以根据这些类,确定运行程序的内存布局;

2、代码检验:由字节码验证器进行安全检查,确保字节码正确无误;

3、代码执行:执行方式有两种。一是解析执行方式,通过“解释器”,将字节码翻译为要求平台的机器码,然后,传送到“运行支持器”的机器码被其送往硬件进行执行。执行过程一边编译,一边执行,称为解释执行。Java一般都采用这种方式;二是即使编译方式:代码生成器可以将字节码一次性的全部编译为适用于要求硬件平台的机器码,最后送往硬件进行执行。针对于对速度要求很高的程序,Java采用这种方式。

Java虚拟机(JVM):虚拟软件平台。为了能让编译生成的字节码更好的解释执行,通常将其划分为6个功能模块:JVM解释器、指令系统、寄存器、栈、存储区和碎片回收区。

JVM解释器:字节码转换成CPU执行的机器指令;

指令系统:与硬件计算机相似;

寄存器:4个常用的32位寄存器:pc(程序计数器)、optop(操作数栈顶指针)、frame(当前执行环境指针)、vars(执行第一个局部变量的指针);

栈:JVM栈是指令执行时数据和信息存储的场所和控制中心,它提供给JVM解释器运算所需的信息;

存储区:JVM存储区用于存储编译后的字节码信息,提供处理的原料;

碎片会收取:将使用后的Java类的具体实例从内存中进行回收,实现自动化释放内存。

JVM的运用让Java实现了“一次编译,处处运行”,它是整个运行系统的核心。

JDK:是Sun公司房补的免费的Java开发工具,有三个成员:J2EE、J2SE、J2ME;

J2EE:用于可扩展的企业级应用Java 2平台之上;

J2SE:用于工作站和PC机的Java标准平台之上;

J2SE:用于嵌入式消费电子平台之上。

若按其运行的操作系统划分:JDK分别有for Windows、for Linux、for Solaris和MacOS等不同版本。(JDK自身向下兼容)

初学java,遇到的陌生词语(1)的更多相关文章

  1. 初学 Java Web 开发,请远离各种框架,从 Servlet 开发

    Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处 理有关,形成一个基础,在开发别的应用项目的时候则可以从 ...

  2. 初学Java的那段日子

    最近因为一个朋友想要学习Java,在帮助他找教程的过程中回想到了我自己当年学习Java的那段岁月,故写了此篇文章总结了一下初学Java所必须要掌握的知识点,然后把一部分常见的面试题罗列出来.给予刚刚开 ...

  3. 初学Java web(转)

    转自 http://www.oschina.net/question/12_52027 OSCHINA 软件库有一个分类——Web框架,该分类中包含多种编程语言的将近500个项目. Web框架是开发者 ...

  4. 初学java之12 泛型编程的个人理解总结

    首先,强调一个观点: 对于我这样的初学者,一定要站在虚拟机和编译器的角度来分析java 语言的种种特性,泛型也不例外.(我认为这个一条正确的学习经验) 写这篇文章起源于最近在学java,有一天在路上和 ...

  5. 谈初学Java历程

    学习Java一个月左右,本来很早就想好好静下心来写一点东西了.但由于不想手写,文档写了不知道放在哪好,所以一直拖着.最近注册了博客园,还是挺方便的. 即将大学毕业了,则面临了所以大学生所面临的问题,就 ...

  6. 初学Java 精简知识点总结

    面对Java丰富的知识资料,很多初学者难免觉得迷惘,该学什么,怎么去学?下面给大家讲Java基础知识做了精简总结,来帮助你梳理学习思路,赶快看看吧! 方法/步骤1 对象的初始化(1) 非静态对象的初始 ...

  7. 初学JAVA的 感想 尹鑫磊

    开始学习任何一门课(包括java),兴趣最重要.一直觉得自己在学计算机编程语言,学习了很多,但每门语言都停留在知识边缘地带,都没深入到它们的精华部分,对它们的精华部分知之甚少,于是趁学校开设这门课,并 ...

  8. 初学JAVA 感想

    开始学习任何一门课(包括java),兴趣最重要.一直觉得自己在学计算机编程语言,学习了很多,但每门语言都停留在知识边缘地带,都没深入到它们的精华部分,对它们的精华部分知之甚少,于是趁学校开设这门课,并 ...

  9. 初学java注解编程 记录错误及解决办法

    1 :在form表单提交到controller层时 利用hbim的封装的访问数据库 form表单中属性要加上method方法 不然不成功. 2 :在运行eclipse时 有时粘贴个数据或者删除个字段老 ...

随机推荐

  1. 【Stage3D学习笔记续】山寨Starling(十):高效游戏设计、纹理集和ATF

    我发布了经过批处理优化的v0.3版,点击下载:https://github.com/hammerc/hammerc-study-Stage3D/archive/v0.3.zip 先看看我们批处理优化后 ...

  2. iOS7 人机界面设计指南

    iOS7 人机界面设计指南     苹果在WWDC 2013大会上发布了iOS 7,新系统一改5年来的拟物路线,在乔纳森•艾维的主导下,加入了更多的“扁平化”和“极简”现代设计元素. iOS7系统界面 ...

  3. nginx编译参数集合

    http://www.ttlsa.com/nginx/nginx-configure-descriptions/ 标题是不是很欠揍,个人认为确实值得一看,如果你不了解nginx,或者你刚学nginx, ...

  4. JAVA使用EPoll来进行NIO处理的方法(转)

    JDK 6.0 以及JDK 5.0 update 9 的 nio支持epoll (仅限 Linux 系统 ),对并发idle connection会有大幅度的性能提升,这就是很多网络服务器应用程序需要 ...

  5. [C语言(VC)] 打造自己的键盘记录器 (zaroty)

    说起键盘记录,想必很多朋友都用过网上流传的一些键盘记录软件吧,但是有没有想过自己写一个呢?也许你会想:会不会很复杂啊?我可以很负责的告诉你,写键盘记录是很简单的.你所需要的仅仅是懂得一些C语言的DLL ...

  6. appDelegate中的委托协议方法以及使用观察者模式获取其触发方法

    //当应用程序将要进入非活动状态执行,在此期间,应用程序不接受消息或事件,比如来电 - (void)applicationWillResignActive:(UIApplication *)appli ...

  7. 分析Model2系统心得

    分析Model2系统心得 前言:观摩他人的项目,学到一些新的.实践经验呀!!! 1.  怎样使用字符串处理类?从页面获取的Form类或者字段取值时使用. 2.在验证用户身份时,先推断username, ...

  8. ThinkPHP3.1快速入门(13)自动完成

    自动完成是ThinkPHP提供用来完成数据自动处理和过滤的方法,使用create方法创建数据对象的时候会自动完成数据处理.因此,在ThinkPHP使用create方法来创建数据对象是更加安全的方式,而 ...

  9. http的get与post方式下的getParameter获取中文

    客户端提交某个中文参数,比如a=中国 (1)如果以GET方式提交,在地址栏中,可以看到参数进行了URL ENCODE,形如:a=%E4%B8%AD%E5%9B%BD.服务端接收到请求,使用reques ...

  10. nginx+tomcat动静分离的核心配置

    #所有jsp的页面均交由tomcat或resin处理 location ~ .(jsp|jspx|do)?$ { proxy_set_header Host $host; proxy_set_head ...