javac与java的区别
发布时间:2025-05-25 11:49:53 发布人:远客网络
一、javac与java的区别
1. javac是编译一个java文件的基本命令,通过不同参数可以完成各种配置,比如导入其他类,指定编译路径等。
2. java是执行一个java文件的基本命令,通过参数配置可以以不同方式执行一个java程序或者是一个jar包。
3. javap是一个class文件的反编译程序,可以获取class文件的反编译结果,甚至是jvm执行程序的每一步代码实现。
总结:Javac是编译、Java是执行,编写Java代码后,使用Javac进行编译生成.Class文件,.Class文件使用 Java命令执行代码;
二、java是什么语言
语言我们说的普通话、英语都是语言,语言是一种交流的工具,语言具有创造性和结构性,并且代表一定的意义。比如我说下课了,大家都明白什么意思,证明这个语句的意思表达清楚了,正规的语言在交流上是不能有歧义的。计算机编程计算机编程就是:把程序员的要求和设想,按照能够让计算机看得懂的规则和约定,编写出来的过程,就是编程。编程的结果就是一些计算机能够看懂并能够执行和处理的东西,我们把它叫做软件或者程序。事实上,程序就是我们对计算机发出的命令集(指令集)。Java是一种计算机编程语言首先,Java是一种语言,也就是 Java是用来交流的,那么用来谁和谁交流呢?很明显就是程序员和计算机交流,换句话说把我们的要求和设想用Java语言表达出来,那么计算机能看懂,就能够按照我们要求运行,而这个过程就是我们所说的使用Java编程,所以我们讲 Java是一种计算机编程语言。为了让计算机看懂,Java会有一系列的规则和约定,这些就是 Java的语法。
2、Java是一种软件开发平台什么是软件开发可以简单地理解为:编程的结果是软件或者程序,而编程的过程就是软件开发。软件开发的基本步骤包括:需求分析、概要设计、详细设计、编码、测试、维护等阶段。需求分析:这里指的需求不仅仅是用户需求,应该是开发中遇到的所有的需求。比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据……为了清楚地知道这些需求,你经常要和客户、项目经理以及项目伙伴调查研究,这就是需求分析。概要设计、详细设计:根据软件系统需求完成对系统的设计,确定强壮的系统架构,设计模块层次、用户界面和数据库表结构。编码:开发代码,完成设计的具体实现。测试:利用测试工具按照测试方案和业务流程对产品进行功能和性能测试,对测试方案可能出现的问题进行分析和评估,并修改代码。维护:根据用户需求的变化或硬件环境的变化,对应用程序进行部分或全部的修改。用以下的流程图来表达这个过程:
什么是开发平台?在软件开发的过程中,我们需要很多的工具来辅助我们的工作,不可能什么都从头自己做。我们把编程的环境和相应的辅助工具统称为开发环境,开发平台就是用来提供这个开发环境的。车床工人需要一个车床才能工作一样。
Java是一种开发平台Java不单纯是一个编程的语言,它自身提供了一系列开发 Java所需要的环境和工具,来进行编译、解释、文档生成、打包等,比如:javac.exe、javadoc.exe等等,这些我们后面会讲到,所以我们讲 Java是一个开发平台。3、Java是一种软件运行平台什么是软件的运行平台如同人类需要阳光、空气、水和食物才能正常存活一样,软件最终要能够运行,也需要一系列的外部环境,来为软件的运行提供支持,而提供这些支持的就是运行平台。Java是一种软件运行平台Java本身提供 Java软件所需要的运行环境,Java应用可运行在安装了 JRE(Java Runtime Environment)的机器上,所以我们说 Java是一个运行平台。JRE:Java Runtime Environment,Java运行环境。4、Java是一种软件部署环境什么是软件的部署简单地讲,部署就是安装,就是把软件放置到相应的地方,并且进行相应的配置(一般称作部署描述)让软件能够正常运行起来。Java是一种软件部署环境Java本身是一个开发的平台,开发后的Java程序也是运行在Java平台上的。也就是说,开发后的Java程序也是部署在Java平台上的,这个尤其在后面学习JEE(Java的企业版)的时候,体现更为明显。
三、java和c++的区别
1.指针 \x0d\x0a\x0d\x0aJAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。 \x0d\x0a\x0d\x0a2.多重继承 \x0d\x0a\x0d\x0ac++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。 \x0d\x0a\x0d\x0a3.数据类型及类 \x0d\x0a\x0d\x0aJava是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。 \x0d\x0a\x0d\x0a4.自动内存管理 \x0d\x0a\x0d\x0aJava程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++的new操作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法: \x0d\x0a\x0d\x0aRead r=new Read(); \x0d\x0a\x0d\x0ar.work();\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a语句Read r=new Read();在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收操作,不需要程序员进行删除。而c十十中必须由程序贝释放内存资源,增加了程序设计者的负扔。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。 \x0d\x0a\x0d\x0a5.操作符重载 \x0d\x0a\x0d\x0aJava不支持操作符重载。操作符重载被认为是c十十的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。 \x0d\x0a\x0d\x0a6.预处理功能 \x0d\x0a\x0d\x0aJava不支持预处理功能。c/c十十在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加丁编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c十十预处理器的功能类似。 \x0d\x0a\x0d\x0a7. Java不支持缺省函数参数,而c十十支持 \x0d\x0a\x0d\x0a在c中,代码组织在函数中,函数可以访问程序的全局变量。c十十增加了类,提供了类算法,该算法是与类相连的函数,c十十类方法与Java类方法十分相似,然而,由于c十十仍然支持c,所以不能阻止c十十开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。 \x0d\x0a\x0d\x0aJava没有函数,作为一个比c十十更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。 \x0d\x0a\x0d\x0a8字符串 \x0d\x0a\x0d\x0ac和c十十不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(strinR和stringBuffer)来实现的,这些类对象是Java语言的核心,用类对象实现字符串有以下几个优点: \x0d\x0a\x0d\x0a(1)在整个系统中建立字符串和访问字符串元素的方法是一致的; \x0d\x0a\x0d\x0a(2)J3阳字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分; \x0d\x0a\x0d\x0a(3)Java字符串执行运行时检空,可帮助排除一些运行时发生的错误; \x0d\x0a\x0d\x0a(4)可对字符串用“十”进行连接操作。 \x0d\x0a\x0d\x0a9“goto语句 \x0d\x0a\x0d\x0a“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。 \x0d\x0a\x0d\x0al0.类型转换 \x0d\x0a\x0d\x0a在c和c十十中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c十十中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c十十中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。 \x0d\x0a\x0d\x0a11.异常 \x0d\x0a\x0d\x0aJAVA中的异常机制用于捕获例外事件,增强系统容错能力 \x0d\x0a\x0d\x0atry{//可能产生例外的代码 \x0d\x0a\x0d\x0a}catch(exceptionType name){ \x0d\x0a\x0d\x0a//处理 \x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a其中exceptionType表示异常类型。而C++则没有如此方便的机制。