java程序编译后会产生什么

什么是编译 1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。 编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
什么是反编译 计算机软件反向工程(reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
java类的编译与反编译 我们在最初学习java的时候,会接触到两个命令:javac和java,那个时候我们就知道,javac是用来编译java类的,就是将我们写好的helloworld.java文件编译成helloworld.class文件。
class文件打破了c或者c++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。而java class文件是可以运行在任何支持java虚拟机的硬件平台和操作系统上的二进制文件。
那么反编译呢,就是通过helloworld.class文件得到java文件(或者说是程序员能看懂的java文件)
java程序编译后会产生什么 产生:byte code。java字节码是java源文件编译产生的中间文件。
java虚拟机是可运行java字节码的假想计算机 java的跨平台性也是相对与其他编程语言而言的。先介绍一下c语言的编译过程吧先是c语言源程序 也就是c的文件经过c编译程序编译后,生成windows可执行文件exe文件,然后在windows中执行。再介绍java的编译过程先是java源程序扩展名为java的文件,由java编译程序将java字节码文件,就是class文件然后在java虚拟机中执行。机器码是由cpu来执行的。java编译后是字节码, 电脑只能运行机器码。java在运行的时候把字节码变成机器码。c/c++在编译的时候直接编译成机器码。
java源码编译后会生成一种.class文 相信大家已经了解到java具有跨平台的特性,可以“一次编译,到处运行”,在windows下编写的程序,无需任何修改就可以在linux下运行,这是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相关的工作,结果只花了几个星期,iossdk的稳定性大幅提升,解决了多个致命问题。
之所以用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逆向工程的基础。

直连通信应用于自动驾驶场景的频谱需求研究
运算放大器制作移相电路的设计方案
薄膜表面瑕疵在线检测系统拥有强大的缺陷识别功能
静脉可视化“神器”,让护士们轻松搞定抽血输液
齐纳二极管稳压电路_齐纳二极管为什么能够稳压
java程序编译后会产生什么
机械结构件的结构要素和设计方法
PCB需求旺盛:产业链集体受益
荣耀magic价格答案即将揭晓稳稳的超越iphone7
苹果iPhone的新时代,真的随 5G 到来了吗?
华为Y9s手机登陆伊拉克,搭载麒麟710F SoC采用侧面指纹解锁
iPhone8什么时候上市?iphone 8/iphone7s如期发布但是缺货,新功能和价格预测坐等发布会揭晓
采用单片CPLD器件及VHDL源程序实现单个载客箱的电梯控制系统
中国在机器人行业中面临的机遇与挑战
无线充电技术及其在电动汽车行业发展中面临的问题分析
白色版联想小新Pro 13售价比原版高,将于12月25日上架
电阻器与电阻箱的选型指南
VASS标准中急停得接法与控制方法
天马在Micro-LED、Mini-LED等领域的创新成果
SMT组装的详细步骤