当前位置:编程学习 > JAVA >>

JAVA垃圾语言,快没落了

JAVA垃圾语言,又大又笨,开发又慢,Sun又死了,TNND。

Mono现在原来越完善了,以后C#会随之越来越流行,在跨平台方面会成为主导。

而且C#的速度比JAVA快,JVM调优简直是蛋疼的要命。

加上JAVA库设计的也不好,而且有很多死类,和C#没得比,语法也罗嗦,一点都没有C#来的简洁。

更是现在ORACLE接手后JAVA 7漏洞百出,性能一点也不稳定,试问将来有什么前景可言?

我以前就是做JAVA的!现在改做C#了!

JAVA也就是在android上火了一把而已,性能也不咋地,以后也不会再有什么出息了,还是趁早转行C#。

JAVA的闭包设计的那么罗嗦,而泛型简直就是垃圾中的垃圾,Java的泛型只是一个语法糖,

甚至可以说这是一种伪泛型。因为泛型对编译器是可见的,但在编译器编译成Java字节码之后,

泛型的信息已经被擦除了。因此,下面的语句是无法通过编译的。

public void test1(List<String> t) {
}
       
public void test1(List<Integer> t) {
}


在字节码角度来看,由于类型被擦除了,因此这两个方法的声明是完全一样的(虽然源代码并不一样)。

我们可以使用Java的反射API在运行时输出方法的信息,从而验证类型是否被擦除了。代码如下:

import java.lang.reflect.Method;
import java.util.List;

public class Test {
       
       public void test(List<String> t) {
       }
       
       public <T> void test1(T t) {
       }

       public <T extends Comparable<T>> void test2(T t) {
       }

       public static void main(String[] args) {
              for (Method method : Test.class.getDeclaredMethods()) {
                     System.out.println(method);
              }
       }
}


这段代码的输出是
public void Test.test1(java.lang.Object)
public void Test.test2(java.lang.Comparable)
public static void Test.main(java.lang.String[])
public void Test.test(java.util.List)

可见List在字节码阶段已经变成了List。

从这里还可以看出,如果我们使用的,那么类型就会变成Object。这意味着什么呢?

我想应该有很多人对于为什么我们不能写List感到困惑吧。原因在于,List用的泛型是List,

这里意味着我们只能使用Object的子类。而int是原子类型,并不是Object的子类,因为我们就无法使用List了。


为了早点脱离苦海 转C#吧! --------------------编程问答-------------------- 哎。喷来喷去你不觉得累么 --------------------编程问答-------------------- minecraft表示无压力。。。。 --------------------编程问答-------------------- 难道这不是事实吗?

引用楼主  的回复:
JAVA垃圾语言,又大又笨,开发又慢,Sun又死了,TNND。

Mono现在原来越完善了,以后C#会随之越来越流行,在跨平台方面会成为主导。

而且C#的速度比JAVA快,JVM调优简直是蛋疼的要命。

加上JAVA库设计的也不好,而且有很多死类,和C#没得比,语法也罗嗦,一点都没有C#来的简洁。

更是现在ORACLE接手后JAVA 7漏洞百出,性能一点也不稳定,试问将来有什么……
--------------------编程问答-------------------- 语言只是一种工具
每种工具有每种工具的优点和缺点
所以问题不在于工具,而是人如何选择和利用工具
--------------------编程问答-------------------- 是啊,这不是倡导大家不要使用这种工具么,又大又笨又慢又不好用,现在多了一项——漏洞百出

引用 4 楼  的回复:
语言只是一种工具
每种工具有每种工具的优点和缺点
所以问题不在于工具,而是人如何选择和利用工具
--------------------编程问答-------------------- 怎么?难道这不是事实吗?

引用 1 楼  的回复:
哎。喷来喷去你不觉得累么
--------------------编程问答-------------------- JAVA的语言特性本来就做的很垃圾,跟C#简直没法比 --------------------编程问答-------------------- 又是一个喷粪的傻蛋!!!C#给了你什么好处,你爱用啥用啥呗,你觉得不好就别用,骂来骂去真是何苦 --------------------编程问答-------------------- 直接用汇编吧,就不要为面向对象这种没啥意思的语言争来争去了,觉得垃圾回收不好啥的就直接自己写。 --------------------编程问答-------------------- 这货又来了,脑补流选手你们和他是说不清楚滴,人家就是为了找喷来的,你们越喷他越开心,所以大家无视这种搞人吧,沉了就好 --------------------编程问答-------------------- 让哥来沉了此贴 --------------------编程问答-------------------- 这么说电脑都应该沉了,  直接你空想个只要想就能实现编程的语言得了呗。。。 --------------------编程问答-------------------- 送一句在下比较喜欢的话给LZ吧,是黑格尔说的:
“存在的就是合理的”。

