Java核心技术:没必要为了学Java而先去学C++

发表于:2011-9-13 09:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:公飞    来源:51Testing软件测试网采编

  Java可以从狭义和广义两个角度来看:狭义的Java就是指Java编程语言;广义的Java则是指从Java编程语言到Java EE(J2EE)等所构成的一个庞大的软件开发体系,此处称这个体系为一个平台。所谓平台,是指你可以基于这个平台使用Java编程语言进行软件开发。

  在C++之类的其他编程语言体系中,其实也同样有大量可复用的代码、程序库等,它们的差别主要在于C++没有把所有这些统一到一个像Java样的大帽子下面,并且为这个大帽子下面的架构统一制定大量的标准规范。

  作为初学者,你不妨先不要管Java为何被视为一个“平台”,可以先从狭义上把Java作为一种编程语言学起,等掌握了作为程序语言的Java后,再来理解“平台”的含义也不迟。

  Java的语法参照了C++的语法,与C++非常接近,所以熟悉C++的程序员再来学习Java会觉得非常容易入手,但是熟悉C++的程序员也要特别注意C++和Java之间的差别,C++既会为你的Java学习带来帮助,也会带来很大混淆。

  当然,对于没有学习过C++的人来说,没有必要为了学习Java而先去学习C++。

  Simple(简单)的简单总结:

  ① 与C++相比,Java的确是更加简单了,没有了指针、操作符重载、多继承之类复杂的东西,增加了垃圾自动回收机制。

  ② 相对于VB(即Visual Basic)这样的可视化开发环境来说,其实Java并不简单,反而要复杂很多。在VB中,微软自动帮我们做了很多事情,我们只需要拖曳一些控件并编写简单的代码,就可以实现一些功能简单的程序。而使用Java,很多事情需要你手工编写代码来实现。这正是在Windows桌面程序方面,Java一直不敌微软阵营的一个重要原因。

  ③ 随着Java的发展,各种新的规范开始推出,尤其是近些年各种Java框架的大量涌现,Java世界已经变得非常复杂。Java程序语言并不是很难学,但是要想在Java各种纷繁的规范、类库、框架中做到游刃有余,还是需要花一番工夫的。

  如此强大的Java体系简单又能简单到哪去呢?一种程序语言而已,难又能难到哪去呢?既然已经上路,简单与难已经不重要,认真学下去,把握它才是关键!

  面向对象的确已经成为现代编程语言的核心,Java也不例外。所以学习Java程序语言,对面向对象的理解自然是重中之重。

  尽管各种编程语言的设计者对于面向对象的一些事情诸如多继承之类争论不休,但是从总的来看,它们在面向对象的基本思想和套路上还是大同小异的。如果你已经掌握了其他面向对象的编程语言,对Java完全可以触类旁通。

  Java从基本语言的层面,更确切地说,是从JDK(Java Development Kit,即Java开发工具包)层面为开发者提供了基本的、标准的并且是跨平台的网络类库,这应该说是其相对于C++等编程语言的重大突破。如果你是使用C++等编程语言,就需要使用操作系统提供商或者第三方网络接口开发包。

  又是著名的C/C++指针以及内存管理机制问题。Java中没有类似C中的指针类型,加上Java提供的自动垃圾回收机制,从而可以让你很好地避免出现类似C/C++中因失误造成内存泄漏的问题。

  当然,另一方面,C/C++的指针以及内存管理机制为编程带来了一些非常灵活而强大的特性。只是这些特性使用起来比较难于驾驭,容易出错,所以说,凡事都有两面性。

  Java的Applet相对于微软的ActiveX来说,在安全性上具有非常明显的优势。主要原因在于Java的Applet能够更好地验证代码的来源,以及通过沙箱等对程序的访问进行了限制,例如:禁止对本地磁盘的读写,除了下载此Applet的主机外,不能与任何别的主机连接,禁止建立一个新的进程,禁止载入一个直接调用本地方法的新的动态库等。

  不过,无论是Applet还是ActiveX,虽然还有一些使用者,但是发展到今天,已经不是Web开发的主流,只有在满足一些特殊需求时才有用武之地。

  Java采用了这样的机制:Java源代码编译后生成的Bytecode形式的类文件不能直接在操作系统上执行,必须由Java虚拟机(JVM)来解释执行。

  采用这种机制具有两个比较明显的缺点,一是因为编译后的Java类文件不能直接在CPU上执行,而是由虚拟机在运行时解释执行,导致程序运行效率的降低;二是要运行任何Java程序(无论是简单的还是复杂的程序),都必须安装Java的运行环境(Java Runtime Environment ,JRE),以便由JVM来解释执行Java程序。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号