Java学习感受
一个暑假,两本书,让我了解到了Java的神奇美妙,这个工具的年龄跟我一样大,然而日久弥新,随着电脑技术科学家,工程师的开发,Java的功能越来越完善。学习的时间不长,但我比较着学习,把Java跟C、C++、C#比较着学习,收获良多。
Java没有VS那种可视化的编程环境,现在还有点不习惯,毕竟完成这些程序的代码量还是挺大的,但Boss跟我们说,Swing、AWT、 Bean等图形化界面设计,不用看,直接跳过,只是纳闷,既然这种技术落后,为什么还要写进书里。然而,事实上,经过浏览一遍,这些图形界面的设计模式确实很让人捉急,确实很好奇,当年的工程师们是怎么过来的。
最棒的是,Java的指针已经被封装起来了,不用像C、C++一样,一遍遍苦逼的被指针耍的团团转,debug半天不知所以然,由于一个小小的指针,可以耗费一整天的时间,不再考虑链表、队列、栈等数据结构,都被封装好了,多么造福的一项设计啊
在Java的面向对象特性中,感觉比C++好多了,用简单的接口概念、metaclass等多继承手段代替C++的多继承。然而令我奇怪的是,Java竟然不支持多继承!毕竟在C++中,一个类经常可以通过继承衍生出很多个不同的子类,孙子类。下文才知道,可以使用类的接口解决复杂任务,而不必知道其中的实现细节。一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现相应接口的对象。了解到Java的封装性,也许就是其迅速走红的一个原因吧,良好的封装性,让代码不易被篡改。
对于package的概念,确实感到很新鲜,我把他们类比为头文件,库……都不想,因为在同一个project中,可以新建很多个 package,每个package还可以建立很多个class,到底有什么意义呢,为了封装性?书中说,为了确保类名的唯一性,嵌套的package之间没有任何联系。
程序出错了怎么办?我不是说程序员敲代码的错误,而是当遇到一些比较调皮的用户,故意不输入我们想要的数据,导致程序出现异常,这怪谁啊?当然是苦逼程序员咯,所以本着客户就是上帝的原则,既要考虑到用户有多调皮,又要关心电脑不要傲娇。把异常分类:Error类和Exception类。这些还远远不能满足报错的需要,还需要创建特定的异常类
JDBC,这是Boss安排给我的第一个任务。虽然完成了,但在编写的过程中,有许多的疑问,首先,既然是连接的端口,难道不不可以直接 import这个包吗?接着,假如不能import这个包,直接把代码copy不行吗?另外,还不能通过编译器完成对数据库的创建,需要在mysql里面进行创建,这,好麻烦啊!!!还有进行增删查改的操作是固定的,能不能随时根据用户需要打印出来呢?命令行只能写所有数据库都有的那种命令才能通用,求同存异,这种思想一直存在。创建一个接口,目的是方便,然而这还远远没有达到方便的目的。
Java的应用跨国界,堪称计算机领域的丝绸之路,只是,世界这么大,语言这么多,完成这些语言的转换是多么蛋疼的一件事啊,日期、时间、货币、数字格式……各个地区各有特色,都要一一对他们进行设置,做完这些工作,很累的啊,难道跨国界这么费劲吗?难道不能以来系统来完成这些操作吗?
安全性,Java对程序安全性的真的是苛刻到无以复加的地步。C中,经常会忽略对数组边界的检查,然而Java绝不会留下这个可乘之机。 Java的三种安全机制:校验器、安全管理器、数字签名,一项比一项严格,对于恶意的攻击性代码,Java的安全性机制,保护着程序不受攻击(在书中,我了解到,恶意代码的攻击方式主要是以继承出一个新的子类、利用数组的边界漏洞、通过指针使内存溢出、篡改代码达到修改注册表的目的等方式为主),数字签名(也就是开发者的身份证明)又包括消息摘要,消息签名、校验签名、证书签名,证明程序未曾被黑客修改过。很有趣哦,当自己还不能完全信任对方的程序时,通过第三方认证,确定程序的安全性。这在现实生活的人际交流中,很常见呐,两个陌生人通过一个共同的熟人搭桥达到熟识的目的。
Java可以很轻松的完成打开socket等操作,可以通过远程方法调用机制使得分布式对象之间进行通信。通过设置端口号,我用编译器访问了美国的国家技术研究所的服务器。我知道,Java Wed的范围何其宽广,我所接触的只是冰山一角。虽然了解到分布式结构,但由于书中给的例子只是一台服务器对应一个客户端,,通过这个例子,让我知道,客户端和服务器之间的数据交流环节,以及交流之前的身份认证。此外,对于多台客户端访问同一个服务器,我猜想是否可以使用多线程管理,达到多个客户端访问一台服务器的目的?还是开辟多个端口以满足多台客户端访问的目的(这样的话,客户端的需求的数量又是无止境的)?联想到蜂窝拓扑网络,对于书中的介绍有更加的不足了。
Java另一个有趣的地方,就是可以调用本地方法。代码啊,敲太多也会烦的,Java可以与其他语言兼容。以前敲过的程序,经过鼠标的稍微点击,编译器的小小操作就可以了果然很方便。
Java的水好深,随便一个方面的研究就可以发现很多问题,不只是知识的不足,更有经验上的不足。