一种编程语言既然有不少人用,那就有它存在的理由和适用场合;相反,如果一种语言已经没落了,就算使用的人再想扶也扶不起来的,就像当年红及一时的QBasic一样,现在会用的尚有几人?在历史的洪流面前,个人的声音总是微乎其微的。想以一个人的声音振动大量程序员在使用Java这个现实终究只是徒劳。一切顺其自然就好。

不过,Java泛型的问题的确不是个小问题(以前都没发现的说,话说Java的字节码貌似根本没有类型信息,boolean的true和false编译后其实是1和0,所谓的强类型只是在编译期进行判断的),在C#下明明能编译过的。只能等Oracle修正了么:


    class MyClass
    {
        public static int Test(IList<int> list)
        {
            int sum = 0;

            if (list != null)
                foreach (int i in list)
                    sum += i;

            return (sum);
        }

        public static string Test(IList<string> slist)
        {
            StringBuilder tmp = new StringBuilder();

            if (slist != null)
                foreach (string s in slist)
                    tmp.Append(s);

            return (tmp.ToString());
        }
    }
--------------------编程问答-------------------- JAVA编译机制已经比C#落后很多了,还有好多问题这里就不一一举例了!! --------------------编程问答-------------------- 没有JAVA你就不活了?C#这么好的语言不用??
引用 12 楼  的回复:
这么说电脑都应该沉了,  直接你空想个只要想就能实现编程的语言得了呗。。。
--------------------编程问答-------------------- C#还不是照样有垃圾回收?可人家偏偏做的很好,别拿垃圾回收说事,这根本就是两码事!
引用 9 楼  的回复:
直接用汇编吧,就不要为面向对象这种没啥意思的语言争来争去了,觉得垃圾回收不好啥的就直接自己写。
--------------------编程问答-------------------- --------------------编程问答-------------------- Java还是不错的,语言是很啰嗦。但是还不错。

对技术,算法有执着的人一般不喜欢Java,都是C,C++这种。

老实说,C#和Java都不是爱技术的人喜欢的,都是做东西才选择的。 --------------------编程问答--------------------
引用 4 楼  的回复:
语言只是一种工具
每种工具有每种工具的优点和缺点
所以问题不在于工具,而是人如何选择和利用工具


这LZ打广告的 。。。。。
--------------------编程问答-------------------- 存在就有道理,不存在了在说 --------------------编程问答-------------------- 这有什么好争论的,觉得不好就不用。 --------------------编程问答-------------------- 楼主今天刚注册,就想出名啊.. --------------------编程问答-------------------- 木筷子,竹筷子而已
黑猫白猫,能抓到老鼠就是好猫
不必挣那个好,那个次吧 --------------------编程问答-------------------- 不喜欢就别用,碍着你了?
引用 7 楼  的回复:
JAVA的语言特性本来就做的很垃圾,跟C#简直没法比
--------------------编程问答--------------------  楼主在现实世界就是一个屌丝,在政治界就是一个愤青,在网络界就是一个喷子,通过这种方式来引来关注是极其无耻的行为,普通点叫二货,低俗点叫傻B,文艺点叫脑残 --------------------编程问答-------------------- 我从来也不看好Java,又是框架又是设计模式,垄断了我的思维。 --------------------编程问答-------------------- 通灵之术....
            java之王..... --------------------编程问答-------------------- 额…… --------------------编程问答-------------------- 竟然还没看到okgood。。。 --------------------编程问答-------------------- 每一种语言都有他的优势和劣势,似乎LZ只看到了java的劣势和C#的优势,更深层次去了解2种语言,也许你会发现你只窥视了一点点而已。 --------------------编程问答-------------------- java确实在走下坡路,但是也有存在的道理,选择什么语言还是根据需求来吧 --------------------编程问答-------------------- 到现在okgood都没有出现,实在让人匪夷所思啊! --------------------编程问答-------------------- 我现在还在学java
