仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2092|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA编程:进修心得:Java为何撑持反射机制?

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:54:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。心得Java为何可以撑持Reflection?谜底是Java运转时仍旧具有范例信息,它包括了这个类统统:它有哪些字段、哪些办法,各是何种回护级别等等,另有这个类依附于哪些类。在Java中,类信息以对象的情势寄存,这些对象是一种元对象,它们的范例就是Class。具有了这些信息,不管是静态创立对象仍是挪用某些办法都是十拿九稳的。在C++中,经由过程RTTI(运转时范例辨认),我们也能够晓得类的一些信息,但为何C++中却没有Reflection,缘故原由是范例信息不完全。RTTI这个名字自己就告知我们,C++的范例信息是用来举行范例辨认的,因而,它也不必要别的分外的信息。并非C++没法做到这一点,而是C++不但愿给用户增添分外的包袱。有所得,一定有所掉,因而,C++保持了元对象。关于这一点,C++之父BjarneStroustrup在他的《C++言语的计划与演变》的14.2.8节中举行了深切的会商。元对象是JavaReflection的物资基本,那它的精力基本又是甚么呢?Java为何要撑持Reflection?经由下面的会商,我们把这个成绩再进一步,为何Java要供应元对象?
会商这个成绩,我们还要拉回到十年前,当时Java方才离开正式登上汗青的舞台。Java实践上出生在这之前的数年,当时候还叫Oak,情况所限使得这一划时期的佳构甫一出炉便被置之不理。当Netscape掀起了为收集年夜戏的尾声,Java得以凤凰涅,这个中很主要的一个缘故原由就是Java是以收集为中央的。
细心察看,我们会发明,Java的全部基本架构的计划都是为收集服务。首当其冲的即是Java中最出名的跨平台。实在,在Java之前的年月,人们也必要思索平台之间的可移植性,但这类移植年夜多半会合在源码一级,这也就是C言语能够盛行的缘故原由之一,在单机情况下,平台的差别其实不那末分明。收集的呈现使平台之间差别凸现出来,由于收集大概会毗连林林总总的盘算机和设备。没错,另有设备,你大概晓得Java最后的开辟是和嵌进式设备相干的。一旦使用能够跨平台,程序开辟和前期办理保护事情将失掉极年夜的简化,可移植性也从源码级提升到二进制级(Java字节码)。以是,跨平台实践上也是为了收集打基本。Java中另外一个主要的买点――平安性与收集之间的干系更加亲切,谁都能够想出几层次由,把两者联系关系起来。
再来详细看看Java的基本架构怎样对收集举行撑持的。还记得Java最后是怎样吸惹人的吗?没错,Applet。熟习道理的伴侣都晓得,Applet的运转是把远程的类文件下载到当地来实行的。相对当地硬盘,收集给我们的感到就是一个字――――慢。假如Java接纳传统可实行文件构造体例,即一个完全的可实行文件,把全部Applet下载上去的运转,只怕比及花儿也谢了。Java接纳的伎俩是把文件拆开,以类为单元举行构造,这就是我们明天见到的class文件。如许,实行的历程就酿成第一个类下载以后就能够运转,年夜小节省了最后的守候工夫。好的计划会把程序分红多少的模块,以是,尽年夜多半程序不成能写在一个类中。因而,类文件中必需包括它所用到类。关于引诱部分,我们可让它以特定的体例入手下手实行,好比把我们耳熟能详的main办法放在特定的字节,但关于没有定法的恣意办法,是没有举措划定的,而一个类挪用另外一个类的办法就是如许随便,因而类文件中必需包括这个类办法的信息,进一步字段信息也会加出去,如许几近一个完全类的信息就出来了,而这些信息对应的刚好是元对象。以是,元对象呈现在Java基本架构中。
有了元对象,Reflection同样成了一件天真烂漫的事变。有了Reflection,Java也就具有了静态扩大的才能,如许就能够极年夜的进步程序的天真性。
关于Java基本布局对收集的撑持还能够再说几句。class文件经由了经心的计划,自己相称松散,其目标就是为了便利在收集上传输,而JAR文件的呈现,其目标也是为了便利收集传输,由于假如每次只传输一个类,大批的工夫都被华侈在创建收集毗连的过程当中,JAR文件使得一次传输多个类成为大概,并且我们还晓得JAR文件中的数据是经由紧缩的,如许能够进一步削减下载工夫。Java基本架构对收集的撑持,《深切Java假造机》(第二版)的4.3节举行了很好论述,有乐趣无妨看一下。
对Reflection思索让我无机会对Java自己的计划举行深切的思索。一个好的软件计划必要一个中心理念作为支持,一切的统统都是环绕中心举行的,而关于Java,这个中心就是收集。
一次风趣的思索体验!

主要缺点就是:速度比较慢,没有C和C++快
爱飞 该用户已被删除
沙发
发表于 2015-1-20 20:27:19 | 只看该作者
是一种为 Internet发展的计算机语言
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-29 19:42:12 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
谁可相欹 该用户已被删除
地板
发表于 2015-2-3 12:58:17 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
兰色精灵 该用户已被删除
5#
发表于 2015-2-9 01:38:20 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
若相依 该用户已被删除
6#
发表于 2015-2-9 23:15:33 | 只看该作者
是一种使用者不需花费很多时间学习的语言
老尸 该用户已被删除
7#
发表于 2015-2-28 04:34:51 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
小妖女 该用户已被删除
8#
发表于 2015-3-9 20:59:34 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
金色的骷髅 该用户已被删除
9#
发表于 2015-3-17 01:08:03 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
再见西城 该用户已被删除
10#
发表于 2015-3-20 00:53:36 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
活着的死人 该用户已被删除
11#
发表于 2015-3-27 12:08:45 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
admin 该用户已被删除
12#
发表于 2015-4-1 16:16:24 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
莫相离 该用户已被删除
13#
发表于 2015-4-12 17:32:19 | 只看该作者
是一种突破用户端机器环境和CPU
蒙在股里 该用户已被删除
14#
发表于 2015-4-18 11:36:23 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
飘飘悠悠 该用户已被删除
15#
发表于 2015-4-28 02:18:36 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
精灵巫婆 该用户已被删除
16#
发表于 2015-5-1 04:11:22 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
小女巫 该用户已被删除
17#
发表于 2015-5-1 13:12:08 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
小魔女 该用户已被删除
18#
发表于 2015-5-3 11:42:44 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
柔情似水 该用户已被删除
19#
发表于 2015-5-4 04:35:55 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
第二个灵魂 该用户已被删除
20#
发表于 2015-5-5 23:38:04 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表