javac相关知识
-
深入分析Java Web-04-Javac编译原理编译过程 我们写的Java代码最终都会被编译成二进制文件class来执行,本篇文章将会讲解Java源代码是如何转化为class字节码的。对Javac的编译过程进行讲解。 Javac编译器的作用就是将符合Java语言规范的源代码转化成符合Java虚拟机规范的Java字节码,而如何实现这个过程,是下面需要讨论的问题。 1.词法分析,我们所写的Java代码,只有符合语法规范才能通过编译。识别if、else、for、while等关键词,识别哪些是关键词,哪些不是。 2.语法分析,判断语法是否符合规范,例如if括号里是不是一个布
-
Java基础14:离开IDE,使用java和javac构建项目前言:本文教你怎么用javac和java命令,讲解了classpath的原理,以及如何利用脚本(shell或bat)进行项目部署,离开ide,还原最本质的Java编译运行过程,并用简单的实例展示这些用法。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech喜欢的点一下星哈谢谢。文章首发于我的个人博客:https://h2pl.github.io/2018/05/01/javase14更多关于Java后端学习的内容请到我的CSDN博客上查看:https://blog.csdn.net/a724888IDE是把双刃剑,它可以什么都帮你做了,你只要敲几行代码,点几下鼠标,程序就跑起来了,用起来相当方便。你不用去关心它后面做了些什么,执行了哪些命令,基于什么原理。然而也是这种过分的依赖往往让人散失了最基本的技能,当到了一个没有IDE的地方,你便觉得无从下手,给你个代码都不知道怎么去跑。好比给你瓶水,你不知道怎么打开去喝,然后活活给渴死。之前用惯了idea,Java文件编译
-
Java 源代码编译成 Class 文件的过程分析原文链接:http://www.codeceo.com/article/compile-java-source-code-into-a-class-file.html在上篇文章《Java三种编译方式:前端编译 JIT编译 AOT编译》中了解到了它们各有什么优点和缺点,以及前端编译+JIT编译方式的运作过程。下面我们详细了解Java前端编译:Java源代码编译成Class文件的过程;我们从官方JDK提供的前端编译器javac入手,用javac编译一些测试程序,调试跟踪javac源码,看看javac整个编译过程是如何实现的。1、javac编译器1-1、javac源码与调试javac编译器是官方JDK中提供的前端编译器,JDK/bin目录下的javac只是一个与平台相关的调用入口,具体实现在JDK/lib目录下的tools.jar。此外,JDK6开始提供在运行时进行前端编译,默认也是调用到javac,如图:javac是由Java语言编写的,而HotSpot虚拟机则是由C++语言编写;标准JDK中并没有提供java
-
Java项目中的classpath路径学习详解在dos下编译java程序,就要用到classpath这个概念,尤其是在没有设置环境变量的时候。classpath就是存放.class等编译后文件的路径。 javac:如果当前你要编译的java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-classpath参数,通过使用以下三种类型的方法 来指导编译器在编译的时候去指定的路径下查找引用类。 (1).绝对路径:javac -classpath c:/junit3.8.1/junit.jar Xxx.java (2).相对路径:javac -classpath
javac相关课程
javac相关教程
- 1.1 Java 中的编译 在 Java 中,程序不是直接被编译为可执行文件,而是被编译为字节码文件, JVM(Java虚拟机)在运行时执行字节码文件。当我们使用 javac 编译器时,Java 源代码文件被编译为字节码文件,字节码文件以扩展名 .class 的形式保存在磁盘上。当程序运行时,字节码文件将被转换为机器代码,并在内存中执行。总的来说,Java 源代码需要被“转换”两次才能被计算机执行:Java 源代码被编译为字节码:由 javac 前端编译器完成;字节码被编译为机器码:由 JVM 的执行引擎完成。下图描述了一个Java程序从编写到编译,再到执行的步骤:
- 2.2 创建多行字符串 自Java 13 以后,我们可以使用三引号来表示一个多行字符串,被官方称为“文本块”。文本块常用来表示多行的或大段的文字。例如:public class StringTest3 { public static void main(String[] args) { String str = """ Java 很棒! 慕课网很棒!! 能够在慕课网学 Java 更棒!!!"""; System.out.println(str); }}Tips:这里需要注意的是,文本块中起始的三引号后面要另起一行,也就是说下面这种写法是错误的:String str = """Java 很棒! 慕课网很棒!! 能够在慕课网学 Java 更棒!!!""";如果我们直接使用javac命令编译代码,将会报错:javac StringTest3.javaStringTest3.java:4: 错误: 文本块 是预览功能,默认情况下禁用。 String str = """ ^ (请使用 --enable-preview 以启用 文本块)1 个错误报错告诉我们:文本块是预览功能,默认是禁用的。我们可以给编译器加上一些参数来编译执行代码:$ javac -source 14 --enable-preview StringTest3.java$ java --enable-preview StringTest3Java 很棒!慕课网很棒!!能够在慕课网学 Java 更棒!!!
- 2.1 自动化构建 我们在写 Java 的时候,如果没有构建工具,我们需要在控制台,通过javac先将 Java 文件编译为 class 文件,然后再用jar命令将 class 文件打包为 jar 包。有了自动化构建工具只需要一个命令或是点一个按钮就可以打出 jar包。试想下如果 Android 我们不用 Gradle 命令或是按运行按钮打包。那么我们得执行多少命令才能最终打出一个 apk 包。所以自动化构建帮我们做了很多事。
- 2. 字符串的连接 我们可以使用加法运算符+将字符串和任意其他的数据类型进行连接操作。可以将两个或多个字符串连接在一起,例如:418运行结果:$ javac StringJoinTest1.java$ java StringJoinTest1Hello 慕课网!我们还可以将字符串与其他类型的值相连接,例如:419运行结果:小明今年10岁了,他的身高为132.5cm我们知道加法运算符除了可以连接字符串,也可以进行数学的加法运算。那我们再来看一个实例:420试想屏幕上将会得到什么结果呢?编译执行代码:$javac StringJoinTest3java StringJoinTest100200这里结果没有打印300的原因很简单: 按照从左到右的执行顺序,(空字符串 + 数值100)的运算结果应该是字符串100,然后再运算(字符串100+数值200),其最终结果为字符串100200。由于运算中有字符串的存在,+运算符在这里用于字符串的连接而不是数值的计算。试想,如果将表达式中的操作数倒过来(即b + a + ""),将得到什么结果呢?
- 3. 小结 本小节我们一起完成了第一个 Java 程序的执行,在这个过程中,我们了解了编译相关的知识,知道了使用 javac命令,可以将一个.java扩展名的源代码文件编译成.class扩展名的字节码文件,使用 java 命令,可以执行字节码文件。我们也对程序的基础语法有了大致的了解。如果你对程序的理解还有困惑,也不必担心,在后面的章节中,我们将具体学习 Java 的基础语法,随着知识的累积,你也将更加游刃有余地阅读、编写程序。
- 1.2 快速执行一个程序 1.2.1 准备工作为了确保我们人生中第一个 Java 程序能够顺利执行,请首先确认你已经完成了下面两件事情:已经在你的电脑上成功安装 JDK;有一个文本编辑器。(如 Windows 的记事本,Unix 的 vim)。1.2.2 编写源代码新建一个文本,输入如下内容,将其命名为 HelloWorld.java并保存426Tips:文件名必须与类名同名(类名就是上面第一行代码中class后面的HelloWorld),并且扩展名为 .java,文件名和类名都区分大小写,所以请确保文件名和类名大小写保持一致;类的命名约定以大写字母开头;上述代码中的所有符号,请使用英文半角;别忽略了代码第三行结尾的分号;。下面为实操中的截图。打开记事本,输入源代码:点击文件 -> 保存,将文件保存到磁盘(此处保存在桌面上),注意:这里要将文件名命名为HelloWorld.java,保存类型选择所有文件,编码选择UTF-8:1.2.3 编译后执行现在,打开你常用的命令行工具。(如 Windows 上的命令提示符、MacOS 上的终端),并进入你刚刚保存 Java 源代码的目录。在Windows搜索栏中输入cmd即可打开:使用cd命令,进入到我们刚刚保存源代码的目录(即进入到桌面目录cd Desktop),使用dir命令,查看目录下内容:使用javac命令编译源代码:javac HelloWorld.java执行编译命令后,你会发现同一目录下会生成一个HelloWorld.class文件,这个HelloWorld.class就是我们说的字节码文件。接下来就是通过 JVM 执行字节码文件了,输入下面的命令:java HelloWorld如果一切正常,你会看到屏幕上输出如下内容:祝贺你!成功执行了第一个 Java 程序!Tips:javac 是编译器,而 java 是虚拟机,先使用 javac 编译器编译源代码,再使用java虚拟机执行字节码文件。这就是我们上面提到的 java 源代码被转换两次到执行的过程。java 命令后面的参数是类名。换句话说,我们只需要给虚拟机传递类名作为参数即可,虚拟机会自动查找对应的以.class为扩展名的文件并且执行。
javac相关搜索
-
j2ee
j2ee是什么
jar格式
java
java api
java applet
java c
java jdk
java list
java map
java script
java se
java socket
java swing
java switch
java web
java xml
java 程序设计
java 多线程
java 环境变量