浏览器兼容性问题,为什么同一段JavaScript代码,不同浏览器上为什么会产生不同效果,甚至bug?浏览器不就是严格按照JavaScript语法进行的吗?java代码为什么从来没听过有什么兼容问题?
2017-05-15 11:10
721 查看
浏览器兼容性问题,为什么同一段JavaScript代码,不同浏览器上为什么会产生不同效果,甚至bug?浏览器不就是严格按照JavaScript语法进行的吗?java代码为什么从来没听过有什么兼容问题?
1 java为什么没听说过有什么兼容性问题呢?
因为java语言的语法也可能会变化的,因为java版本也在不停地迭代(jdk1.5、jdk1.6、jdk1.8等),所以编译器(如jdk自带的java.exe编译器,Eclipse自己的编译器等)也要不停地跟着java的版本不停更新。这也是为什么低的Eclipse版本,不能编译jdk1.8的原因。
但是java为什么不存在兼容性问题呢?
也不是说,java不存在兼容性问题,也会存在。比如①研发环境,我用Eclipse编译1.7版本的编译器编译1.8版本的java代码,就会编译不通过。②部署环境,用1.7版本的虚拟机,运行1.8版本的class文件,也会出问题,报错。
只是我通过程序员、部署人员,只要编译环境、部署环境和java版本对应上,就可以完全不存在兼容性问题。
因为编译器、虚拟机也是随着java的更新而更新的,只要保证编译器、虚拟机能够和java版本配套,就不会出现兼容性问题,这点程序员、部署人员是可以做到这一点的。
2如果JavaScript语法固定,所有浏览器都严格遵守JavaScript语法不就行了,怎么可能还存在兼容性问题呢?
答案是:
但是,以上回复,也不能解释为什么存在兼容性问题啊,JavaScript提高了,我浏览器的版本也提高不就行了,这样怎么还会存在浏览器问题呢?
这就是因为JavaScript版本发展,和java版本发展,方式不一样。
java不存在说,我当前的编译环境、部署环境要兼容jdk之前所有的版本,我研发使用的jdk版本是固定的,那么我之后的工作,研发、编译、部署,都设置为这个jdk版本的就行了,编译器、虚拟机等版本和java代码的版本不一致,我程序员替换成一致就可以,人工是可以去替换成一致的,所以不存在兼容性问题。
JavaScript就不一样了,它是解释性语言,不是编译性语言,没有编译器。程序员书写JavaScript代码的时候就没有了约束,也不管是什么版本的JavaScript代码,都去用,导致了一个浏览器版本根本没办法解释程序员写的js代码。只能通过程序员自己的研发控制,开发阶段很难强制约束程序员。
在开发的时候,程序员不能像java开发时那样,选择了jdk版本之后,研发就会收到该版本编译器的约束,会按照这个版本的jdk去研发,严格保证了java代码是按照这个版本进行研发的,不然编译就通不过。
再者说,就算程序员很牛,我就严格控制我的JavaScript代码按照某一个版本的JavaScript语法进行书写,那么也只是能够做到,某一个版本的浏览器下没有问题。浏览器版本升级了,其支持的语法可能也就又变化了,还是会出现兼容性问题。
所以总结:
java不存在兼容性问题。
浏览器兼容性问题,程序员只能做到,我的JavaScript代码能够使用某一个版本的浏览器,不能保证试用所有浏览器。
1 java为什么没听说过有什么兼容性问题呢?
因为java语言的语法也可能会变化的,因为java版本也在不停地迭代(jdk1.5、jdk1.6、jdk1.8等),所以编译器(如jdk自带的java.exe编译器,Eclipse自己的编译器等)也要不停地跟着java的版本不停更新。这也是为什么低的Eclipse版本,不能编译jdk1.8的原因。
但是java为什么不存在兼容性问题呢?
也不是说,java不存在兼容性问题,也会存在。比如①研发环境,我用Eclipse编译1.7版本的编译器编译1.8版本的java代码,就会编译不通过。②部署环境,用1.7版本的虚拟机,运行1.8版本的class文件,也会出问题,报错。
只是我通过程序员、部署人员,只要编译环境、部署环境和java版本对应上,就可以完全不存在兼容性问题。
因为编译器、虚拟机也是随着java的更新而更新的,只要保证编译器、虚拟机能够和java版本配套,就不会出现兼容性问题,这点程序员、部署人员是可以做到这一点的。
2如果JavaScript语法固定,所有浏览器都严格遵守JavaScript语法不就行了,怎么可能还存在兼容性问题呢?
答案是:
但是,以上回复,也不能解释为什么存在兼容性问题啊,JavaScript提高了,我浏览器的版本也提高不就行了,这样怎么还会存在浏览器问题呢?
这就是因为JavaScript版本发展,和java版本发展,方式不一样。
java不存在说,我当前的编译环境、部署环境要兼容jdk之前所有的版本,我研发使用的jdk版本是固定的,那么我之后的工作,研发、编译、部署,都设置为这个jdk版本的就行了,编译器、虚拟机等版本和java代码的版本不一致,我程序员替换成一致就可以,人工是可以去替换成一致的,所以不存在兼容性问题。
JavaScript就不一样了,它是解释性语言,不是编译性语言,没有编译器。程序员书写JavaScript代码的时候就没有了约束,也不管是什么版本的JavaScript代码,都去用,导致了一个浏览器版本根本没办法解释程序员写的js代码。只能通过程序员自己的研发控制,开发阶段很难强制约束程序员。
在开发的时候,程序员不能像java开发时那样,选择了jdk版本之后,研发就会收到该版本编译器的约束,会按照这个版本的jdk去研发,严格保证了java代码是按照这个版本进行研发的,不然编译就通不过。
再者说,就算程序员很牛,我就严格控制我的JavaScript代码按照某一个版本的JavaScript语法进行书写,那么也只是能够做到,某一个版本的浏览器下没有问题。浏览器版本升级了,其支持的语法可能也就又变化了,还是会出现兼容性问题。
所以总结:
java不存在兼容性问题。
浏览器兼容性问题,程序员只能做到,我的JavaScript代码能够使用某一个版本的浏览器,不能保证试用所有浏览器。
相关文章推荐
- 浏览器兼容性问题,是什么?是同一段js、cs代码,不同浏览器有不同效果,甚至bug
- javascript在不同浏览器下的兼容问题已经遇到的疑难杂症
- 一段很棒的利用html5-canvas及javascript产生三维星空效果的代码!
- javascript解决innerText浏览器兼容问题思路代码
- javascript在不同浏览器下的兼容问题已经遇到的疑难杂症
- javascript解决innerText浏览器兼容问题思路代码
- 多浏览器兼容的qq图片轮换效果javascript代码
- 为什么要初始化 CSS 样式 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对 CSS 初始化往往会出现浏览器之间的页面显示差异。 当然,初始化样式会对 SEO 有一定的影响,但鱼
- 多浏览器兼容的qq图片轮换效果javascript代码
- ECMAScript 与 JavaScript的联系 以及为什么会有浏览器兼容的问题?
- 张孝祥老师交通灯管理系统的学习笔记 在做一件事时,首先要明确要达到什么效果。有目的性。就软件项目来说就是,首先要看的就是项目所提出的项目要求。做项目,不急于写代码,先把问题搞清楚,把要求分
- 使用JSP代码和使用JavaScript代码进行表单数据验证有什么不同?
- 为什么Thread.stop会过期?一段引起同步异常问题的代码样例
- Axure RP Pro - 相关问题 - OnMouseOver事件和Rollover翻转效果浏览器不兼容
- 仓库平面图编辑无刷新效果——Javascript(由于代码长度问题所以分开发)
- 帮我看看是什么问题呢,为什么读网页源文件会有乱码java
- 为什么Thread.stop会过期?一段引起同步异常问题的代码样例
- 浏览器兼容的禁用右键的JavaScript代码
- 一段DIV内容垂直的代码,兼容各种浏览器
- 有关css和js针对不同浏览器兼容的问题