日期:2014-05-20  浏览次数:20928 次

JAVA 与 C
人都说C可以用来开发追求运行效率的软件,并且使用C语言开发出来的项目占用的资源少,但是这些是java做不到的并且java不能开发较底层的东西,为什么呢?不明白其中的道理,请指点!

------解决方案--------------------
C语言是底层的语言,java可以看作是在C上面封装起来的一种语言!
------解决方案--------------------
应用层次不一样
C比较底层,可以直接操作系统api
java封装层次较高,优势在于大量的类库

至于具体需要做什么东西,要看你的需求来定
毕竟汇编能做到的事情,C也一样做不到不是吗
------解决方案--------------------
探讨
,java因为要有jvm才行,因为java用都是在jvm里运行的,也就是说你得先有个jvm
c 能做的java也是可以做到的,就拿塞班系统来说,有很多应用是c开发的,用过的的就知道,
同一个程序有c的,也有java的,但是c高效是肯定的

------解决方案--------------------
java层次比较高,类库丰富,程序基本上只和类库打交道,而类库的实现离不开具体的native层,这一般由c/c++来实现.
通过c语言可以直接调用操作系统提供的接口,编译器直接将c语言编译成对应cpu的指令码程序,而java语言是编译成字节码由虚拟机解释为指令码加以执行,因此c语言的效率比java高
------解决方案--------------------
C是一种赚钱的艺术,java是一种花钱的艺术。
java就是一系列的工具集,被架空了,看起来脱离了底层。离底层越远,当然运行速度越慢,因为所有的操作最终都是在底层实现的。
也正是因为java脱离底层较远,所以java不必把重心放在底层设计上,我们可以更多的去关心设计模式等,统筹全局。

------解决方案--------------------
存在即合理,不同的语言有不同的用处
------解决方案--------------------
我只知道c是面向过程的语言,而java是面向对象的语言。俺是菜鸟
------解决方案--------------------
java的内存管理机制限制了它的性能,所以用java来开发操作系统,这种极其要求高效率的软件,至少目前是不太可能的,不过随着技术的发展,java虚拟机技术的不断改进,相信java的内存管理限制会逐渐减少或消失。
C的执行效率高这是肯定的,但是对于快速开发大型软件系统,开发效率肯定是不能与java比的
------解决方案--------------------
系统底层的是由C写的,C是面向过程,而java是在面向过程基础上将其封装。。。。成为面向对象,实际底层的实现依然是C语言的思想。
至于不能开发底层的原因,java是跨平台的是基于JVM的,只能操作JVM,在有JVM操作系统底层去实现,而C或者C#不用通过jvm可以直接和系统底层打交道,但是只能在Windoes下。所以高级语言的利与弊就在于此。没有完美的只有更好的,本人支持java,较其他语言,更加…呵呵.
------解决方案--------------------
java是在面向过程语言的基础上,封装,优化而来的,底层实现依然是c的方法。
对于java不能开发底层的,主要由于,java是依赖于JVM的,JVM是在java与系统之间的交换器吧(不准确),java程序的一切实现依赖于JVM,由JVM去和系统打交道,所以,java是和JVM直接交流的,与底层的交互,具体要看JVM。
C语言之所以可以和系统打交道,是由于系统是C写的,不必要想JVM这样的中间件,它可以直接调用系统的方法(不安全),但是不能跨平台,有局限性。
java的效率高低问题,java运行效率没有C高,因为多了中间的JVM,但是,在开发软件的时间效率上有着优越的优势,相对而言,软件开发的时间效率更加现实,运行效率不会有很大区别。 
 
java虽然没有C那样强悍,但是安全,跨平台,他的强大功能足以满足现实世界的问题。
------解决方案--------------------
java和c++可比性要高一些。
java和c++都是面向对象的编程语言,其中java是完全面向对象的编程语言,所有代码必须封装成类,c++既可面向对象,又可面向过程。
c++和java运行方式不一样,c++是完全编译型语言,编写的代码通过编译器编译链接形成可执行的机器代码,直接由cpu执行,java先由java的编译器编译成java字节码,字节码jvm解释执行。由执行方式即可看出,c++编译的可执行程序,效率比java高。
c++可通过指针和io读写直接控制硬件和内存,java只能在jvm中运行,操作硬件只能使用代理。
c++通过指针来操纵内存,java通过jvm管理内存,由于c++灵活而不进行超限检查,容易造成内存泄漏,java的jvm垃圾回收机制一般不会造成泄漏,但在资源管理上如果不注意释放同样会造成资源被锁定。
c++由于完全编译,不同的硬件和操作系统使c++的类库无法做到统一封装,使得编程对硬件和操作系统的依赖较大,java类库可进行统一封装,对硬件和操作系统的依赖主要由jvm来完成,少了指针操作的java比c++容易学习,程序开发的效率java要高。