那些Java本质上落后于C#的地方

1,Java无法实现真正的ORM,当我们一个实体类对应一个表的时候,想要联表查询的时候,配置麻烦也就算了,hibernate还得建立多表查询类,或者使用HSQL,或者用sql很难与实体类真正的对应上关系,总之无论那种都非常笨重,究其原因,没有类似linq的查询语法来包装HSQL,没有动态类型能够方便的承载多表数据,而C#无论是基于LINQ做查询的EntityFramework,ELinq等,还是自己搞一套查询的moon.orm pdf.net,都能方便的将数据真正的对应上实体类而且保持强类型和一对多关系。 这些差距主要是java没有扩展方法和动态类型,根本无法实现。


2,由于Java没有指针,在数值计算的速度上会远慢于C#,在C#中启用unsafe使用指针后,数值计算的速度能接近C++,而不用指针的话C#和Java数值计算速度只有C++的三到四倍。


3,多线程异步模型,Java的多线程模型相当弱后,而C#早已采用了TPL模型以及async await异步等待。在IO异步上不仅简单,而且不用像node.js那样嵌套回调。


4,Java最神奇的地方,int和Integer还需要类型转换,无异于增加麻烦,也可见在设计上根本未考虑开发者的感受。


5,Java语言设计缺陷:

Arrays.asList 返回的是不可变序列,但依旧采用List泛型类误导别人。

字符串使用相等操作符==比较的是引用,没有重载,既然把字符串特殊成类似值类型的话,那么理当重载。


6,没有属性支持

属性内部get set 方法可以做很多事情,外界无需知道,比如懒加载,但是对外界又不需要关心,比如序列化,java那里就麻烦咯,遇到个懒加载,json序列化库还得改。。


到了Java8才又lambda表达式的Java,在语言上机器落后,他JVM上的其他优秀语言由于种种原因不太可能普及,所以node.js这种东西也是给Java开发者准备的,因为Java太烂了。。。

到了Java8才又lambda表达式的Java,在语言上机器落后,他JVM上的其他优秀语言由于种种原因不太可能普及,所以node.js这种东西也是给Java开发者准备的,因为Java太烂了。。。
阅读更多
换一批

没有更多推荐了,返回首页