什么是动态语言?   动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如JavaScript便是一个典型的动态语言。 除此之外如Ruby、Python、OC等也都属于动态语言,而C、C++、Java等语言则不属于动态语言。 动态类型语言,就是类型的检查是在运行时做的,是不是合法的要到运行时才判断,例如JavaScript就没有编译错误,只要运行错误。 JavaScript改变结构小例子:
aAll[0].onclick=function(){
		//通过重新赋类名,达到显示隐藏菜单的效果
		if(oArt.className=='no_circle'){
			oArt.className='yes_circle'
		}else{
			oArt.className='no_circle'
		}
	}
}
静态语言   而静态类型语言的类型判断是在运行前判断(如编译阶段),比如java就是静态类型语言,静态类型语言为了达到动态会采取一些类型鉴别手段,如继承、接口,而动态类型语言却不需要, 静态类型语言的主要优点: 在于其结构非常规范,便于调试,方便类型安全; 缺点: 是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。动态类型语言的优点在于方便阅读,不需要写非常多的类型相关的代码;缺点自然就是不方便调试,命名不规范时会造成读不懂,不利于理解等。 为什么Java可以称之为"准动态语言"? 体现在以下几个方面:   1.反射机制   2.动态编译   3.动态执行javascript代码   4.动态字节码操作   5.动态转换类型 Java的反射机制被视为Java为准动态语言的主要的一个关键性质,这个机制允许程序在运行时透过反射取得任何一个已知名称的class的内部信息,包括: 正在运行中的类的属性信息,正在运行中的类的方法信息,正在运行中的类的构造信息,正在运行中的类的访问修饰符,注解等等。 动态语言无时不刻在体现动态性,而静态语言也在通过其他方法来趋近于去弥补静态语言的缺陷。