java代码为什么要编译 java为什么要编译
各位老铁们好,相信很多人对java代码为什么要编译都不是特别的了解,因此呢,今天就来为大家分享下关于java代码为什么要编译以及java为什么要编译的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
Java 为什么要编译为字节码
Java最初设计的时候,跨平台就是一个重要的目标,所谓「一次编写,到处运行」。而为了实现跨平台,就决定了不能像 c,c++那样直接把源代码编译成可执行文件,因为不同cpu,不同操作系统的指令封装格式是不一样的。
而为了实现跨平台,一般有两种方案,第一是直接执行源代码,第二是像现在 Java这样编译成一个中间格式文件,即 class文件,这两种方案各有优劣,现在说一下编译成中间代码的优点,class文件相比较于 Java源码文件,有两个优点:
class文件内容设计的更加紧凑,方便 JVM执行,也方便网络传输(最初 JAVA的一个重要应用就是 applet,在当年网络不是很放大的年代,程序的体积还是要挺重要的)
方便其它语言执行。现在 JVM上就有除了 Java外大量的第三方语言,比如 scala,Clojure等等。其它语言只要编译成 class文件即可像 Java一样在 JVM上执行。
java为什么要编译
因为java的跨平台特性,java所谓的一次编译,到处运行,关键就是在于java的虚拟机,也就是jvm,jvm只认识字节码,所以你写好的java代码就需要编译成字节码才能在jvm上运行。其实不只是java需要编译,C也需要编译,机器本身并不能认识你写的代码,它们只认识0、1这样的字节码,所以无论是你用什么样的语言编写的代码,要想最终在物理机器上运行,都要进行编译。
我们为什么要用Java
第一、Java提供了丰富的类库,可以帮助我们很方便的开发Java程序。
第二、面向对象的面向对象可以说是Java最重要的特性,所以它支持继承、重载、多态等面向对象的特性。Java语言的设计是完全面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。
第三、健壮的Java致力于检查程序在编译和运行时的错误。Java也是一种强类型的语言,其类型检查比C++还要严格。类型检查帮助我们检查出许多开发早期出现的错误。Java自己负责内存管理,提供了垃圾内存回收机制,有效避免了C++中最头疼的内存泄漏问题。
第四、安全的Java的安全性可从两个方面得到保证。一方面,在Java语言里,删除了指针和释放内存等C++功能,避免了非法内存操作。另一方面,通过Java的安全体系架构来确保Java代码的安全性。当我们从网上下载Java代码在本地执行时,Java的安全架构能确保恶意的代码不能随意访问我们本地计算机的资源,例如:删除文件,访问本地网络资源等操作都是被禁止的。
小白求助,编译是什么,为什么需要编译
人与机器交流(即人让计算机按照人的意愿做事)依赖于语言
语言的层次是:自然语言->高级编程语言->汇编语言->机器码
人最熟悉的肯定是自然语言(就是你平时说的话)。
而计算机的cpu只认识二进制的机器码,机器码指导计算机做什么操作(如逻辑运算)。
高级编程语言跟自然语言的关系更近些,对人来说相当于自然语言的白痴版,如java中的对象与类的概念可能对应于现实世界的某种事物,如C语言中的函数可能对应了一个功能,比如打印文件,经过简单的训练,人也能大概的读懂。
汇编语言和机器码更接近些,每个汇编指令一般都会对应一条机器码,而高级编程语言中的一个语句(如if else什么的)可能会对应多条汇编指令,汇编指令一般就是算术运算(如add)、逻辑运算(如and)、数据传送(如mov)、条件判断、跳转等,只能用这些简单功能的汇编指令组合来完成一个复杂的功能。人看懂汇编就很吃力了,更别提用汇编来完成想要的功能,太吃力,这个过程还是交个编译器比较好。
而机器码对于一般的程序员来说,就是天书,也基本没人愿意去看。
自然语言最容易表述人们的要求,当用户用自然语言表述了需要的功能后,从自然语言到高级语言的转换过程由程序员来完成,而由高级编程语言到汇编、由汇编到机器码的过程都由编译器来完成,由编译器完成的这个过程也就是编译了。
高级编程语言的代码经过编译阶段成为汇编代码,汇编代码经过汇编阶段变成机器码,机器码文件经过链接阶段变成可执行文件(.exe)。一般编译是指的编译阶段和汇编阶段的组合,编译器的工作一般是编译和链接。
这就是我的理解,希望你帮到你。
文章分享结束,java代码为什么要编译和java为什么要编译的答案你都知道了吗?欢迎再次光临本站哦!