唯一值得肯定的是对于不熟悉Unix的人,
做个Server之类的服务程序还是比较方便。

解决方案 »

  1.   

    老大:不是真的吧!
    我可是正在学java呢!!
    给点信心好不好啊!
      

  2.   

    J2EE、J2ME相对其他的语言还是有优势的
      

  3.   

    其实开发语言各有利弊。
        Java虽说有上提到的问题,但是它的开发时间快、周期短,简单易学以及跨平台的优势仍旧吸引着当今的程序员和公司老板们。
        你也可以说C++是征途,应为你看到了它的完成性。但是要真正的学好C++也并非易事吧?真的编起程序也得费死劲。这也是Microsoft为什么要出C#之类的语言
       呵呵!
      

  4.   

    C++好。我在用Java,被逼的。我不愿意。但我要吃饭
      

  5.   

    没有什么理由,我学过C,但是发现不对我的路子,后来发现自己喜欢上了java,从也考她,赚银子靠她,我还能有什么理由不相信他???
      

  6.   

    举个例子说一下java的内存管理吧
    Vector v=new Vector();
    Integer i=new Integer(0);
    v.add(i);
    ....
    i=null;
    System.gc();
    请问大家这时候i占用的内存会释放吗?
    答案是不会,因为有v引用着它呢.
    得先把它从v中删掉才行。所以Garbage Collector号称不需管理内存的
    分配和释放,实际内存的泄漏可不是一点半点。
    看看JBuilder吧,写的够可以了吧。你连着用它
    几个小时,占用的memory成倍的增长啊!
      

  7.   

    给初学者一点信心:java是纯粹的面向对象的语言,
    学好了对oop的理解很有帮助,而且再搞c++也容易很多
      

  8.   

    看看JAVA夜未眠,可能会好一些
      

  9.   

    kindlemoney(钱老大) 你做了3年java都做了些什么呀,能说说吗?
      

  10.   

    我相信java!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  11.   

    天啊~~我花了好多钱在学JAVA呢  怎么看到的都是这些话啊~~~~~~~~晕~~!
      

  12.   

    Java的优劣并不是一两句话就可以说清楚的,关键是用Java干它该干的事。楼主列出的无疑正是Java所不擅长的,如果偏偏用Java来做,那真是得不偿失。看看现在很多的Java开源项目,像JBoss、Tomcat、Ant等等,实际上并不是Java不能做出好的软件,只是可能我们每天所做的,并不能给我们带来我们所需要的那种成就感。在工作了一段时间以后,自然会觉得厌倦,这就该去寻找新的功力增长点,多去开拓自己的视野了。
      

  13.   

    大家好啊,我是一个JAVA新手,我曾经想从标准C++转道VC,可是老搞不懂它,后来就学JAVA了,
    觉得还是JAVA简单一点。至于内存管理,我还没有接触,所以也就不好评价,但就目前的情况看
    我还是喜欢JAVA的,希望大家给我一点鼓励哦!
      

  14.   

    好象我们都是跟着热点在跑
    就WEB技术
    asp,php,jsp不知明天会是xml还是xsp
    编程的东东也在不停的变
    现在是java热,大家又跟着学这个
    明天会是什么呢?
    钱老大说的有道理。
    C++一直坚立不倒。去哪里都能吃的开
    JAVA的优势是OOP的思想,以及它编程的便利,当然也是以牺牲速度和资源为代价的。
    其实这些编程语言之间还是有共性 的东西的。
    我觉得语言不重要,重要的是自己从中学到的编程方法和思想以及经验。
    其实只要学的精,无论掌握哪一门语言都可以。
      

  15.   

    我也是初学JAVA的,我想多学一点总没有坏处吧
    不过我是学生,暂时不用靠编程糊口:)
      

  16.   

    C++
    java 都做就是了
    技多不压身的。
    最不喜欢讨论语言的优劣了
    如果你想看看给你一文章:
      

  17.   

    C++
    C++最初发布于1980年代中期,当时面向对象语言被认为是解决软件复杂性问题的银弹。C++的面向对象特性看相去使其全面超越了C,支持者认为C++将迅速把上一代语言挤到陈列馆里去。但是历史并非如此。究其原因,至少有一部分归咎于C++本身。为了与C兼容,C++被迫作出了很多重大的设计妥协,结果导致语言过分华丽,过分复杂。为了与C兼容,C++并没有采用自动内存管理的策略,从而丧失了修正C最严重问题的机会。另外一部分原因,恐怕要算到面向对象身上。看起来OO并没有很好的达成人们当年的预期。我就这个问题调研过,我发现使用OO方法导致组件之间出现很厚的粘合层,并且带来了严重的可维护性问题。今天让我们来看看开放源码社区,你会发现C++的应用还是集中在GUI,游戏和多媒体工具包这些方面,在其他地方很少用到。要知道,面向对象也只是在这些领域被证明非常成功,而开放源码社区的选择,很大程度上体现了程序员的自由意志,而不是公司管理层的胡乱指挥。也许C++实现OO的方法有问题。有证据表明C++程序在整个生命周期的开销高于相应的C, Fortran和Ada程序。不过,究竟这是否应该归咎与C++的OO实现上,还不清楚。最近几年,C++加入了很多非OO的思想,其异常思想类似Lisp,STL的出现是非常了不起的。其实C++最根本的问题在于,它基本上只不过是另一种传统的语言。STL中的内存管理比先前的new/delete和C的方案要好的多,但是还是没有解决问题。对于很多应用程序而言,其OO特性并不明显,相比与C,除了增加复杂度之外没有获得很多好处。总结:C++优点在于作为编译型语言,把效率与泛型和面向对象特性结合起来,其缺点在于过于华丽复杂,倾向于鼓励程过分复杂的设计。Java
    Java的设计很聪明,它采用了自动内存管理,这是最大的改进,支持OO设计带来的好处虽然不那么突出,不过也很值得赞赏,相比C++,其OO设计规模小而且简单 。相对于Python而言,Java有一些明显的失误。有些地方设计的还是太复杂,甚至有缺陷。Java的类可见性和隐式scoping规则太复杂了。Interface机制是为了避免多继承带来的问题而设计的,但是要理解和使用它还是挺难。内部类和匿名类导致令人困惑的代码。缺乏有效的析构机制,使得除了内存之外的其他资源(比如互斥量和锁)管理起来很困难。Java的线程不可靠,其I/O机制很强大,但是读取一个文本文件却非常繁琐。Java没有管理库版本的机制,从而形式上重蹈了了Windows DLL地狱的覆辙。在类似应用服务器这样的环境里,这引起了大量的问题。总体而言,我们可以说除了系统编程和对效率要求极高的程序之外,Java在大部分领域优于C++。经验表明,Java程序员似乎不太容易象C++程序员那样构造过度的OO层,不过在Java中这仍然是个严重问题。Java是否优于诸如Perl, Python这样的语言?我们还不是很清楚,很大程度上似乎跟程序规模有关。其擅长的领域基本上于Python相似,在效率上无法跟C/C++相提并论,在小规模的、大量使用模式匹配和编辑的项目里也无法匹敌Perl。在小项目里,Java显得过分强大了。我们猜测Python更适合小项目,而Java适合大项目,不过这一点并没有得到有力的证明。
      

  18.   

    To kindlemoney(钱老大):你的说法并不正确.举个例子说一下java的内存管理吧
    Vector v=new Vector();
    Integer i=new Integer(0);
    v.add(i);
    ....
    i=null;
    System.gc();
    请问大家这时候i占用的内存会释放吗?
    答案是不会,因为有v引用着它呢.
    得先把它从v中删掉才行。所以Garbage Collector号称不需管理内存的
    分配和释放,实际内存的泄漏可不是一点半点。
    看看JBuilder吧,写的够可以了吧。你连着用它
    几个小时,占用的memory成倍的增长啊!
    =====================================================
    没错, 因为v引用了i, gc是不能释放i的:这在逻辑上是正确的,既然v还引用i,gc怎么能自做主张把i释放呢,谁知道是不是还要从v中把原来那个值取出来呢?可是你再把范围放大一点看,v会在什么时候被释放呢? ---- 通常会在离开作用范围之后, 例如局部变量在方法结束后,类变量在对象释放之后; 如果v本身不会存在很长时间的话,那只要v被释放,其中的值也一起被释放了----这似乎不会引起内存泄漏吧?好了,假设v会存在很长时间----言下之意,应该是v中的内容存在很长时间,光一个v,里面空空地没有内容,好象是没有存在的意义. 那么, 你往v里加东西, 内存当然会被占用, 如果你希望减少占用的内存, 当然要把东西从v中移除喽----就象你一直往一个文件中写东西,最后说:啊,磁盘空间泄漏! ---- 笑话!所以你举的例子不对,虽然它的确会造成占用内存增加,可是,那不叫内存泄漏.只有C/C++中指的内存泄漏,麻烦你实际去写写C/C++程序,或者至少看一些代码,我懒得多说了.
      

  19.   

    我也在学C++,对C++印象很好,对Java的很多缺点也有感受,不过只是不同意楼主不正确的距离罢了.至于JBuilder, 我看还是别提了, 界面丑陋, 无用功能一大堆 ---- 我个人认为 JBuilder 6 之后的版本, 基本上是 Borland 的失败, 根本没有当初 Delphi 那种灵气了. 随便看看 Eclipse, NetBeans, 哪个不比它强.
      

  20.   

    我也在学C++,对C++印象很好,对Java的很多缺点也有感受,不过只是不同意楼主不正确的举例罢了.至于JBuilder, 我看还是别提了, 界面丑陋, 无用功能一大堆 ---- 我个人认为 JBuilder 6 之后的版本, 基本上是 Borland 的失败, 根本没有当初 Delphi 那种灵气了. 随便看看 Eclipse, NetBeans, 哪个不比它强.
      

  21.   

    同意glassprogrammer() 
    我也觉得钱老大话虽有理,但举的例子不对。另外,同意seven1996(小七),语言只是工具——注意,不许轻易反对我,我只说它是工具,我没说程序员可以一门语言都不通。关于C++对C的兼容,我感觉虽然牺牲了一些。但完全值得,至少我的开发经验告诉我是这样的。
    针对特殊的应用,设计自己的各个类的时候,如果能利用一些成熟的、优秀的C库函数来完成封装,如socket库,如字符串处理函数,如ODBC API。感觉即不影响效率,又兼有C++的设计的面向对象性和方便的代码可维护性。
    还有,试想,如果VC不能直接调用Windows的API,而是也必须向VB那样先来一大堆莫名其妙的“声明”——我将痛苦不堪!
    VC里头甚至可以嵌入汇编代码,这虽然不是C++标准,但我感觉也非常好。去年写一个加密的程序,就把其中一些用的最频繁而使用高级语言明显影响效率的地方(如大量的循环移位操作)全部用汇编写出,感觉非常好。
    我对Bjarne Stroustrup先生这么多年来一直坚持兼容C语言而不妥协表示由衷的钦佩!许多工具把自己定位在某一个抽象层次上,就像我们住大楼,只能在某一层上活动,而使用C++,整栋楼都是你的。最后,我上面说的都是从个人的经验出发,仅仅针对学习和运用本身的话题。而无意比较孰优孰劣。相信大家已经注意到了,我一个字也没提人力、经济、成本。
      

  22.   

    Java和C/C++我都在用,而且都在做项目。
    它们之间的优缺点也是很明显的。
    如果用惯C/C++编程的人可能很不习惯java的内存机制--因为他们不能直接管理内存的分配与释放。但是java也并不会像“钱老大”说的那样有内存泄漏的危险--因为它采用了GC机制,让JVM自己去决定何时回收,这种机制也有一定的优点的。因为通常JVM不会马上回收那些引用数为0的对象,如果在此时程序要求实例化相同的对象的化,JVM可以马上把那些等待回收的内存空间赋予程序作重新的引用,这种分配方式是会否比C/C++代码中自己重新new一个要来得快呢?所以SUN才建议大家不要自己去调用System.gc()的方法来强制释放内存,这样就会把GC的优势给抹掉了。
        钱老大的例子不恰当之处已经有人指出了,我再加一句就是,如果相同的编程用于C/C++的话也肯定出现内存不断增长的问题。
        当然,java的程序会比C/C++的程序更加占内存(因为还要加上JVM的内存空间啊)。但是如果写的好的话,运行起来也是比较稳定的,内存增长到一定程度就不会再增长的了。这我是做了相当多的试验的,而且内存增长的问题好像主要在WINDOWS下。我在AIX下也做过测试,一旦程序运行起来,而且到达稳定状态后,其内存也不会再增长。
        这些语言间孰优孰劣的讨论可谓无止境的,我只是说一下我这几年在使用java、C/C++中一个最深刻的体会而已,别无它意。如果有错误的地方还请大家指正。
      

  23.   

    我走过了好几种语言的路了,从C到C++到JAVA,也有PHP到XML。总的感觉来我最后还是喜欢上了C++。
    不知道怎么说。当然也并不是否定了JAVA不好,而是在做一些真正的东西的时候,发现JAVA不够用。也许这仅仅是我的心里感觉吧。
    但是JAVA确实有他的优势。
    只是话转回来,JAVA所谓的几个:
    1、内存自动管理。有点牵强。我用Sun One Studio、JBuild8的时候,如果一连用上一两个小时,JBuild的内存占用有时候会升到130MB以上!还有如ZendStudio等一样,启动时只有小小的8MB占用,用不到一个小时居然能占到110多MB!这个所谓的内存管理存在一定的问题。还是手动的操作内存释放好使。所以,单就这一点上来说,JAVA只适合于做服务器程序。因为一般只有服务器才有足够的内存使用。
    2、JAVA的OOP某些地方确实比C++优秀,但是,深入过JAVA的人也不是不知道,JAVA的OOP中哪些地方是让人莫名其妙的。这个我就不细说了。另外纠正一下楼主的一个观念:
    JAVA是跨平台的没错,但是这并不是说JAVA就没有了操作系统底层的能力。呵呵,JAVA可以使用C,C也可以使用JAVA。所以,JAVA间接的还是拥有了操作系统底层的能力的。
      

  24.   

    to 楼主
    java 怎么成了解释执行了?
      

  25.   

    同意 glassprogrammer()的意见!
    我觉得楼主对事有那么一点点偏激。 
    一个人有没有可发展性不应该是他所用的语言所决定的。
    你说java没前途可能就是在说自己吧。
    这完全是你个人的事,不能命不好就怨社会吧!
    你用java三年,我很想知道除了你给java挑出的牵强附会的问题以外,你还用到了java什么?
    不介意的话给我们大家说说吗!
      

  26.   

    java 是垃圾!
    我讨厌它,被迫用的.
    无知!!!!!!!!!!!!!!!!
      

  27.   

    大家好,我是刚开始学java,我以前学的是php因为我觉的php只能做网站所以我想学一门好的语言,看可大家这么一说,我都要晕死了,我是学生,能不能告诉我该现去学习啊
      

  28.   

    我个人觉得JAVA和C++都有一定的优点,如果说JAVA是不错或说C++更好,都不是一个理想的想法,在这个社会,活着就是想吃一口饭,两者之间的好坏都是程序员说了算吗?我现在也是程序员,如果你作为一个领导,他只是想让你为他完成他想要的任务,不管你用什么方法,用什么开发工具,所以:最好的方法,用现在的方法,以自已能力做一个PM,不要总是想着编写什么样的代码,哪个代码用什么工具更好,脱离编程的约束,先做一此设计方案,具体实现应该是很简单的,除非自已对这一门语言不熟。说实在的我也不太喜欢JAVA和C++,但没有办法,我们一样得学各样的语言,目的就是为了有一口饭吃啊!把你的出发点想低点,把你的目标定高点,既然做了这一行,就得适应他,我们不是神,做好当前的工作,然后向着更高的目标PM前进,这是最好的。你不喜欢在现在角度(程序)说哪一个更好,一旦当前做了PM,你就没有这此烦恼了,不做具体的技术,只管这种技术是否能够解决出现的问题。用JAVA做项目,那就找一些JAVA高手吧。
    C++或VC那就找那些人做吧!祝你好运!
      

  29.   

    我虽然java也只是搞了一两年,做代码速度绝对不慢,但对java的开发周期实在.....
      

  30.   

    Java不是用来搞操作系统上的工具软件的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  31.   

    现在的java还是做后台比较有优势~~~~~~
      

  32.   

    做web应用用java
    做应用程序用delphi
      

  33.   

    java还有个好处就是安全.
    现在的黑客软件横行.今后安全将是软件的首要考虑之一.