java特点及运行编译过程

1 java的特点

1.1 简单性 相对于c++简单,去掉了指针。 真正操作内存的是jvm(java虚拟机) 用c++语言实现的虚拟的计算机,java并不直接接触操作系统。

不容易内存泄漏。但是驾驭感差。假设 c语言是飞机驾驶员,java则是飞机上的乘客。java只是
java底层是c++,所以jvm是用c++语言写好的虚拟电脑。 安装JDK后,JVM就安装好了。

 内存是什么?
    对于计算机来说:最重要的部件
CPU:中央处理器;相当于人类的大脑,负责发送并执行指令,CPU是负责计算的负责运算的。
	10+20=30    cpu负责计算出30,但是计算后10 20 30需要临时空间存储。
              内存:程序运行过程中的临时数据存储空间。    断电或者关机内存数据则消失。
              硬盘:持久化设备,硬盘上的数据不会因为断电而消失。
              主板:相当于人类的躯干,是一个载体。    cpu;内存条;硬盘等都在主板上。
                          主板上有很多线,将这些部件连接起来。

1.2 健壮性 java机制 自动垃圾回收机制(GC机制) 不容易导致内存泄漏,c++和c语言使用不当会导致内存泄漏。
JVM负责调度GC机制,程序员不需要干涉。
几个术语:
JVM:(c++语言写的一个虚拟的计算机)
GC(垃圾回收机制)

1.3 java完全/完美支持多线程并发

1.4 可移植性/跨平台
java只需要编写一次,可以做到到处运行 不需要任何操作,即可在windows OS和mac OS和 linux中运行。 三个都有JVM。
java程序可以一样,但是windows和mac和linux的JVM版本不一样。 中间硬件搭建。
JDK也分为windows和linux和mac版本。 安装JDK就会自带JVM。
优点:一次编写到处运行。 缺点:麻烦。 运行java程序必须要有一个JVM。 就像网页看视频必须要安装flash
java语言可以编写病毒,但是很难让用户中毒,一般中毒都是java程序师。

2. JDK、JRE、JVM

 jdk:java开发工具箱   jre:java运行环境   jvm:java虚拟机  
            JDK包括JRE,JRE包括JVM。 JVM不能独立安装,jdk和jre可独立安装。
           安装JDK时,JRE就自动安装了,JRE安装了,JVM就自动安装了。
           JRE体积很小,安装便捷快速,可用于只测试项目。但是不能用于开发。
           为什么JDK自带JRE?   因为程序开发后需要测试程序,为了让程序运行起来,所以自带。

3 java程序从开发到最终运行经历了什么?

编译期:(可以在windows上)

	第一步:在硬盘的某个位置(随意),新建一个xxx.java文件
	第二步:使用记事本或者其他文本编辑器例如Editplus打开xxx.java文件。
	第三步:在xxx.java中编写符合“java语法规则”的“字节码”
	第四步:保存(一定要将xxx.java文件保存)
	第五步:使用编译器(javac 【jdk安装自带】)对xxx.java进行编译。
	第六步:如果xxx.java源代码符合语法规则,编译通过生成class文件
	              报错之后class不会生成,只有编译通过才有。
		一个源代码文件可以生成几个class文件。(编译实质是在检查语法)			

运行期:(JRE在起作用):(可以在windows上,也可以在其他的os上)

	第七步:如果在linux上运行,需要将windows上生成的class文件拷贝过去
	             不需要拷贝源代码,真正运行的是字节码。(不要删除源代码)		
	第八步:使用JDK自带的一个命令工具:java(负责运行的命令工具)执行字节码。	
	第九步:剩下的步骤就交给JVM了,不需要程序员干涉了。
	JVM会将字节码文件装载进去,然后JVM对字节码进行解释(解释器负责将字节码解释为1010101等二进制。)	
	第十步:JVM会将生成的二进制交给os操作系统,操作系统会执行二进制和硬件进行交互。
	注意:javac命令:负责编译     java命令:负责运行
	小插曲:xxx.java经过编译生成A.classs、B.class、C.class等字节码文件。
	             我们称A是一个类,B是一个类,C是一个类,其中A\B\C是类的名字。

4 对java的加载与执行的理解(理论比较重要)

       java非常重要的两个阶段:  编译阶段   运行阶段
 注意:java程序员直接编写的java代码(普通文本)是无法直接被JVM识别的。
	java程序员编写的java代码这种普通文本必须经过一个编译,将这个“普通文本代码”变成“字节码”,JVM能够识别“字节码”
	  java代码这种普通文本变成字节码的过程称为编译。
	  java代码的这种普通文称为源代码。(编写的代码)  不能直接执行 需要先编译,生成源代码相应的“字节码”,jvm可以识别字节码。
	  
   编译和运行阶段可以在不同的操作系统完成吗 ?
	  在windows上编译
	  编译后生成字节码
	  把字节码放到linux上运行
	   完全可以,因为java是跨平台的,可以一次编写到处运行。
	   
    java源代码一旦编译以后,源代码可以删除吗?只留下字节可以执行吗?
	    完全可以执行,因为源代码不参与程序的执行行程。
	    参与程序执行过程的是字节码。
	    但是最后不要删除源代码。因为有可能执行结果不是自己想要的。
	    当执行结果不是自己需要的时候,可以重新打开源代码进行修改。
	    然后重新编译生成新的字节码,在重新执行。
	    
    放源代码的文件扩展名必须是xxx.java
    并且需要注意的是:编译生成的字节码文件扩展名是:xxx.class
    java文件就是源文件,这个文件中编写源代码。
    class文件就是文字码文件,这个文件是编译源代码而得到的。
     另外需要注意的是:
	一个java源文件是可以生成多个class文件的。
	最终运行的是class文件。
	字节码文件不是二进制。(不然就不需要JVM了)
	操作系统可以直接执行二进制。

推荐:在哔哩哔哩上的动力节点杜老师有一个非常细节的java基础教学视频。讲述非常细节,建议刚开始先去看一看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值