Java的跨平台性

来源:互联网 发布:java 读取hdfs文件 编辑:程序博客网 时间:2024/06/05 03:08

大家都知道高级语言是需要“翻译”成机器语言后才能与机器交流,我们所熟悉的java,C,C#,ruby,python等都是高级语言,当然都是需要翻译之后才能被计算机所识别并反馈交流。怎么“翻译”,有2种方式,一种是编译,一种是解释,两者各有优缺点。

一、什么是编译

     编译就是源代码经过编译器并生成目标文件,然后执行目标文件后输出结果。编译性语言如c,c++,c#,编译的时候如果源代码有错误,将无法生成目标文件,直到代码无语法错误,这样的话可以一次编译,N次执行,执行效率高,但是因为编译性语言的目标文件只能在对应平台中的编译器中执行,想让其在另外一个平台上运行,只能将源代码移植到相应的平台上,重新编译,那么再次编译的时候可能会因为资源库的不同导致编译失败,进而重新修改代码再次编译,这样的话实现跨平台的难度就会增大。

二、什么是解释

      解释就是源代码经过解释器后直接输出结果,不生成目标文件。解释语言如htm,js等,解释性语言因为不是预先编译,所以只有到执行的时候解释器才会知道是否有语法错误(经常报的js错误就是这种?),而且因为每执行一次就会“翻译”一次,导致重复“翻译”,执行效率不高,但是执行速度很快,而且解释性语言跨平台很容易,只需要有相应平台的解释器即可,不需要修改源代码即可运行。


总是编译性语言,解释性语言各有利弊,编译性语言执行效率高,安全性强,适用于效率高的系统,解释性语言开发速度快,简单,灵活,一般用于开发网站前台或者性能要求不高的网站。


三、Java语言是编译-解释性

  java不是真正的编译语言,也不是真正的解释性语言,是编译+解释性的,java的编译过程是:源代码经过编译生成字节码文件(.class文件,该文件不能直接执行),然后在解释器中执行.class文件并输出结果。编译生成的.class文件是于平台无关的,不面向平台,只面对jvm(可以理解为解释器),只要有对应平台的解释器就可以运行.class文件,因此java是编译一次,即可到处运行,很好地实现了跨平台。



以上是初学java的一点总结!若有错误,欢迎指正。

0 0