一个暑假,两本书,让我了解到了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的水好深,随便一个方面的研究就可以发现很多问题,不只是知识的不足,更有经验上的不足。
- 10楼ensleep
- 我只想说,楼主,一入JAVA深似海,从此节操是路人啊~~~JAVA是禁止修改核心代码的,谷歌正在被Oracle起诉。Java要在linux上跑才有巨大优势,公司要招linux运维人员,贵的一米。淡然C#又要花钱买,楼主还是转行比较好,浪子回头金不换啊[:笑哭]
- Re: 阿tree
- @ensleep,谢谢提醒,最近师兄,已经让我学习在linux上跑Java到时请多指教
- 9楼絕對零度
- Oracle正而把java往死里搞啊,现而用java的所有公司都有伟规之嫌啊!楼主还搞java,也是日了个狗!
- Re: 阿tree
- @絕對零度,谢谢指导。Java不过是一个工具而已,如何运用工具,不是靠人的吗?
- Re: ensleep
- @絕對零度,这个事实已经让我坐立不安了,真他妈日了狗了,JAVA这个吊东西却有渗入太深,android就是其一,C#虽然有好多java不无法比拟的地方,但是,毕竟vs一套也不便宜,而且能娴熟使用C#的人难招,深处太深了。node.js在公司其实很难被老领导接受,哎
- 8楼绿翼
- 楼主看的是什么书?
- Re: 阿tree
- @绿翼,《Java核心技术》
- 7楼清香白莲素还真
- 对于大部分JAVA开发人员来说,眼界窄,拓展眼界成本最低的方法就是学习C#。学习C#是跳出LINUX,转向WINDOWS的一个最便捷的途径。
- 6楼pureheart
- 我最近也在学JAVA,博主能告知一下书名么?
- Re: 阿tree
- @pureheart,我用的是《Java 核心技术》
- 5楼dark89757
- java比c++简单多了
- 4楼掬一把月
- java的辉煌时光也就是andrioid的起来,大概时间是从09年开始吧,现在已经开始衰败了,原因很多,最重要的是andrioid抛弃了java,google推出新的语言sky。从此andrioid和java就没有半点关系了,再加上oracle让java收费,马上也要开始不开源了。,.NET现在反倒开源了。。。,我就呵呵了,难道真要30年河东,30年河西!
- Re: ICAC
- @掬一把月,引用java的辉煌时光也就是andrioid的起来,大概时间是从09年开始吧,现在已经开始衰败了,原因很多,最重要的是andrioid抛弃了java,google推出新的语言sky。从此andrioid和java就没有半点关系了,再加上oracle让java收费,马上也要开始不开源了。,.NET现在反倒开源了。。。,我就呵呵了,难道真要30年河东,30年河西!,======================================,,Java最强的在于服务器端(超高访问高并发、大数据、可伸缩性等),而不在于客户端—— Android属于客户端的一种。没有Android,Java照样很强势,就如Android诞生前一样。当然,Android的流行让Java更加强势,仅此而已。
- 3楼ZHIGANGWANG
- 对于大部分C#开发人员来说,眼界窄,拓展眼界成本最低的方法就是学习JAVA。学习JAVA是跳出WINDOWS,转向LINUX的一个最便捷的途径。
- Re: 蜗牛往前走
- @ZHIGANGWANG,@ZHIGANGWANG,引用对于大部分C#开发人员来说,眼界窄,拓展眼界成本最低的方法就是学习JAVA。学习JAVA是跳出WINDOWS,转向LINUX的一个最便捷的途径。,不敢苟同,倒不是C#的脑残粉,而是想跨平台,跟语言没有任何关系。没有必要死揪着Java是万能的来说,对吧?
- 2楼笑对当空
- 我觉得很好,一样的工具能走出什么路 每个人都是不同 博主能有自己的想法很是不错
- 1楼易水千钧
- 我虽然是搞.NET,但是不太看好.NET, 生态系统太狭窄。