惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
D
Docker
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客
美团技术团队
V
V2EX
Last Week in AI
Last Week in AI
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Microsoft Security Blog
Microsoft Security Blog
Microsoft Azure Blog
Microsoft Azure Blog
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
B
Blog RSS Feed
博客园_首页
B
Blog
博客园 - 叶小钗
I
InfoQ
WordPress大学
WordPress大学
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
The Register - Security
The Register - Security
MyScale Blog
MyScale Blog
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Latest news
Latest news
W
WeLiveSecurity
T
The Exploit Database - CXSecurity.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
C
CXSECURITY Database RSS Feed - CXSecurity.com
Recent Commits to openclaw:main
Recent Commits to openclaw:main
N
News and Events Feed by Topic
S
Secure Thoughts
The Hacker News
The Hacker News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News

博客园 - 停留的风

SpringBoot入门 【SQL实践】其他常用SQL汇总 2017年考研英语二真题与答案(最新) oracle基础教程(8)oracle修改字符集 Oracle 异常处理汇总 领域驱动(DD)目录 [开源项目]Hibernate基本使用 Oracle基本教程 系统架构研究目录 设计原则目录 Oracle 备份与还原 Oracle 物理备份--rman Oracle 使用SqlPlus管理 Oracle 用户管理与权限控制 oracle 科普 Java基础--serialVersionUID 开源项目学习历程 开源项目学习记录 Eclipse 常用快捷键
Java基础--Java语言介绍
停留的风 · 2015-12-04 · via 博客园 - 停留的风

Java是一种半编译半解释的语言。
1、编译阶段
使用指令:javac
这个阶段,Java编译器(也就是JVM:java虚拟机,后称JVM),首先把你的代码加载完成,然后开始检查语法。此后会产生.class文件,这种文件无论是是在哪种平台上(window、Linux)此.class文件均是相同的,具有跨平台性。
2、解释执行阶段
使用指令:java
这个阶段,JVM将执行java代码,JVM是运行于操作系统之上的,它屏蔽了不同系统之间的差异。

jvm有两种执行方式,一种是解释执行,就是临时把字节码翻译成本地码再执行,另一种是固化执行,就是第一次执行字节码吧字节码解释成本地码然后保存本地码,以后不再解释字节码而直接执行本地吗。
两种方式各有优劣,第一种效率比较慢,但是节省磁盘与内存空间,对于一些内存与磁盘小的平台,如手机或者小型的电子仪器,他们没有足够的内存和磁盘;第二种执行效率快,但是比较消耗内存以及磁盘资源,对于磁盘以及内存资源充足的机器,就可以这样执行来提高程序运行速度。

解释执行与编译执行区别

A、解释程序
所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。
就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提交硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。


B、编译程序
这是一类很重要的语言处理程序,它把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。 编译程序工作时,先分析,后综合,从而得到目标程序。所谓分析,是指词法分析和语法分析;所谓综合是指代码优化,存储分配和代码生成。为了完成这些分析综合任务,
编译程序采用对源程序进行多次扫描的办法,每次扫描集中完成一项或几项任务,也有一项任务分散到几次扫描去完成的。
下面举一个四遍扫描的例子:
第一遍扫描做词法分析;
第二遍扫描做语法分析;
第三遍扫描做代码优化和存储分配;
第四遍扫描做代码生成。

值得一提的是,大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件,但也有的编译程序则先产生汇编语言一级的符号代码文件,然后再调用汇编程序进行翻译加工处理,最后产生可执行的机器语言目标文件。


在实际应用中,对于需要经常使用的有大量计算的大型题目,采用招待速度较快的编译型的高级语言较好,虽然编译过程本身较为复杂,但一旦形成目标文件,以后可多次使用。相反,对于小型题目或计算简单不太费机时的题目,则多选用解释型的会话式高级语言,如BASIC,这样可以大大缩短编程及调试的时间