你的意思是我白学了
现在应该转c# --------------------编程问答-------------------- --------------------编程问答-------------------- 别喷了没意思,用哪种语言能挣到钱,就是好语言.

非要比优劣,用汇编去吧,或者干脆用0 1 。 --------------------编程问答--------------------
引用 26 楼  的回复:
我从来也不看好Java,又是框架又是设计模式,垄断了我的思维。

感觉LS这位有点误解了,不管是框架还是设计模式都不是Java独有的哈。

框架是设计者设计出来用以帮助其他程序员快速完成项目设计的工具。并不单Java有框架,C#也有,只是C#程序员很少用框架的说。
实话说在下也不太喜欢框架,感觉对设计思想的限制很大。不是为了赶项目一般不用。

设计模式是与语言无关的,而且确实是个好东西。
它是以前程序员设计经验的总结,称之为前人优秀设计思想的结晶也不为过。
不过引用下哲学里“矛盾论”的观点:任何优秀的思想、技术都是把双刃剑。优秀的经验往往容易使人形成思维定式。学习设计模式时最忌生搬硬套,多问自己几个“为什么”,真正理解各种模式的适用场合、优点及缺点,使用时灵活应用才是王道。

引用 18 楼  的回复:
对技术,算法有执着的人一般不喜欢Java,都是C,C++这种。

好吧,在下承认最喜欢的是C。当然效率是一个方面,但在下自我感觉最喜欢的是那种松散的编程风格,可以自由的放飞自己的想象力去设计程序。 --------------------编程问答--------------------
引用 25 楼  的回复:
 楼主在现实世界就是一个屌丝,在政治界就是一个愤青,在网络界就是一个喷子,通过这种方式来引来关注是极其无耻的行为,普通点叫二货,低俗点叫傻B,文艺点叫脑残


25楼这文才,相当牛B/ --------------------编程问答--------------------
引用 35 楼  的回复:
别喷了没意思,用哪种语言能挣到钱,就是好语言.

非要比优劣,用汇编去吧,或者干脆用0 1 。


我选能造房子的语言可以吗 --------------------编程问答-------------------- --------------------编程问答-------------------- 我是来看热闹的 --------------------编程问答-------------------- 哈哈说到JAVA的死穴 这哥们暴走了。。。
引用 25 楼  的回复:
 楼主在现实世界就是一个屌丝,在政治界就是一个愤青,在网络界就是一个喷子,通过这种方式来引来关注是极其无耻的行为,普通点叫二货,低俗点叫傻B,文艺点叫脑残
--------------------编程问答-------------------- 就是,JAVA这垃圾语言趁早淘汰
引用 26 楼  的回复:
我从来也不看好Java,又是框架又是设计模式,垄断了我的思维。
--------------------编程问答--------------------
引用 20 楼  的回复:
存在就有道理,不存在了在说


+ --------------------编程问答-------------------- okgoood 你来啊,我接招着呢! --------------------编程问答-------------------- S X --------------------编程问答-------------------- S X --------------------编程问答-------------------- --------------------编程问答-------------------- 不必这样吧 --------------------编程问答--------------------
引用 26 楼  的回复:
我从来也不看好Java,又是框架又是设计模式,垄断了我的思维。
哥们,你这借口找的太没水平了。 --------------------编程问答-------------------- JAVA本来就比不过C#,找不找借口都是一样的!

引用 49 楼  的回复:
哥们,你这借口找的太没水平了。
--------------------编程问答--------------------
引用 26 楼  的回复:
我从来也不看好Java,又是框架又是设计模式,垄断了我的思维。


不想评论JAVA好 还是C#好,但我想说:“设计模式,真的不会限制你的思想,他恰恰是给你打开了一扇门。如果你被舒服了,那么你就是陷入到套路中了,武侠小说中讲究无招胜有招,当你的招式可以信手拈来,不在是机械照搬的时候,……”


任何东西的存在都会随着时间呈曲线运动,任何东西都会有他的峰,同样会有他的谷,取一点或一段去比较不同的东西有什么意义?

