java的问题:
1.性能:java的内存管理似乎比较自动化,但其实性能不是特别好。尤其是new对象的时候没有节制。在java中,有些对象构造成本很低,有些很高。特别在UI编程的时候,大多数的UI对象其构建成本都比较高昂。如果在开发过程中没有节约意识,肯定会导致JVM不停的GC,系统表现很卡的样子,当然,彻底的当掉可能还不会,但基本上工作已经是非常的缓慢的了。
2;引用:JAVA中其实在大量的使用对象引用,对象引用可以减少内存占用,不去构建不必要的对象。但事实上,多数程序员对引用的理解不是很到位,结果导致过多不必要的对象构建,虚耗内存。代码可读性也不佳,编写的时候尤其觉的疲惫。
3;面向对象:java是面向对象的语言,但是它有基础类型,这些基础类型不是面向对象的,不能当作引用传递。一般来说,这些基础类型可以用来表示一个对象的状态。java中的对象一定要包含状态,没有状态的对象其实是不存在的,没有状态的东西不是对象,而是一个行为集合。但是java中没有一个明确的结构来表达这个情况,所以只能写一个类来表示,同时将这个类的构造定义成私有的,防止被别人构建。这个时候的类的作用等同与命名空间。java在面向对象的支持方面其实是很残缺的,缺乏很多必要的支持,比如虚函数,多重继承,友元。这种残缺,导致设计困难,所以java的系统都十分的罗嗦。
4:复杂:java越来越复杂了。注解,泛型,枚举,特性很多。
5:不可变:java支持不可变,但是大多数人并不了解这个主题。不可变系统其实比较容易实现,同时也不容易出错。但是java是基于引用的系统,不可变会导致大量的内存问题。JVM缺乏尾递归优化,这其实也是一个问题。
总之,我们都被高司令骗了,java上手简单,但是写好了不容易。面向对象设计尤其不易同时还要精通java,这样的人实在是缺乏。因此很多系统设计的不好,不是程序员水平的问题,而是java实在是对设计师要求太高了一些。java距离灭亡还早,因为随着时间的变迁,我们发现我们对它的理解其实很不足。不过说的严重一点,我个人认为,java是对面向对象编程思想的一种亵渎,因为它强制人写class,这等于强制人放弃思考,不明白为什么要写class,因此会写出什么,只有天知道,自己也不知道的。 |
|