计算机智能识别机器码0101…编程语言->能执行的机器码 需要经过 预处理->编译->汇编->链接->机器码 过程。一个语言处理系统的示意图如下: 编译器是将 源语言程序一次性翻译 成一个等价的,用目标语言编写的程序。还存在另一种常见的语言处理器, 解释器 :它是 逐个语句的执行源语言程序 。由一个编译器产生的目标语言程序通常比一个解释器快,但解释器的错误诊断效果通常更好。 Java语言处理器结合了编译和解释的过程。一个 .Java 源程序首先被编译为 .class 字节码文件,被加载到虚拟机中,然后由虚拟机将字节码翻译成机器码。 虚拟机的好处在于:一旦一个程序被转换成 Java 字节码,那么它便可以在不同平台上的虚拟机实现里运行。实现 一次编写,到处运行 。另外一个好处是它带来了一个 托管环境 。这个托管环境能够代替我们处理一些代码中冗长而且容易出错的部分,如自动内存管理与垃圾回收。 在Hotspot中, 虚拟机翻译字节码 有两种方式: 1.解释执行:即逐条将字节码翻译成机器码并执行。 2.即时编译:即将一个方法中包含的所有字节码编译成机器码后再执行。 前者的优势在于无需等待编译,而后者的优势在于实际运行速度更快。HotSpot 默认采用混合模式,综合了解释执行和即时编译两者的优点。它会先解释执行字节码,而后将其中反复执行的热点代码,以方法为单位进行即时编译。 即时编译建立在程序符合二八定律的假设上,也就是百分之二十的代码占据了百分之八十的计算资源。 好了,装X结束。 阿姨知道的编译知识全在上面了。。(っ╥╯﹏╰╥c) 如题,下面我们来看一下让Java项目运行起来我们能做什么。 我们能做的很简单,当然不是写虚拟机。我们只需要: 也就是 执行command :) Java程序可以通过java命令 运行.class文件 或 运行可执行Jar文件 。我们先看第一种方式:从Hello World开始。 运行.class文件 Step1:编写Java文件 Step2:执行 command javac 将.java文件变为.class文件 小贴士:class文件的全路径名是包名目录+ 类文件名。 Step3:执行 command java 运行.class文件 神奇,我们没有用IDE让Java程序运行起来了 :) 小伙伴先别喷老阿姨,哪特么有这么简单的Java项目啊。。我们工作中用的明明都是Jar文件啊… Jar文件咋运行啊!! 运行可执行Jar文件 Jar文件是基于ZIP文件格式的一种文件格式,它将大量的Java类文件、相关的元数据和资源(文本、图片等)文件聚合到一个Jar文件中,此外还包含一个可选的 META-INF文件夹 。这个文件夹下的文件或文件夹主要用来打包和扩展配置信息,包括安全,版本,扩展程序和服务等。如 MANIFEST.MF 文件定义了扩展和打包的相关数据信息。一个Jar文件通常在项目中用作第三方类库使用,也是项目构建的一部分。 生成一个Jar文件大致分为两步: 1.将源文件编译为.class文件 2.通过 command jar 命令,将.class文件,资源文件等等打成一个文件格式的Jar文件。 我们以一个SbDemo项目为例来看Jar文件的打包和运行。项目目录结构如下: Test2.java中调用了Test1.java的方法 我们需要先 将Test1.java编译并打成一个Test1.jar文件,然后通过Test1.jar将Test2.java编译并打成一个可执行的Test2.jar文件 。 可执行和不可执行的Jar文件 区别在于是否在Jar文件中指定了main方法的入口,我们后面再看。 Step1:Test1.java的编译 Step2:将编译后的classes/com/Test1.class文件打成一个Test1.jar包 Java中和jar包相关的命令是 jar命令 ,生成一个jar包我们需要定义 信息文件(manifest-file),它可以定义所生成jar包的classpath类搜索路径,jar包的入口类等等。可以理解为 与Jar包相关的元数据配置信息 。 Step2.1 书写信息文件 这里我们使用 是的,Test1.java太简单了,就是打成一个可被他人引用的jar包,信息文件不重要。 Step2.2 执行打包命令 Step3. 编译Test2.java文件 因为Test2.java中引用了com.Test1类,所以我们需要在编译时指定Classpath路径。 Classpath:顾名思义,是指待编译类依赖的类所在路径位置。我们可以通过 javac 的 -cp 参数指定。 关于 编译时classpath的值优先级 如下: 这里我们使用-cp指定Test1.jar所在位置 可以看到classes目录下已经生成了com2/Test2.class文件了。 Step4. 将编译后的Test2.class和它依赖的Test1.jar一起打成一个可执行的Jar包 Step4.1 书写信息文件 这时候我们使用信息文件 Step4.2 执行Jar包生成命令 可以看到在lib目录下生成了Test2.jar Step5.运行我们的可执行Jar 大功告成了,我们的SbDemo项目Run起来了… 当然实际项目不可能人肉编译,打包。我们需要通过Maven/Gradle等构建工具,帮助我们管理代码之间的Jar包依赖,构建,部署…我们可能大多时候通过点一下IDE就托管了Maven的构建部署命令。 拿Maven举例子,Maven首先定义了一套项目结构,我们按照它的结构书写代码,引入各个模块所需要的Jar包依赖。然后Maven可以通过自己的生命周期管理项目的清理,构建,打包,部署阶段。每个阶段有对应的Maven插件执行相应的目标。IDE又整合了Maven,使我们通过点吧点吧按钮就完成了项目的运行。 但是当一个项目并没有按照规范的构建工具结构搭建,或者项目没有成功运行报错时,了解Java实际的编译运行过程会对理解、解决这类问题有所帮助。 文中提到的命令均可通过 command -help 进一步了解可用参数,如 javac -help ~
Java程序的运行方式
resources/manifest-test1.text文件 作为信息文件
resources/manifest-test2.text文件指定这些信息
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算