语言的好与坏对我来说没有任何意义,对我来说现在用JAVA可以得到一份不错的收入,所以我用了JAVA,如果有一天那老板来跟我说,你来用C#吧我给你更高的薪水,我会义无反顾的投入到C#的阵营,或者其他任何我能掌握的语言中。对我来说语言就是能让我生活的舒服一点的工具。我没有那种推动什么语言进步的情操。如果你有,那么请你把做无聊事情的时间放到学术研究中,那么我想现在的JAVA也好C#也好,甚至是你个人的真实水平都会有不小的提高。 --------------------编程问答--------------------
引用 19 楼  的回复:
引用 4 楼 的回复:
语言只是一种工具
每种工具有每种工具的优点和缺点
所以问题不在于工具,而是人如何选择和利用工具


这LZ打广告的 。。。。。


+1 --------------------编程问答-------------------- (⊙o⊙)嗯 路过瞧瞧~~ --------------------编程问答--------------------
引用 25 楼  的回复:
 楼主在现实世界就是一个屌丝,在政治界就是一个愤青,在网络界就是一个喷子,通过这种方式来引来关注是极其无耻的行为,普通点叫二货,低俗点叫傻B,文艺点叫脑残


LZ的观点其实还是不错的,但是仗着自己说的在理就一定要怎样怎样实则不是智者所为。

“我不赞同你的观点,但我誓死捍卫你说话的权利。”
--------------------编程问答-------------------- c/c++路过看小孩打架,哈哈 --------------------编程问答-------------------- 可以呀,不过和编程没关系了,要去学习建筑学的知识和术语了。


引用 38 楼  的回复:
引用 35 楼  的回复:

别喷了没意思,用哪种语言能挣到钱,就是好语言.

非要比优劣,用汇编去吧,或者干脆用0 1 。


我选能造房子的语言可以吗
--------------------编程问答-------------------- LZ为什么要用马甲呢? --------------------编程问答--------------------
引用 18 楼  的回复:
Java还是不错的,语言是很啰嗦。但是还不错。

对技术,算法有执着的人一般不喜欢Java,都是C,C++这种。

老实说,C#和Java都不是爱技术的人喜欢的,都是做东西才选择的。


比较认同这种观点 --------------------编程问答-------------------- 楼主我穷,给我分 --------------------编程问答-------------------- 我的看看! --------------------编程问答-------------------- 这个应该不可能,java被oracle收购,java对数据库处理的时间肯定会越来越快,oracle肯定会和java整合,提高效率的 --------------------编程问答-------------------- --------------------编程问答-------------------- 随便看到一句,"int是原子类型",楼主就输了。 --------------------编程问答-------------------- --------------------编程问答-------------------- 路过 ,不过java有点向下走! --------------------编程问答-------------------- JAVA是垃圾 C#才是王道! --------------------编程问答-------------------- 其实我觉得机器语言更适合楼主,发挥空间好大哦。你怎么不拿C#跟汇编,跟机器语言比呢。
其实对于很多人来说,不管JAVA,C#还是其他语言,他存在即有他的道理。

http://tech.hexun.com/2012-09-03/145421061.html

不解释…… --------------------编程问答-------------------- 楼主有啥资格说Java没落了。
哈哈
就凭借这种细枝末节吗?
如果你站在这个层面考虑问题,
我详细你一定一直没弄明白C++怎么不火了?
只感慨,不解释! --------------------编程问答-------------------- java 4 !!!!!!!!ever --------------------编程问答-------------------- JAVA C#号称完全面向对象的语言

C#中:

1233.ToString();


JAVA中:

1233.ToString();//确实错的


还的用valueof 或者 Integer 包一次 哈哈!!!搞笑!!
--------------------编程问答-------------------- c# 和 java 是一个屌样的.
--------------------编程问答-------------------- 我是来凑热闹的,一门编程语言好与坏不是你一个人说了算 --------------------编程问答-------------------- 他是来吵架的,陪你吵架发工资么,还是去看会儿书吧兄弟 --------------------编程问答-------------------- 说来说去,还是项目决定用什么。。。。。。。。。。。。。。。。。。。。。。。。。。 --------------------编程问答-------------------- 25楼说的经典 --------------------编程问答-------------------- 说c sharp比java快有何依据 --------------------编程问答-------------------- 谁说C++不火了?android为什么要出ndk?游戏编程有几个核心是用到java? --------------------编程问答-------------------- Csharp 是C基础上的 当然比java快很多 还用到着说?
引用 76 楼  的回复:
说c sharp比java快有何依据
--------------------编程问答-------------------- C#里面可以用指针 你java行吗? --------------------编程问答-------------------- 支持java --------------------编程问答-------------------- 我是来看评论的。 --------------------编程问答-------------------- 不小心点进来的飘过 --------------------编程问答-------------------- C#是C基础上的 JAVA只是JVM基础上的 现在JVM已经不是java专属了,为什么呢,因为逐步被替代了,将来JVM也会被替代 --------------------编程问答-------------------- JAVA就是在JVM基础上的畸形发展的语言,内容会越来越臃肿不堪,各种第三方框架层出不穷,可是往往为了一个简单的功能却要套上整个的库、框架,杀鸡用牛刀不算连附带的铲子锤子大炮都加上去了 --------------------编程问答-------------------- 话说楼主和C#版的java之王是啥关系哈哈哈 --------------------编程问答-------------------- java 之王 就是一个牛人啊  --------------------编程问答--------------------
引用 78 楼  的回复:
Csharp 是C基础上的 当然比java快很多 还用到着说?
引用 76 楼  的回复:

