`

关于跨平台问题,什么是ByteCode

阅读更多

不论是C还是C++
都会有依赖平台与实现的不同
比如int的大小
由于C以及C++库功能基本都是最简化的
所以基本没法开发什么比较有用处的可移植代码.
比如GUI的不同,socket实现的不同等等
都制约了C++的可移植性
如果你要写一个完全可以跨平台编译的代码
只能依靠标准库来写,那样这个程序的功能就一定非常有限.
当然也有一些跨平台的库可以使用.
比如GUI方面的wxWidgets等等

不过尽管如此.我们还是可以做一些工作来方便移植工作
不要假想平台的硬件环境,
如果你要做一些对字节操作或者位操作的内容
最好注意big   endian以及small   endian问题
不同的平台实现不同.
不要假想字节长度
int的大小是32,但是不同实现里面可能有不同的长度.
这依赖实现,虽然大多数的实现都使用几乎相同的标准
尽量不要操作底层的内容
基于上面两条,我们可以得出可移植性最高的代码
应该是那些不对位或者字节进行直接操作的.
不对指针内容进行修改的,大多调用标准库函数的.
不使用高级模板功能的代码

 

跨平台当然要注意避免使用依赖系统的操作咯:
1.   基本类型的长度以及相对这些类型的操作,如wchar_t。
2.   字符操作,特别是汉字类的宽字符。
3.   IO操作
另外不同编译器对C++的实现是不同的,这就要编译一下试验一下,不过这种问题都很容易改的!



1,什么是Bytecode
C/C++编译器把源代码编译成汇编代码,Java编译器把Java源代码编译成字节码bytecode。
Java跨平台其实就是基于相同的bytecode规范做不同平台的虚拟机,我们的Java程序编译成bytecode后就可以在不同平台跑了。
.net框架有IL(intermediate language),汇编是C/C++程序的中间表达方式,而bytecode可以说是Java平台的中间语言。
了解Java字节码知识对debugging、performance tuning以及做一些高级语言扩展或框架很有帮助。

分享到:
评论

相关推荐

    java跨平台

    ### Java与C语言的跨平台特性对比分析 #### 跨平台概念解析 跨平台是指软件能够在多种硬件架构或操作系统上运行的能力。对于编程语言而言,跨平台能力意味着开发者编写的程序无需修改或只需少量修改就能在不同的...

    用JSP开发的Web应用是跨平台的

    Java语言之所以能够实现跨平台,关键在于其编译后的字节码(Bytecode)可以在各种操作系统上的JVM中运行。无论是在Windows还是Linux环境下,只要安装了兼容版本的JVM,就可以执行相同的Java程序。因此,基于Java技术...

    Java跨平台的原理

    ### Java跨平台的原理 Java作为一种广泛使用的编程语言,其最显著的特点之一就是“一次编写,到处运行”(Write Once, Run Anywhere, WORA)。这一特性主要得益于Java的跨平台性,使得开发者可以在不同的操作系统上...

    Bytecode Outline-Eclipse插件.rar

    字节码的主要优点是跨平台兼容性,因为JVM可以解释并执行任何平台上的字节码,实现了“一次编写,到处运行”的理念。 Bytecode Outline插件提供了以下功能: 1. **字节码查看器**:此插件可以在Eclipse中以大纲的...

    jbe Java-Bytecode-Editor

    字节码的使用使得Java具有跨平台的能力。 2. **JBE的功能**: - **查看和编辑字节码**:JBE提供了一个直观的图形用户界面,可以打开并显示类文件的字节码指令,同时支持直接编辑这些指令。 - **反汇编视图**:将...

    bytecode interpreter in c (blog post).zip

    这种格式通常被设计为高效且跨平台,因为不同的计算机架构可以有不同的Bytecode解释器来解析并执行它。例如,Java的字节码和Python的PVM(Python虚拟机)就是两种常见的Bytecode实例。 在C语言中实现Bytecode解释器...

    掌握java的bytecode

    字节码为Java提供了一种跨平台执行的能力,因为它是一种独立于操作系统的代码形式,可以在任何安装了Java虚拟机的系统上运行。 了解Java字节码对Java开发者和架构师来说非常重要,因为它不仅帮助他们更好地理解Java...

    byteCode

    这种动态编译和解释的结合,使得Java程序既具有跨平台的灵活性,又能获得接近原生代码的执行速度。 ByteCode的特点主要包括: 1. 平台无关性:由于ByteCode是JVM执行的,因此Java程序可以在任何支持JVM的操作系统上...

    java反编译泄露源码-bytecode-viewer:字节码查看器

    字节码的主要优点是跨平台性,因为JVM可以在任何支持它的操作系统上执行。然而,字节码并不直接对应于源代码的语句,因此,反编译过程通常不能完全恢复原始的源代码结构和变量名。尽管如此,对于理解程序逻辑和查找...

    Python V2.43

    Python是常常被拿来跟Java、Perl等语言相比较的一个面向对象Script程序语言,与Java一样使用具有跨平台移植特性Bytecode,语法清晰,易学易用,可与其他语言混合使用,有不少专业的人士预测Python是继Java之后的明日...

    Java-ByteCode-Generator:该项目将解析java的源代码-java project source code

    这种设计使得Java程序可以在任何支持JVM的平台上运行,实现了“一次编写,到处运行”的跨平台特性。 在Java-ByteCode-Generator项目中,它首先会通过Java编译器(如javac)将源代码编译成字节码文件(.class)。...

    Python2.5下载

    常常被拿来跟Java、Perl等语言相比较的一个物件导向的Script程序语言,与Java一样使用具有跨平台移植特性Bytecode,语法清晰,易学易用,可与其他语言混合使用,有不少专业的人士预测Python是继Java之后的明日之星。...

    python-2.7.4.zip

    常常被拿来跟Java、Perl等语言相比较的一个物件导向的Script程序语言,与Java一样使用具有跨平台移植特性Bytecode,语法清晰,易学易用,可与其他语言混合使用,有不少专业的人士预测Python是继Java之后的明日之星。...

    python-3.3.1.zip

    常常被拿来跟Java、Perl等语言相比较的一个物件导向的Script程序语言,与Java一样使用具有跨平台移植特性Bytecode,语法清晰,易学易用,可与其他语言混合使用,有不少专业的人士预测Python是继Java之后的明日之星。...

    Python 3.5.1 Windows.zip

    常常被拿来跟Java、Perl等语言相比较的一个物件导向的Script程序语言,与Java一样使用具有跨平台移植特性Bytecode,语法清晰,易学易用,可与其他语言混合使用,有不少专业的人士预测Python是继Java之后的明日之星。...

    Python2.7A1

    常常被拿来跟Java、Perl等语言相比较的一个物件导向的s cript程序语言,与Java一样使用具有跨平台移植特性Bytecode,语法清晰,易学易用,可与其他语言混合使用,有不少专业的人士预测Python是继Java之后的明日之星...

    Python3_3开发包

    常常被拿来跟Java、Perl等语言相比较的一个物件导向的Script程序语言,与Java一样使用具有跨平台移植特性Bytecode,语法清晰,易学易用,可与其他语言混合使用,有不少专业的人士预测Python是继Java之后的明日之星。...

    Python3.5.1Windows

    资源名称:Python 3.5.1 Windows工具简介:常常被拿来跟Java、Perl等语言相比较的一个物件导向的script程序语言,与Java一样使用具有跨平台移植特性Bytecode,语法清晰,易学易用,可与其他语言混合使用,有...

    东北大学Java期末试题

    东北大学 Java 期末试题涵盖了 Java 语言的多个方面,包括 Java 语言的跨平台特性、抽象类和接口的区别、面向对象的三个特性、Java 应用程序设计、数据库应用、分布式计算和聊天程序等。 一、Java 语言的跨平台特性...

    java的概要介绍与分析

    Java虚拟机(JVM)是Java程序运行的基础,它解释字节码(Bytecode),实现跨平台执行。 Java的学习资源丰富多样,从官方文档到社区论坛,从在线课程到书籍,覆盖了从入门到精通的各个阶段。Oracle官方网站提供官方...

Global site tag (gtag.js) - Google Analytics