为什么可以说Java语言是准动态语言?

为什么可以说Java语言是准动态语言?

2017年02月24日 19:36:58 Young丶 阅读数:1122

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/agonie201218/article/details/56851844

什么是动态语言?
  动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如JavaScript便是一个典型的动态语言。

除此之外如Ruby、Python、OC等也都属于动态语言,而C、C++、Java等语言则不属于动态语言。

动态类型语言,就是类型的检查是在运行时做的,是不是合法的要到运行时才判断,例如JavaScript就没有编译错误,只要运行错误。

JavaScript改变结构小例子:

aAll[0].οnclick=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的内部信息,包括:

正在运行中的类的属性信息,正在运行中的类的方法信息,正在运行中的类的构造信息,正在运行中的类的访问修饰符,注解等等。

动态语言无时不刻在体现动态性,而静态语言也在通过其他方法来趋近于去弥补静态语言的缺陷。

原文地址:https://www.cnblogs.com/grj001/p/12225258.html