精华内容
下载资源
问答
  • 该资源内涵详细的编码步骤和实现代码,以及代码运行结果和ppt,非常详细。
  • 运行通啦费诺编码程序代码实验运行通过
  • 在哪里可以找到java web(ssi,ssh,ssm等)的项目代码并可以运行拿来学习?
  • 初探JAVA代码在虚拟机中的运行机制

    千次阅读 2018-08-04 00:06:13
    作为一名Android程序员,我们都知道Java代码有很多种运行方式,比如:可以命令行中运行,可以开发工具中运行,可以以jar文件的形式运行,甚至可以网页中运行。这些执行的方式都离不开JRE(Java Runtime ...

    前言

    从这篇文章开始,后面我们将持续介绍JAVA虚拟机的工作原理。作为一名Android程序员,我们都知道Java代码有很多种运行方式,比如:可以在命令行中运行,可以在开发工具中运行,可以以jar文件的形式运行,甚至可以在网页中运行。这些执行的方式都离不开JRE(Java Runtime Environment) 即Java运行时环境。
    我们平时开发之前搭建环境安装的JDK里面也有JRE,下面这张图片中我们可以看出JRE包含Java虚拟机和Java的一些核心组件库。
    图片来源于网络

    什么是JAVA虚拟机

    我们常说我们写的代码是在JAVA虚拟机上运行的,到底什么是Java虚拟机昵?

    JAVA虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算功能来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还有相应的指令系统。JVM屏蔽了与具体操作系统平台的相关信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在各种平台上不加修改的运行。

    这么说固然没有毛病,但是感觉有些笼统,感觉这篇文章中写的不错:

    深入理解Java虚拟机到底是什么

    JAVA为什么要在虚拟机里运行

    Java是一门语法复杂,抽象程度很高的高级程序语言。因此,直接在硬件设备上运行Java语言并不可行。所以,在运行Java之前我们要将Java语言进行转换。
    将它转换成硬件能够识别的语言,目前这种转换的主流思想是:设计一个面向Java语言特性的虚拟机,并通过编译器将Java程序转换为该虚拟机所能识别的指令序列,也就是Java字节码。之所以叫Java字节码是因为Java字节码指令的操作码(opcode)被固定为一个字节。
    我们写一个简单的HelloWorld.java的程序,编译成字节码就是下面图中的中间一列,可以看到它是由一个个字节组成的。并且我们可以将其反汇编为人类可读的代码格式。相对于C语言来说Java版本的反汇编结果相对比较精简,这是因为Java虚拟机相对于物理机而言,抽象程度更高。

    # 最左列是偏移|中间列给虚拟机读的机器码|最右列是给人读的代码
    0x00: b2 00 02     getstatic java.lang.System.out
    0x03: 12 03        ldc 'Hello, World!'
    0x05: b6 00 04     invokevirtual java.io.PrintStream.println
    0x08: b1           return
    

    Java虚拟机可以由硬件实现,但更为常见的是在各个现有平台(WINDOWS_x64,Linux_aarch64)上提供软件实现。这么做的意义在于,一旦一个程序被转换为JAVA字节码,那么它便可以在不同平台上的虚拟机实现里运行。这就是所谓的“一次编写,到处运行”。

    虚拟机的另一个好处是它带来了托管环境(Managed Runtime)。这个托管环境能够代替我们处理一些代码中冗长而且容易出错的部分。其中最广为人知的当属于自动内存管理和垃圾回收,这部分内容催生了一波垃圾回收调优的业务。

    除此之外,托管环境还提供了诸如数组越界,动态类型,安全权限等的动态检测,使我们免于书写这些与业务无关的代码。

    JAVA虚拟机具体怎么运行Java字节码

    下面以标准JDK中的HotSpot虚拟机为例,从虚拟机以及底层硬件两个角度,探索Java具体怎么运行Java字节码的。

    虚拟机角度

    从虚拟机角度来讲,执行Java代码首先要将.java文件编译成class文件加载到Java虚拟机中。加载后的Java类会被存放于方法区(Method Area)中。实际运行时,虚拟机会执行方法区内的代码。这和段式内存管理中的代码段类似。Java虚拟机也在内存中划分出堆和栈来存储运行时数据。
    不同的是,Java虚拟机会将栈细分为Java方法栈和本地方法栈,以及存放各个线程执行位置的PC寄存器。
    图片来源于网络
    在运行过程中,每当调用一个java方法时,Java虚拟机会在当前县城的Java方法栈中生成一个栈帧,用来存放局部变量及字节码的操作数。这个栈帧的大小时提前计算好的,而且Java虚拟机不要求栈帧在内存里连续分布。

    当退出当前执行的方法时,不管是正常返回还是异常返回,Java虚拟机均会弹出当前线程的当前栈帧,并将之舍弃。

    硬件角度

    从硬件角度来看,Java字节码无法直接执行,所以Java虚拟机需要将字节码翻译成机器码。
    在HotSpot里面,上述翻译过程有两种形式:第一种是解释执行,即逐条将字节码翻译成机器码并执行;第二种是即使编译(Just-In-Time compliation ,JIT)即将一个方法中所有的字节码翻译成机器码后再执行。
    图片来源于网络
    前者的优势在于无需等待编译,而后者的优势在于实际运行速度更快。HotSpot默认采用的是混合模式,综合了解释执行和即时编译两者的优点。它会先解释执行字节码,而后将其中反复执行的热点代码以方法为单位进行即时编译。

    JAVA虚拟机的运行效率

    HotSpot虚拟机采用了多种技术来提升启动性能以及峰值性能,前面所说的即时编译就是最重要的技术之一。即时编译建立在程序符合二八定律的假设上(就是程序中20%的代码占据80%的资源)。对于占据大部分的不常用的代码,我们就不需要花费时间将其编译成机器码,而是采用解释执行的方式执行;另一方面占据小部分的最常用到的代码,我们采用即时编译将其编译为机器码,来达到理想的运行速度。

    从理论上来讲,即时编译后的Java程序的执行效率是可能超过C++程序的。这是由于与静态编译相比,即时编译拥有程序的运行时信息,并且能够根据这个信息作出相应的调优。举个例子,我们都知道虚方法是用来实现面向对象语言多态性的。对于一个虚方法调用,尽管他有很多个目标方法,但在实际运行过程中可能只调用其中的一个。这个信息可以被即时编译利用从而减小虚方法调用的开销,从而达到比静态编译的C++程序更高的性能。

    为了满足用户在不同场景的需要,HotSpot内置了多个即时编译器:C1、C2和Graal。Graal是Java10引入的实验性即时编译器。为什么会引入这么多编译器,就是为了在编译时间和生成代码的执行效率之间取舍。

    1. C1编译器叫做Client编译器,主要面向的是对启动性能有要求的客户端GUI程序,采用的优化方案简单,因此编译时间较短。
    2. C2又叫Server编译器,面向的是对峰值性能有要求的服务器端程序,优化手段相对比较复杂,所以编译时间较长,但是相对来说编译生成的代码执行效率高。

    从JAVA7开始,HotSpot采用分层编译的方式:热点方法首先会被C1编译,而后热点中的热点会进一步被C2编译。为了不干扰应用的正常运行,HotSpot的即时编译放在额外的编译线程中进行的,HotSpot会根据CPU的数量设置编译线程的数目,并且按照1:2的比例配置分配给C1和C2。在计算资源充足的情况下,字节码的解释执行和即时编译可同时进行。编译完成后机器码会在下次调用该方法时启用,以代替原本的解释执行。

    小结

    前面提到几个问题:

    1. Java代码为什么要在虚拟机中运行?

    因为Java提供了可移植性,一旦Java代码被编译为Java字节码,就可以在不同平台上的Java虚拟机实现上运行。此外处理机还提供了一托管环境,帮我们处理一些冗长而且容易出错的事物,如内存管理等。

    2. Java代码如何在虚拟机中运行?

    Java虚拟机将内存分为5个部分方法区,堆,Java方法栈,本地方法栈,PC寄存器。Java代码编译生成的class文件,首先需要加载到方法区中,然后才能在Java虚拟机中运行。

    3. Java虚拟机的效率怎么样?

    1、理论上讲,Java虚拟机的执行效率可能高于C++程序。
    2、为了提高运行效率,标准JDK中HotSpot虚拟机采用混合执行的策略。它会解释执行Java字节码,将其中反复执行的热点代码以方法为单位进行即时编译,翻译成机器码后直接运行在底层硬件上。
    3、HotSpot装载了多个不同的即时编译器,以便在编译时间和生成代码的执行效率之间取舍。

    感谢

    深入拆解JAVA虚拟机–郑雨迪

    展开全文
  • 代码在线运行

    千次阅读 2019-01-10 14:08:52
    Node.js代码在线运行 PHP代码在线运行 Java代码在线运行 C语言代码在线运行 Shell代码在线运行 C++代码在线运行 Ruby代码在线运行 Lua代码在线运行 Python代码在线运行 Go语言代码在线运行 ...
    展开全文
  • 如何vscode中运行html代码

    万次阅读 多人点赞 2019-10-13 17:13:26
    如何vscode中运行html代码: 点击vsCode软件左边的扩展功能键,点击open in browser的install按钮,之后鼠标右键就出现了open in default browser键,点击即可运行vscode中所写的html代码,F12看控制台打印信息。 ...

    如何在vscode中运行html代码:
    点击vsCode软件左边的扩展功能键,点击open in browser的install按钮,之后鼠标右键就出现了open in default browser键,点击即可运行vscode中所写的html代码,F12看控制台打印信息。在这里插入图片描述

    展开全文
  • 单片机程序运行在哪里

    千次阅读 2018-10-12 19:02:29
    单片机运行的时候,是运行在哪里? FLASH(ROM)?还是RAM。 这就需要我们了解上一篇的内容,单片机的运行视图和加载视图@jonah_king。 我们程序的运行其实是由多种方式的,不过一般常见的有两种。 运行在ROM里的和...

    想必,很多人会对这个问题有困惑?
    单片机运行的时候,是运行在哪里? FLASH(ROM)?还是RAM。

    这就需要我们了解上一篇的内容,单片机的运行视图和加载视图@jonah_king。

    我们程序的运行其实是由多种方式的,不过一般常见的有两种。
    运行在ROM里的和运行在RAM里的。

    一般比较小的系统,也就是说,单片机本身内部就有FLASH的。这种FLASH不同于通用的FLASH,他是支持随机地址访问的。这样的单片机,一般程序都存储在FLASH里,然后运行的时候,PC指针也可以到固定的FLASH地址里去取指令,所以呢,程序是运行在FLASH里的。

    还有一类,是相对比较大一些的系统,这些系统的程序,相对来说都是比较大的,单片机也都是比较强大的。
    他们的FLASH一般都是外挂的大FLASH,这样的FLASH就有个特点,不支持随机地址访问,必须一页一页的访问,这样的话,程序就不能运行在FLASH里,因为下一条指令会招不到。 怎么办呢,那就有办法啊,RAM支持随机地址访问啊,我们把FLASH里面的内容搬移到RAM里,就可以了,这样访问起来就会更快了。

    通俗点来讲呢,我们说一个电脑的内存有多大,就是这个RAM,我们的系统和程序都是在那4个G里运行这的。
    所以啊,一般说来,一个操作系统的内核,其实是没有太大的。

    说白了,就是一些简单的单片机,他的FLASH支持随地地址访问,为了降低程序,程序就运行在了FLASH里面了。

    展开全文
  • Java代码是怎么运行

    万次阅读 2018-07-24 21:29:50
    Java代码有很多运行方式。 开发工具中运行 双击jar文件运行 命令行中运行 网页中运行 当然,上述运行方式都离不开JRE, 也就是Java运行时环境。 JRE仅包含Java程序的必须组件,包括Java虚拟机...
  • 如何用安卓手机运行Python代码

    万次阅读 多人点赞 2021-04-15 22:44:03
      天天都PC端运行Python代码的我,今天突然灵光一现,想着是不是能够移动端运行Python代码呢?如果能够实现的话,家里的废旧手机就有用武之地了。 2. 安装环境 2.1 安装APK   根据搜索和调研,需要安装以下...
  • sublime中直接运行python代码

    万次阅读 多人点赞 2018-10-07 19:56:34
    有两种方法可以sublime中直接运行python代码。 1)非交互式程序写完代码保存后直接按ctrl+B,如只有输出的程序。 2)交互式程序需要下载SublimeREPL,如需要输入的的程序。   1. 非交互式程序 1)设置: ...
  • 控制台运行ruby文件代码

    千次阅读 2018-01-26 17:13:07
    1.前提是已经安装配置好ruby的运行环境,没有安装的话去...2.1首先打开记事本,写ruby代码,这里我只写了一句输出hello,Ruby!的语句,然后保存,保存的文件后缀名一定是.rb  这里我的文件名是test.rb 保存的位置是E
  • 代码在线运行网站

    万次阅读 2018-08-17 17:33:52
    综合各代码在线运行 https://c.runoob.com/compile http://www.dooccn.com/  http://code.y444.cn Python反编译 https://tool.lu/pyc/ PHP在线运行 https://c.runoob.com/compile/1 ...
  • Eclipse下运行Jmeter3.0源代码

    千次阅读 2016-08-25 11:13:55
    使用eclipse对jmeter的源代码进行二次开发,并且使用eclipse工具运行jmeter的源代码
  • public class MyService extends Service { ...如果我通过service返回的MyBinder进一步返回了service的实例,调用service的普通方法haha(), 这算是代码运行在service中吗? 怎样才算是代码运行在service中?
  • Java代码如何虚拟机中运行

    千次阅读 热门讨论 2021-05-15 01:03:41
    前面 本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请评论区帮忙指出,谢谢!...实际运行时,虚拟机会执行方法区内的代码。 Java 虚拟机内存中划分出堆和
  • html,代码记事本上可以运行,可webstorm上无法运行,刚接触不懂啊 ![图片说明](https://img-ask.csdn.net/upload/201705/15/1494820576_742176.jpg)
  • 代码在pycharm中一直运行不出结果 原因:一些import的模块没有被调用,python一直检索,所以后面的代码无法执行。 举例:如下图所示 把置灰的import代码删除掉,便可以打印出数据了。 ...
  • 直接浏览器运行Python代码

    万次阅读 2016-11-29 15:05:23
    到这个链接将代码下载到本地,然后打开cmd,使用python运行此文件,然后不要关闭窗口: https://raw.githubusercontent.com/michaelliao/learn-python3/master/teach/learning.pycmd操作E:\python\code>python ...
  • Vscode设置终端运行代码

    千次阅读 2019-11-28 15:01:50
    首先需要安装 Run Code插件,点击设置,搜索设置中输入:runInTerminal,打勾试一下
  • 用Notpad++编写JAVA代码在控制台运行出现乱码,是因为字符编码的问题
  • 下载和运行GitHub上的代码教程总结

    万次阅读 多人点赞 2018-06-16 19:27:35
    如何运行你下载的项目(下面演示前端运行的基本步骤--->具体情况具体分析!)。 一般你下载的项目文件里会有README.md文件,里面会提供你启动项目的方法,但需要注意的是: 如果你没有安装node.js和npm的话,建议...
  • HTML网页中插入输入框,输入框内容或代码可点击"运行代码"运行浏览器看到运行输入框内代码效果。此HTML代码由表单代码textarea和简单JS代码实现。 HTML代码: textarea name="textarea" cols="60" rows=...
  • python 代码运行时间获取方式

    千次阅读 多人点赞 2020-09-15 02:01:08
    我们知道为了提高代码运行速度,我们需要对书写的python代码进行性能测试,而代码性能的高低的直接反馈是电脑运行代码所需要的时间。这里将介绍三种常用的测试代码运行速度的方法。 第一种:使用time模块对代码的...
  • html文件中运行php代码

    万次阅读 2016-01-21 18:35:27
    html文件中运行php代码 当访问一个网页时,服务器会根据文件扩展名来判断如何处理页面,一般来说,当检查到扩展名为htm或html时,服务器将文件直接呈现到浏览器端,不做任何处理;如果检测到扩展名是PHP、shtml、...
  • 1.notepad++中直接运行python代码 1.第一种:打开Notepad++;点击插件,点击​plugin manager,点击showplugin manager,找到“pynpp”,install。运行时直接打开文档,点击插件->pynpp->run file in python就...
  • Colab上运行GitHub代码

    千次阅读 2020-03-10 17:33:53
    1、 首先第一步新建notebooks,同时修改GPU,一下步骤是打开打算存放文件的文件夹 ...2、复制GitHub上的代码到colab上 首先要复制你GitHub上面复制网址 !git clone https://github.com/keras-team/keras....
  • Android设备上运行纯java代码

    万次阅读 2018-11-23 09:10:59
    Android通过java虚拟机实现运行每个app,不过Android的应用程序都是运行在Context上下文环境中的,从没Android应用的代码中看到main方法,那普通的java程序如何Android中运行. google对java虚拟机进行了修改,只能...
  • VS2017运行代码时,总是运行代码,解决方法 运行时总是运行出旧代码,必须要重新生成才可以。 解决方法:1、打开工具 2、选项 3、项目和解决方案 4、生成并运行 改成始终生成 就可以啦、、、、、 ...
  • PCL 代码运行时间计算方法汇总

    万次阅读 2021-05-10 19:37:38
    PCL中常用代码运行时间计算方法汇总
  • tomcat下运行java代码

    万次阅读 2016-07-01 18:31:11
    那么问题来了,怎么tomcat下使用java代码呢?我之前都是以工程的方式使用的,现在单独一个个建设,不懂怎么处理。于是,上传查了一下。 一、步骤区 1、搭建tomcat。 2、设置jsp的配置(运行jsp文件)。 3、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,606,105
精华内容 2,242,442
关键字:

代码在哪里运行