漫长学习路

在我们平常开发中我想使用到的最多语言就是java了,有幸购得Java核心技术卷一书,其实不想买的,因为自己感觉基础还不错,有读过疯狂Java讲义,java编程思想这些基础的,,也读过java网络编程,spring核心技术卷等进阶的书。说来也是和这本书有缘,一个学妹转测试了,便宜转卖,看她那么辛苦,我实在不忍心,就买下了这本书。准备挑灯苦读,把晚上的时间留给这本书。翻开书本的第一卷,很好的向我阐述了Java的11个优点。

1.简单性:

这个简单在我看来可谓是简单不简单了,怎么说了,如何拿它和C,汇编去对比,真的是简单了许多,我们看Java里面没有头文件,指针运算(甚至指针语法,但我认为 Java的引用就跟指针差不多),结构,联合,操作符重载,虚基类等。然而设计者没有试图清除C++中所有不适当的特性,例如Switch,不过java的if语句真的很强大,我们可以用if ,else 来作真假的所有判断。另外java的类库很强大,我们可以用java去做编程的大部分事情,这让编程变得更加简单;

2.面向对象:

一直再说面向对象,包括我学习java的第一章课,老师都对我讲什么是面向对象,当时听的云里雾里的,只记得万物皆对象。面向对象简单的讲是一种程序设计技术。它讲重点放在数据(即对象)和对象的接口上。用人吃饭来举个例子,面向对象会这样表达,人(吃)饭,在这里人和饭是对象,而吃我们可以理解成为动作。人就是主语而饭是宾语,吃就是所谓的谓语。而我们的面向过程关注的是什么啦,关注的是吃这个过程。表达出来的第一个意思就是吃,然后由吃来引导吃?吃什么啦,答曰吃饭。谁吃饭啦,人吃饭。偶原来面向过程是这样的啊。

在过去的40年里,面向对象已经证明了自身的价值,一种现代的程序设计语言不实用面向 对象技术简直让人难以置信。的确Java的面向对象特性与C++起鼓相当。Java与C++的主要不同点在于多继承,在java中取而代之的是简单的接口继承,以及java的元素模型.

3.网络技能:

Java有一个扩展的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java的应用程序能够通过URL打开和访问网络上的对象,其便捷程序就好像访问本地文件一样。

人们已经看到Java的网络能力强大且易于使用。任何曾经试图使用其他语言进行网络编程的人都会惊呼Java竟然把类似于打开socket连接这类繁重的任务都变得如此简单。另外远程方法调用机制使得分布式对象之间可以进行通信。

4.健壮性:

Java的设计目标之一在于使得Java编写的程序具有多方面的可靠性。Java投入了大量的精力进行早期的问题检测,后期动态(运行时)检测,并消除了又出错倾向的状态……Java和C++最大的不同在于java采用的指针模型可以消除重写内存和顺坏数据的可能性。这个特性非常有用,我们再程序编写的时候往往就会自动提示很多其他语言仅在运行时刻才能够检测出来的错误。至于第二点,就更加有用了,对于曾经话费几个小时来坚持由于指针bug而引起的内存冲突的人来说,一定非常喜欢java这一特性。其原理在于Java的内存模型,他把引用和实际值放在两块不同的内存中,这个以后再细说。

5.安全性:

Java适用于网络/分布式环境。为了达到这个目标,在安全方面投入了很大精力。使用Java可以构建防病毒,防篡改的系统。

6.体系结构中立:

编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有java运行时系统就可以再许多处理器上运行。这并不是什么新的思路,在40多年前就有这种技术了,当然这也执行效率很慢很多,然而虚拟机有一个策略就是把使用最繁琐的字节码序列翻译成机器码,这一过程叫做即时编译。

7.可移植性:

与C不同,java规范中没有依赖具体实现的地方。基本数据类型的大小以及有关算法都做了明确的说明。

例如java的基本类型永远都是固定的,不论在什么环境下,而在C中,Int有可能是16位,也有可能是32位。只有把数据类型的大小和有关算法固定了,我们再任何应用系统上基本上都不需要重写代码。

8.解释性:

Java的解释器可以再任何移植了解释器的机器上执行Java字节码,所以我说Java是一种解释性语言,他在语法上面要更容易让人理解与编写,由于链接是一个增量式且轻量级的过程。所以开发过程也变得更加快捷,更加具有探索性。

9.高性能:

尽管对解释后的字节码性能已经比较满意,但在有些场合下还需要更加高效的性能。字节码尅(在运行时刻)快速地翻译成运行这个应用程序的特定CPU的机器码。在早期Java性能一直是一块诟病,但是现在即时编译的速度已经很快了,人们又对JVM进行了很多优化,导致现在Java的性能也比较快了。

10.多线程:

多线程可以带来更好的交互响应和实时行为。同时也大大提高了我们的执行效率,在这里多线程这把双刃剑就不多说了,Java为我们实现多线程提供了很多支持,使我们能更加容易的去编写多线程程序。在底层,主流平台实现多线程的机制各不相同。

11.动态性:

从各种角度来看,Java要比C更加具有动态性,它能够适应不断发展的环境,库中可以自由添加新方法和实例变量而对客户端却没有任何影响。这里主要还是因为Java使用的是接口继承。不去破坏我们原来的方法,从而实现新的功能。当我们需要对某些代码添加到正在运行的程序中时,动态性是一个非常重要的特性,因为我们可以获取到运行时的类信息,这对于 JavaGUI构建器,只能调试器,可插拔组件以及对象数据库来说非常有用。

多看书,看好书。

漫长学习路

相关文章:

你感兴趣的文章:

标签云: