首页 > 编程知识 正文

java编译和运行的区别(编辑java程序需要什么命令)

时间:2023-05-04 14:12:30 阅读:74213 作者:4013

什么是编译

1 .利用编译器从用源程序语言编写的源程序中生成目标程序的过程。

2、用编译器产生目标程序的动作。 编译是指将高级语言变成计算机可以识别的二进制语言。 计算机只识别1和0。 编译器用二进制语言替换人们熟悉的语言。 编译器将源程序翻译成目标程序的工作过程分为五个阶段。 词法分析; 语法分析; 语义检查和中间代码生成; 代码优化; 目标代码生成。 主要进行词法分析和语法分析,也称为源程序分析,分析过程中会发现语法错误,并给出提示信息。

什么是反向编译

计算机软件逆向工程(Reverse engineering )又称计算机软件恢复工程,“逆向分析、研究”他人软件的对象程序(可执行程序) 导出算法、处理过程、执行方法等设计要素,有时可以导出源代码。 反向编译可以作为自己开发软件时的参考,也可以直接用于自己的软件产品。

编译和反编译Java类

我们最初学习Java的时候,会接触两个命令。 是javac和Java。 那时,我们知道javac将用于编译Java类。 这意味着将我们编写的helloworld.java文件编译成helloworld.class文件。

class文件打破了c和c等语言的传统:通常先编译用c和c等语言编写的程序,然后再连接到特定硬件平台和特定操作系统的单独二进制文件。 通常,一个平台上的二进制可执行文件在其他平台上不工作。 Java类文件是一个二进制文件,可以在支持Java虚拟机的所有硬件平台和操作系统上运行。

那么反编译如何,就是从helloworld.class文件中获得java文件(或程序员可以理解的java文件)

编译java程序时会发生什么

生成:字节代码。 Java字节码是通过编译Java源文件生成的中间文件。

java虚拟机与其他编程语言相比,可以执行java字节码的虚拟计算机java的跨平台性也是相对的。 首先,让我介绍一下c语言的编译过程。 首先,作为c语言源程序的c的文件由c编译器编译,然后生成windows可执行文件exe文件并在windows上运行。 接下来,我们将介绍java的编译过程。 首先,java源程序扩展名为java的文件,java编译器在java虚拟机上运行java字节码文件或class文件。 机器代码由CPU执行。 Java编译后是字节码,电脑只能执行机器码。 Java在运行时将字节码转换为机器码。 C/C在编译时直接编译成机器码。

编译Java源代码时将生成. class语句

你应该知道,Java具有跨平台的特性,“可以一次编译并到处运行”。 在没有任何修改的情况下在Linux上运行Windows上创建的程序,在c和c上很难。

那么,跨平台是如何实现的呢? 这是关于Java虚拟机(JavaVirtualMachine,简称JVM )。

JVM也是软件,版本因平台而异。 我们编写的Java源代码在编译时会生成一个称为字节码文件的. class语句。 Java虚拟机负责将字节码文件翻译为特定平台下的机器代码并运行。 这意味着,只要安装与不同平台对应的JVM,就可以运行字节码文件并运行我们创建的Java程序。

在这个过程中,我们编写的Java程序没有什么变化,只是通过JVM这个“中间层”,可以在不同的平台上运行,真正实现了“一次编译,到处运行”的目的。

我经常在网上看到标题为“Java程序员”、“PHP程序员”、“C/C程序员”的招聘帖子,用这种招聘方法,我觉得很难找到好的人才。 语言只是工具,对于聪明的程序员来说,什么工具都不用主要取决于他本来的工作需要,并不代表他所有的技能。

此外,一个软件产品还包含许多领域的知识,包括网络、数据库、Cache和编译环境工具。 缺乏这些必要的基础知识,很难很好地独立完成一个产品的某些部分。

另一方面,聪明人、对新知识的好奇心、自我驱动意识、找到最适合问题的解决方案的决心是能否成为好程序员的关键。 例如,我担任JPushCTO的时候,一位同事原本在服务器端以C语言为中心进行开发,完全没有iOS开发的经验,但他对iOS开发表现出了兴趣,在服务器端开发中表现出了很好的学习能力。 后来,我把他调到iOS集团,负责iOSSDK和APNs相关的工作,但结果只花了几个星期

之所以使用Java作为标题,一是因为现在以Java语言为中心的工作非常多,而且在学校以学习Java为中心的人也在增加。 但是,从学校发现以学习Java这样的高级语言为中心的人,基础知识薄弱的人很多。 高级语言掩盖了太多细节,提高了生产力,但在学习阶段不利于基础知识的积累。

软件业是一个非常强调人的价值的行业,价值体现在产品的有效前进上,语言只是实现其价值的工具。

编译java文件后包含的信息

java编译

后生成class文件,包括三个部分:

一、类信息

一部分是描述类的信息,包括类的名字、修饰符(public或private)、父类、接口以及注解(annotaTIon)。

二、变量信息

一部分是描述类变量的信息,包括每个变量的名字、修饰符、类型和注解(annotaTIon)。

三、方法信息

一部分是描述类方法的信息,包括每个方法的名字、修饰符、参数的类型和返回值的类型、方法的注解(annotaTIon),还包括编译后的、字节码形式的方法代码。

1、每一个编译后的class文件只包括一个类的信息,如果在java源文件中定义了多个类,在编译后会分成多个独立的class文件。

2、每一个编译后的class文件不包括代码注释;

3、每个编译后的class文件不包括包名(package)和引用(import),所有的非原始类型引用都以全包名形式出现,这称作内部名称或本质名称。

4、每个编译后的class包括一个常量池,这个常量池是一个数组,包括数字、字符和类型的常量。

这些信息通过java提供的Class类能够获取,并通过反射类使用。也是动态编译和java逆向工程的基础。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。