java语言的一些疑惑

年底了,又学了一年java语言,对java这门语言理解更近了一层,当初学java语言的时候,会发现很多优点,比如人们
说的,跨平台,自动回收垃圾,没有指针,java语言是安全的。随着时间的推移,我慢慢发现这些优点也是java语言的
缺点,甚至学java语言时间越久会发现自己对java语言懂得越来越少。类似懂得越多的人会发现自己懂得越来越少,呈
现反比。今天来浅析一下java语言的这些所谓的优缺点。本人菜鸟一个,不足之处望读者留言。

java语言跨平台,这点java语言做的非常好,95%的代码可以跨平台移植,当然这里的jre版本要一致,高版本向下兼
容。高版本开发出来的代码拿到低版本的环境运行,这个就不一定了。每个java的版本升级都是增加很多东西的。如果跨
平台还要考虑项目引用路劲问题,这个有些情况需要手动修改路径或者写相对路径。由于跨平台带来了很大方便,但是不
同平台不同环境下操作系统性能不同,可能导致java代码运行结果不同,比如java内部类编译出来的文件是这样的
A B <script type="math/tex" id="MathJax-Element-3">B</script>C.class。在linux/unix系统中$符号有特殊含义,在复杂情况下可能出错。由于跨平台,java语言浪费了一些
代码处理这些事情,会影响一点点效率,比如会获取操作系统,如果是windows系统,回车换行是“\r\n”,如果是
linux/unix,回车换行是“\n”,mac操作系统是“\r”。

java语言自动垃圾回收,这个应该有很大的争议性,这让一些程序员忘记了计算机的内存,代码写的不好和这个有些因
素。而且java语言真正做到了垃圾回收吗?答案是否定的,很多情况下垃圾回收是无效的,依然造成内存泄漏,甚至这个
也影响了跨平台,因为我遇到过一样的操作系统一样的代码一台机器内存泄漏,一台机器内存不泄露。java这门语言自动
回收垃圾机制是很吸引人们去学习,但是这个是优点吗?我想这个大家未必认为全是优点,相对于手机android系统上的
应用很卡的时候,我想垃圾回收机制可能就是缺点了。java的垃圾回收解决了80%的自动回收,另外很多情况回收不了。
即使是回收了,这种机制相对于C/C++程序员来说,浪费了更多内存。这可能也是java语言在服务器上使用更好的原因。

java语言没有指针,我想说了以上几点,这些不能说是java语言的优点了,只能说是特性。你可以根据一些特性和一些
需求选择适当的编程语言,java中的指针被C/C++封装到了jvm中去了,这让程序员操作代码的时候简单了一些,这个特
性优点就是吸引更多人去学习,缺点是很多时候操作不是很方便,比如我想操作内存栈的变量,java这门语言是运行在
jvm上面模拟的栈结构,不能操作内存。java语言是值传递的,包括对象,传递对象是将对象中的属性值传递了,是数值
的拷贝操作。屏蔽了指针操作导致只有值传递。

java语言是安全的,这点我想可能是不能操作内存,很多人说java语言很安全,还有一个是运行在jvm上面的,安全系
数高一些。事实上java版本的木马,病毒也是可以制作出来的,只是运行起来不如C语言的好。java框架struts2有个
很著名的漏洞,这个漏洞导致了很多大型企业的数据库密码泄漏,全世界损失惨重。举个例子,通过svn漏洞上传一段代
码,每个公司员工都有简单的svn账号和弱密码,这段代码有线程监控机制,当你的项目启动起来的时候运行了这个线
程,线程里面如果操作就看自己了,比如复制用户数据,对操作系统进行破坏,甚至永久关机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值