说c sharp比java快有何依据

理论上的,yy的?实际跑过吗? --------------------编程问答-------------------- 我什么语言都不懂 正在学习中。。。。。 --------------------编程问答-------------------- 唉,挺喜欢C#的,也一直在学习,但是唯一比较纠结的是,学C#的傻帽貌似比Java多一些啊。。。。。难道是因为C#入门太简单了? --------------------编程问答-------------------- 如果说C#比JAVA简单你就错了,C#的特性是很多的,JAVA的特性算起来是C#的子集,而且实现的又罗嗦,有些东西还是伪的。

ArrayList list = new ArrayList();
list.add(5); // cannot compile
int i = (int)list.get(0); // cannot compile

int hash = 3.hashCode(); // cannot compile


是不是很蛋疼?
当然你会和我说用泛型

public void test1(List<String> t) {
}
       
public void test1(List<Integer> t) {
}

这个不能通过编译 是否蛋疼?

而C#
ArrayList list = new ArrayList();
list.Add(5);
int i = (int)list[0];

int hash = 3.GetHashCode();

则可以

相信看了这几行代码你们就能明白了吧!
可以看出,在C#中,值类型和普通的类(也被称为引用类型)在使用上并没有任何区别。
当然,既然被称为“值类型”,它自然和普通的引用类型有所区别。首先,在.NET中值类型在赋值时是“整体拷贝”而引用类型只是复制一个引用。更重要的是,值类型是分配在方法的调用栈上,而引用类型则是分配在托管堆上。这意味着前者在当前方法退出后会被自动释放,而后者则必须等待GC运行时将无用的对象消除。
换句话说,值类型不会对GC造成压力(除非进行了装箱),这点很重要。在某些场景中,例如在并行计算时,假如每个线程临时对象创建地过于频繁,则可能导致GC频率加大。而GC在启动时会暂停运行中的所有线程,因此并行计算最终的瓶颈可能就落在了单线程的GC上——此时就算投入再多的CPU等运算资源也无济于事!!!!

引用 89 楼  的回复:
唉,挺喜欢C#的,也一直在学习,但是唯一比较纠结的是,学C#的傻帽貌似比Java多一些啊。。。。。难道是因为C#入门太简单了?
--------------------编程问答-------------------- 路过而已。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- 萝卜青菜各有所爱,不必勉强!
只这样做只能糊弄墙头草,我看你还是省点力气吧!!! --------------------编程问答-------------------- 楼主,你是不是刚接触java,受打击了?还是在底层坐太久?你的偏见很大啊?照你这种讲法,最后所有的代码都会变成0和1,那试问,是不是我们只要学0和1就足够了。什么语言都是为编程服务的,只是工具而已,能做出东西来而已。何况,现在也不必像以前一样太过于纠结效能问题。同样能实现,如果改进和不改进的效果一样了,还改进干嘛呢? --------------------编程问答-------------------- 工具而已,何必认真!

好使不好使,会用不会用的问题~ --------------------编程问答-------------------- 楼主是个笨蛋 --------------------编程问答-------------------- LZ估计java的边都没摸到就在这里喷,不知道C#给了你什么好处,还有这是JAVA板块,
不喜欢JAVA请滚开!!! --------------------编程问答-------------------- 时间自然会证明一切 --------------------编程问答-------------------- 有人用就行,反正比C#用的爽 --------------------编程问答-------------------- lz怎么不回复我了
补充:Java ,  非技术区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,